Archivo de la categoría: La nota del día

Haciendo bien tu trabajo …

Nadie puede negar la voluntad de trabajo de muchísimos venezolanos, el problema es que muchísimas veces (me incluyo) no lo sabemos hacer correctamente, lo cual explica la gran mayoría de los problemas que como país nos acontecen, desde el productivo y competitivo hasta el político-ideológico.

La necesidad es mala consejera, sobre todo cuando se trata de hacer algún trabajo “por la chamba y por los dineritos que me entrarán al hacerlo”, si en la fórmula no se incluye la mística necesaria para no solamente hacer bien nuestro trabajo, sino disfrutarlo, estaremos no solamente perdiendo nuestro tiempo, sino que, si seguimos pensando de manera egoísta, de dejar de hacer perder el tiempo (y un sinfín de cosas más, incluso la vida) a los demás.

Llegando bien a tu destino

Una de las cosas que más cuesta explicar es la labor de taxista en Venezuela, por cosas como la crisis, no solamente veras profesionales tras el volante (y hasta el ex-dueño de una constructora de casas a la que el gobierno jamás le pagó y se declaró en bancarrota), sino que verás gente haciendo la labor únicamente por la necesidad y sin la mística y dedicación necesaria para realizar el trabajo.

Siempre tengo anécdotas encontradas y divergentes acerca de los taxistas, desde el señor mayor que, con un carrito destartalado me llevó desde el Aeropuerto de Barcelona a mi destino y de paso, me esperó a que cenara en una arepera (donde también le brindé la cena y hablamos de su vida, de su anciana esposa muy enferma, lo que lo había llevado a dedicarse a ser taxista, del cómo los “taxistas oficiales” de la línea del aeropuerto no “le daban chance de trabajar” lo ninguneaban y lo relegaban a un rincón bastante alejado del andén principal, etc); pasando por el “taxi pirata” enfrente del C.C. Sambil que me dijo con actitud retrechera “son 150 Bolívares, si quieres no te montas, yo no llevo a nadie de gratis”, al señor de la línea del terminal de la Bandera en Caracas que me pidió permiso para meterse por “unos caminos verdes” para llegar más rápido, valorando así mi tiempo, hasta aquel que te hace perder el tiempo en una cola porque no se quiere desviar, las cosas son tan variopintas y anecdóticas como pudiera imaginarse.

Recordé todo esto hace unos días, tomé un taxi en el centro de Barquisimeto y el hombre, al ver que yo iba hacia el oeste, en vez de tomar la Ribereña, o bueno, tal vez no “desviarse” tanto, tomar la 14 ó la 16; el hombre como si nada permanece inmóvil (y con una cara de obstinación y stress que no se le puede poner peor) en una grandísima cola en la carrera 18 (para el que no lo sabe, el Barquisimeto es poco asiduo de “desviarse” de su ruta, y todos aprendieron a bajar y a subir la ciudad por las mismas calles y carreras), en cada calle que pasábamos le recordaba la “existencia” de la 16, le dije “mire, si nos desviamos acá, salimos a la Escuela Costa Rica, pasamos detrás del ambulatorio y agarramos la carrera 13 frente al San Juan”, el hombre simplemente dijo “ujum”, y siguió aferrado a su volante y mirando la cola, al llegar a la 38 fue igual, “mire, si doblamos acá, podemos agarrar la 14 allá abajo y salimos al parque ayacucho”, el hombre me miró con cara de “¡no me fastidies!” y siguió con actitud de Juan Peña en “El Diente roto” de Pedro Emilio Coll, así fue en cada calle hasta la calle 48, donde dobló, me dejó en mi destino (luego de una hora y cuarto de cola) y al pagarle ni las gracias me dió, es decir, hace más de media hora que me hubiera dejado en mi destino e incluso hubiera tomado ya otra carrera; pero capaz llegará a su casa, cansado y obstinado, peleando con su mujer diciendo “¡coño!, ¡no agarré casi carreras y me mamé unas colas terribles y varios clientes intensos y fastidiosos!” y tratará de preguntarse (sin respuesta obviamente) por qué le va mal en su trabajo …

Tal como el taxista que me llevó de Maiquetía a un hotel en La Guaira y aunque viendo que estaba lloviendo y yo llegaba con más de 90 kilogramos en maletas desde Guatemala; el hombre, a pesar de haberme cobrado *casi* como un pasaje Caracas-Barquisimeto, fue incapaz de estacionarse dentro del Hotel, ayudar a bajar las maletas o siquiera prestarme un paraguas; ¿para qué se dedica a ser taxista si no desea tener la empatía, la mística y el buen trato hacia sus clientes y sólo nos ve como máquinas que le damos dinero para que él mueva un volante y pise un freno y un acelerador? …

Ubicando bien tu negocio

Me encontraba muy temprano en la mañana en el andén del Terminal de pasajeros de Guanare, me pega el hambre y llamo a una señora, que cava en mano, carga pastelitos y empanadas y pasea por todos los andenes del mismo; mientras echo la mirada al horizonte, veo en la cerca perimetral, que queda colindante a un barrio, una joven, con una mesa, una cava con empanadas, una sombrilla, sentada mirando su celular, me pregunté ¿qué diferencia hay entre esa joven y esta señora?, ambas venden empanadas, ambas deben pararse muy temprano a hacer las empanadas y ambas tienen una cava, la diferencia notable es que la joven se sienta enfrente de su casa (no hay muro que evite que ella pueda entrar al terminal de pasajeros) y la señora toma su cavita y pasea por todo el anden, es probable que la señora termine antes que la joven, también es probable que la joven finalice el día más descansada que la señora, ¿quien lo está haciendo bien? …

Como aquella persona que se dedica a vender aceites y lubricantes para motor simplemente poniendo una mesa y un letrero en la puerta de su casa (como si viviera en un lugar extremadamente concurrido lleno de talleres mecánicos y vehículos) , puede que te levantes muy temprano a trabajar, pero no te estás ubicando correctamente, no es lo mismo vender café en la emergencia de un hospital que vender café a la salida de un jardín de niños y escuela primaria (si, he visto ese caso); también es el caso de que se ha fomentado, con exacerbado ahínco, que una persona con una silla, una mesa, una sombrilla, un par de celulares y una cestita llena de caramelos de menta para dar cambio, es un empleado formal muy bien organizado.

Transito informal

Siempre he dicho (con el perdón de los funcionarios), que el trabajo peor ejecutado en Venezuela, es el de los fiscales de tránsito, tal vez son pocos los que “se portan mal”, pero como acá en Venezuela, las cosas que ocurren mal hacen más ruido que las buenas, pues es lo que más se ve y escucha.

Imaginen el caso, Avenida Lara esquina Avenida Bracamonte de Barquisimeto, corredor vial, esquina (y con semáforo), rayado de acera en rojo, zona bancaria (bancos Del Tesoro y Venezuela) y aún así, jamás verás allí un par de fiscales dirigiendo el tráfico y peor aún, verás muchos vehículos estacionados incluso frente a la zona bancaria, incluso si desearan “portarse mal” y *matraquear* a malos conductores, ¡ese sería un paraíso!, sin embargo, lo más que verás será en cualquier otra esquina, un par de conos y ellos parando taxistas pidiendo papeles y “pidiendo para el refresco”.

¿se imaginan cómo serían de transitables nuestras avenidas y calles si cada fiscal “hiciera su trabajo” y ya le hubieran revocado la licencia a más de un multi-infractor loco que anda por las calles?, ¿se imaginan lo práctica que sería Caracas si no cualquiera que tuviera plata, pudiera tener carro y tener licencia con sólo pagar 500 mil sin tener siquiera que hacer examen?, ¿cuanta informalidad más cabrá dentro del rol de fiscal de tránsito, hasta que nos demos cuenta que es gracias a ellos (y culpa de ellos) que sigan en las calles gente que le tranca el paso a una ambulancia, hace doble (y triple) fila en un cruce, se atraviese en la encrucijada luego de comerse el semáforo, o crean que las avenidas son para detenerse y echar cuentos con el motorizado de al lado?.

Política informalizada

En estos últimos quince años, al igual que los taxistas, hemos tenido la más variopinta clase de funcionarios detrás de los organismos, desde veterinarios como Ministros de Salud, hasta filósofos en carteras de economía, acá todo el que quiera “echarle bolas” en un cargo lo hace así no tenga ninguna experiencia en el mismo, ¿las consecuencias?, pues las estamos viviendo ahora.

No estoy en contra de una persona no graduada en algo para poder ejercerlo, pero una cosa sin ecuanón es que debe, “al menos” ser docto, mi amigo Hector Colina podrá ser historiador, pero es un experto del software libre mucho más erúdito que muchos ingenieros graduados de conozco; pero hay graduados en una carrera, que ni en su propia área la pueden ejercer bien.

No hay mejor ejemplo que CONAVI, la Comisión Nacional de la Vivienda, durante 15 meses el arquitecto “y poeta productor de cine” Farruco Sesto, fue su presidente, fue tan funesto su paso por allí que el presidente Hugo Chávez deshizo el organismo luego que su titular admitiera en cadena de radio y televisión que cuando llegó al mismo “no tenía idea alguna de lo que era hacer casas populares” y finalizó su paso en 2009 sin una sola urbanización inaugurada por este organismo, llevando a la “emergencia” que hoy es “La Gran Misión Vivienda Venezuela”.

Es que precisamente la mayoría de las misiones y grandes misiones salieron, de la incapacidad de los organismos titulares de hacer las cosas bien, de hacer su trabajo como es debido.

¿Acaso se necesitaría Misión Saber y Trabajo si los ministerios de comercio e Industria se dedicaran al fomento y creación de empresas con el fin de emplear a toda esa mano de obra desempleada?, ¿necesitaríamos una Misión “En amor mayor”, si el IVSS no fuera una maraña inexpugnable de burocracia e ineptitud?.

Es que la creación de una Misión (estructura informal, adscrita directamente a la presidencia de la república, con presupuesto propio y accionar directo desde el consejo de ministros) es una demostración tácita de que el organismo (y los funcionarios que lo rigen) no están haciendo el trabajo como es debido (o ni siquiera lo están haciendo bien) y es una llamada de alerta para la re-estructuración; pero, con 33 ministerios, varias decenas de vice-ministerios y más de 30 misiones, está más que demostrado que hay mucho político allí que no está haciendo bien su trabajo …

La libertad de no hacerlo

Hay 2 cosas por las que hago mi trabajo, la libertad plena de desenvolverme y por la posibilidad de disfrutarlo; si, como todo el mundo tengo mis carencias y mis necesidades, pero eso no significa que voy a salir a la calle a vender SAINT (no solamente porque sea un software propietario sino porque simplemente no entiendo nada de administración y contabilidad); respeto a los demás, así que tengo la libertad de decir “no” cuando el momento impone hacer algo que o no me gusta o no se hacer; en Venezuela existe la tradición de “tirar flechas”, decir que “se sabe algo” sin saber y luego comienzas a lanzar ideas y teclas como flechas, a ver si pegas alguna.

Por algo, por mucha necesidad que tenga, no me verán instalando servidores Windows 2008, eso se llama “convicción”, y mi abuela me enseñó que las convicciones son los cimientos de la moral  …

 

¿alguna vez se han puesto a pensar cómo sería nuestro país si cada uno hiciera bien su trabajo?

 

Del por qué un desarrollador NO ES un Database Administrator?

O del por qué podría ser, pero debería primero cambiarse la camisa …

Este POST no busca explicar postgreSQL, ni siquiera es un artículo acerca de trucos o buenas prácticas, es simplemente una reflexión acerca de cómo pequeñas cosas que muchos pasan desapercibidas causan impacto profundo en el diseño de una aplicación.

