20071016

una de ksh

Aunque el post anterior puede resultar de utilidad para algunos, no es muy técnico que digamos.

Pues bien, acá tiro algo de ksh (shell por defecto en muchos unix privativos, y se puede instalar en cualquier unix like libre)


#!/bin/ksh

echo "Hola Mundo"


Esto no es muy impresionante, pero hay mucha gente que no sabe que el ksh tiene un modificador para poder evaluar la sintaxis sin ejecutar nada realmente:

ksh -n my_file.sh

Esto lo que hace es evaluar la sintaxis. El problema que puede tener para algunos es que no dice mucho (es parco como todo comando clásico de unix). Lo que se puede hacer para verificar la salida es

ksh -n my_file.sh; echo $?

Si el resultado es 0, quere decir que está todo OK.


[root@myhost ~]# ksh -n k.sh;echo $?
0


Algo que me encontré que me gustó fue:


matias@t0001850023:/usr/local/storage/model/oracle$ ksh -n bk_pos_idm_bd_cold.sh
bk_pos_idm_bd_cold.sh: warning: line 29: `...` obsolete, use $(...)
bk_pos_idm_bd_cold.sh: warning: line 29: `...` obsolete, use $(...)
bk_pos_idm_bd_cold.sh: warning: line 30: `...` obsolete, use $(...)
bk_pos_idm_bd_cold.sh: warning: line 30: `...` obsolete, use $(...)
bk_pos_idm_bd_cold.sh: warning: line 36: `...` obsolete, use $(...)
bk_pos_idm_bd_cold.sh: warning: line 36: `...` obsolete, use $(...)
bk_pos_idm_bd_cold.sh: warning: line 37: `...` obsolete, use $(...)
bk_pos_idm_bd_cold.sh: warning: line 37: `...` obsolete, use $(...)
bk_pos_idm_bd_cold.sh: warning: line 41: `...` obsolete, use $(...)
bk_pos_idm_bd_cold.sh: warning: line 44: `...` obsolete, use $(...)
bk_pos_idm_bd_cold.sh: warning: line 47: `...` obsolete, use $(...)
bk_pos_idm_bd_cold.sh: warning: line 47: `...` obsolete, use $(...)
bk_pos_idm_bd_cold.sh: warning: line 49: `...` obsolete, use $(...)
bk_pos_idm_bd_cold.sh: warning: line 49: `...` obsolete, use $(...)


Se debe a que no le agrada mucho líneas como:


echo "#-> El PostScheduleCMD termino con un status de ERROR `date +'%Y%m%d %H:%M'`"


Simplemente se reemplaza por la forma más usual, que es el $(......) (aunque yo estoy más acostumbrada a la otra).

Otros dos modificadores interesantes son:


set -e
set -x


Todo lo que se pone con el set -e, se puede poner dentro de un script, o en la misma llamada al ksh (ksh -e).

El -e lo que hace es, ante un error, ejecutar el trap ERR y luego salir (ejecuta el trap si está definido, si no, sale simplemente con un código de error). Ejemplo:


matias@t0001850023:/tmp$ cat k.sh
#!/usr/bin/ksh

ls /noexiste

echo "Hola Mundo"


matias@t0001850023:/tmp$ ./k.sh
ls: /noexiste: No existe el fichero o el directorio
Hola Mundo
matias@t0001850023:/tmp$ cat ./k.sh
#!/usr/bin/ksh -e

ls /noexiste

echo "Hola Mundo"


matias@t0001850023:/tmp$ ./k.sh
ls: /noexiste: No existe el fichero o el directorio


La segunda ejecución, da error al ejecutar el ls, y luego aborta. Mientras que la primera ejecuta todo sin importar los errores.

El -x es simplemente un modificador para obtener más debug por pantalla:


matias@t0001850023:/tmp$ cat ./k.sh
#!/usr/bin/ksh -x

ls /noexiste

echo "Hola Mundo"


matias@t0001850023:/tmp$ ./k.sh
+ ls /noexiste
ls: /noexiste: No existe el fichero o el directorio
+ echo 'Hola Mundo'
Hola Mundo
matias@t0001850023:/tmp$


Esto es un punto bastante útil cuando se está desarrollando un script complejo, que tiene muchas líneas y muchos if/while/etc. Todo lo que el ksh evalua, lo muestra por pantalla con un + al principio de la línea. Permitiendo el ver que valores tenía una variable al ser evaluada por un if.

Mientras que el -e es aconsejable que esté siempre (a menos que haya programas que pueden fallar y se trapenan bien los errores), el -x suele ser molesto para una operatoria usual.

analizando las cosas

En mi trabajo veo con bastante frecuencia algo que me llama la atención. Hay varias personas que utilizan varias herramientas (ping, nmap, ssh, etc) y el problema fundamental que tienen es que no saben utilizarlas.

