miércoles, abril 08, 2015

Ligas de interes para pagar impuestos en México

Servicios ofrecidos por el SAT
  • Portal de trámites para el contribuyente https://www.siat.sat.gob.mx/PTSC/
  • Servicio web de Validación de RFC: https://portalsat.plataforma.sat.gob.mx/ConsultaRFC/respuesta.faces
  • Recuperar facturas que me han emitido: http://www.sat.gob.mx/informacion_fiscal/factura_electronica/Paginas/servicio_generacion_cfdi.aspx

jueves, marzo 19, 2015

IT Operations Acronyms

Some IT Operations Acronyms
  • application performance monitoring (APM)
  • Unified Monitoring (UnMon)
  • Network Performance Monitoring and Diagnostics (NPMD)
  • Infrastructure Performance Monitoring (IPM)
  • IT Operations Analytics (ITOA)

APM application performance monitoring

Hoy descubrí las siglas APM que han sido creadas para hablar de la monitorización del rendimiento de aplicaciones, dicho de otra forma para hacer referencia a aplicaciones o servicios que permiten monitorear el rendimiento de nuestras aplicaciones, servicios, servidores, etc.

Hoy en día están de moda, debido a la facilidad de uso, las aplicaciones basadas en la nube, que se clasificacan también como SaaS (Software as a Service), y dado que ando evaluando tecnologías para monitorizar, he encontrado dos SaaS en esta categoría.

Les dejo los links:

En particular estoy probando ruxit, el cual es monitoreo basado en agente, que no requiere configurar practicamente nada excepto instalar el agente, que al descargarlo ya viene configurado para nuestra cuenta de monitoreo, al parecer este tipo de servicios están basados en una visión holística del SaaS donde el usuario requiere saber y hacer lo mímino necesario y el sistema prove al usuario con la visión de que es lo que necesita y que requiere, permitiendo configurar a su gusto un subconjunto de lo que el sistema capta como necesario.

Si les interesa probar ruxit, saquen una cuenta e instalen el agente en algún equipo, puede ser el de uso diario, para que vean que datos ofrece el monitoreo.

Saludos y happy monitoring...

martes, marzo 03, 2015

Programación de ventanas GTK usando javascript


Al intentar correr un ejemplo que viene en este libro de introducción a javascript

Internacional México
Introducción a JavaScript: Cómo hacer programas sencillos con JavaScript y node.js (Spanish Edition) Introducción a JavaScript: Cómo hacer programas sencillos con JavaScript y node.js (Spanish Edition)


El cual documenta un ejemplo de un programa javascript para armar una GUI (interface gráfica de usuario) con un botón.

Para correrlo en ubuntu es necesario instalar el runner de javascript gjs, que se encuentra en el paquete gjs, por lo que instalamos dicho paquete

sudo apt-get install gjs

Sin embargo al tratar probar las primeras lineas del código, donde se hacen los imports, nos marca un error:

gjs gtk.js 
    JS ERROR: !!!   Exception was: Error: Requiring GLib, version none: Typelib file for namespace 'GLib' (any version) not found
    JS ERROR: !!!     lineNumber = '0'
    JS ERROR: !!!     fileName = 'gjs_throw'
    JS ERROR: !!!     message = 'Requiring GLib, version none: Typelib file for namespace 'GLib' (any version) not found'
    JS ERROR: !!!     stack = 'Error("Requiring GLib, version none: Typelib file for namespace 'GLib' (any version) not found")@:0
("Requiring GLib, version none: Typelib file for namespace 'GLib' (any version) not found")@gjs_throw:0
Error("Chained exception")@:0
("Chained exception")@gjs_throw:0
@gtk.js:1
'
Error: Requiring GLib, version none: Typelib file for namespace 'GLib' (any version) not found

Esto se resuelve instalando las librerias:

sudo apt-get install gir1.0-gtk-2.0

Finalmente, después de unas modificaciones logramos correr una GUI escrita en javascript, lo cual es motivante, ya que hacer lo mismo con PHP nunca se ha podido por la complejidad para dar de alta el entorno.

