Monday, February 28, 2005

Linux: sincronizando mi PalmOne Zire 72 con gnome-pilot



Hasta la fecha era imposible sincronizar la Zire 72 con algun escritorio de Linux. Bueno, desde hace un tiempo es facil hacerlo. El articulo original esta en http://www.clasohm.com/blog/one-entry?entry_id=12096.



Estas instrucciones las probé en Debian pero funcionan en cualquier distribución, en particular Fedora Core 3 que es al que se refiere el articulo original.

Bueno, como requisitos debes tener instalados los paquetes gnome-pilot, gnome-pilot-conduits y udev

luengo debes crear el siguiente archivo /etc/udev/rules.d/10-visor.rules y poner en el:

BUS="usb", SYSFS{product}="Palm Handheld*", KERNEL="ttyUSB*", SYMLINK="pilot"

y por último, debes agregar estas dos lineas al archivo /usr/share/gnome-pilot/devices.xml


<!-- Palm Zire 31/72 -->
<device vendor_id="0830" product_id="0061" />


Y listo, solo queda configurar los conductos de gnome-pilot y todo deberia funcionar. Recuerda utilizar el demonio gnome-pilot-applet para sincronizar solo usando el boton de sincronizar de la palm

Thursday, February 10, 2005

Debian: Fonts japoneses para firefox

Cuando instalamos Debian y luego navegamos con firefox (mozilla) veremos algunas paginas en las que en ves de letras hay unos extraños cuadritos con simbolos en su interior... esto sucede porque Debian no instala tipografía japonesa sin decirselo. Para arreglar esto basta con ejecutar el siguiente comando como root:

# apt-get install ttf-kochi-gothic ttf-kochi-mincho ttf-sazanami-gothic ttf-sazanami-mincho xfonts-intl-japanese xfonts-intl-japanese-big

Debian: Configurando mi touchpad

Descubri hace poco como configurar muy bien mi Debian para que mi touchpad funcione correctamente. Para esto debemos instalar los paquetes necesarios


# apt-get install xfree86-driver-synaptics


Y luego agregar las siguientes líneas a nuestro archivo /etc/X11/XFree86-4.



Section "InputDevice"

Driver "synaptics"
Identifier "Configured Mouse"
Option "CorePointer"
Option "Device" "/dev/psaux"
Option "Protocol" "auto-dev"
Option "LeftEdge" "1700"
Option "RightEdge" "5300"
Option "TopEdge" "1700"
Option "BottomEdge" "4200"
Option "FingerLow" "25"
Option "FingerHigh" "30"
Option "MaxTapTime" "180"
Option "MaxTapMove" "220"
Option "VertScrollDelta" "100"
Option "MinSpeed" "0.06"
Option "MaxSpeed" "0.12"
Option "AccelFactor" "0.0010"
Option "SHMConfig" "on"
EndSection



Así incluso conseguiremos que los bordes del touchpad funcionen como scroll. Y si tienes tiempo puedes descubrir como cambiar la aceleración del mouse y esas cosas, o configurar que al poner dos dedos actue como boton central.

Saturday, January 15, 2005

Debian: Como llevarse bien con flash

Algunos usuarios de Sarge se habran dado cuenta que al instalar flashplugin-nonfree podran usar flash en sus browsers... pero que mucas veces ese flash no despliega algunas palabras!!! es algo realmente molesto... bueno, si agregan estas lineas en su /etc/X11/XF86Config-4 podran arreglarlo...


FontPath "/var/lib/defoma/x-ttcidfont-conf.d/dirs/TrueType"
FontPath "/var/lib/defoma/x-ttcidfont-conf.d/dirs/CID"
FontPath "/usr/X11R6/lib/X11/fonts/100dpi/:unscaled"
FontPath "/usr/lib/X11/fonts/misc/:unscaled"
FontPath "/usr/share/fonts"

Friday, October 15, 2004

Debian: Instalar los drivers de NVidia

Encontre esta guía en la cual se muestra como instalar Debian para ser usado en bio-informatica. Rescato y traduzco un pedazo que me parece intersante, que es como instalar y configurar los drivers de NVidia, asi que si tienes una geForce o una TNT puedes tener aceleracion gráfica en un santiamen.

Primero debes tener instalado los headers de tu kernel

* apt-get install kernel-headers-<version>

Luego debes instalar los fuentes del "kernel-nvidia"

* apt-get install nvidia-kernel-source

Con estas dos cosas, debemos setear un par de variables de ambiente, en mi caso:

* export KSRC=/usr/src/kernel-headers-2.6.3-1-386
* export KVERS=2.6.3-1-386


Luego ingresa al directorio /usr/src/ y descomprime el paquete nvidia-kernel-source.tar.gz y entra al directorio /usr/src/modules/nvidia-kernel/ y utiliza el siguiente comando par acrear el paquete .deb:

* debian/rules binary_modules

Antes de instalarlo asegurate de tener instalado nvidia-kernel-common

* apt-get install nvidia-kernel-common

Ya casi estamos. Sube un directorio (/usr/src/modules/) e instala el modulo recien creado:

* dpkg -i nvidia-kernel-<version del kernel>_1.0.6111-1_i386.deb

Ahora el modulo de glx

* apt-get install nvidia-glx

Por ultimo (si!!! por último) tienes que editar el archivo /etc/X11/XF86Config-4. Asegurate de que los siguientes modulos estan cargados:

* Load "GLcore"
* Load "dri"
* Load "glx"

Y cambia el driver "nv" por "nvidia". Y despues vuelve a iniciar X simplemente con ctrl-alt-backspace y listo, ya tienes aceleracion gráfica.

La siguiente ves que arranques tu computador, el driver no funcionara si no lo has agregado al archivo /etc/modules poniendo nvidia a la última linea del archivo


Get Firefox!

Thursday, September 30, 2004

Get Firefox: Spreading the Word

Desde hoy me uno a la campaña de Spread Firefox [spreadfirefox.com]. Tiene por motivo fomentar el huso de Firefox entre la gente. La idea es dar a conocer este maravilloso browser a la gente que no es tan experimentada en computación, aquellos que confunden el icono azul de Internet Explorer con "Internet" mismo... *sigh*

Para aquellos que no saben que es Firefox, aqui va un pequeño resumen:

Firefox es un navegador web creado por la Mozilla Fundation [mozilla.org]. Esta basado en el código del navegador Mozilla pero solo incluye el navegador. Algunas de sus principales caracteísticas son:


  • Tabbed Browsing: Tiene la capacidad de usar pestañas

  • Pop-up block: Bloquea todas esas apestosas ventanas pop-up

  • Type-ahead: al escribir, automaticamente se busca sobre los links de la páina (mi favorito)

  • Live-bookmarks: Integra los RSS y ATOM-XML en los bookmarks!!!



Pero además es un browser Open Source, es MUY compatible con CSS (no es perfecto, pero esta años luz por delante de Explorer), es liviano y rapido en equipos antiguos.

Bueno, si les intereza Recuperar la WEB (get back the Web!) entonces sumense a la campaña!!.. en otras palabras....Get Firefox!



Wednesday, September 01, 2004

Debian: Como configurar FreeNX, un servidor NX

Que es NX??? Bueno, según lo que yo entiendo es un protocolo el cual permite encapsular el protocolo X11 y mandarlo por SSH. Además elimina mucha de las redundancias en llamadas a las librerias. Y que significa todo esto?? Bueno, usando un cliente NX para conectarnos a un servidor NX podemos acceder remotamente a otra maquina, pero podemos disfrutar de un ambiente gráfico completo, Kde, Gnome, etc. con una exelente velocidad. Incluso podemos usar KDE conectandos remotamente usando un modem de 56Kbps ... INCREIBLE!!!

Hace un par de dís nomachine.com libero el codigo de su servidor NX bajo la licencia GPL y ya tenemos una implementacion libre!!! :). Es este artículo explico como configurar Debian para poder configurar nuestra maquina y tener acceso remoto.


  • Primero debemos instalar el servidor. Para esto debemos incluir
    deb http://www.kalyxo.org/debian/ experimental main

    en nuestro /etc/apt/sources.list
    Luego de un rapido "apt-get update && update-get install nxserver" ya tendremos el servidor conrriendo.


  • Ahora debemos ejecutar:
    nxsetup

    para que el servidor genere las llaves de ssh y los archivos de configuracion necesarios.

  • Para que alguien pueda conectarse, es necesario que se agregue al servidor. Para esto usamos :


    nxserver --adduser <nombre>
    nxserver --passwd <nombre>

    donde nombre de usuario es un usuario que ya existe en nuestro debian. Es importante notar que la contraseña de NX es distinta a la del sistema y pueden no estar en sincronia.


Bueno.. para conectarse a tu maquina, solo es necesario bajar un cliente de NX para tu maquina cliente desde nomachine.com y luego seguir el wizard que viene con el cliente.