No tanto por los mensajes de error que muestra, sino por los mensajes que no muestra.

Por ejemplo, el telnet, al querer abrir un socket hacia un destino myhost al puerto P, usualmente muestra:


[root@flondra bin]# telnet myhost P
Trying myhost...
Connected to myhost (myhost).
Escape character is '^]'.



Esto es bastante simple, muestra que abrió el socket y está escuchando a la espera que alguien envie un mensaje.

¿que es lo que no muestra aquí?

No muestra que el socket esté cerrado, y al esperar un par de segundos, se puede notar que el socket está escuchando realmente, y no es algún espejo o lag en la comunicación. Aunque lo mejor es tirar algo de texto y ver que responde el server myhost del puerto P.

Una de las cosas de tener que analizar problemas complejos no es que se tiene algo simple que se vea facilmente. Al hacer un análisis se debe tener en cuenta las cosas conocidas,


si hace ruidos de pato, camina como pato y nada como pato, debe ser un pato


Muchas veces al toparse con un problema se un análisis y se aplica el método inductivo, el problema es que muchas veces, pese a que la marea se dirija a la costa, puede ser a la costa equivocada. Es más simple, dado que no se analiza el problema real, simplemente se ve el contexto, y si encaja (más o menos), se aplica el modelo. El problema fundamental de esto es que en informática, el que haga ruidos de pato, se comporte como un pato y camine como un pato (sea cual sea el orden de la frase), no significa que sea un pato.

Si un equipo no responde, puede ser problemas de red, problemas de la placa de red, problemas del segmento de la red del equipo destino o del origen, o que realmente esté el equipo caído.

Esto también se aplica al día a día, cuando uno ingresa en algún equipo, y siempre tiene un mensaje de error (y uno es el administrador de ese equipo), debe resultar raro y llamar mucho la atención cuando deja de salir el mensaje de error. Pero conozco a muchos que cuando deja de aparecer algún mensaje de error usual, no se preocupan de qué estará pasando.

20071014

ghost whisperer (s 1 y 2)

Terminé de ver el último capítulo de Ghost Whisperer. Algo que me llamó la atensión, es que Dell auspicia la parte de infromática del programa ese, o al menos da las máquinas para que aparezcan. Una cosa llamativa es que el 80% de las máquinas que aparecen son notebooks, y las máquinas usuales (desktops) no aparecen tanto, y si aparecen son en hospitales o en algún despacho. Incluso en uno de los capítulos aparece un Gnome.

La serie en general tiene un formato bastante establecido, pero ameno (aunque se torna predecible en algunas partes). Aunque algo que tiene, es una parte épica. En la primer temporada lucha con un personaje (Romano) que era un pastor de una secta suicida. En la segunda temporada ella casi muere y la reviven (en un momento muy épico) 4 niños sentados alrededor de ella.

Estoy bajando la 3º temporada para ver que tal está, pero las primeras dos están bastante buenas. Si bien no se compara tanto con Medium, aunque ambas series traten de gente muerta, creo que en la segunda están poniendo más cosas que aparecían siempre en Medium (como los sueños y las premopniciones de la personaje principal).

Por más que esta serie es agradable, no creo que sea de esas series que invito a algún amigo a ver (y yo la veo nuevamente), o de esas que vea algún que otro capítulo repetido.

20071011

dar vergüenza ajena

En Argentina se está a punto de votar a presidente. Muchos creen que ganará la esposa del actual presidente (Cristina Kirshner, o algo así).

La campaña que está haciendo es bastante triunfalista, con lo cual muchos de lo que son el "pueblo llano" van a ser convencidos de que la tienen que votar porque ya tiene pinta de ganadora, lástima que se está arruinando la cara y el cuerpo con las operaciones que se está haciendo (esto puede tirarle para atrás bastante, se ve como si se derritiera).

Una de las campañas que más vergüenza ajena da es la de Sobich, que en TODOS los anuncios que hacen es para pegarle (de una forma bastante absurda) a Cristina, diciendo:


Cristina 41%
Sobich 100%


Lo que más vergüenza da es que esta persona tiene un grave asesinato en su haber (en su gestión un policía asesinó a un docente). Lo peor de todo es que, más allá de que yo no voto para nada, esta persona en ningún momento habló de lo que quiere hacer, o de lo que no quiere hacer, en sus anuncios solo se habla de que Cristina se cayó, y dicen eso de 41% y 100%.

En fin, cada vez yo creo más en mi posición de NO VOTAR BAJO NINGÚN CONCEPTO A NINGUNO. Como mucho, si llego a hacer el cambio de domicilio, impugnaría mi voto (el no votar es ilegal -todavía- en el país que vivo). Me da pena y mucha lástima toda la gente que va a votar a esta persona, porque evidencian un grave desprecio por sus ideas y por una ética respetable.