El código resultante se los comparto mediante gitlab, aquí los links:


lunes, septiembre 29, 2014

Reflexionando en bicicleta.

Dicen que para poder querer a alguien primero te tienes que quererte a ti mismo.

Sin embargo creo que ocurre al revés, que cuando empiezas a amar a alguien, te empiezas a querer y cuidar a ti mismo para poder estar con quien amas.

Gracias doña bebita, eres una bendición de Dios.

martes, febrero 25, 2014

Como conectar linux a VPN servida por windows o PPP desde linea de comandos

Estamos hablando de VPN que es por protocolo PPP

Para conectar ubuntu a una VPN de manera gráfica es muy sencillo ya que trae una GUI de manejo sencillo, al parecer más fácil que en el propio windows.


Sin embargo establecer la conexión requiere interacción manual de nuestra parte, y cuando requerimos la conexión de manera cotidiana resulta engorroso tener que estar conectándola a cada rato que se desconecta, por lo que una forma de hacerlo mediante un script es más adecuada. Otra ventaja es que podemos fijar las rutas manualmente y no sacar todo nuestro tráfico por la VPN.

Requerimos el comando pppd, el cual viene como parte del paquete ppp.

Si no lo tenemos instalado es tan sencillo como usar el comando.

sudo apt-get install ppp pptp-linux

Ahora si entremos en materia de como se hace:
nota: los parámetros se ponen mayúsculas

Primero el comando para levantar el cliente de VPN

pppd call VPN_NAME debug logfd 2 nodetach

El programa buscara los parámetros en el archivo
/etc/ppp/peers/VPN_NAME

cosa que nos damos cuenta cuando lo corremos y aún no tenemos el archivo ya que marca:

pppd: Can't open options file /etc/ppp/peers/VPN_NAME: No such file or directory

En dicho archivo tenemos que poner lo siguiente:

pty "pptp VPN_HOST --nolaunchpppd"
name USERNAME
# esto para que use la ultima versión ms-chap2 al no usar los otros métodos de autentificación
refuse-pap
refuse-eap
refuse-chap
# deshabilitar compresion bsd
nobsdcomp
# deshabilitar compresión deflate
nodeflate

Adicionalmente tenemos que especificar el password a usar en el archivo
/etc/ppp/chap-secrets

USERNAME SOMETHING PASSWORD *

curiosamente el parámetro SERVER podriamos pensar que corresponde al VPN_HOST pero no es así,   hemos puesto inicialmente el valor SOMETHING porque no sabemos que tenemos que poner

guardamos y corremos nuevamente el comando de conexión

pppd call VPN_NAME debug logfd 2 nodetach

a lo que obtendremos un mensaje de error entre lo que encontraremos lo siguiente:

No CHAP secret found for authenticating us to X

Ese X es lo que tenemos que poner en lugar de SOMETHING en el archivo chap-secrets.

Al hacerlo y volver a conectar a la vpn:

pppd call VPN_NAME debug logfd 2 nodetach

si el password es correcto podemos ver que se queda abierta la conexión y se queda corriendo el programa porque le hemos dicho nodetach, lo que nos facilita poner el comando dentro de un ciclo para que se mantenga abierta la vpn.

La parte truculenta de esto fue el SOMETHING ya que esto no aparece explicado por ninguna parte que he visto en internet ni en la documentación.

Si queremos ver un poco más de info de depuración podemos ver los mensajes de salida de pppd

tail -f /var/log/messages | grep pppd

Una vez que estamos conectados tenemos de dos sopas para que los IPs remotos sean accesibles, una es añadir como ruta default la interface ppp0, con el inconveniente de que si en la VPN no tenemos acceso a internet en nuestro equipo nos quedamos sin internet:

route add default dev ppp0

La segunda, es si ya conocemos los segmentos a los que tenemos acceso dentro de la VPN, añadimos estos segmentos

route add -net x.x.x.x/x dev ppp0

