sábado, marzo 27, 2010

Un simple relato sobre Internet

Hace más de 13 años, mientras era un inocente estudiante, fue mi primera experiencia con la red de redes, hace más de 13 años, antes de que siquiera existieran las redes sociales, la web 2.0, la banda ancha, o incluso la burbuja .com. Cuando me enteré de la red fue leyendo una revista de videojuegos, me llamó la atención unas fotografías de las portadas de sitios web de empresas relacionadas al mundo Nintendo, que en aquél tiempo describí como "algo que se asemejaba a un documento de Word, pero interactivo", y unas direcciones, que extrañamente iniciaban todas como "www". Como programador, que era lo que estudiaba en la escuela, y creo que perfeccioné en mis estudios de ingeniería en informática, siempre me ha gustado experimentar y aprender sobre la tecnología, y al conocer la existencia de la "super carretera de la información" (como algunos la llamaron posteriormente, por un tiempo breve), me empecé a interesar por conceptos que hasta dicho tiempo me eran desconocidos
¿Qué era eso que ocupaba una página casi de curiosidades en la revista?
¿Porqué las direcciones de correo llevan ese extraño caracter que parecía una "a"? (@)
¿Como podía un niño de clase media acceder a dicho mundo, si los precios ofrecidos en la escasa publicidad de CTC bordaban los 40 pesos por segundo?
¿Porqué rayos le llamaban surfear la internet?

Rápidamente me empecé a obsesionar sobre como conocer la nueva tecnología, y por golpe de suerte, tengo una tía que en aquel tiempo trabajaba en la secretaría de un departamento en la gloriosa Universidad de Santiago de Chile, que años después convertiría en mi segunda casa por más de 6 años.
Mi tía trabajaba como secretaria, y su jefe tenía acceso a la internet en su computador, por lo cual me consiguió una breve sesión en la cual por fin tuve mi primer contacto con la red.

Mi Primera visita
Como era un niño informado, sin antes haber usado un browser, ya sabía sobre los buscadores, y algunas direcciones. Creo que la primera página que visité fue altavista.com, en mi opinión el buscador más popular antes de la llegada de Google, y mi breve sesión se trató de buscar información de juegos de super nintendo, y fotografías de Dragon Ball Z.
Ahora que lo miro en retrospectiva, tanta curiosidad por la internet, y lo primero que hice fue usarla inmediatamente en propósitos del ocio, jamás hubiera imaginado el potencial de la red, tanto para el ocio como para el trabajo, y la comunicación. Supongo que es la visión de un niño esta delimitada al juego y a la recreación. ¡Que viva la infancia!

Cuando dejé esa oficina salí con una sensación grata, y con deseos de repetir la experiencia, pero ahora desde mi hogar, pasarías 2 años para que mi sueño se hiciera realidad.

Antes de tener internet en mi hogar, tuve otra experiencia con la Internet, en una empresa que tenía una "linea dedicada", donde conseguí información sobre sqlserver, supongo que ahí empecé a ver el potencial de trabajo de la red, el cual duró poco, pues mis padres compraron un modem usado de 9600 baudios, donde tuve mi primeras torturas con el horrible sonido de marcado del modem, las inaguantables descargas, que para colmo eran interrumpidas cuando alguien levantaba inocentemente el auricular desde otro terminal telefónico.
Con la adquisición de un moderno modem de 56k, mejoró la experiencia, pero aumentaron los problemas, pues la popularidad de la red y sus beneficios comunicacionales aumentaban, lo que llevó a las primeras peleas por el uso del computador para chatear en latinchat, y después por usar el icq, el programa de comunicaciones lider de internet hasta la entrada (a la fuerza) del Messenger.

De éste último puedo contar como anécdota que en un inicio me rehusé a tener una cuenta de Messenger, pues jamás me gustó el servicio de Hotmail, y desde antes de usar linux ya encontraba malévolo a Microsoft, cosas de geek. Fue en la universidad donde me vi obligado a crear una cuenta para poder comunicarme con mis compañeros, pero por suerte existía passport, donde registré mi antiguo y desaparecido correo uolmail, y jamás usé una cuenta de Hotmail.