Preámbulo

Tomé un servidor físico GNU/Linux que únicamente ejecutaba una base de datos y lo mudé a una máquina virtual restringida (¡conchale!, hay que ahorrar recursos!, pensé), pensando que todo quedaría bien.

Sin embargo, los usuarios del sistema (en producción) comenzaron a quejarse de lentitud, además, los administradores de sistemas comenzaron a notar excesivos picos de uso de CPU (¿en un equipo que sólo tiene postgreSQL?) e incluso en varias oportunidades se iba a SWAP.

Antes de devolver la base de datos al equipo físico, decidí hacer una revisión (les dije, “no solo monto sistemas, también sé de programación y mucho de base de datos, lo olvidan?”) y estas son las impresiones de la muy breve (pero exitosa) revisión.

El análisis

Lo primero que siempre hago cuando voy a analizar un sistema conectado a postgreSQL, es activar el slow log, esto es, comenzar a medir aquellos queries que consumen más del tiempo que uno supone debería asumir cierto tipo de consulta; paralelamente es daba una clase rápida de postgreSQL, de la importancia de entender el ciclo de parsing/análisis de una consulta SQL y más aún, de la importancia de entender SQL; por ejemplo, dos casos reales extraídos de este caso:

“fecha_inscrito” es un campo VARCHAR, donde almacenan algo como “12/04/2012″; si desean sacar el año, hacen un SPLIT de la cadena con un SUBSTR y sacan el tercer valor luego del “/” … ¿les parece eso correcto?, pues veamos el resultado:

postgres=# SELECT substr(’12/04/2012′, 6);
substr
——–
/2012
(1 fila)
Duración: 61,300 ms

Versus:

postgres=# SELECT EXTRACT(year from ‘2012-04-12′::date);
date_part
———–
2012
(1 fila)
Duración: 0,468 ms

Y comenzaron las alarmas!, 60 milisegundos menos!, pero chamo, a mi no me gusta trabajar con formato ANSI!, y luego les recuerdo que existe la variable de conexión DATESTYLE:

postgres=# SET datestyle to sql;
SET
Duración: 0,124 ms
postgres=# SELECT ‘2012-04-12′::date;
date
————
12/04/2012
(1 fila)
Duración: 0,154 ms

INSOLITO! ¿cómo es posible que una simple función SET cause que todas las fechas salgan con el formato que yo desee?, esto pasa cuando se desconocen los detalles de la base de datos con la que se trabaja.

Igual sucede cuando la gente comprende la diferencia entre usar ON y USING cuando se construyen JOINS (diferencia claro está, a nivel de planificador).

El tercer caso de no-entendimiento de postgreSQL ocurría con un “pseudo-ORM hecho a mano” por los mismos programadores, que no solamente escapaba mal las cadenas:

Esto:

(‘Empresa’, ‘   MATURIN’, ’15/04/2014′, …

No es igual a esto:

(‘Empresa’, ‘MATURIN’, ’15/04/2014′, …

Ya que la cadena ”    MATURIN” no es igual a “MATURIN”, a menos que se haga un TRIM adicional, afectando el performance de la consulta, sino que además, hacen cosas como esta:

’21’, ’32’, ’16’, ‘8’, …

¿Esos son cadenas o números?, luego de ejecutar un DESCRIBE a la tabla, encontramos con que son campos numéricos, y aunque postgreSQL hace la conversión, lanza un WARNING indicando que esos valores son “not integers”, lo cual obviamente no es para nada óptimo.

Esto es lo que pasa cuando los programadores, pensando como programadores, intentan diseñar bases de datos.

El extraño caso del CPU consumido

Me he encontrado con una consulta muy repetida, con esta forma:

SELECT * FROM sol_solvencia WHERE cod_aport = $1 and estatus = $2;

La consulta se repetía muchísimo (sobre todo en temporada de mucho uso de la aplicación web hecha en PHP) y los logs del postgreSQL reportaban que su duración, promedio, era de 550 milisegundos … grité (como gritó Emmet Brown cuando le dijeron que debía alimentar el D’lorean con 1.1Gigawatts) ¡550 milisegundos!, yo en 550 milisegundos corría una nómina y ellos sólo ejecutan un query!.

Luego de usar EXPLAIN ANALYZE nos encontramos con la sorpresa de que la tabla no posee índices de ningún tipo (alegan que es un sistema legado y viene así de informix) y en la actualidad posee unos 98 mil registros; por ende, postgreSQL no le queda de otra para hacer el WHERE que ejecutar un SEQUENTIAL SCAN; o lo que es lo mismo, postgreSQL iteró de manera secuencial por los 98 mil registros para sacar ámbos criterios, ¿en conclusión?, allí se van los 550 milisegundos.

Si el query se ejecuta a un ritmo de hasta 50 veces en un minuto, se imaginan el uso de CPU de postgreSQL para poder mantener ese ritmo.

Indizar, y sino, indizar también …

Luego de construir un par de índices sencillos:

CREATE INDEX idx_sol_solvencia_cod_aport ON sol_solvencia USING btree (cod_aport NULLS FIRST);

Y

CREATE INDEX idx_sol_solvencia_estatus ON sol_solvencia USING btree (cod_estatus);

El EXPLAIN cambia considerablemente:

Aggregate  (cost=32.19..32.20 rows=1 width=4)
  ->  Index Scan using idx_solvencia_fecha on sol_solvencia  (cost=0.00..31.96 rows=94 width=4)
        Index Cond: (fecha_now = ’11-04-2014′::date)
        Filter: ((estado = 1) OR (estado = 15))

Al realizar un escaneo sobre índices y luego una función de agregado sobre ámbos índices, la consulta se ejecuta en 1.7 milisegundos …

¡toda una mejora!, ¿no les parece?

Prepáralo, ponlo para llevar

Luego, les expliqué el concepto del planificador, del GeQo de postgreSQL, y de cómo se analizaban las consultas, luego de ello, les dije “¿y se imaginan que ese tiempo pudiera bajarse más?” … te miran con cara de gallina comiendo sal y tú les muestras PREPARE.

PREPARE genera sentencias preparadas, toma una consulta común, la pasa por el planificador, construye el plan en base a criterios pre-definidos y compila este plan, presto a simplemente recibir los parámetros, ¿y qué ganamos con esto?, ¡ahorrarnos milisegundos valiosos de planificación!.

PREPARE pln_obtenersolvencia (int, varchar) AS
SELECT * FROM sol_solvencia WHERE cod_aport = $1 and estatus = $2;

Como ven, la sentencia preparada es simplemente un QUERY tradicional, al cual hemos pasado sus condiciones (que deben ser criterios, no metadatos) como parámetros, así, postgreSQL puede analizar, planificar y compilar la sentencia y esperar únicamente a que pasemos los parámetros:

EXECUTE pln_obtenersolvencia(682185, 1);

Total runtime: 0.473 ms
(1 filas)

De 1.7 a 0.4 ha sido una mejora interesante, ¿no?.

Conclusiones

No busco “echarme de enemigos” a los desarrolladores, yo también soy uno (de diseñado APIs, frameworks, y módulos en python y PHP), pero, cuando se trata de bases de datos, los desarrolladores deben quitarse los audífonos, la sudadera geek y ponerse en la camisa y anteojos nerd de los DBA; porque al final del día, la aplicación no se está diseñando para yo sentirme cómodo para trabajar con fechas o agregar y agregar campos sin mantener un diccionario de datos simplemente porque me pidieron en un lugar meter el RIF como J310210423 en otro como J-31021042-3 y en otro el tipo de contribuyente por un campo y el código del mismo por otro; no se trata de nuestra comodidad (o de nuestro limitado conocimiento como desarrolladores) sino de la eficiencia y la funcionalidad que deben garantizar que sea el USUARIO FINAL (y sólo él, porque al final, es el que usará todos los días la aplicación) quien disfrute el uso de nuestra aplicación.

Por cierto, como colofón, habrán notado que la tabla se llama “solvencia”, si, es un sistema que genera solvencias al público en general, ahora las consultas duran menos de un milisegundo (y no casi un segundo en cargar) por lo que la mejora impacta a miles de personas que solicitan la solvencia en ese sistema …

… Y ya el CPU no se agota en la máquina virtual! …

 

Instalar openWRT a un TP-LINK WR-741ND

He tomado un viejo enrutador TP-LINK pre-N (150Mbps) que tenía por allí para actualizarle el firmware e instalar openWRT, mis razones de por qué openWRT y no DD-WRT?

tplink

  • Lo que no podés hacer por la interfaz, lo hacés por consola
  • El soporte a VLANs es exactamente igual al nativo en Linux, si aprendí en Linux, lo sé hacer en openWRT
  • Selección: Varios “optware” (módulos opcionales) y mod-hackings presentes para openWRT me son útiles (como soldarle un puerto USB y usarlo como servidor de impresión)

Entre otras cosas, DD-WRT es bastante óptimo en estos equipos para cosas como permitir gestionar la inalámbrica, múltiples SSID (es lo bueno del software libre: elección) pero en mi caso, usaré el equipo para más cosas y por ende openWRT es mi opción.

Actualización del Firmware oficial

Lo primero que debemos hacer es actualizar el firmware oficial de la página de TP-LINK, esto con el fin de evitar inconvenientes y tener un firmware “oficial” de respaldo ante cualquier inconveniente.

or seguridad, actualizar a la última versión de la versión 1 (V1.6 en mi caso).

Descargar cualquier versión v1 del ROM oficial acá:

http://www.tp-link.com/ve/support/download/?model=TL-WR741ND&version=V1

- Descargar y descomprimir:

wget -c http://www.tp-link.com/resources/software/201011814560814.zip

unzip 201011814560814.zip
cd 201011814560814

- Ir a System Tools > Firmware Upgrade y cargar el binario que descargamos (wr741nv1_en_3_12_4_up(100910).bin)

- Reiniciar el equipo y luego un “factory defaults”

downgrade

Listo, actualizado a la última versión “oficial”, pasamos a obtener OpenWRT.

Obtener openWRT

Para obtener openWRT podemos ir a la página oficial del enrutador:

Página oficial: http://wiki.openwrt.org/toh/tp-link/tl-wr741nd

Y aprovechar el WIKI en español que nos ofrecen:

Wiki de openWRT en español: http://wiki.openwrt.org/es/toh/tp-link/tl-wr741nd

Para descargar la última versión estable para el enrutador (Backfire) apuntamos a:

- Descargar la última versión backfire:

http://downloads.openwrt.org/backfire/10.03.1-rc3/ar71xx/openwrt-ar71xx-tl-wr741nd-v1-squashfs-factory.bin

- O con la última versión del trunk:

http://downloads.openwrt.org/snapshots/trunk/ar71xx/openwrt-ar71xx-generic-tl-wr741nd-v1-squashfs-factory.bin

También he descargado la última versión Beta (2014) (versión de actualización):

http://downloads.openwrt.org/attitude_adjustment/12.09/ar71xx/generic/openwrt-ar71xx-generic-tl-wr741nd-v1-squashfs-sysupgrade.bin

Con esto descargado, ahora si procedemos con el enrutador.

Desactivar opciones en el Router

Por seguridad deberíamos cumplir los siguientes criterios:

  • Estar conectados por la red alámbrica
  • Desactivar la red inalámbrica
  • Tener un firmware oficial descargado
  • Energía eléctrica estable (se los aseguro!, lean el último capítulo)

 

Preparando el TP-LINK para instalación

- Conectarse al equipo vía cable (parece obvio, pero hay que recordar que no se puede hacer este procedimiento vía wireless).
– Hacemos un respaldo del mismo (System tools > Backup & Restore > Backup)
– Reiniciamos el equipo a sus valores de fábrica (System Tools > Factory Defaults)
– Entramos al equipo con sus valores por defecto (IP: 192.168.1.1, user:admin, password:admin)
– Deshabilitamos el radio del equipo, para ello:
* vamos a la opción “wireless”
* desmarcan el checkbox “enable wireless radio”
* presionan el botón “SAVE”
* hagan click en el link “reboot” y luego en el botón “reboot”
* vayan a “status” y confirmen que Wireless está DISABLE.

wireless-disableAhora, ya podemos iniciar la instalación de openWRT.

Instalación vía Web

- Vamos a Firmware Upgrade (System Tools > Firmware Upgrade)

firmware-upgrade

Allí escogemos el archivo del firmware openWRT que seleccionamos y le damos “UPGRADE”.

Luego de unos minutos verán:

completed

Y el equipo se reiniciará en openWRT.

Accediendo al openWRT por primera vez

Al encender nuevamente el TP-LINK y conectarnos por red inalámbrica, nos dará una IP de la subred 192.168.1.0; nos conectamos al router a través de http://192.168.1.1/

Nos exigirá asegurar el equipo con una clave:

dd-wrt-first

Y luego de insertar la clave veremos que solicitará que aseguremos el acceso SSH:

no-password

 

Hacemos click en “Go to password configuration”:

Y configuramos la clave del usuario root:

openwrt-first

y el acceso SSH, luego presionan “SAVE & APPLY”:

save-apply

Y ya estamos listos para configurar, o para actualizar a la versión trunk “attitude adjustment”.

Actualizando a una nueva versión

descagar attitude_adjustment: http://downloads.openwrt.org/attitude_adjustment/12.09/ar71xx/generic/openwrt-ar71xx-generic-tl-wr741nd-v1-squashfs-sysupgrade.bin

Para actualizar se puede contar con varios modos, acá explicaré el modo SSH, el modo SCP (failsafe) y el modo Web

Modo Web

El modo web es muy sencillo, simplemente van a SYSTEM > FIRMWARE UPGRADE y cargan la versión de firmware que contenga la palabra “sysupgrade”:

system-flashing-openwrt

Vigilen los LEDs, cuando vean que el equipo esté completamente activado, verán que pierden el acceso Web, es porque hay un par de módulos que se deben activar “a mano” en esta versión de openWRT.

Acceso SSH:

  • Acceden por SSH al equipo 192.168.1.1 con el usuario “root” y la clave que le proporcionaron.

openwrt-ssh

Ejecutan los siguientes comandos:

opkg update
opkg install luci

/etc/init.d/uhttpd start
/etc/init.d/uhttpd enable

Y listo!, ya pueden acceder a la interfaz web.

Actualización via SSH

Podemos acceder vía SSH al TP-LINK y actualizarlo vía SSH

- Con acceso a Internet

Si es con acceso a Internet, simplemente, nos vamos al directorio TMP

root@OpenWrt:~# cd /tmp

Descargamos el FIRWMARE “sysupgrade” necesario:

root@OpenWrt:/tmp# wget -c http://downloads.openwrt.org/snapshots/trunk/ar71xx/openwrt-ar71xx-generic-tl-wr741nd-v1-squashfs-sysupgrade.bin
Connecting to downloads.openwrt.org (78.24.191.177:80)
openwrt-ar71xx-gener 100% |*****************************************************************************************************| 2880k 0:00:00 ETA

Ejecutar la actualización:

root@OpenWrt:/tmp# sysupgrade -v /tmp/openwrt-ar71xx-generic-tl-wr741nd-v1-squashfs-sysupgrade.bin

Upgrade completed
Rebooting system…

Al finalizar el reboot, hacer un “cold reset” (desconectar la energía, esperar 10 segundos y reconectar).

Volver a conectarse vía SSH y activar la interfaz web:

opkg update
opkg install luci
/etc/init.d/uhttpd start
/etc/init.d/uhttpd enable

- Sin acceso a Internet

Si no cuentan con Internet, pero el firmware lo han descargado a un equipo al que están conectados alámbricamente entonces usan SCP para copiarlo a /tmp en el TP-LINK

root@OpenWRT:/tmp# scp -P 22 root@192.168.1.2:/home/jesuslara/Descargas/openwrt/openwrt-ar71xx-tl-wr741nd-v1-squashfs-factory.bin .
Host ‘192.168.1.2’ is not in the trusted hosts file.
(ssh-rsa fingerprint md5 81:05:23:57:67:f5:bd:79:8a:08:2b:d9:eb:14:aa:00)
Do you want to continue connecting? (y/n) yes
root@192.168.1.2’s password:
openwrt-ar71xx-tl-wr741nd-v1-squashfs-factory.bin 100% 3840KB 768.0KB/s 00:05

Y actualizamos:

root@openWRT:/tmp# sysupgrade -v /tmp/openwrt-ar71xx-tl-wr741nd-v1-squashfs-factory.bin
Saving config files…
etc/sysctl.conf
etc/shells
etc/rc.local
etc/profile
etc/passwd
etc/inittab
etc/hosts
etc/group
etc/dropbear/dropbear_rsa_host_key
etc/dropbear/dropbear_dss_host_key
etc/config/system
etc/config/firewall
etc/config/dropbear
etc/config/dhcp
killall: watchdog: no process killed
Failed to connect to ubus
Switching to ramdisk…
Performing system upgrade…
Unlocking firmware …
Writing from <stdin> to firmware … [w]
Upgrade completed
Rebooting system…
Connection closed by foreign host.

Igual que los anteriores, actualizamos el opkg update y accedemos vía web.

Modo Failsafe

El modo “failsafe” es un modo busybox que es útil para recuperación, incluso en modos cuando ningún acceso es posible, en los TP-LINK el modo FAILSAFE se logra de la siguiente manera:

  • Desconectar cualquier cable de red que se tenga conectado
  • Desconectar de la corriente, esperar 10 segundos
  • Volver a conectar, observando los LEDs
  • Cuando el LED “SYS” comienza a parpadear y antes de quedar fijo, presionar varias veces el botón QSS
  • El LED “SYS” comenzará a parpadear muy rápidamente “Flash-blinking”, están en modo FAILSAFE

Para conectarse al modo FAILSAFE, deberán configurar manualmente su interfaz eth0 a la subred 192.168.1.0, yo en Debian ejecuté:

  • Desactivé el network-manager (service network-manager stop)
  • ifconfig eth0 up && ifconfig eth0 192.168.1.2 netmask 255.255.255.0

Y nos conectamos vía Telnet:

root@tafil:~# telnet 192.168.1.1
Trying 192.168.1.1…
Connected to 192.168.1.1.
Escape character is ‘^]’.

=== IMPORTANT ============================
 Use 'passwd' to set your login password
 this will disable telnet and enable SSH
 ------------------------------------------
BusyBox v1.19.4 (2014-04-23 10:39:15 UTC) built-in shell (ash)
Enter 'help' for a list of built-in commands.
_______ ________ __
 | |.-----.-----.-----.| | | |.----.| |_
 | - || _ | -__| || | | || _|| _|
 |_______|| __|_____|__|__||________||__| |____|
 |__| W I R E L E S S F R E E D O M
 -----------------------------------------------------
 BARRIER BREAKER (Bleeding Edge, r40555)
 -----------------------------------------------------
 * 1/2 oz Galliano Pour all ingredients into
 * 4 oz cold Coffee an irish coffee mug filled
 * 1 1/2 oz Dark Rum with crushed ice. Stir.
 * 2 tsp. Creme de Cacao
 -----------------------------------------------------

A partir de acá, la actualización procederá igual al modo SSH con o sin Internet.

Acceso Web a la versión trunk

Por seguridad, al actualizar, openWRT les exigirá reconfigurar la clave y el acceso SSH (con su nueva interfaz):

password-openwrt-2

y SSH:

ssh-openwrt-2

Luego, ya podemos configurar la inalámbrica:

configure-wifi

Y listo!, en próxima entrega otros experimentos! …

PD: ¿Y el modo recovery?

Cuando me encontraba experimentando con las diversas versiones y hacks de openWRT (Gargoyle, “attitude adjustment”, etc) durante un proceso de upgrade hubo un bajón de electricidad (bueno, técnicamente se fue la luz en mi casa) y el TP-LINK había quedado en un estado “BRICK” (un gran ladrillo), con el botón SYS completamente colgado. Es allí cuando el modo “recovery” entra en operación.

Para ello, accedemos vía telnet tal como expliqué, no sin antes borrar todo en la memoria existente:

Primero, ejecutamos “firstboot”

root@(none):/# firstboot

This will erase all settings and remove any installed packages. Are you sure? [N/y]
y
/dev/mtdblock3 is not mounted, erasing it
erasing 0 10000
erasing 10000 10000
erasing 20000 10000
erasing 30000 10000
erasing 40000 10000
erasing 50000 10000
erasing 60000 10000
erasing 70000 10000
erasing 80000 10000
erasing 90000 10000
erasing a0000 10000
erasing b0000 10000
erasing c0000 10000
erasing d0000 10000
erasing e0000 10000
erasing f0000 10000
root@(none):/#

Cambiamos al directorio TMP

root@(none):/# cd /tmp

Luego, usamos SCP para copiar un firmware COMPLETO (no un sysupgrade) a /TMP:

root@(none):/tmp# scp -P 22 root@192.168.1.2:/home/jesuslara/Descargas/openwrt/openwrt-ar71xx-tl-wr741nd-v1-squashfs-factory.bin .

/usr/bin/dbclient: Warning: failed creating /root/.ssh: Read-only file system

Host ‘192.168.1.2’ is not in the trusted hosts file.
(ssh-rsa fingerprint md5 81:05:23:57:67:f5:bd:79:8a:08:2b:d9:eb:14:aa:00)
Do you want to continue connecting? (y/n) yes
root@192.168.1.2’s password:
openwrt-ar71xx-tl-wr741nd-v1-squashfs-factory.bin 100% 3840KB 768.0KB/s 00:05

Y lo cargamos con sysupgrade:

root@(none):/tmp# sysupgrade -v /tmp/openwrt-ar71xx-tl-wr741nd-v1-squashfs-factory.bin
Saving config files…
etc/sysctl.conf
etc/shells
etc/rc.local
etc/profile
etc/passwd
etc/inittab
etc/hosts
etc/group
etc/dropbear/dropbear_rsa_host_key
etc/dropbear/dropbear_dss_host_key
etc/config/system
etc/config/firewall
etc/config/dropbear
etc/config/dhcp
killall: watchdog: no process killed
Failed to connect to ubus
Switching to ramdisk…
Performing system upgrade…
Unlocking firmware …

Writing from <stdin> to firmware … [w]

Upgrade completed
Rebooting system…
Connection closed by foreign host.

El equipo “volverá a la vida” después de eso, de no ser así, podrían montar un TFTP y cargar el firmaware, usar MTD o incluso podrían fabricarse un cable USB-to-SERIAL para conectarse al TP-LINK (requiere algo de experiencia y soldadura!).

Incluso, podríamos usar el modo FAILSAFE para devolver el equipo a un firmware STOCK.

¿Qué más?

OpenWRT es bastante completo, lástima que su interfaz no sea “tan elaborada” como la de DD-WRT, sin embargo, tiene mucho más desarrollo (la versión TRUNK de mi TP-LINK es de Marzo de este año), por lo que sirve para tener cosas tan avanzadas como un kernel 3.3 o soporte a openFlow y openVswitch, entre otras.

En próximo artículo, VLANS y múltiples SSID.

 

¿Y DD-WRT?, si, también lo instalé en el TP-LINK, la forma de instalación es muy semejante … comenta si deseas que haga un artículo.

Happy Hacking!

 

 

 

Linux Disks: Rescatando data de un disco de portátil VIT de las garras de la muerte

Mil disculpas por tener abandonado el blog!, ciertamente el no tener portátil y trabajar con portátil prestada, me limita en las cosas que podría y/o debería hacer en el equipo, además el trabajo, múltiples ocupaciones hacen imposible dedicarle mucho tiempo a escribir …

Pero sucedió algo … ;-)