Si la info te ha sido de utilidad no olvides regalar un comentario.








domingo, noviembre 24, 2013

Configurar Router Linksys WRT54G con firmware ddwrt para funcionar como gateway repetidor de señal

Router Model Linksys WRT54G/GL/GS
Firmware Version DD-WRT v24-sp1 (07/27/08) micro - build 10012

Prerequisitos

Debe estar funcionando adecuadamente el router como Gateway, y con el DHCP configurado y activo.
Para aplicar la configuración nos conectamos al router por cable de red ethernet.

Lo que hacemos es que el router se conecta a una red inalámbrica como cliente, y crea una red virtual WIFI a la que nos conectamos y a través de la cual nos da servicio de Gateway o sea nos comparte el internet por esta SSID virtual y se conecta a internet a través del internet inalambrico de la red anfitrión.

1. Status > Wireless > Site survey
2. Seleccionar a la red a la que nos queremos conectar para que repita si esta protegida, necesitamos conocer la llave.
3. Damos click en el botón de extrema derecha [Join]
4. Lo anterior nos lleva a la pantalla de Wireless > Basic Settings
5. En dicha pantalla
Wireless Mode poner a Repeater
SSID debe corresponder a la red que seleccionamos

Hay que aclarar que no funciona como un repetidor tal cual y los equipos cliente
no se conectarán a la red anfitrión sino que lo que se tiene que hacer es crear
una interface virtual a la que asignamos un SSID que es al que se conectan los
equipos cliente

6. Virtual Interfaces [Add]
7. Le ponemos el SSID a nuestro gusto
8. [Save]
9. Cambiamos a la pestaña Wireless Security

10. Especificamos los parámetros de seguridad de la red anfitrión y la llave, aquí tiene truco ya hay que ponerle una passphrase vacia, darle generate, y luego poner el password correspondient y darle [Apply settings] y aunque no aparezca el password en el textbok, este ya se guarda y se usa

11. Especificamos los parámetros de seguridad para nuestra red virtual (interface virtual) que son los que usaremos en los equipos cliente

12. [Apply Settings]
13. Reboot router

Probablemente ya no nos responda el router por el cable de red y no nos asigne IP
si es el caso entonces nos conectados al router via WIFI y usando la SSID virtual y su llave

Para estas alturas ya debemos de tener internet a través de la red anfitrión.

lunes, noviembre 18, 2013

Configuración de vncserver para arrancar entorno gnome ~/.vnc/xstartup



Como configurar linux vncserver para que arranque un entorno de escritorio gnome al ejecutar un vncserver.

Modificar el archivo ~/.vnc/xstartup y dejarlo como sigue:

#!/bin/bash