20071010

cifrado para vago (mini howto)

Hoy encontré una forma bastante buena para encriptar un FS. Usé para este proposito el paquete encfs.

Lo que hace es montar un directorio en otro (tipo con el mount_null), en el destino lo que hace es verse todo sin problemas. Pero en el origen lo que hace es cifrar tanto los datos como los nombres de los archivos.

El uso es bastante simple, hace falta tener fuse-utils:


sudo apt-get encfs

sudo modprobe fuse

encfs ~/.secret ~/secret



Lo que pregunta el comando encfs es algo de como lo va a cifrar, la contraseña y creo que nada más. Igualmente en la página del manual hay bastante información bien armada.

El resultado (sin cifrar):

matias@t0001850023:~/secret$ ls
(Ebook - Pdf - Ruby) Pragmatic Programmers - Programming Ruby - The Pragmatic Programmer'S Guide.pdf
(Ebook - Pdf - Ruby) Pragmatic Programmers - Programming Ruby - The Pragmatic Programmer'S Guide.pdf.txt
esperanto
music
matias@t0001850023:~/secret$


Y el original (sin cifrar):

matias@t0001850023:~/.secret$ ls
chqMh9zwWhDf81
HOSJUcIZhVrWticIuwYvZ,OVlwNLNhwR8E9uYftFeGEoXNyzZlBYrsvp63UbAWk5xid-6B29c,unq9TUmICG-7Eya6c4toQeiXDEHAx-PC9KB9Ht,0aSlaTDme54bTAH980WjzHxfK4OEK76MGQ6j7VX
hsjZ3v081Hjf68mu9lP34WRaXqFDoshurTJESDXT6izYZ4JTkGR2PWiWWXNyzFS1-OyR2zcXh-9hDplOYc8KgOzHOelG02LbQPXdEo6COUadajdqmwGTQcn5Nyij85haLCQBEGw6kKzT1-
UNlE,lH9OOWQzfoGWVsNETht
matias@t0001850023:~/.secret$

20071009

el cansancio y el dolor

El día de ayer, u hoy a las 00:30, tuve que ir a un lugar por un problema que tuvo un amigo mio. Esta es una de esas pocas veces (creo que la primera en este extremo) que fui a un lugar donde no quería ir bajo ningún concepto, tenía demasiado cansancio, pero tenía que ir porque la persona que tenía el problema es una de las personas que le tengo gran estima.

Una cosa que me pasó, y que siempre me pasa, es que cuando ya estoy cansado, todo me comienza a doler (sobre todo el tobillo y la rodilla de la pierna derecha). Lo mismo que me pasa cuando tomo una o dos copas (las primeras dos, luego ya se pasa). O como por ejemplo, un día que duermio más o menos 3 horas, me duele todo.

No se muy bien de donde vendrá eso, pero es algo que siempre me molesta.

20071007

charlas en la CaFeCONF

Ayer di las charlas en la CaFeConf. Hablando con Matías Brutti y con otros más, llegué a una conclución bastante simple:


quieren mierda, pues a darles mierda


Muchas veces yo pensaba en dar charlas más técnicas, con más contenido técnico y más complejas. Pero el problema es que vienen 10 personas, de las cuales no son simples expectadores, muchos ya tienen en mente que es lo que hace el tema, o lo podrían investigar solos.

Di dos charlas, muy orientadas a la gente que esta comenzando, y ambas estaban bastante llenas (incluso la que di en el auditorio). Lo que me hace pensar que la gente, más allá de todo, sigue queriendose meter dentro de GNU/Linux y quieren ver las charlas básicas.

También, viendo la charla de cierta gente de Ruby, me di cuenta que cualquiera da charlas. Esta persona, más allá de que se haya podido trabar un poco la lengua, hablaba bastante despacio, e incluso en un aula para 25 personas, no se escuchaba en el fondo (a unos 4 metros). Y lo que me resultó más denigrante, es que el tipo estaba comiendo chicle. Es claro que no tiene mucha idea como hacer una charla, y que lo hacía por otra razón (si le gustaba mucho Ruby, hubiese hecho algo distinto, no lo que mostró).

Algo que me agradó mucho, fue el asistir a las charlas, sin tener que hacer nada más que asistir. Llegar a dar mi charla y luego irme. Puede sonar algo malintencionado de mi parte, o al menos poco colaborativo, pero como el Viernes se me complicó por un tema personal, no fui a colaborar con nada, y el sábado ya me dió fiaca de hacer algo, y solo asistí como conferencista.

La UADE, más allá de que tiene muy buenas instalaciones, no está preparada para que en sus aulas haya tanta gente, y el aire se enrarecía bastante rápido, con lo que mucha gente tenía dolor de cabeza (yo estuve sediento constantemente). Pero más allá del detalle de que la cantidad de gente sobrepasaba la que estaba pensada en las aulas, la UADE tiene una infraestructura que no se puede comparar con otros lugares. Por ejemplo, había un brasuleño que estaba en la cola para mostrar su notebook, y una mina de seguridad se le puso a hablar en portuguéz. Más allá de que sea pura coincidencia, el hecho le suma muchos puntos a la UADE y a la gente de seguridad que tiene.

20071004

CaFeCONF 107

Este año se va a volver a hacer la CaFeConf. Como todos los años, más allá de ser un evento algo técnico, está muy orientado a los principiantes, hay muchas charlas que cubren todos los puntos del principiante.

Yo doy dos (también para principiantes):


  • Instalando programas en GNU/Linux

  • Necesito ayuda



La de instalación de programas es obvio de que se trata. La otra es una forma de encarar búsquedas por internet, para poder conseguri mejores resultados y en menos tiempo.

20071001

visita al exterior (de la ciudad)

Hace ya varios años que no salía de Capital Federal, no solo porque no tenía nada que hacer fuera, si no que tampoco tenía muchas ganas. Por más que en provincia hay muchas cosas que se pueden hacer, es bastante caótica mi vida como para pensar en hacer algo más (cada vez tengo ganas de hacer menos, o mejor dicho, hacer lo justo).

Diabolo y SAE tenían ganas de ir a Mac Station para comprar un cable que necesitaba Diabolo, y de paso yo fui a comprarme mi notebook. El lugar era demasiado costoso (costaba unos 8k) y el falabella que había tenía máquinas algo pedorras (todas sony -que me desagradan- y presario/compaq).

Ya nuevamente en capital, fuimos falabella de capital (el de corrientes y san martin). Había una Lenovo 3000 N100, que era justo lo que yo quería (algo bueno, menos de 5k AR$).

Me hubiera gustado hacer algo de quilobo y pedir que me regresen el dinero del sistema operativo que venía por defecto, siendo que no me anda bien y yo no lo voy a usar. Pero la gran sabiduría de SAE hizo mella en mí: no te gastes, no entienden nada y no van a saber que decirte. Con lo que no hice ningún escandalo ni nada. Aunque sigo con ganas de tener alguna discución con los de lenovo por el sistema operativo pedorro que me dieron.

Más allá de que no me agrada Windows®, mi problema es que anda mal. La pantalla parpadea (pero el puntero se ve perfecto) y tarda demasiado en cargar, siendo que no le instalé nada de nada. Lo que más me hace gracia es que tiene unos 15 GB solo para la instalación por defecto de Lenovo.

20070924

local o del mundo

En la argentina acutalmente hay un programa que se llama el gen argentino (basado en un programa de Inglaterra que no recuerdo el nombre).

Los personajes que se enfrentaron, salvo en la parte de deportes, tienen una caracteristica que para mi es algo destacable. En una punta hay un personaje que claramente hizo mucho por el país, y en la otra, es uno que hizo algo internacional (de mayor o menor embergadura, pero no solo en argentina o ni siquiera en argentina).

El primer ejemplo es el señor Ernesto Gebara Linch (a.k.a. El Che), que claramente tiene una proyección mucho más internacional que su competidor en la misma categoría, Eva Duharte de Peron (a.k.a. Evita). El ganador de esta categoría fue el Che, la proyección internacional

En la segunda contienda, San Martín, que intentó libertar toda América, y Belgrano, que hizo mucho por el país. El ganador fue San Martín.

En la tercera contienda fue Fangio contra Maradona. En este punto es algo dificil decir porque ambos fueron claramente internacionales, uno en el automovilismo y otro en el futbol. Igualmente el ganador fue Fangio, sobre todo por la bronca que se le tiene a Maradona por su pasado de drogadicción y execos varios.

Hoy, la contienda fue entre Borges y Fabarolo. En esta parte también tiene un punto raro de famal. Borges, claramente de fama internacional, aunque su obra (por lo poco que leí), es bastante porteña (si bien hay calles y direcciones en varios cuentos, los paisajes se pueden hubicar en casi cualquier barrio porteño). Fabaloro, hizo, gracias a los estudios y el esfuerzo personal, un descubrimiento que cambión (salvó) la vida de muchas personas. Más allá de mis gustos personales, ganó Fabaloro.

Con respecto a Borges, no se si es que mi vocabulario no es tan limitado como la gran mayoría de las personas que he escuchado hablar de Jorge Luis Borges, pero yo leí algunas cosas, y no me parecieron extremadamente barrocas en la utilización del lenguaje. Tiene una simpleza y belleza que realmente, luego de leer el primer cuento, me dieron muchas ganas de seguir leyendo su obra.

Supongo que muchos de los que indican que la literatura de Borges es muy complicada, no han leido nada y se basan en los dichos de alguien (debe ser el algún otro del que habla el excelcio Tato Bores).