Me encontraba usando una portátil VIT (modelo 2400), en vista que mi anterior portátil Thinkpad fue robada en diciembre pasado, con el equipo todo iba bien salvo algunas cosas:

  • Ligeros congelamientos en el mousepad
  • Keycodes disparados (visibles en el dmesg) sin haber presionado ninguna tecla especial
  • Algunos problemas con la red
  • Incompatibilidad con Debian Jessie e imposibilidad de usar un kernel liquorix con la tarjeta inalámbrica que trae.

Bueno, todo iba bien con el equipo, hasta que un día, de improviso y sin siquiera avisarlo el smartctl, el disco duro se congeló!, el equipo literalmente se congeló por completo, una larga espera y tuve que apagarlo forzado.

Al encender, veo que insólitamente el BIOS ni siquiera ve el disco!, es decir, el disco duro se ha “esfumado”, tratando de “dilucidar” tan extraño comportamiento de la BIOS (imaginándola tal vez desactualizada y jamás dudando de un disco duro SATA3 de menos de un mes de uso), decido probar suerte y meto un Live-USB de Debian Installer.

Pero, por si acaso, presiono “TAB” para editar la entrada del “Advanced Options > Rescue Mode” y escribo:

idebus=66 pci=routeirq

La primera opción, hace que el disco funcione como un IDE-66 (PATA-compatible) y la segunda opción cuestiona la decisión de asignación de IRQ de la tarjeta madre y decide que el kernel la haga por si mismo (esto me permite en algunas tarjetas madre “buggy”, como la que usan en VIT, detectar hardware con problemas).

Insólito!, el disco aparece en el dmesg!

[ 2377.833672] end_request: I/O error, dev sdb, sector 4007
[ 2377.833689] sd 9:0:0:0: [sdb] Unhandled error code
[ 2377.833695] sd 9:0:0:0: [sdb] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK
[ 2377.833708] sd 9:0:0:0: [sdb] CDB: Read(10): 28 00 00 00 0f a7 00 00 08 00
[ 2377.833745] end_request: I/O error, dev sdb, sector 4007
[ 2377.833767] sd 9:0:0:0: [sdb] Unhandled error code
[ 2377.833774] sd 9:0:0:0: [sdb] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK
[ 2377.833784] sd 9:0:0:0: [sdb] CDB: Read(10): 28 00 00 00 0f a7 00 00 08 00
[ 2377.833820] end_request: I/O error, dev sdb, sector 4007
[ 2414.775081] sd 9:0:0:0: [sdb] Unhandled error code
[ 2414.775083] sd 9:0:0:0: [sdb] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK
[ 2414.775086] sd 9:0:0:0: [sdb] CDB: Read(10): 28 00 00 00 00 41 00 00 02 00

Ahora bien,eso realmente no significa mucho, el disco da problemas de montaje, sin embargo, el DRIVER_OK me causa sospechas, ¿y si el disco está bueno, pero la lógica de comunicación de la tarjeta madre está operando mal?, entonces apago el equipo y reinicio el sistema de rescate, pero esta vez con dos opciones más:

libata.force=noncq libata.atapi_passthru16=0 idebus=66

Con la primera opción, fuerzo la desactivación del NCQ, es un sistema de cola de comandos de 32bits que utilizan los discos SATA y SSD más modernos para comunicarse con la tarjeta madre, un error en la lectura de comandos por parte de la controladora ATA puede “simular” un fallo de hardware y desactivar el disco; por ende, desactivar el NCQ puede ayudar a la controladora SATA a entender al disco duro.

La segunda opción, me permite tratar al disco como si fuera un viejo IDE, desactivando el soporte a comandos de 16 bits.

Con estas dos opciones, mágicamente el disco duro ahora es perfectamente detectado, he montado un disco externo, rescaté los datos a dicho disco externo y listo!, datos del disco duro “dado por muerto” rescatados.

¿y qué pasará con la portátil?

Aunque pudiera desactivar el modo AHCI en el BIOS y funcionar en modo IDE y pudiera luego pasar estas opciones en el GRUB, ciertamente estas opciones hacen que el disco vaya a muchísima menos velocidad que en condiciones normales, cómo la única posible solución documentada es una actualización del BIOS que le permita actualizar la tabla APCI y corregir el bug NCQ de la controladora ATA; será mejor devolver el equipo ya que al ser un equipo VIT ensamblado en Venezuela con piezas chinas, es poco probable que el proveedor de piezas de VIT haya sacado alguna “actualización de seguridad” del BIOS VIT.

Si a alguno le quedó el disco como “desaparecido del BIOS” en una VIT y necesitan con urgencia sacar unos datos, les indico que esta es la solución de resurrección más idónea.

Si alguien sabe como “actualizar” el BIOS de una VIT, me avisa …

Actualización

Luego de “despertar” al disco con “idebus=66 libata.force=noncq” y apagar inmediatamente el equipo, EL EQUIPO ENCENDIÓ!, normalmente, salvo que al llegar al GRUB, por precaución agregué ámbas opciones (idebus=66, libata.force=noncq) y pude llegar al GNOME para sacar sin apuro y con más vigilancia (y con un entorno gráfico) algunas cosas que no había respaldado.

Happy Hacking!

Desbloquear un Motorola Atrix 4G o ¿que consigo de menos de 100US$?

Los Motorola Atrix, a pesar de ser horrendos teléfonos (estéticamente hablando, por algo los Razr usan Kevlar para sus diseños, parecen un policía mal vestido), pasan a ser unos equipos dignos de cualquier “Geek” que se aprecie, con una relación precio/valor digna de considerar.

motorola-atrix-4g-mb860

Preámbulo

En las postrimerías de las elecciones de diciembre fui asaltado y despojado de mi viejito HTC Desire, que acababa de recibir una actualización CyanogenMod a 4.2 (Jelly Bean); pensando en el teléfono idóneo para adquirir pasé días analizando reviews, comparando dispositivos (haciendo uso de la herramienta comparativa de GSM-Arena):

comparativa-atrix-motog

 

Por ejemplo, me sorprendió que el más moderno (y popular) Moto G no tenga slot para SD y solo tenga una memoria interna de 16GB (exactamente igual que el Motorola Atrix que es 2 años más viejo); pero, lo que más me impulsó a adquirir este equipo fueron las siguientes:

  • Extraordinario bajo precio: lo adquirí en una subasta en ebay por algo más de 60US$, lo que me evitaba el pago de nacionalización excesiva y el pago por compras mayores a 100US$
  • CPU ARMx9 NVIDIA dual-core, con los tunnings adecuados, puede llevarse a 1.2Ghz y su GPU brinda un rendimiento claramente mejor que un GPU Adreno.
  • NO HAY DOLARES!, este es el gran suplicio de los venezolanos, no podemos andar por allí con un fajo de billetes diciendo “aja!, dame un Razr Maxx HD de 32GB y un Iphone 5C de respuesto”.
  • Super-hackeable!: Todos los dispositivos de la serie atrix traen algo conocido como “Webtop”, que permite correr un “mini-linux” cuando se conecta a un dispositivo conocido como lapdock:

Motorola Lapdock

Por ahora, me he comprometido a meterle Android o Kali Linux al Webtop, pero eso es otro artículo.

Preparativos

El equipo que adquirí es un equipo no desbloqueado de AT&T, la versión de Android “oficial” es la 2.3.6 (gingerbread) y el número de compilación de la SBF (ROM binaria oficial Motorola) es la 4.5.145 (tomen nota de esto, encontrarán muchas confusiones acerca de esto).

Al teléfono entonces hay que realizarle un conjunto de cosas en este orden:

  1. SIM-Unlock: o desbloqueo de SIM, AT&T y otros operadores no bloquean las radios de los equipos, sino las SIM-card, no es posible meterle una SIM de otro operador
  2. Desbloquear el bootloader (con esto, podemos instalar un sistema de recuperación -recovery- y una nueva ROM)
  3. Instalar un Android Recovery
  4. Instalar una ROM nueva
  5. Instalar las Google Apps

Necesitamos:

Recovery: http://forum.xda-developers.com/showthread.php?t=1204500
Custom CWM-based Recovery 5.0.2.7-atrix

Advertencia: ESTE PROCEDIMIENTO ELIMINA EL SISTEMA ANDROID DE FABRICA (STOCK), si desean simplemente darle “root” al teléfono y dejarlo con la ROM stock, este no es tu artículo, ¡go away!.

Paso 0: Cargar el teléfono

Esto parece un paso obvio, pero no lo es, algunos teléfonos Motorola tienen la “característica” de requerir más de lo 500 mili-amperios que proporcionan los cargadores USB-genéricos convencionales, sobre todo para la primera full-charge es necesario que la carga sea usando el cargador que viene oficialmente con el teléfono (o algún cargador de pared compatible).

Entonces, encendemos el equipo.

Paso 1: SIM-Lock

He cancelado 14US$ a una empresa que vende códigos de desbloqueo por SIM, hay varias, pero nota, no busquen las más “barateras”, porque te hacen perder tiempo (bueno, puede ser que tengas “suerte”), tardan como 3 ó 4 días en decirte que “no consiguieron el IMEI” y te devuelven el dinero, yo al final del día me he ido por “http://unlockthatphone.com/” y en cuestión de día y medio (pagué una noche y al mediodía del siguiente ya tenía el código) recibí el correo electrónico con el código de desbloqueo de la SIM.

Es un conjunto de números, simplemente encienden el equipo con la SIM-card de la operadora de su elección (en mi caso, Digitel), cuando les pida el código de desbloqueo, lo escriben y listo!.

Un tutorial con video, acá: http://imei24.net/Blog/2013/08/19/como-desbloquear-un-motorola-atrix-2-mb865-de-att/

Al terminar, apagamos el teléfono.

Paso 2: Arrancar en modo RSD Fastboot

El modo RSD (Remote Software Download) permite al usuario “cargar” software al teléfono, se usa por ejemplo, para cargar absolutamente TODO el firmware:

Listado de Firmware oficial disponible para Motorola Atrix 4G: http://sbf.droid-developers.org/phone.php?device=33

Bien, al poner el teléfono en modo RSD podemos “cargar” binarios de tipo SBF al teléfono, con ello podemos por ejemplo reemplazar el firmware de la radio o cargar todo el sistema completamente a su versión “stock”:

Si deseas descargar el último Firmware oficial de Motorola para Atrix 4G: http://sbf.droid-developers.org/download.php?device=33&file=742

NUNCA carguen ROM oficiales completas vía SBF, RSD tiene lectura directa sobre el dispositivo, un fallo en la carga generaría un HARD BRICK (tu teléfono se volvería inservible, y a diferencia de un “soft-brick” no hay manera humana de regresarlo de un hard brick).

Para iniciar el modo RSD Fastboot deberán presionar el botón de Volumen arriba (Volume Up) y el botón POWER a la vez:

y lo dejan presionado hasta que aparezca en la pantalla:

RSD Protocol Support

En este momento, conectamos al equipo vía USB.

Paso 3: Aplicar el SBF