[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
x-terminal-emulator -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
exec gnome-session

sábado, noviembre 09, 2013

BOOK: Como ganar amigos e influir en la gente (Dale Carnegie)

"El gran objetivo de la educación no es el conocimiento, sino la acción."
- Herbert Spencer -

Cuando tratamos con la gente debemos recordar que no tratamos con criaturas lógicas. Tratamos con criaturas emotivas, criaturas erizadas de prejuicios e impulsadas por el orgullo y la vanidad.

"No hablaré mal de hombre álguno, y de todos diré lo bueno que sepa."
- Benjamin Franklin -

Un gran hombre demuestra su grandeza  por la forma en que trata a los pequeños.
- Carlyle -

En lugar de cesurar a la gente, tratemos de comprenderla. Tratemos de imaginarnos por qué hacen lo que hacen. Eso es mucho más provechoso y más interesante que la crítica; y de ello surge la simpatía, la tolerancia y la bondad. "Saberlo todo es perdonarlo todo."

El mismo Dios, señor, no se propone juzgar al hombre hasta el fin de sus dias. Entonces ¿porqué hemos de juzgarlo usted o yo?

REGLA 1: No critique, no condene ni se queje.

Solo hay un medio para conseguir que alguien haga algo.
Y es el de hacer que el prójimo quiera hacerlo.

La única manera de conseguir que usted haga algo es darle lo que usted quiere.

Sigmun Freud decía que todo lo que hacemos surge de 2 motivos:

  1. El impulso sexual
  2. El deseo de ser grande

El Dr. Dewey lo expresa en una sola

  1. El deseo de ser importante

"A todo el mundo le agrada un elegio."
- Abraham Lincoln -

"El principio más profundo del carácter humano es el anhelo de ser apreciado."
- William James -

Si nuestros antepasados no hubiesen sentido este ardiente anhelo de ser importantes, la civilización habría sido imposible. Sin él seriamos iguales que los animales.

Si usted me dice como satisface sus deseos de ser importante, le diré qué es usted.
Eso es lo que determina su carácter. Es la cosa más significativa que hay en usted.

"Considero que el mayor bien que poseo es mi capacidad para despertar el entusiasmo entre los hombres, y que la forma de desarrollar lo mejor que hay en el hombre es por medio del aprecio y el aliento.

Nada hay que mate tanto las ambiciones de una persona como las criticas de sus superiores. Yo jamas critico a nadie. Creo que se debe dar a una persona un incentivo para que trabaje. Por eso siempre estoy deseoso de ensalzar, pero soy remiso para encontrar defectos. Si algo me gusta, soy caluroso en mi aprobación y generoso en mis elogios."
- Charles Swab -

¿que hace la persona común? Si algo no le gusta arma un escándalo, si le gusta, no dice nada.

Falta de aprecio es la razón principal para que hombres y mujeres abandonen a su pareja, con frecuencia damos tan por sentada la presencia de nuestro cónyuge, que nunca le manifestamos nuestro aprecio.

Alimentamos los cuerpos de nuestros hijos y amigos y empleados; pero muy raras veces alimentamos su propia estima. Les damos carne y papas para que tengan energía; pero descuidamos darles amables palabras de aprecio que cantarían durante años en su recuerdo.

La adulación hace más mal que bien. La adulación es falsa, y como el dinero falso, nos pone eventualmente en aprietos si queremos hacerla circular.

La diferencia entre la apreciación y la adulación es muy sencilla: una es sincera y la otra no. Una procede del corazón y la otra sale de la boca. Una es altruista la otra egoísta. Una despierta admiración universal, la otra es universalmente condenada.

"No temas a los enemigos que te atacan, teme a los enemigos que te adulan."
- Alvaro Obregón -

Descuidamos elogiar a nuestros hij@ cuando trae una buena nota, y rara vez alentamos a nuestros hijos cuando logran hornear una torta o construir una casita para pájaros. Nada les agrada más a los niños que esta especie de interés y aprobación de sus padres.

Pasaré una sola vez por este camino; de modo que cualquier bien que pueda hacer o cualquier cortesía que pueda tener para con cualquier ser humano, que sea ahora. no la dejaré para mañana, ni la olvidaré, porque nunca más volveré a pasar por aquí."

"Todo hombre que conozco es superior a mí en algún sentido. En ese sentido, aprendo de él."
- Emmerson -

Seamos calurosos en la aprobación y generosos en el elogio.

REGLA 2: Demuestre aprecio honrado y sincero.


sábado, noviembre 02, 2013

configure static permanent route on red hat or cent os

put it in the file in this case corresponding to eth0 inteface

file:
/etc/sysconfig/network-scripts/route-eth0

content:
GATEWAY0=192.168.1.254
NETMASK0=255.255.255.0
ADDRESS0=192.168.99.0

meaning:
all the traffic to addreses 192.168.99.* go through gateway 192.168.1.254

equivalent temporal route command:
route add -net 192.168.99.0/24 gw 192.168.1.254

miércoles, octubre 30, 2013

search ip using grep

a way to search for ip address in files using grep

go to the directory you want to search

grep -r -n '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}' *

lunes, julio 29, 2013

How upgrade Android Micro SD from 16Gb to 32Gb preserving my SD contents

I want to change the my micro sd card on my phone from a 16 Gb to a 32 Gb new micro sd card.

The process I used to do this was creating a new partition table on the new card and adding a partition of type c (FAT32 LBA) using the fdisk command in linux, saving the partition table.

After create a filesystem using mkfs.vfat and labeling "PHONE CARD" on the partition.

Of course you can do exactly the same using windows tools, the idea es create the partition on the new card and formatting it using a FAT32 filesystem.

Once you have the new partitión all what you have to do is turn off your phone, remove the old sd card, plug-in it on your computer, mount it, and copy all the files, including the hidden files to the new sd card, you can use your favorite file explorer software or commands like rsync to do this.

In my case it took 8 hours to do the copy.

Finally, insert the new sd card in your phone, all the apps should be working, test several apps (the ones that you know were running from the card) and test you have all your contents.

And that's it, enjoy your new space.



jueves, julio 18, 2013

Where do SMS are stored on android phones filesystem

On android sms and mms messages are stored in:

/data/data/com.android.providers.telephony/databases/mmssms.db

The file is a SQLite Database, of course we need a rooted phone to copy the file with adb or using SSHDroid


miércoles, junio 26, 2013

Construyendo archivos .ear para deployar aplicaciones en un java application server



El .ear es un .zip con extensión .ear, que se puede crear con un programa para hacer .zip común y corriente, el truco esta en la estructura de archivos que debe tener:

META-INF
META-INF/application.xml
META-INF/MANIFEST.MF

se debe incluir un archivo META-INF/application.xml
con un contenido donde especificamos las apps y modulos a desplegar, cuyas rutas () son relativas al contenido del .ear


<!--xml version="1.0" encoding="UTF-8"?--> <application xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Application_ID" version="1.4" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/application_1_4.xsd"> <display-name>APPNAME_LABEL_FOR_APPSERVER</display-name> <module> <web> <web-uri>WEBAPP.war</web-uri> <context-root>/WEB_EXPOSED_PATH</context-root> </web> </module> </application>

viernes, junio 21, 2013

Proporcionar soporte a equipos remotos linux

Una forma sencilla para compartir el escritorio de máquinas con linux, windows o mac, y conectarse, es TeamViewer, funciona incluso cuando estamos detras de firewalls.


Otra opción, libre es VNC.

Para hacer conección, en este caso cuando a quien queremos ayudar esta detras de firewall y no lo puede remediar, es (ejectar los comandos desde la linea de comandos ej. xterm ó gnome-terminal ó konsole):

1. abrir el vncviewer en nuestro equipo en modo listen (nuestro equipo debe tener un puerto abierto en internet por default se usa el 5500)

vncviewer -listen

2. le proporcionamos a la persona que vamos a ayudar nuestro IP público donde esta escuchando nuestro vncviewer, ej. 74.125.225.238

3. el cliente al que vamos a ayudar en su equipo linux abre el servidor de vnc para la sesión de X principal (debe tener instalado el paquete x11vnc (sudo apt-get install x11vnc) )

x11vnc -connect 74.125.225.238

con esto comparte su escritorio para que podamos ayudarlo, en cualquier momento puede quitarnos el control interrumpiendo el programa (ctrl+c)

jueves, junio 06, 2013

PHP script to generate DB

La idea de este script php es generar un sql DDL para generar algunas bastantes tablas en una base sql.
<?php

header('Content-Type: text/plain; charset=utf-8');

$no_tablas = 40;
$type_a = explode('|','int|varchar(20)|char(5)|decimal(10,2)|date|time');

for($i=1; $i<=$no_tablas; $i++){
 $no_campos = rand(3,12);
 $foreign = (rand(0,1))? true: false;
 $foreign_str = '';
 $campos = array();
 $campos[] = "\tid int not null primary key";
 for($j=1; $j<=$no_campos; $j++){
  $ctype = $type_a[ rand(0,count($type_a)-1) ];
  if ($foreign && $ctype=='int' && $foreign_str==''){
   $dest_tbl = "tabla_".rand(1,$i-1);
   $foreign_str = "\tforeign_key (campo_$j) references $dest_tbl(id)";
   $nullable = 'not null';
  } else {
   $nullable = (rand(0,1)==1) ? 'not null': '';
  }
  $campos[] = "\tcampo_$j $ctype $nullable";
 }
 $campos_str = join(",\n",$campos);

 echo <<<EOF
create table tabla_$i (
$campos_str
$foreign_str
);


EOF;
}

?>
Una muestra del archivo de salida, es algo así:
create table tabla_1 (
 id int not null primary key,
 campo_1 varchar(20) ,
 campo_2 date not null,
 campo_3 time not null,
 campo_4 char(5) not null,
 campo_5 char(5) ,
 campo_6 date not null,
 campo_7 date not null,
 campo_8 int not null,
 campo_9 char(5) not null,
 campo_10 date not null
 foreign_key (campo_8) references tabla_1(id)
);

create table tabla_2 (
 id int not null primary key,
 campo_1 time ,
 campo_2 varchar(20) ,
 campo_3 date not null,
 campo_4 time ,
 campo_5 char(5) ,
 campo_6 decimal(10,2) ,
 campo_7 time 

);

create table tabla_3 (
 id int not null primary key,
 campo_1 varchar(20) ,
 campo_2 varchar(20) not null,
 campo_3 time ,
 campo_4 time ,
 campo_5 int ,
 campo_6 time not null,
 campo_7 char(5) ,
 campo_8 time ,
 campo_9 decimal(10,2) ,
 campo_10 date 

);

Comparación de programas de compresión vs versión paralela.

Comparación de los programas de compresión, tiempos y tamaños, se usan versión mono y versión paralela.

gzip

pv TABLA_QYDTTK4_F130604.TXT | gzip > TABLA_QYDTTK4_F130604.txt.gz
1.04GiB 0:00:45 [23.5MiB/s] [====================================================>] 100%
pv TABLA_QYDTTK4_F130604.TXT | pigz > TABLA_QYDTTK4_F130604.txt.pig.gz
1.04GiB 0:00:04 [ 236MiB/s] [====================================================>] 100%

bzip2

pv TABLA_QYDTTK4_F130604.TXT | bzip2 > TABLA_QYDTTK4_F130604.txt.bz2
1.04GiB 0:04:55 [3.59MiB/s] [====================================================>] 100%
pv TABLA_QYDTTK4_F130604.TXT | lbzip2 > TABLA_QYDTTK4_F130604.txt.lbzip2.bz2
1.04GiB 0:00:07 [ 134MiB/s] [====================================================>] 100%
pv TABLA_QYDTTK4_F130604.TXT | pbzip2 > TABLA_QYDTTK4_F130604.txt.pbzip2.bz2
1.04GiB 0:00:26 [39.3MiB/s] [====================================================>] 100%

xz

pv TABLA_QYDTTK4_F130604.TXT | xz > TABLA_QYDTTK4_F130604.txt.xz
1.04GiB 0:11:02 [ 1.6MiB/s] [====================================================>] 100%
pv TABLA_QYDTTK4_F130604.TXT | pxz > TABLA_QYDTTK4_F130604.txt.pxz.xz
1.04GiB 0:01:06 [15.9MiB/s] [====================================================>] 100%
pv TABLA_QYDTTK4_F130604.TXT | pixz > TABLA_QYDTTK4_F130604.txt.pixz.xz
1.04GiB 0:00:58 [18.1MiB/s] [====================================================>] 100%

human readable sizes

-rw-r--r-- 1 jobs jobs 1.1G jun  5 06:28 TABLA_QYDTTK4_F130604.TXT
-rw-r--r-- 1 jobs jobs  86M jun  5 13:11 TABLA_QYDTTK4_F130604.rar
-rw-r--r-- 1 jobs jobs 101M jun  6 11:23 TABLA_QYDTTK4_F130604.txt.gz
-rw-r--r-- 1 jobs jobs 101M jun  6 11:31 TABLA_QYDTTK4_F130604.txt.pig.gz
-rw-r--r-- 1 jobs jobs  80M jun  6 11:29 TABLA_QYDTTK4_F130604.txt.bz2
-rw-r--r-- 1 jobs jobs  80M jun  6 12:16 TABLA_QYDTTK4_F130604.txt.lbzip2.bz2
-rw-r--r-- 1 jobs jobs  80M jun  6 12:21 TABLA_QYDTTK4_F130604.txt.pbzip2.bz2
-rw-r--r-- 1 jobs jobs  63M jun  6 12:02 TABLA_QYDTTK4_F130604.txt.pixz.xz
-rw-r--r-- 1 jobs jobs  63M jun  6 11:55 TABLA_QYDTTK4_F130604.txt.pxz.xz
-rw-r--r-- 1 jobs jobs  63M jun  6 11:49 TABLA_QYDTTK4_F130604.txt.xz

sizes, more detail

-rw-r--r-- 1 jobs jobs 1112120271 jun  5 06:28 TABLA_QYDTTK4_F130604.TXT
-rw-r--r-- 1 jobs jobs   90148917 jun  5 13:11 TABLA_QYDTTK4_F130604.rar

-rw-r--r-- 1 jobs jobs  105128200 jun  6 11:23 TABLA_QYDTTK4_F130604.txt.gz
-rw-r--r-- 1 jobs jobs  105153673 jun  6 11:31 TABLA_QYDTTK4_F130604.txt.pig.gz

-rw-r--r-- 1 jobs jobs   82889350 jun  6 11:29 TABLA_QYDTTK4_F130604.txt.bz2
-rw-r--r-- 1 jobs jobs   83134496 jun  6 12:16 TABLA_QYDTTK4_F130604.txt.lbzip2.bz2
-rw-r--r-- 1 jobs jobs   82913562 jun  6 12:21 TABLA_QYDTTK4_F130604.txt.pbzip2.bz2

-rw-r--r-- 1 jobs jobs   65921560 jun  6 12:02 TABLA_QYDTTK4_F130604.txt.pixz.xz
-rw-r--r-- 1 jobs jobs   65884988 jun  6 11:55 TABLA_QYDTTK4_F130604.txt.pxz.xz
-rw-r--r-- 1 jobs jobs   65667608 jun  6 11:49 TABLA_QYDTTK4_F130604.txt.xz

Notas:
Se uso un archivo de texto de 1.04 Gb, en una workstation con 64Gb de RAM usando /dev/shm, sistema operativo Gentoo, y el software se compilo del repositorio.

extract specific lines from text file

For the example we use to variables L1 for the first line number, L2 for the last line number.

L1=21
L2=33
FILE=x.txt

awk method:

awk -e "NR>=$L1&&NR<=$L2{print \$0}" $FILE

sed method:

sed -n "$L1,$L2 p" $FILE

head + tail method:

head -n $L2 $FILE | tail -n $(($L2-$L1+1))

martes, mayo 28, 2013

Corazón Coraza


Porque te tengo y no
porque te pienso
porque la noche está de ojos abiertos
porque la noche pasa y digo amor
porque has venido a recoger tu imagen
y eres mejor que todas tus imágenes 

porque eres linda desde el pie hasta el alma
porque eres buena desde el alma a mí
porque te escondes dulce en el orgullo
pequeña y dulce
corazón coraza

porque eres mía
porque no eres mía 

porque te miro y muero
y peor que muero
si no te miro amor
si no te miro

porque tú siempre existes dondequiera
pero existes mejor donde te quiero
porque tu boca es sangre
y tienes frío
tengo que amarte amor
tengo que amarte 

aunque esta herida duela como dos
aunque te busque y no te encuentre
y aunque
la noche pase y yo te tenga
y no.

-- Mario Benedetti --

lunes, mayo 27, 2013

Git Administration, delete the last commit

git reset HEAD^ --hard

after running this command in your local repo, do a

git push

this allows to restore the repo when someone for example erased all files in error.