Tuesday, July 27, 2004

Debian: Internet Explorer en Debian... Bring On The Wine!!!

Hace tiempo que no publico nada, pero es porque he estado ocupado haciendo algunas cosas... por ejemplo lograr ejecutar Internet Explorer con wine... y lo logré!!!!

En mi proceso original de instalación utilce el wine que se instala en Debian pero no se comportaba muy estable. Lo que es peor, al tratar de escribir en la barra de direcciones el browser se bloqueaba. Pero logré muy buena compatibilidad con paginas, casi todas funcionaron.

Finalmente, logre instalarlo utilizando la versión 20040716 de wine. Si alguien necesita saber como lo hice con los paquetes de debian, que me deje un mensaje al final de este documento.

Debo decir que las cosas que hice fue una mezcla de varios consejos desperdigados por todas partes... entre ellos:



Los pasos para instalar Internet Explorer son los siguientes:


  • Instalar wine

    Pueden bajar wine desde www.winehq.org

    Luego seguir estos pasos

    tar zxvf Wine-20040716.tar.gz
    cd wine-20040716
    ./configure
    make depend
    make
    make install

    El resto es fácil y pueden hacerlo solos ;)

  • Configurar wine

    Esta configuración es mañosa y logra hacerlo utilizando un archivo de configuracion generado por winetools. Al fin logre adaptarlo para wine 20040716 y pueden descargarlo desde aqui

    Luego debes editarlo y cambiar en todos los lugares donde dice alejo por tu nombre de usuario y luego mover el archivo config a tu directorio .wine

  • El registro de windows: System.reg

    En frankscorner.org se encuentra un registro necesario para nuestro cometido...

    wget http://frankscorner.org/files/systemreg6.tgz
    tar -zxvf systemreg6.tgz
    mv system.reg ~/.wine/

  • Instalar dcom98
    Necesitas bajar DCOM98

    Para instalarlo debes ejecutar

    WINEDLLOVERRIDES="ole32=n" wine dcom98.exe


  • Bajar e instalar ieSetup.exe

    Baja el instalador de ie6setup.exe

    Luego ejecutalo y dile que solo baje los archivos. En eso estara un buen rato. Luego debes buscar sacar los archivos *.CAB de Windows Update Setup Files dentro del directorio windows de wine a un directorio temporal y luego ir a ese directorio temporal.

    En el directorio temporal debes ejecutar

    cabextract IE_S1.CAB IE_S2.CAB IE_S3.CAB IE_S4.CAB IE_S5.CAB IE_S6.CAB
    cabextract IE_1.CAB IE_2.CAB IE_3.CAB IE_4.CAB IE_5.CAB IE_6.CAB SCR56EN.CAB
    cabextract IEDOM.CAB
    rm *CAB



    Aqui vienen los pasos cruciales:

    • Renombrar sch128c.dll a schannel.dll

    • Convertir todos los archivos utilizando este script

    • Crear el directorio Internet Explorer dentro del directorio "Program Files" de wine

    • Mover el archivo IEXPLORE.EXE a "Internet Explorer/iexplore.exe" (fijate en el case de las letras

    • Mover el resto de los archivos al directorio system dentro de "windows" (instalacion de wine)



  • Listo!!!!

    Ahora solo debes correr wine iexplorer.exe desde el directorio de Internet Explorer y listo!!!!....

  • Errores:

    Hasta ahora me funciona perfecto, pero cada ves que un sitio intenta lanzar un pop-up, explorer se bloquea.. bueno, estoy trabajando en eso.

Monday, June 21, 2004

OpenSource: Evolucion y opensource

La idea no es mia... pero me gusta reflexionar con la idea de que los sistemas operativos son como seres vivos. Por definicion un sistema operativo tiene fallas, ya sea windows, linux, o mac (aunque los de mac lo nieguen) y todos tienen sus hoyos de seguridad... y falta mucho tiempo hasta que tengamos sistemas seguros. Y donde esta la comparacion con los seres vivos? pues que al igual que los seres vivos, si una raza estuviera formada por puros individuos iguales entre si, esta raza estaria muy desprotegida ante cualquier ataque. Cuando aparece un nuevo virus, todos los computadores con windows a lo largo de mundo, sufren de los ataque y se llevan consigo los datos de las personas y de las empresas... eso ocurre porque todos los windows son iguales entre si (bueno, hay XP/2000/9.x pero siguen siendo pocos, la mayoria usa 200 o XP). Asi, un sistema fuerte es aquel que esta formado por seres suficientemente diferentes entre si para no ser afectada la raza completa por una enfermedad. Lo importante de esto es darse cuenta que la variedad de sistemas operativos tendra que aumentar, incluso en variedades dentro de un mismo sistema operativo, como en linux donde existen mas de 100 distribuciones distintas.

El problema de esto, es que los seres humanos no viven para los computadores y no quieres convertirse todos en administradores de sistemas... yo tambien amo linux, y creo que cualquiera es capaz de aprender muy facil a utilizarlo para las labores diarias, pero un humano comun no va a querer aprender a manejar 10 sistemas operativos distintos con los cuales podria encontrarse... es por eso que es muy importante que las personas no se amarren a la informacion y su plataforma. Una de las cosas buenas del opensource es que un progama puede ser portado a cualquier plataforma/OS y con eso permite que cualquier persona pueda tener su sistema operativo y manejarlo bien sin tener que usar otro sistema operativo solo "para poder usar un programa".

Y a donde evoluciona el opensource??? hacia el pasado!!! porque digo esto? porque hace unos 15 an~os atras la gente no hablaba de un procesador de textos, hablaba de WordPerfect o WordStar, Lotus, Quattro Pro y varios más y la gente que usaba computadores estaba mas obligada a saber de diferencias entre progamas. Cuando llego Microsoft, todos pasamos a ser imbeciles que solo merecemos usar una una suite de officina y se acabo...

Lo peor es ver como los niños de hoy se vuelven adictos a microsoft. Hace 10 años atras, en los colegios enseñaban LOGO... hoy enseñan MS Office.... francamente patetico

Bueno. tengo fé en el futuro.

Saturday, June 19, 2004

OpenSource: Dependencias, Migracion y Microsoft

Hoy lei en el blog de Havoc Pennington su opinion sobre las dependencias. En el plantea que el problema de Linux y las dependecias es inherente a su modelo de desarrollo y que una cosa implica a la otra. En mi vision no existe ningun problema con las dependecias.... antes de que me tiren el lavatorio por la cabeza, quiero decir que estoy conciente de que existe uno ahora, pero este se ira solucionando paulatinamente hasta desaparecer.

Havoc indica que una solucion para linux seria que se formara un "core" de linux al estilo de LSB pero mas en serio. Y que todo aquello que use otras dependencias debe venir con los paquetes. Pero dice tambien que eso trae los problemas que se ven en windows, versiones que se sobreescriben, trozos del sistema operativo que quedan desactualizadas. Mi vision de la computacion apunta a una expansion del codigo libre y que eventualmente, lo comun será tener un escritorio OpenSource. La gente se acostumbrará a hacer un upgrade de su sistema operativo una ves a la semana o incluso algun dia de manera automatica (solo los parches de seguridad). Pero este cambio sera un cambio gradual. La gente nisiquiera se dara cuenta de que estan cambiando de sistema operativo, primero algunos usaran Linux, luego un gran porcentaje lo usara. Cuando usar linux sea algo comun, algunos empezaran a utilizar sistemas como Syllabe, OpenBeos o SkyOS. Eventualmente, nadie recordara que el sistema operativo era uno solo o que era propietario. La gente tendra por sentado que el SO es gratuito (legalmente) y que puedes cambiarte cuando te de la gana...

Hablando de gente que hace lo que le da la gana, pueden ver una entrevista a Steve Ballmer[activewin.com] en donde vuelve a repetirnos que Microsoft solo piensa en sus clientes y lo que es mejor para nosotros, pero quien puede creerles si ahora quieren vender un antivirus para windows en ves de reparar los errores que lo hacen tan inseguro??? Ademas, yo no confiraria en alguien que se ve asi.Bueno, ya saben a donde creo que vamos.. y me gusta.

Saturday, June 12, 2004

LAMP: Configurando Debian para PHP+MySql

Hoy tuve que volver a instalar mi hambiente de desarrollo y decidi anotar los pasos para poder desarrollar una aplicacion LAMP. Mi sistema es un Debian asi que en la instalacion de paquetes solo me referiré a apt-get

1) PHP