Para permitir desbloquear el bootloader, tenemos primero que descargar el sbf_flash y el pudding en una carpeta de nuestro equipo, que ya debe tener por cierto ADB (Android Debug Bridge), aunque solamente necesitaremos fastboot.

Al estar en modo RSD el teléfono, abrimos una consola de root en nuestro GNU/Linux y nos vamos a la carpeta donde descargamos el sb_flash y el pudding, ejecutamos:

chmod +x sbf_flash

Y luego ejecutamos el “flash” del archivo SBF que estaba dentro del archivo pudding.zip:

./sbf_flash 4547-fix-try2.sbf

Verán en la consola algo como esto:

moto-sb1

El teléfono se pondrá en negro varias veces y luego se apagará, de no apagarse, caerá en modo fastboot.

NOTA: En este momento, si desconectan y apagan el equipo, al encenderlo dará un error “boot 0x001″ y la gente entra en pánico (he visto hilos enteros en xda-developers), uno como linuxero, es normal, simplemente NO TIENES UN SISTEMA OPERATIVO, no hay nada que arranque, solo el fastboot!, si haces comentarios acerca de que tu teléfono “no arranca” luego de hacer este paso, estás advertido.

NOTA otra vez: ¡insisto!, el teléfono NO VA A ARRANCAR NADA SALVO FASTBOOT, ¡dejen el trauma!.

Si se llega a apagar y no logran encenderlo el truco es:

  • sacar la batería
  • esperar unos segundos
  • meter la batería nuevamente
  • Arrancar en modo fastboot (Volumen Abajo + botón de encendido) (Volume Down + Power Button)

Ahora, vamos a desbloquear el bootloader!

Paso 4: Desbloqueo del Bootloader

Si conectamos nuevamente el equipo vía USB a nuestro computador con ADB ya instalado, podrán ejecutar el comando “fastboot devices” y verán algo como esto:

./fastboot devices
TA207013NS fastboot

Ejecutamos entonces el comando para solicitar el desbloqueo del bootloader:

 ./fastboot oem unlock

Retornará lo siguiente:

...
(bootloader) Unlocking your device can permanently VOID your warranty.
(bootloader) This process cannot be reversed. If you wish to proceed,
(bootloader) reissue the unlock OEM command containing the unique ID
(bootloader) of your device: 027C108040A002D7
OKAY [ 0.001s]
finished. total time: 0.010s

Es importante hacer notar que el comando retorna un identificador único de equipo (acá en negrillas), con ese ID único repetimos el comando:

./fastboot oem unlock 027C108040A002D7

Y la respuesta será:

...
(bootloader) Device is now unlocked
OKAY [ 7.459s]
finished. total time: 7.459s

Y en la pantalla verán algo como esto:

Untitled-2

Y listo!, ya podemos instalar el recovery.

Paso 5: Instalar el CWM Recovery

He instalado una versión personalizada del CWM para el Atrix 4G, la he descargado (un archivo .img) y usando fastboot utilizo los comandos de borrar el recovery actual:

./fastboot erase recovery

Y luego cargar el recovery con:

./fastboot flash recovery “ruta y nombre del archivo .img”

En mi caso, quedó así:

./fastboot flash recovery /home/jesuslara/android/motorola/recovery-dark-green-atrix5.img
sending 'recovery' (4708 KB)...
OKAY [ 0.250s]
writing 'recovery'...
OKAY [ 0.462s]
finished. total time: 0.712s

Y ya tenemos CWM Recovery instalado.

Apagamos el equipo.

Paso 6: Inicio de instalación de ROM

Para arrancar en modo “Android Recovery”, presionan “volumen abajo” y botón de encendido (volume down+power button), encenderá con una frase “unlocked” abajo, esperen hasta que salga la palabra “fastboot”, cuando salga, podrán cambiar de “fastboot” a “android recovery” presionando varias veces volumen abajo hasta que salga la frase “android recovery”, en lo que esta frase salga, presionan volumen arriba “Volume Up” para confirmar e iniciar el Android Recovery.

Ya en el CWM, es sencillo, este recovery utiliza los botones de volumen para navegar arriba y abajo, el botón de búsqueda es ENTER (SELECT), atrás se logra con el atrás físico (BACK) y las teclas “Menú” y “Home” pueden usarse como arriba y abajo (si no se desea usar los botones de volumen).

Allí, ejecutan las siguientes tareas:

Advanced > Upgrade to ext4

* osh (webtop partition)
* /system
* /data

Luego, Advanced > Wipe Dalvik Cache

Y por último, instalamos la ROM:

Install Zip from SDCard > Choose Zip from SD Card, navegar y seleccionar la ROM (en mi caso, se llama “cm-10.1-20131211-UNOFFICIAL-epinter-olympus.zip”)

Al finalizar, le damos atrás 2 veces y presionamos sobre la opción “reboot now”, y habremos completado la instalación de la ROM.

Paso 7: pre-configuración de la ROM y Google Apps

Al iniciar por primera vez, si lo desean pueden crearse una cuenta CyanogenMod (prestan servicios como “buscar tu teléfono” y otras cosas que se encontraban con la aplicación “MotoBlur”), posteriormente, entran al menú de aplicaciones, buscan en “Configuración” > “Acerca del Dispositivo” y presionen varias veces y rápidamente en la opción “número de compilación”, eso activará un menú oculto conocido como “Rendimiento”, que permite modificar algunas cosas avanzadas de Android (lo veremos después).

Luego de finalizados estos pasos, es hora de instalar las Google Apps.

Simplemente, presionan el botón POWER unos segundos para que salga el menú, escogen “Apagar” y listo. Volvemos a iniciar en modo Android Recovery.

Igual, seleccionan “Install Zip from SDCard” > “Choose Zip from SDCard”, navegan por la SD hasta encontrar el archivo “gapps-jb-20131207-olympus.zip” y listo.

NOTA: esta versión de Google Apps para Motorola Atrix no posee ni Google Now ni Hangouts, deberán ser instalados a mano desde Google Play.

Al reiniciar el equipo (que tarda un poco más mientras se “asienta” la ROM) se iniciará el asistente para configurar la cuenta Google.

 

Conclusiones

Es un equipo modesto, de prestaciones decentes, con algunas características muy interesantes (como Webtop) que fue abandonada por Motorola, que me permitirá volver a la vida digital con un equipo del que estoy seguro, me dará más de una idea loca que publicaremos por acá.

Happy Hacking!

¿Guerra o Guerrilla económica?

Cuando te vas por tantos meses de tu país, no sufres el síndrome de la rana hervida, aquel en donde la pobre rana no se da cuenta de que todo está hirviendo a su alrededor ya que lleva ahí desde que el agua estaba como hielo; en cambio, llegas 5 meses después y te encuentras con que las servilletas (si las consigues) han pasado de 12 Bs a 34 Bs y saltas de espanto, cual rana que acaban de arrojar a un balde de agua hirviendo …

… Y las otras ranas te miran extrañadas y dicen ¿qué te pasa?, ¿no te gusta la brisita tibia que hace por acá? …

Una guerra “diferente” …

En una guerra, los bandos están completamente diferenciados, en la primera guerra mundial podías gritar “dispárale a esos, los del casco ridículo con punta”, o en la segunda podías gritar “a todo lo que llegue a Normandía, dispárenle”; en cambio, en una guerra de guerrillas, el enemigo está oculto, disfrazado, camuflado, como los “gangsters”, no puedes saber que persona seria de saco y corbata es un empresario o de plano sacará una Thompson M19  y te coserá a plomo (y en este país, varios empresarios juegan en ámbos bandos por desgracia).

El problema, como siempre, es que nos han vendido el mito de una guerra económica diferenciada, donde los enemigos son “aquel bando de ladrones empresarios” y de este lado están los buenos …

Nada está más lejos de la verdad …

En una guerra de verdad …

Porque, en una frontal Guerra económica, luchas contra los que te están ahorcando con una espiral especulativa y acaparamiento de precios, eso lo entiende cualquiera, hasta un niño, lo que yo aún no entiendo es, ¿cómo rayos escasea el azucar?; si, a mi también me parece extraño que la presentación “en bolsita para el café” no escasee pero si el azucar regulada (salvo en zonas “azucareras”, como Portuguesa, donde sobra como arroz y lo que escasea es el aceite de maíz), como entiendo perfectamente esa extraña aberración de que a veces escasea el pan salado regulado pero sobra el mismo pan pero esta vez con una brisna de orégano y dos rayaduras de queso pecorino y te dicen que es un “pan italiano”, eso en cualquier lado se entiende como una enferma y diferenciada distribución de los productos, pero, ¿no acaso el Estado el dueño de 5 de los 7 centrales azucareros más grandes del país?, ¿y acaso no es quien firma las órdenes de importación para toda la industria de la harina de trigo? …

En una Guerra, no esperas que tus “aliados” tomen el control de las empresas lácteas y en vez de fortalecer la producción lechera del país, prefieran importar leche de Tipitapa de Nicaragua ya que dicho país nos paga el petróleo con Leche.

En una Guerra, no esperas perder “Normandía” (el Maíz), teniendo el control del 80% de la distribución del maíz producido a nivel nacional, la industria aceitera criolla se dedica a envasar “soya transgénica argentina” o vender en los mercales Harina de maíz procedente de Brasil (me es aún extraño ver un paquete con figuras alusivas al golpe del 2002 llamando a la soberanía nacional e independencia alimentaria y por detrás el paquete decir “Industria Brasilera”).

En una Guerra, no esperas ayudar a la espiral especulativa, acaparando y acumulando vehículos de una industria Iraní, en vez de venderlos a precios bajos y competitivos para reducir la demanda y así los precios exhorbitantes generados por la propia demanda insatisfecha (uno de los factores desencadenantes de las espirales especulativas).

En una Guerra, no siembras Girasol y pierdes la cosecha durante 2 años consecutivos en el Valle del Turbio, porque a algún jefe extraño del Ministerio (Osorio dixit) se le metió entre ceja y ceja que el Valle del Turbio se ve “hermoso” con girasoles floreados.

En una Guerra no abandonas a tus aliados, y mucho menos a las décadas de investigación e inversión en ganado de carne (raza Carora, cebú y búfalas de Apure y Barinas) por salir presto a comprarle solomo y hermosos cortes de churrasco a Brasil.

Es que cortando y preparando churrascos, los brasileros son geniales, ¡hasta importamos chefs brasileros junto con la carne! …

En definitiva, esto no es una guerra, es una guerrilla y mucho del enemigo está dentro del mismo pueblo.

De espirales e imperios

Hay que ser bastante ingenuo (o parte del problema) para no admitir que hemos vivido siempre en una “Guerra económica”, pero ojo, no gestada por los “malignos imperios austro-húngaros y gringos”, sino por un enemigo más sencillo y simple (Navaja de Occam), nosotros mismos; los venezolanos nos hemos acostumbrado a la espiral especulativa, en Venezuela, las cosas jamás se deprecian y un bendito teléfono con procesador de 400Mhz y Android Cupcake (1.5) de hace 4 años atrás sigue costando los mismos 1000 Bs con lo que fue liberado hace mucho, una portátil con procesador Centrino (hace años que Intel dejó de promocionar Centrino para sustituirlo por Atom) te la quieren vender en 12 o 15 mil Bolívares y hasta hace poco, un vehículo usado costaba más que uno nuevo …

Ayer sufrí el shock, cuando un Barebone (un pequeño y compacto Desktop, que se consiguen usualmente en 150, 200 y no más de 300US$) con un vulgar microprocesador Intel C3 (CPU de bajo coste que Intel desarrolló mayoritariamente para las primerísimas versiones de las ClassMate PC -ejemplo: generación 1 de Canaima Educativo-) lo venden en CompuMall en 15 mil Bolívares … ¿locura? ¿ridiculez? …

