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.