El vicio de la internet era tan grande, que era frecuente que el computador se mantuviera encendido hasta altas horas de la noche, aumentando los gastos de la luz y el teléfono, lo que me obligó a desarrollar un programa en Visual Basic, que actuaba oculto en el sistema, cortando la conexión si ésta pasaba el rango horario establecido en la configuración. Siempre pensé en publicar dicho programa, pues había pedido ayuda en un foro para realizar la función principal (cortar apenas de conectara la red), pero por esas cosas de la vida, dicho software nunca salió de mi computador. Me faltaron conocimientos de software libre, pues quizás no lo hice con un poco de egoísmo.


Hoy en día las cosas han cambiado, la sociedad y los medios de comunicación cada día dependen más de internet, la cual dejó de ser algo de curiosos geek "internerd" para pasar a ser algo que llegó a toda la población, no importando su edad, clase social o procedencia. La libertad de la que se respiró hace unos años internet cada día se va reduciendo. Antes de fotolog, o facebook, mucha gente común se interesó en la red por su capacidad para acceder fácilmente a contenidos audiovisuales, principalmente con el p2p.

Debido a la mal llamada piratería, las compañias de gestión de derechos de autor han ganado tal poder, que no hay programa p2p que no haya muerto ante las demandas en protección de los "artistas". En el pasado quedaron los programas de descarga de música donde encontrabas lo que quisieras, aún recuerdo la magnificencia del mejor programa de descarga musical de la historia, en mi humilde opinión claro está. Es obvio que me refiero a AudioGalaxy, el software donde encontrabas absolutamente todo. Nunca me defraudó. El modelo de negocio cambió, y aún no terminan de comprenderlo en su totalidad. A nadie le interesa un pedazo de plástico, el éxito de las compras de música en línea en países con poder adquisitivo lo prueba.

En estos 13 años, además del nacimiento y fusilamiento de los programas p2p, he visto el nacimiento del bloqueo y la censura en internet. Lamentablemente en algunos países quedó en pasado la libertad de acceder a la información que le interesa a las personas. Lentamente los gobiernos de diversas naciones intentan retomar el control de la información al que están sujetos los medios tradicionales. La censura se va apoderando cada vez más de la red, no sólo en China, sino también en países europeos, en Australia, y muchos otros países, ya sea mediante el uso de instrumentos judiciales, o modificando la ley para controlar el flujo de la información, bloqueando y persiguiendo a quien publique información poco favorable para los mesquinos intereses de los que gobiernan.

El futuro de internet me cuesta imaginarlo, no sé que de qué serán capaces las nuevas generaciones. Ya he conocido a jovenes que se expresan más a través del twitter que en persona, que son expertos en la administración de sistema de gestión de contenidos, y que viven su vida en función de la red. ¿Qué increíble ocurrencia tendrán que revolucionará la red? Lo desconozco, pero creo que me costará comprenderlo, tal como me costó entender twitter en su inicio. Prueba de eso, casi como burla ante mi falta de visión de futuro sobre la emergente red social, mi cuenta aún dice en la descripción "esto es una soberana estupidez", lo qué escribí al crear mi cuenta, por ocio, pues fue mi primera impresión sobre escribir a la respuesta ¿que estás haciendo?
La famosa frase de twitter, al traducirla al español atinadamente quedó como ¿qué pasa?, pues desde su concepción, se transformó en el medio de información instantánea más exitoso del planeta.

Del texto que usted amable lector acaba de leer, claramente se describe que, a pesar de ser un adulto joven, hoy me siento un abuelo de Internet, un medio que uso absolutamente todos los días, que reemplazó en mi vida a la televisión (a la radio jamás)

domingo, noviembre 22, 2009

Breve: Limpiar cache de linux

Al parecer mi PC tiene corrupto algún módulo de memoria, el cual falla aleatoreamente causando que la máquina falle.
Las estocásticas molestias no ocurren sólo a nivel de cuelgues del sistema cuando lo dejo inactivo, sino que también suceden cuando estoy trabajando en él, acabando con mi paciencia y con mis aplicaciones.

No es coincidencia que la aplicación que más cuelgues ha recibido es Firefox, pues el navegador es lejos el programa que más uso en casa. Lamentablemente, cuando intento volver a abrirlo, éste falla sucesivamente, hasta reiniciar el sistema, debido a que el programa que está cargado en memoria, con algún bit corrupto es almacenado en un espacio que actúa como buffer, al cual simplemente le denominamos cache.