El único imperio que domina acá, es el imperio de la especulación …

Aquí nadie quiere perder ni el peinado …

El problema alrededor de todo esto no gira por maquiavélicas y conspiranóicas tretas de la CIA, el Imperio, la NSA, Daddy Yankee y Hello Kitty, es simplemente, que desde hace un par de décadas atrás (desde la gran espiral especulativa del fin del gobierno de Lusinchi y el inicio de Carlos Andrés Perez) la gente “se olvidó” de palabras como “depreciación”, “remate”, “subasta”, quieren ganar en todo, sin perder absolutamente nada, el egoísmo es supremo …

Aquí el precio de un producto no lo fija su coste de producción y ganancia, sino la ley del “cuánto está la gente dispuesta a pagar por ello”, sin mediar reparos en el decoro del coste.

Estafador vs Corrupto

Un día conversaba con un amigo Guatemalteco, me contaba las experiencias de haber visitado mercados colombianos, se asombraba de la capacidad de algunos, de *estafar al incauto* con su famosa frase “aquí tiene la copia original”, te venden versiones de pantalones Levy’s, hasta llegué a escuchar que vendían imitaciones de PlayStation 3 (era un PS2 metido en una caja plástica semejante a un PS3, traído de China).

Un día, ví un Pendrive de 4GB, publicitado como de 16GB, metido en una caja “imitación” que era idéntica a las cajas de Kingston, de no ser porque el Pendrive interior ni siquiera era Kingston, hubiera jurado que eran reales.

Pensé y le comenté … pero prefiero a los colombianos que a los venezolanos, extrañado me pregunta, ¿por qué?, bueno, es simple, para que un Colombiano pueda estafarte, necesita pasar muchas benditas horas trabajando, cosiendo en su máquina y probando mil formas hasta lograr que el puto pantalón le quede igualito, la cantidad de material que la imprenta (y el trabajo del diseñador) que se necesitó para montar la plancha y sacar las cajitas de los pendrives, tomar pendrive por pendrive y montarle un software de “compresión” para simular que eran de 16GB era una idea magnífica y esta gente merecía irse a trabajar a Taiwan a la fábrica de Kingston de una!.

Hasta para robar, te afrontas a tener que salir y trabajar … enfrentando peligros y la muerte …

En cambio, en general el venezolano no es estafador, sino corrupto, muchos venezolanos consideran que la mejor forma de ganar dinero es simplemente “no hacer nada”, el “no hacer nada” pasa por querer ganar dinero de la manera más simple, más rápida y con la ganancia más grosera que la espiral especulativa pueda permitir, un venezolano “raspa-cupo”, considera que es un derecho (porque “según” la plata es de él y tiene derecho a hacer lo que le venga en gana con ello, incluso violar leyes de ilícitos cambiarios) tomar un dólar a 6,3 Bs, y venderlo a 46 Bs (40 Bs de ganancia por cada moneda), un precio que no dictan ni mercados internacionales, ni títulos valores, ni bonos de la deuda ni títulos oro del Banco Central de Venezuela, ni siquiera Wall Street o las Goajiras de las Pulgas, es un precio que simplemente “les sale del forro” y lo imponen en base a lo que “la gente está dispuesta a pagar por la divisa extranjera” y nada más …

Corrupto no es solo aquel político que está detrás de las “empresas de maletín” (ahorita es que se vienen a enterar que existen en la Alcaldía de Valencia ¡valgame Dios!), es todo aquel que quiere ganar dinero simplemente “sin hacer nada”, desde robarlo de las arcas del Estado, hasta robarlo de los bolsillos de los ciudadanos, como si fuera un derecho divino adquirido …

Hasta un bebé saca cuentas …

En mi estadía en Guatemala me enteré que estábamos embarazados mi esposa y yo, así que decidí comprarme un cochecito de bebé, para no caminar tanto lo compramos en una de las tiendas por departamentos más caras de Guatemala (Simán) pero aproveché que estaban en rebajas y le compré a mi bebé un chochecito marca Infanti que hasta se vuelve mecedora.

El cochecito me costó 1100 Quetzales, eso es aproximadamente unos 142 US$, interesante, pues en Amazon el cochecito cuesta 180US$ lo que me demostró que cuando el Guatemalteco habla de “ofertas y rebajas”, no son el típico BECO, que le sube a los productos hasta un 30% “antes” de la G.O.S para luego bajarle un 20% y la gente grita como locas “hay rebajas en BECO, corran!” … ingenuos … </joke>

El cochecito más mi maleta, causaron que pagara exceso de peso, se le suman 34US$, es decir, el cochecito me costó 176US$ (ó 1200 Bs a dólar oficial 6.3 Bs); ahora bien, a dólar “lechuga” (ese que publicitan por DolarToday) me habría costado la exhorbitante suma de 8096 Bs, ¿caro verdad?, pero si vas a MercadoLibre, modelos más sencillos de cochecitos de bebé (USADOS) marca Infanti rondan los 6000 y 7000 Bs.

http://articulo.mercadolibre.com.ve/MLV-414246751-coche-para-bebe-marca-infanti-modelo-epic-_JM

¿Ese bebé es de oro que causó que el cochecito no se depreciara por el uso, sino que al contrario, ganó valor? …

El precio de la tecnología

Pero en donde se ve más marcada esa diferencia es en los artículos de consumo, como la electrónica (ni hablar que un “país en crisis” tenga un repunte del 210% en el consumo de cosméticos, “sin papel toilett pero bella” sería nuestro slogan como país), más que todo porque la espiral especulativa estimula, al ser un juego de “venta y demanda” exhacerbado, se convierte en un marcador del “status social”, la gente que pueda pagar, lo pagará, demostrando así su posición en la “escala de clases” no importando su tendencia política (como el candidato Winston Vallenilla, que dice tener un Hummer y un Mercedes Benz con el sudor de su trabajo, quisiera saber si suda dólares ya que ¿como hizo una persona natural para obtener tantos dólares y nacionalizar unos vehículos tan costosos?).

Un ejemplo claro está en lo que pagan los “Apple Fan Boys” venezolanos.

Una Apple IPhone 5C (con retina display, gorilla glass, ifinger y todas esas cosas “i-eyecandy” que encantan) tiene un costo de 500 US$, lo cual a dólar oficial significa 3 mil bolívares ¿pero cuánto es su valor en las tiendas?, lo he visto desde los 25 hasta los irrisorios 53 mil bolívares, esto es:

500US$ * Dólar Lechuga + exceso de equipaje + ganancia del 100% (como me corresponde) + comisión del “porque me da la gana cobrar eso” = http://articulo.mercadolibre.com.ve/MLV-413857997-iphone-5c-16-gb-funda-original-apple-sellado-desbloqueado-_JM

… y ni se les ocurra comparar el precio del Iphone 5S de 64GB de 800US$ con los 72 mil bolívares que quieren cobrar por un simple aparato metido en una caja de aluminio -> http://articulo.mercadolibre.com.ve/MLV-414040194-iphone-5s-_JM

20 mil más y fue lo que se pagó por nuestro apartamento años atrás y lo que le costó la camioneta a mi suegro … </sad>

Lo peor, es que me dicen que es una “Guerra mediática-económica de quinta generación y seis velocidades con croche” y el propio Estado venezolano, vende un equipo “entry-level” de primera generación ensamblado por VTELCA aquí mismito en Punto Fijo (pero con piezas de ZTE de China) a un precio de 2100 Bs (o 300US$ “oficiales”, VTELCA es una empresa del Estado, no creo que ande comprando dólares “lechuga”), mientras que la propia ZTE vende ese mismo equipo en Guatemala a unos 600 Quetzales (eso es algo menos de 80 US$) …

¿Me podrían señalar los enemigos? (así, apuntaditos con el dedo), es que no sé a cual dispararle! …

La cruda verdad …

El problema con las espirales especulativas es que la gente no “vende caro” por la necesidad imperiosa de “sabotearte el mandato, Maduro” (¡no seas tan egocéntrico, chico!, ¡tú solito te saboteas el gobierno! </joke>), es porque simplemente quieren ganar todo lo que se pueda y “aprovecharse de la necesidad de los demás” para vender todo, sin el menor pudor ni escrúpulos …

Desde la señora de Guanare, que se lleva a sus 10 familiares y compran de 2 pollos cada uno en Mercal para revenderlos a las bodegas (y con su cara bien lavada grita a los cuatro vientos que es revolucionaria socialista, aunque quiera vivir del mercado especulativo capitalista que la envuelve), pasando por los estúpidos que se calan una cola en Maiquetía solamente para decir “nojoda!, le gané una al régimen y tengo dólares a 6,30″ y con la moral y la dignidad por el piso, hasta llegar a los más ineptos de CADIVI que se inventan “monstruos que nacieron genéticamente perversos y se comieron los dólares” (Giordani’s dixit) que le dedican el 45% de las inversiones en dólares a empresas fantasmas y de maletín que se roban el dinero necesario para las importaciones (y nos causan esta soberana escasez de todo, en principio, el principal motor de la espiral especulativa) pero persiguen como criminales a sueldo solo al 6% de los dólares de los “raspa-cupos”.

La actitud de CADIVI se resume en una frase que ví hoy por twitter, “La GNB olfatea maletas para ver si llegan a oler dólares escondidos de los raspa-cupos, pero no logran olfatear 30 maletas con 1.3 toneladas de cocaína que llegaron a París” …

Se desaparecen 250 mil millones de dólares durante la existencia del SITME, pero vamos a meter preso al que se robó los 1200 US$ de los cupos electrónicos de su mamá, su papá y su abuela …

Y no estoy justificando los “raspa-cupos”, pero creo que hay cosas más importantes que “encontrar” ¿no? …

Que lo detengan que me quiero bajar …

El gran problema de las espirales especulativas es que es una actitud de las personas, en conjunto con malas políticas económicas del Gobierno, en general, jamás se detienen hasta que “les toca el golpe y tocan fondo” (Lusinchi = Viernes Negro, CAP = El Caracazo, Caldera = el descalabro de los bancos de 1994, Maduro = ?), ya que, como la rana hervida, las acciones para detener las espirales especulativas dependen de que la gente reaccione a tiempo, ejecute actos de boicot contra los especuladores (incluso si son especuladores del propio gobierno), se fomente la inversión para evitar la fuga de capitales en importaciones (aún no entiendo por qué produciendo tanto maíz, girasol, sorgo y canola, Venezuela tiene que consumir aceite de soya transgénica argentina); pero en general  (y lo ha demostrado la “espiral” historia venezolana que varias veces en esta misma generación han pisado la misma piedra) la gente no se da cuenta que el agua está hirviendo a su alrededor, entran en un estado de catatónico conformismo que los hará pensar que es completamente normal pagar pollos con dólares (como ocurrió durante la espiral especulativa de la Alemania de los años 20 y como ya está pasando con gente que trae mercados de víveres desde Miami con cupos CADIVI) o hacer colas infernales de 4 horas para comprar 4 rollos de papel de baño y pagar 50 Bs (algo así como 7US$ por 4 rollos).

 

Yo aquí distraído, como que mejor abro la ventana, me está pegando como calorcito … ¿a ustedes no? …

Un breve paseo por lo privativo …