Para instalar PHP, apache y mysql ejecutar:

apt-get install php4 apache php4 php4-cgi php4-mysql phpdoc phplib phpmyadmin


- PHPMyAdmin es para tener un administrador de bases de datos para mysql.
- PHPLib es para utilizar templates.

2) Configurando apache

Esto es facil. En /etc/apache/httpd.conf agregar el siguiente alias


Alias /src/ "/src/php/"
<Directory "/src/php/">
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all>
</Directory>


Donde /src/php/ es el directorio con los fuentes de php. /src/ es el alias para apache, para luego acceder a http://localhost/src/ y llegar a los archivos fuente.

3) Configurando PHP

En los archivos php.ini de los directorio /etc/php4/apache y /etc/php4/cgi agregar la siguiente linea en la seccion de UNIX paths:
include_path = ".:/usr/share/pear:/usr/share/php:/usr/lib/phplib"


Esto es para tener PHPLib en los path cuando se ejecuten las paginas .php

Si quieres que todas las paginas php despliegen la totalidad de errores busca la linea (en ambos archivos) que dice:
error_reporting = E_ALL & ~E_NOTICE
y cambiala por
error_reporting = E_ALL

Friday, June 11, 2004

Java: Otro que no es obvio

En un articulo que lei en Linux Magazine[linuxmagazine.com] aparece esta pregunta:

Que obtines de el siguiente ciclo?

while( i != i );

Si pensabas que la respuesta es que no se ejecuta nunca, estas equivocado, como todo en esta vida.. depende!!!

Si antes defines

double i = 0.0/0.0;

Entonces i sera Double.NaN y por definicion, un NaN no es igual a si mismo!!!!!

Si tienen algo que alegar, aleguen a la IEEE




Tuesday, June 08, 2004

Ruby: Un nuevo amor?

Hoy me nacio una necesidad... aprender un nuevo lenguaje. Y me vi enfrentado a elegir uno... cual seria? Python? Bash? smalltalk? y repentinamente recorde Ruby[www.ruby-lang.org], y me dije "porque no?".

El creador de Ruby es Yukihiro "Matz" Matsumoto, (claramente japones) y pense que un leguaje creado por un japones debia de alejarse de tanto lenguaje gringo y europeo.

Busque un tutorial de Ruby. El primero que encontro me atrapo de inmediato. No es solo el impacto de ver instrucciones como:


exit unless "restaurant".include? "aura"




5.times {print "hello world" }



Sino que además el tutorial está muy bien escrito, es muy divertido y esta lleno de historietas como esta




Bueno, no los aburro más. Si quieren ver el tutorial, esta en http://poignantguide.net/ruby

Y si les interesa, aqui pueden encontrar un poco del autor .Yukihiro "Matz" Matsumoto talks about Ruby's history[slashdot.org]

Friday, June 04, 2004

Java: No es tan obvio como parece...

Este es un ejemplo de que el lenguaje Java tiene secretos hasta para los que creen conocerlo bien. Esto lo saque de una revista asi que no me atribuyo el credito por aberlo visto...


while( i == i + 1){
// do something...
}

Pareciera claro que nunca entrariamos a este ciclo, pero eso no estan cierto. Dependiendo de como definamos i talves si entre al ciclo.
Si definimos i como:

double i = 1/0.0;

Uno podria pensar que eso produce un error, pero no es asi, el valor de i es Float.Nan lo que corresponde a infinito, y como infinito + 1 es infinito, el coclo se ejecutara infinitamente.
Las cosas nunca son obvias.....

PHP: Usando variables como funciones o metodos

Una propiedad bastante poderosa de PHP es poder utilizar variables para simbolizar cualquier cosa. Veamos algunos ejemplos

1) Nombres de metodos:

Teniendo la siguiente clase:


<?php
class A{
var $nombre = "alejo";
function printNombre(){
printf($this->nombre);
}
}
?>


Que es una clase muy simple. Ahora veamos para que puede servirnos las variables.

Si ejecutamos el siguiente codigo


$variable = 'nombre';
$a = new A();
printf($a->$variable);


El resultado sera 'alejo' puesto que la variable '$variable' contiene el nombre de la variable de instancia del objeto a. Puede resultar un poco extraño al principio pero luego uno se acostumbra. Esta misma propiedad puede utilizarce para llamar funciones (o metodos). Por ejemplo:


$variable = 'printNombre';
$a = new A();
$a->$variable();


Esto produce como salida 'alejo' al igual que el ejemplo anterior. Este tipo de comportamiento es muy agradable para hacer codigo adaptable a situaciones. Por ejemplo, podriamos ejecutar un metodo cuyo nombre fuera ungresado por parametro o por un usuario. Tambien cabe la posiblidad de guardar nombres de variables o metodos en arrelgos asociativos y que estos se ejecuten en ciertas condiciones.