Mi problema tiene una solución: comprar módulos de memoria nuevos, y una placa madre (nunca he confiado en esta última, pues apenas comprada mató a un módulo de memoria, el cual cambié por los actuales). Pero la solución inmediata para seguir trabajando sin reiniciar es ordenar al sistema operativo que limpie los datos almacenados en el buffer.

Para realizar esto, como root ejecute lo siguiente:

sync; echo 3 > /proc/sys/vm/drop_caches



referencias:
1- Documentación del sistema de archivos /proc, un excelente lugar para conocer un poco más las entrañas de linux

lunes, mayo 04, 2009

Mantención de imágenes virtuales de virtualbox

Luego de muchos meses sin escribir, vuelvo para dar un truco corto, pero muy útil.
Hoy noté que me quedaba sin espacio libre en la partición home, tanto en mi laptop como mi escritorio. no entendía porqué, pues no había instalado nada particularmente grande. Luego, investigando un poco me nació un sospechoso: El disco duro de la máquina virtual (VirtualBox) estaba usando mucho más espacio que el indicado por el sistema operativo invitado.
¿porqué ocurre ésto?
Lo que sucede es que cuando se borra un archivo en el sistema operativo windows, éste "marca" el espacio utilizado como libre, pero físicamente los datos permanecen ahí. Perjudicando enormemente a los entornos virtuales.
¿como solucionarlo?
Existen herramientas para windows, como sdelete, la cual "limpia" el espacio no utilizado marcándolos con ceros. Su utilidad es para asegurarse de tener entornos donde no se puedan recuperar archivos una vez borrados, sin embargo la utilidad para el caso de las máquinas virtuales es que existen programas que encogen el espacio utilizado por una unidad de tamaño variable, permitiendo recuperar espacio mal utilizado.
El método que expongo a continuación es para virtualbox, y utilizándolo el tamaño de mis imágenes bajó de 15G a sólo 4G!

- En un sistema operativo invitado, descargar sdelete (el enlace se encuentra al final de la entrada), y ejecutar:
sdelete -c c:

luego cerrar la máquina virtual, y desde una línea de comandos ejecutar:
VBoxManage modifyvdi /ruta/imagenwin.vdi compact

es necesario especificar la ruta completa del archivo, o la misma que está registrada en el archivo de configuración de VirtualBox.

Enlaces útiles
sdelete: Utilidad de Microsoft para borrar completamente los archivos.

viernes, diciembre 05, 2008

Xorg 7.4, hotplugging, synaptics y más

Xorg input hotplugging
Recientemente Archlinux optó por pasarse a xserver 1.5. La nueva versión del servidor gráfico incluye diversas novedades, pero la que más destaca, y genera dolores de cabeza, es input hotpluggin.

La motivación tras el nuevo sistema de manejo de entrada, es la capacidad de xorg de manejar dinámicamente los dispositivos. En el pasado era necesario especificar la configuración de forma manual en el archivo xorg.conf. Esto resultaba incomodo, debido a la necesidad de reiniciar el servidor X para aplicar nuevos cambios importantes. Sin embargo, la obligación del archivo no era tan estricta, pues el servidor gráfico tenía rutinas de autodetección, donde configuraba los dispositivos al iniciarse. Ésto parecía una buena solución, sin embargo poseía un defecto: Si un dispositivo era removido, se perdía la conexión, y por lo tanto el manejo del driver. Y aunque reconectara, no era posible volver a utilizarlo. Para los usuarios de laptops ésta última afirmación puede parecer una falacia, pues es frecuente que los ratones y teclados usb funcionaran apenas conectados. Lo que quizás desconocían, es que había un truco para lograr ésto: El Kernel mantenía un dispositivo genérico (por ejemplo: /dev/input/mice). Para la mayoría de los usuarios, éste dispositivo genérico parece ideal, sin embargo, con la evolución de la tecnología, los dispositivos cada vez incluyen mas funciones. ¿que pasaba con un teclado que tuviera funciones de scrolling, teclas especiales, etc. o siendo más fantasioso.. ¿Que pasaría con el soporte para ratones con acelerómetros u otras gracias que quizás inventen en el futuro?
la respuesta es tan simple como obvia, con el sistema mencionado, no se hubieran podido manejar inmediatamente, hasta reiniciar el servidor gráfico y cargar los controladores adecuados para dichos dispositivos.

Para solucionar ésto, se invento el sistema X input event driver (evdev), el cual utilizando las ventajas de hal y dbus, monitorea los dispositivos conectados, y aplica reglas definidas en sus políticas (reglas basadas en la base de datos de hardware) asignando automáticamente configuraciones e indicando con que controlador manejar cierto dispositivo.

Las reglas se configuran en archivos XML con extensión fdi. Los cuales, si bien en un inicio pueden parecer complicados, al entender su funcionamiento, son una herramienta poderosa para personalizar la configuración del hardware.

Como ejemplo, al actualizar mi laptop, no funcionaba el touchpad como debía, pues aunque utilizaba el driver Synaptics, no configuraba opciones personalidas que me gustan (scroll con 2 dedos, botón derecho al presionar la esquina inferior derecha, desplazamiento horizontal y vertical en los bordes derecho e inferior respectivamente, tercer botón al presionar con 2 dedos, etc. Para configurarlo, antes era necesario recurrir al archivo xorg.conf, pero con ésta nueva versión que incluye hotpluggin, el servidor X ignora las configuraciones establecidas en dicho lugar. Ahora, en su lugar es necesario definir una politica de hal para el dispositivo.

política para manejar el touchpad Synaptics
El controlador de synaptics puede causar un par de problemas. Existe un controlador específico (en archlinux, el paquete se llama xf86-input-synaptics) el cual provee el driver. La política de Hal para configurarlo (en mi caso la defini en el archivo /etc/hal/fdi/policy/11-x11-synaptics.fdi) es la siguiente:



<?xml version="1.0" encoding="ISO-8859-1"?>
<deviceinfo version="0.2">
<device>
<match key="info.capabilities" contains="input.touchpad">
<match key="info.product" contains="Synaptics TouchPad">
<merge key="input.x11_driver" type="string">synaptics</merge>
<merge key="input.x11_options.AlwaysCore" type="string">true</merge>
<merge key="input.x11_options.Protocol" type="string">auto-dev</merge>
<merge key="input.x11_options.Emulate3Buttons" type="string">true</merge>
<merge key="input.x11_options.SHMConfig" type="string">true</merge>
<merge key="input.x11_options.LeftEdge" type="string">1700</merge>
<merge key="input.x11_options.RightEdge" type="string">5300</merge>
<merge key="input.x11_options.TopEdge" type="string">1700</merge>
<merge key="input.x11_options.BottomEdge" type="string">4200</merge>
<merge key="input.x11_options.FingerLow" type="string">25</merge>
<merge key="input.x11_options.FingerHigh" type="string">30</merge>
<merge key="input.x11_options.MaxTapTime" type="string">180</merge>
<merge key="input.x11_options.VertEdgeScroll" type="string">true</merge>
<merge key="input.x11_options.HorizEdgeScroll" type="string">true</merge>
<merge key="input.x11_options.CornerCoasting" type="string">true</merge>
<merge key="input.x11_options.CoastingSpeed" type="string">0.30</merge>
<merge key="input.x11_options.VertScrollDelta" type="string">100</merge>
<merge key="input.x11_options.HorizScrollDelta" type="string">100</merge>
<merge key="input.x11_options.MinSpeed" type="string">0.10</merge>
<merge key="input.x11_options.MaxSpeed" type="string">0.60</merge>
<merge key="input.x11_options.AccelFactor" type="string">0.0020</merge>
<merge key="input.x11_options.VertTwoFingerScroll" type="string">true</merge>
<merge key="input.x11_options.HorizTwoFingerScroll" type="string">true</merge>
<merge key="input.x11_options.TapButton1" type="string">1</merge>
<merge key="input.x11_options.TapButton2" type="string">2</merge>
<merge key="input.x11_options.TapButton3" type="string">3</merge>
<merge key="input.x11_options.RBCornerButton" type="string">3</merge>
</match>
<match key="info.product" contains="AlpsPS/2 ALPS">
</match>
<match key="info.product" contains="appletouch">
</match>
<match key="info.product" contains="bcm5974">
</match>
</match>
</device>
</deviceinfo>



Teclado con rueda
Otro problema que tuve, fue para que el sistema reconociera la rueda de desplazamiento incorporada en mi teclado, aunque intenté de todas maneras que configurara el dispositivo leyendo desde /dev/input/event2, no fue posible, e incluso pensé en crear un nuevo driver, sin embargo, compilando la última versión del driver disponible (xf86-input-evdev-2.1.0), el sistema reconoció nuevamente mi rueda, y puedo utilizar mi teclado tranquilo. Luego de ésto, puedo decir que me encuentro satisfecho con Xorg 7.4, pues funciona perfecto tanto en mi portatil, como en mi escritorio.

Links útiles
Código fuente de controladores de xorg
Wiki de archlinux de hotplugging

PKGBUILD para xf86-input-evdev-2.1.0

lunes, noviembre 24, 2008

Sincronizar Google calendar con Kontact (korganizer)

Querámoslo o no, desde que Google empezó a crecer, se ha hecho parte de nuestras vidas. No nos basta con realizar nuestras búsquedas en el popular sitio, sino que confiamos nuestra correspondencia al servicio que puso de moda las casillas gigantes, y además habemos algunos que registramos parte de nuestra vida mediante su gran aplicación Google Calendar.

Sin embargo, habemos personas a quienes no nos gusta visitar constantemente un sitio web para tareas que podemos realizar utilizando nuestro programa PIM (administrador de información personal) favorito. La presente entrada es para hablar acerca de como sincronizar el servicio de google con Kontact, sin embargo, las instrucciones sirven para otros programas, como evolution, Apple icalc, e incluso Outlook Express! pues, como ya debieron notar, la aplicación de la cual hablaré es multiplataforma, gracias a que está escrita en java.

La versión de Kontact de kde4, además de perder estabilidad desde la versión anterior, también perdió la característica de manejar multiples calendarios, incluyendo los calendarios externos. En kde 3 era posible leer fácilmente los calendarios de google reader, pero jamás se pudo escribir en éstos. Esa característica la extrañaba desde que pasé a la nueva versión del escritorio de la K, debido a que suelo utilizar indistintamente mi equipo portatil, mi escritorio, y mi perfil móvil en la universidad. Esta mañana descubrí la solución a mis necesidades de sincronización: GCALDaemon.

GCALDaemon es un programa que actúa como servicio, el cual trabaja como middleware entre las aplicaciones locales con Google Calendar, ya sea de forma local (mediante un archivo de ical) o mediante un servidor (http o ldap) que se ejecuta en la maquina cliente, el cual permite otros tipos de conexión para la sincronización de los calendarios. Además, el programa provee opciones para la notificación de correos de Gmail, entre otras funciones vinculadas a Google.

Su instalación es relativamente simple, pero para mi lo fue más, pues como siempre, en archlinux bastó un yaourt -S gcaldaemon, luego agregar mi usuario al grupo gcal, y ejecutar el programa de configuración

/opt/gcaldaemon/bin/config-editor.sh

Luego, para configurarlo, fue necesario habilitar la sincronización de archivos, la cual se habilita en la casilla indicada en la imagen. En ella, es necesario asociar nuestra cuenta de correo google, con el correo de google calendar, y un archivo ical.
La cuenta de google no es necesario indicar donde conseguirla.
El calendario de google se obtiene en el sitio de Google calendar, copiando el enlace asociado al icono ICAL indicado en la imagen. Dicha opción se encuentra en los detalles del calendario al cual se desea sincronizar.

El secreto de la sincronización local, es indicar cual es el archivo donde el software guarda los calendarios, en el caso de Korganizer, dicho archivo se encuentra en ~/.kde4/share/apps/korganizer/std.ics, es en este paso donde es posible seleccionar otros archivos ics, según cual sea nuestra aplicación.

Una vez indicado, y con el programa cerrado, basta ejecutar el daemon. icql, aunque una buena manera, es de forma manual. En el caso de archlinux es /opt/gcaldaemon/bin/standalone-start.sh

Una vez ejecutado, ya se podrán ver los cambios en Kontact, y serán bidireccionales las modificaciones!
Referencias:
GCALDaemon, sitio con documentación y manuales para el programa.