Ayer me encontraba implementando un servidor de Microsoft SQL Server, ya que necesito replicar unas DB hacia un almacén en postgreSQL usando ETL, saliva e’ loro y muchas pegatinas; en fin, como tenía muchísimo tiempo sin hacer algo así, me tocó visitar muchas páginas para poder lograr algo ¿y luego se *quejan* de lo “difícil” del software libre?, no me …

  1. La noche comenzó intentando primero “decidir” cual de las diferentes versiones de sistema debes montar, Standard, Core, Enterprise, Workgroup, Workload, Enterprise Plus, Enterprise Plus ++, Datacenter, Developer Mainstream, “I’ll be back and you must die” y un sinfín de variedades, bueno, escogí una al azar y “descargando” …
  2. Luego, descargar la versión “express edition” de la DB no se quedó atrás, ¿2.2GB para una base de datos limitada y en versión *express*?, eso mide TODO mi sistema operativo (con escritorio y todo) para correr postgreSQL.
  3. Al finalizar ámbas cosas y montarlas en una VM, descubrí que la versión “express café edition” que bajé, no era para mi idioma, por allá decía “bueno, puedes instalar un *paquete de idioma* para poner tu sistema operativo en otro idioma, siempre y cuando tengas la versión Enterprise Plus ++ con sildenafil extendido”, ¡rayos!, ¿cómo es eso que tengo que “pagar” por un sistema operativo confinado al idioma en que me lo vendieron?
  4. Al tener ámbas cosas instaladas (y ni se imaginan la cantidad de horas que dura la **configuración del SQL Server “express”**) (y en inglés ¿para qué me voy a buscar más conflictos?) me tocó buscar el respaldo de la DB en producción.
  5. En un paseo entre gurús MVP (se lee “EM-BI-PI”) unos decían que “no puedes hacer un backup con sqlcmd hacia un recurso UNC” (porque no son capaces de decir “una puta carpeta compartida”), otros decían “claro que puedes” (pero no explican cómo) y otros más aberrados aún decían “claro que se puede, yo mismo acabo de hacerlo” (y tampoco aclaran como).
  6. Luego de girar por varias “redes sociales de desarrolladores privativos” (si!, y tienen muchas!) me encuentro con qué el uso de tecnologías “privativas” es una suerte de religión donde la gente le cree a los “EM-BI-PI” (y dicen para sus adentros con voz de squeezes “oooh, el ¡MVP! ese si que sabe!).
  7. El proceso de búsqueda de información de foros se convirtió en una guerra de “quien la tiene más grande” (la firma), con cosas como “Entrad en el registro de Windows” (es como el “abrid una cónsola de root” para ellos), pero bueno, eso de luchar con egos en listas y foros y de respuestas alienantes y sin sentido es del mundillo en general … ¿no creen?
  8. Aún recuerdo al “pobre hombre” que tenía un archivo “qué convertir” usando Word 2007 (no ha conocido el poder de “sed”, “egrep” y “awk”) o aquel que dijo que instaló Windows 8 Empresarial technical review full edition y deseaba recuperar unos datos *perdidos* durante el formateo y el MVP-Technet Engineer CTO Junior “Most pleasure for less” le indicó que “era algo absolutamente imposible e irreversible” (hasta testdisk que es libre hace eso) blip! *
  9. - Y ni hablar del pobre hombre que dijo que el “ícono” de la aplicación “itunes” -is gone- y le sugirieron (cual recuerdo de aquellas sugerencias de “¿su impresora no imprime?, ¿tiene papel?, ¿está conectada a la corriente eléctrica?, ¿tiene tinta?, ¿está encendida?, “si todas las respuestas son positivas, entonces no puedo ayudarlo”) que debía “ingresar a la tienda Windows, buscar *música*, descargar y reiniciar la PC”, eso de reiniciar siempre ha sido la solución para todo.
  10. Leyendo posts y artículos, encuentro frases como “eso lo resuelves modificando la línea de clave del registro HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Microsoft SQL con valor hexadecimal “C0ch1n0NOCoM3JoBo”, uno sugirió que se debía a “una problemática de permisos a la red” y que debía modificar unas claves del registro, autorizar unos servicios y reiniciar el SQL ¡¡¿REINICIAR EL SQL EN PRODUCCIÓN DEL CLIENTE?!! ¿están borrachos o qué? …
  11. Al final, una luz me indicó “claro que funciona, prueba con la versión sqlcmd de la librería freetds para Linux”, a lo cual, presto, compilé la librería para SQL Server en el servidor Debian donde estaba mi Samba y ejecuté el comando sqlcmd ¡pum!, un error “mejor llame a su madre, de nivel 5, core 3, subsector de pila alcalina 48123×545477000 vete al carajo” …
  12. Un MVP muy amable de la India me indicó “no le pares pelotas a todo lo que va después, el error nivel 5 es un error de permisos” ahh!, coño!, no podían decir “access denied” los muy hijoerrrdiablo? …
  13. después de un chmod 0777 a la carpeta compartida del Samba (no quería sustos) el sqlcmd funcionó PERFECTAMENTE y trasladó 50GB de datos a un recurso compartido en mi servidor Samba.
  14. Luego, ajá, y ahora ¿se podrá automatizar esto en el servidor?, luego de ofrecerme varias herramientas costosísimas como “Mete-tu-SQL Backup Pro Platinum More powerful Edition”, me encuentro con otro Indú que afirma en su blog que encontró la manera perfecta de hacer backups “gratis” de tu servidor MS SQL.
  15. Usando “La Chel del Poder” (Powershell) hizo un *sencillo* script (según él, sin validaciones ni nada) con la friolera de 95 líneas de código (sin espacios ni comentarios), según fue muy felíz porque se sentía “poderoso” con *eso* (pobre no conoce “pg_dump -d database > archivo.sql”) xD
  16. Al final, terminé haciéndolo del lado del Samba, un lindo bash en cron con 10 líneas (incluyendo espacios, comentarios, respaldo incremental con fecha y si, tiene control de errores).

Concuerdo que hay una sarta de trolles, enfermos de ego y demás fauna del lado del software libre, pero ¿cómo por la madre de Zeus pueden decir que es “mucho más fácil todo con software privativo”?, al final del lado “libre” fue:

  1. En en lado de mi servidor: aptitude install postgresql-9.1
  2. En el lado del usuario: su postgres
  3. createuser -sPL jesuslara
  4. pg_dump -H servidor_cliente -U jesuslara -W -c –format c basedatos | pg_restore -U jesuslara –clean –dbname basedatos
  5. UNA SOLA LINEA BACKUP Y RESTAURACION!
  6. Y para los mas “mainstream”, usé Apatar y luego Talend Data Integration para movilizar toda la integración de datos …

¿No y que en software privativo TODO es más fácil? …

La cadena de custodia: NSA y software libre

Han pasado dos noticias bastante interesantes en estos días, la primera, unas declaraciones de Kevin Mitnick, asegurando que la NSA había “Infiltrado” el código del PGP (Pretty-Good-Privacy), en la otra, que la NSA había “infiltrado” las decisiones para que el dispositivo generador de números aleatorios (/dev/random) del sistema Linux, dependiera del hardware, en este caso, de extensiones de hardware de CPUs Intel y AMD, comprometiendo la seguridad del núcleo …

¿Afectan estas noticias la credibilidad del software libre?, ¡al contrario!, veamos por qué.

Comprometidos con su seguridad …

Del PGP al GNU PG

PGP es un software “comercial” (y es “a ese software” al que hace referencia Mitnick), actualmente las patentes alrededor tanto de PGP como de los algoritmos de cifrado, están a cargo de Symantec, incluyendo el cifrado IDEA que hace uso PGP; en su lugar y gracias al uso de algoritmos libres (tanto de patentes, como limpios en sus especificaciones, como RSA-AES) se desarrolló GNU PG (GNU Privacy Guard) como una implementación de openPGP y que es la versión de PGP que utilizan TODAS las distribuciones de software libre a nivel mundial.

Hay que recordar de GNU PG dos historias claves, el caso del famoso bug detectado por la gente de Entrust de 2004, que causó la re-escritura de uno de los métodos de cifrado simétrico, el otro caso, en 2006, que fue detectado por la gente de seguridad de Gentoo Linux, y que (a diferencia de otros “bugs” de 10 años de duración en Windows), tardó en corregirse sólo 6 días.

Random Number Generator

Dilbert’s Random Number Generator

“/dev/random” es un pseudo-dispositivo de software, que existe en el núcleo Linux con el único propósito de proveer de una máquina generadora de números aleatorios, “/dev/random” hace uso de extensiones de hardware en los CPUs (Intel, AMD, Texas Instruments-ARM, etc) para poder generar números “pseudo-aleatorios” (se dice “pseudo”, porque al ser un computador un sistema determinista, hay una probabilidad remota de que los números no sean realmente aleatorios).

Al igual que con PGP, en Linux existe además “/dev/urandom”, la diferencia entre ellos es clave, el primero, basado en “entropía de hardware”, puede llegar a quedarse “exhausto” de bytes, por ende, esperará a llenar el pool de entropía para entregarte “más números aleatorios”, esto hace que “/dev/random” sea en consecuencia, más lento que “/dev/urandom”, que simplemente reutiliza la fuente de entropía una y otra vez para obtener más números aleatorios por software (es por esta razón que lleva la “U” adelante, de “unblock”, es decir, no se bloquea como /dev/random).

Entonces, ¿la decisión de Torvalds compromete la seguridad de algo?, ciertamente de las distribuciones de GNU/Linux en las que “/dev/random” utilice exclusivamente la entropía del CPU (que al sol de hoy y luego de los trabajos de Gutterman y Reinman en 2006, creo que ninguna); hay parches en Debian GNU/Linux (no aprobados en la LKML -Linux Kernel Mailing List-) que modifican /dev/random para hacer uso de más entropía como ioctl (movimiento del mouse, ruido del flujo de video, ruido del tráfico de la red, etc), dichos parches se aplican desde el 2006 por requerimiento de aplicaciones “precisamente” como GNU PG y GNU TLS.

Creo que incluso, después de “descubierto” el compromiso de las extensiones de CPU Intel por parte de la NSA, un simple “parche” será cosa de algunos días.

¿no creen?

Coneheads y la NSA llegó a mi casa …

Una vez alguien me escribió que iba a “desactivar SELINUX porque era un producto maléfico de la NSA”, además del hecho de existir varios miles de ojos dentro del código de SELinux (admitir que hay código malicioso dentro del núcleo Linux es contradecir expresamente lo que se defiende acerca de las 4 libertades que la FSF defiende a ultranza), es más que claro con el hecho de arriba (/dev/random no está comprometido, sino una de sus tantas fuentes de aleatoriedad, como lo son los CPU de Intel/AMD) que el software libre ha probado, una vez más, que se deben comprometer cosas “más oscuras” que el código, para empañar la seguridad del núcleo Linux (o de freeBSD,  por ejemplo).

De Intel se cree todo, por allá por la guerra del golfo, se distribuyó por la “conspironoosfera”, una *noticia* que indicó que todos los CPU Intel “chiflaron y se quemaron” dejando inútiles miles de computadoras en Bagdad, minutos antes de iniciar la invasión a Irak ¿posible?, 100%, ¿creible?, muy creíble … de la NSA espero todo.

Pero como indicara alguien en las listas de Fedora (precisamente a la respuesta de SELINUX y su relación con la NSA), cualquier relación con “desactivar SELinux porque lo hizo la NSA y fabricar conos de papel aluminio para “librarse de lectores mentales”, es pura coincidencia … “Los conos de papel aluminio se deben hacer de 2 caras, una cara reflectante hacia afuera, para evitar que “entren” cosas enviadas con rayos mentales por la NSA, pero también con papel reflectante “hacia adentro”, para evitar que la NSA use rayos mentales para leernos la mente, ah!, hay que evitar que haya un “corto-circuito” entre ámbas capas, para no quedar comprometido”.

Es decir, si el CPU (harware) es comprometido por alguna “instrucción maléfica”, no importa el sistema operativo que tengas encima, ¿no creen? …

Claro, ahí si caemos en la retórica de la “eterna conspiración”, podríamos indicar “ahh!, pero Selinux podría *restaurar* sus *troyanos* a través del compilador”, entonces les recuerdas al compilador libre GCC (GNU C), “Ahh!, pero segurito GCC usa extensiones de CPU y si te comprometen el CPU?”, bueno, ármate tu propia máquina! (empezando por el CPU) ¿para eso hay movimientos de hardware libre?, ¿no?; de llegar a pensar así (en esa eterna cadena conspiranóica), tendrías que ponerte como algunos conspiranóicos que hablan de IPv8 (¿no sale más fácil esto si quieres privacidad?) tendremos que vivir en cuevas, con nuestro propio hardware de computadora, nuestras propias redes, fabricando hasta nuestro propio cable (inmune a las ondas electromagnéticas que USA lanza regularmente antes de cualquier invasión), rodeando nuestras cabezas con conos de papel aluminio (bien diseñados, ¡por favor!) y evitando cualquier contacto con otro ser humano “sospechoso”.

Vivimos esta realidad, hay que enfrentarla … no tratar de volver a las cuevas y el oscurantismo …

Ideas sin patentar

Nunca me han gustado las patentes, ni su idea, ni su filosofía, siquiera su existencia misma, y no, no es envidia, no envidio al hombre que “patentó” la idea de hacerle ejercicio a un gato con un apuntador láser:

patent-cat-exercise

Ni la de “dispositivo portátil electrónico para enviar y recibir correos electrónicos” patentada en 1984 por RIM y es la causa de que aún no haya ido a la quiebra, gana más por regalías de esta patente que por sus propios productos, o incluso aquél hombre que “quizo” patentar como juguete el sable láser luego de la primera película de George Lucas en 1977 … y descubrir que George Lucas ya lo había patentado …

El punto es, que en 1984 RIM no construyó ningún teléfono que enviara y recibiera correo (ni siquiera había celulares), ni el primer teléfono “touchscreen sin botones” fue el iphone (fue de LG), como tampoco fue el primer ratón de Apple (fue de Xerox Palo Alto), la cosa es, la humanidad avanza sobre ideas, si alguien toma una idea mia y la mejora, está ayudando a la humanidad, si alguien gana más dinero que yo con una idea mia, es que yo realmente no supe verle el potencial que esa otra persona vió.

Proteger los derechos de autor (y liberar mi idea como a mi me de la gana, por ejemplo, con una licencia libre) es una cosa completamente distinta, estoy protegiendo algo que YO HICE, no algo que “tengo pensado hacer en algún futuro y voy a patentarlo para que nadie más lo haga, y si lo hacen lo jodo!”.

En el software libre, uno toma ideas, las mejora y luego pone las mejoras tanto a disposición del creador original, como de la comunidad, hay quienes no creen en esta fórmula, a veces, porque consideran que serán “robados”, otras, porque se subestiman imaginando que “más nunca” tendrán otra idea importante en sus vidas (como si hacerle ejercicio al gato fuera tan importante).

Tormenta de ideas libres

Un par de días atrás, me encontraba con unos amigos (@_seraph1, @willicab) discutiendo las posibilidades de automatizar algunas cosas en GNU/Linux (soy amante de la automatización y la pereza) y surgió una idea interesante, ¿te imaginas si uno pudiera “dibujar” la sub-red completa, algo como lo hacen “GNS3″ o “autonetkit” y que un script tomara ese “dibujo” y desplegara la solución completa vía contenedores LXC?; a partir de allí, a diferencia de muchos “empresarios”, no salí con folios de carpetas a “patentar” la idea, al contrario, me puse a contactar a otros amigos (@LuisAlejandro) a ver ¿qué cosas se le ocurrían?, Luis aportó muchísimo con la idea de, en vez de usar Java Jed, Inkscape o Dia, cree una sencilla aplicación “drag-n-drop” web con node-js y flask (o lo que se me ocurra), mientras contactaba amigos de otras latitudes como Walter Stanish (aka GlobalCitizen) para ver qué posibilidades había de hacerlo usando LXC.

Por allí surgió LXC-Tools > https://github.com/phenobarbital/lxc-tools

Gracias a Walter, tengo ahora una plantilla funcional para Gentoo, también una para CentOS 6 y gracias a Javier Lezcano, tengo una funcional para Debian, o gracias a los scripts de roles y hooks hechos por Steve Kemp de los Debian Xen-tools, ahora puedo post-configurar los contenedores LXC.

Gracias a una “chuleta” (en Venezolano, una guía para “copiarse”) de Luis Alejandro, estoy creando la plantilla para contenedores LXC Canaima, gracias a Sthefane Graber de Ubuntu llegan unas plantillas de Ubuntu Server 100% funcionales y gracias a los posts de Jonathan Carter en sudáfrica, voy a comenzar a usar la API de LXC en Python.

¿Se imaginan qué sería del mundo si todos “patentaramos” y “cerraramos filas” ante cada idea interesante que tengamos? … estaríamos, imagino yo, en una época victoriana maravillándonos de las posibilidades del vitriolo blanco y sus propiedades descritas por Platón.

“Liberando” un ejemplo

Es decir, vean este “ejemplo”:

E imaginen que esa imagen está en algún formato “libre” (SVG, graphML, xfig, etc), es extraordinariamente trivial, simular toda una suerte de VLANs en Linux (usando VLAN y 802.1q), simular un “soft-layer 3″ Switch, un Switch de capa-4 con load-balancing, usar openvswitch para los túneles y la comunicación fluída entre contenedores, y claro, usar LXC para crear y “simular” cada servicio (DNS, Web, FileServer, Directory, etc), el Firewall (ej: shorewall) e incluso, gracias a GNS3, se que puedo “emular” enrutadores Cisco usando QEMU y el ISO del software del mismo y con KVM puedo emular PCs con la distribución o incluso el sistema operativo que quiera.

¿Les parece una idea “patentable” o una idea para hacerla pública y que la gente empiece a colaborar para hacerla realidad? …

La cadena

Hace unos días atrás se aprobó la Ley de Infogobierno, que prevee entre otras cosas el uso de plataformas estandarizadas, estándares abiertos y el uso de software libre en la APN.

Yo acá incluso tuve un monólogo con un diputado de oposición.

ahora bien, hay un artículo que ciertamente causa ruido en mi mente, al igual que a muchas otras personas:

Artículo 66.- La Comisión Nacional de las Tecnologías de Información,
excepcionalmente, podrá autorizar, hasta por tres años, la adquisición y el uso de
software que no cumpla con las condiciones de estándares abiertos y software
libre, cuando no exista un programa desarrollado que lo sustituya o se encuentre
en riesgo la seguridad y defensa de la Nación.
La Comisión Nacional de las Tecnologías de Información, al autorizar el uso del
software privativo, establecerá las condiciones y términos para el desarrollo de
una versión equivalente en software libre y estándares abiertos.

Entonces, vamos a poner un ejemplo, Oracle, veamos 3 principios básicos:

  • No existe programa desarrollado que lo sustituya “del todo”, aunque exista postgreSQL, es un “truco barato de leguyerismo” ya que postgreSQL no es igual a Oracle en cuestión de “Oracle es el juguetico todo en uno” y ya con eso, los abogados te ganaron una.
  • Es utilizado para llevar las DB de la industria más importante de la nación, PDVSA, la que garantiza la petrochequera.
  • Es utilizado “también” por Defensa de la nación ya que PDVSA es una “industria crítica” y debemos “garantizar” la defensa de la única industria que le da de comer a Venezuela

Las licencias, de hecho, duran 1 año, así que se garantizan “al menos” 3 años de renovación y “la esperanza” de que a nadie se le ocurra hacer una “suite integrada” que suplante todo por lo que en PDVSA usan Oracle.

Y bueno, cada licencia de Oracle básicamente tiene un costo de 120 mil US$, pero ¿creen que es sólo eso? dirán, “Oracle sería una excepción”, ¿seguro?, ¿ya evaluaron la cadena?:

  • - Una licencia de Sistema Operativo, por cada 2 núcleos de CPU (8 licencias para un equipo de 16 cores) del Sistema Operativo “certificado”  por cada licencia de Oracle adquirida (Windows 2008 Datacenter, Oracle Unbreakable Linux o Red Hat Enterprise), no podemos darnos “el lujo” de correr Oracle en un sistema operativo no-certificado, si la cosa “se frega”, no fue culpa del Oracle, fue culpa del sistema operativo no certificado. punto!.
  • - Una herramienta de respaldo, privativa, certificada para garantizar integridad de los respaldos de la base de datos Oracle ¿no ves que esa cosa siempre se corrompe? ¡la consecuencia de ser una base de datos genial! #NOT
  • - El sistema operativo (por lo general privativo) que corre la herramienta de respaldo, privativa, y los utilitarios alrededor de él (como el Azureus y el Kazaa, para bajar pelis mientras estás haciendo los respaldos).
  • - Herramienta de monitoreo y estadísticas para el Oracle (ej: Splunk) para “mantenerlo protegido” y “vigilado” ¿no ves que es herramienta crítica? (nada de nagios o zabbix por favor)
  • - Sistema Operativo (por lo general privativo, dudo que lo corran sobre Ubuntu) para el Sistema de monitoreo y estadísticas (y su respectivo Microsoft Office, los reportes de OpenOffice se ven ¡horribles!).
  • - Report-Builder y sistema de reportes, incluído el Sistema de Business-Objects, en las burocracias, hay que entregar reportes todos los días.
  • - Sistema Operativo para correr el business-objects y el sistema de reportes (que exporte a “Excel” y a “pogüerPoin”)
  • - Middleware de aplicaciones para el Oracle (ej: WebLogic)
  • - Sistema Operativo para el WebLogic y obviamente aprovechar sus “conectores nativos” para aplicaciones corriendo en .NET y WebSphere, eso de “application platforms” en Python con ZOPE son mamaderas de gallo.
  • - Plataforma de integración de datos (para permitirle interactuar con *esas cosas libres* que pide la ley) como el Oracle Fusion Middleware (dudo que usen Talend para hacer un bus de integración *open source*, eso suena a “desprotegido”).
  • - Sistema de dashboards para lógica del negocio (ej: Tableau) ya que los gerentes les gusta hacer gráficas con “click y ya!” desde su Ipad (¿eh?, ¿Penta qué?)
  • - Hermosos IPADs para ver las hermosas gráficas hechas por Tableau (en Android se ven piches)

¿Justificar eso?, ¡sencillo!, además ¿qué funcionario *corrupto* no firmaría una justificación bajo cualquier precepto que cupiera en el reglamento del artículo 61, cuando Venezuela es uno de los mayores compradores de Oracle a nivel latinoaméricano?, una sola vale 100 mil dólares y compramos miles al año, saquen sus cuentas de cómo Larry Ellison se compró ese lujoso yate con el que anda por acá por el océano pacífico vuelto loco matando peces espada, saquen sus cuentas …

Me parece absurdo (tanto como, insisto hasta la saciedad, que Cubanos nos vendan Oracle y Microsoft .NET, ni siquiera las leyes internacionales los autorizan a realizar tal venta) que aún haya gente que crea en la farsa en la que estamos inmersos, ¿migrar estaciones de trabajo a Canaima?, eso no es ni la décima parte que las grandes corporaciones se llevan de los grandes servicios a PDVSA, CVG y Ministerios y una “excepción” nos conllevará a una “cadena de excepciones”. Escríbanlo.

Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.

Únete a otros 3.034 seguidores

%d personas les gusta esto: