Libertad, hora 0

Blog dedicado a la tecnología y conocimiento libre

22 de septiembre de 2009

PHP Programación Orientada a Objetos Primeros Pasos para usarlo en EXTJS

Por algunos días he estado pensando en el ejemplo más sencillo para comenzar a dar clases explicando POO (Programación Orientada a Objetos) con PHP 5, y se me ha ocurrido lo siguiente:

class conector {
/* Parámetros de la conexión */
private $server = "localhost";
private $db = "Mi_BaseDeDatos";
private $user = "root";
private $pass = "root";
/* Funtion construc */
public function __construct()
{
$this->link=mysql_connect($this->server,$this->user,$this->pass);
mysql_select_db($this->db);
}
/* Ejecuta consulta sql */
public function sql($query)
{
$request = (!mysql_query($query,$this->link))?("Error MySQL: ".mysql_error()." \n Query: $query"):("Se realizo la operación");
mysql_close();
return "{ \"success\": true, \"msg\": \"$request\"}";
}
/* Retorna un JSON para ser leído en el cliente por algún componente */
public function json($query)
{
$arr = array();
$rs = mysql_query($query,$this->link);
while($obj = mysql_fetch_object($rs)) {
$arr[] = $obj;
}
mysql_close();
return json_encode($arr);
}
}
?>


Posteriormente a esto, ahora nos toca utilizar alguna de nuestras funciones, por ejemplo, queremos un json de una tabla, simplemente:


$enlace = new conector();
echo $enlace->json("Select * from personal");

11 de septiembre de 2009

EXTJS 3.0 para aplicaciones Webs

Hace algún tiempo me quede sorprendido con unas librerías lanzadas por Yahoo llamadas Yui, con una gran cantidad de objetos y controles disponibles que acercan más el desarrollo de aplicaciones webs como si fuesen de escritorio.

En ese entonces pensé que era bueno y realice un par de aplicaciones. En la actualidad, recientemente ha salido a colación un conjunto de librerías basadas en Yui llamadas Extjs. Personalmente durante el tiempo que las he estado probando, considero que es lo mejor que he visto hasta ahora escrito en JavaScript.

Una vez más las aplicaciones web se acercan a aplicaciones de Escritorio. Actualmente veo que funcionando con un buen engine tipo Prism o Chrome para el procesamiento del JavaScript del lado del cliente y un servidor local podría realizar una aplicación web con las mismas características que una aplicación de escritorio.

La Web comienza a formar parte de nuestro escritorio, hace poco he observado el sistema operativo de google llamado Chrome. Considero que el futuro es ese, un sistema operativo universal, instalado en la Internet en donde ya no será importante el ordenador desde el cual accedas, tus datos siempre estarán disponibles en la red sin posibilidad de perder por fallas de Hardware.

Volviendo al tema de Extjs, aunque apenas empiezo a conocer, me atrevo a vaticinar que será una de las librerías más usadas junto con JQuery.

Próximamente estaré publicando códigos de ejemplo.

21 de febrero de 2009

Proxy transparente para dd-wrt

El siguiente bloque de código muestra como configurar la redirección del puerto 80 hacia nuestro servidor proxy, pensando en el caso de squid que usa el puerto 3128 de forma predeterminada. Recomiendo leer antes el manual de configuración de squid modo proxy transparente.

Si se desea que esto se cargue en la nvram debe hacerse de la siguiente manera, colocar:

>nvram set rc_firewall="<código que coloqué abajo. Nótese que se han escapado los carácteres " y $>" ENTER
>nvram commit
>nvram get rc_firewall //Para confirmar que se grabo bien
>reboot

#!/bin/sh
INTERNAL_NETWORK=\"192.168.1.0/24\"
ROUTER_IP=\"192.168.1.100\"
PROXY_SERVER=\"192.168.1.121\"
PROXY_PORT=\"3128\"
if [ -z \$TRANSPARENT_PROXY ]; then
/usr/sbin/iptables -t nat -I PREROUTING -i br0 -s \$INTERNAL_NETWORK -d \$INTERNAL_NETWORK -p tcp --dport 80 -j ACCEPT
/usr/sbin/iptables -t nat -I PREROUTING -i br0 -s ! \$PROXY_SERVER -p tcp --dport 80 -j DNAT --to \$PROXY_SERVER:\$PROXY_PORT

/usr/sbin/iptables -t nat -A POSTROUTING -o br0 -s \$INTERNAL_NETWORK -p tcp -d \$PROXY_SERVER -j SNAT --to \$ROUTER_IP
/usr/sbin/iptables -t filter -I FORWARD -s \$INTERNAL_NETWORK -d \$PROXY_SERVER -i br0 -o br0 -p tcp --dport -j ACCEPT
export TRANSPARENT_PROXY=\"1\"

else
echo \"Ya se está ejecutando\"
fi

#Políticas de excepción (maquinas que no pasan por el proxy)
#Servidor de correos
/usr/sbin/iptables -t nat -I PREROUTING -i br0 -m mac --mac-source 00:1D:92:A4:02:5E -p tcp --dport 80 -j ACCEPT

#Servidor SAMBA
/usr/sbin/iptables -t nat -I PREROUTING -i br0 -m mac --mac-source 00:1A:92:A4:02:5E -p tcp --dport 80 -j ACCEPT

#Computador de uso frecuente :P
/usr/sbin/iptables -t nat -I PREROUTING -i br0 -m mac --mac-source 00:9D:92:A4:02:5E -p tcp --dport 80 -j ACCEPT


Ahora bien, por último debes recordar modificar
INTERNAL_NETWORK,ROUTER_IP,
PROXY_SERVER y PROXY_PORT según tu configuración de red interna.

3 de febrero de 2009

¿Para qué me gradué?

Muchos de nosotros nos hemos topado con esta pregunta, precisamente justo al terminar nuestra carrera universitaria; algunos familiares nos recomiendan seguir estudiando, otros conseguir un buen empleo; y por supuesto, nuestros padres hacen todo lo posible en ayudarnos a encontrar trabajo y vivienda lo más cerca de ellos. Ojalá puedan comprender nuestra necesidad de independencia.
El otro día recordaba una película llamada El Graduado (The Graduate); pienso que tomando solo el principio de la película, esta refleja muy bien el sentimiento que experimentamos muchos de nosotros al culminar una carrera universitaria; nos sentimos parados justo en la mitad de la vida en esa delgada franja que separa nuestra vida de adolescente y estudiante universitario y la de adulto con empleo, auto y pareja.
Ciertamente la vida de pareja, si aún no se ha elegido, es un camino difícil al comienzo, pero esa es otra historia. Ahora hablo de esa decisión inequívoca que debemos tomar al momento de graduarnos, -escribiendo esto me observo a mi mismo sentado en mi trabajo pensando en buscar otro empleo, establecerme en otra ciudad o seguir estudiando un post-grado-. Todo lo anterior son caminos desérticos si no se toma la decisión de encontrar un motivo real por el cual luchar; muchos nos centramos en conseguir objetos, llámese poder adquisitivo, autos, casa o un estatus alto en la sociedad como un buen empleo; pero, créanme, nada de esto satisface el deseo de trabajar por un fin que nutra nuestra pasión de seguir investigando y creciendo sintiéndonos como niños otra vez, al otro lado está el no tomar ningún paso cayendo en la rutina del trabajo por el vivir y el vivir por el trabajo para luego encontrarnos con 40 años mirando atrás, mirando nuestras manos desgastadas pensando –qué sucedió en todos estos años, qué hice?-.
Pues bien, aún esto no ha sucedido, ahora es el momento de tomar una decisión certera, rápida y sabia. Pero, ¿cómo tomar una decisión sabia si aún no hemos vivido lo suficiente?, y en una sociedad tan compleja en la que hemos crecido, en donde perdemos solamente 15 años para medio preparados al terreno de la vida.
Sea lo que sea que se decida quizás no tenga tanta importancia, la importancia real está en tomar la decisión, una decisión que debe ser de carácter moral, que llene nuestro espíritu, que alimente esa fuente inagotable de energía, nuestra la pasión por descubrir. Se debe poner amor de eso estoy seguro, así iremos siempre delante de la otra necesidad, el dinero.
Vaya! Qué difícil verdad?; pues no es tan difícil si lo intentas y no me cabe la menor duda que se comienza por arriesgar, dar un paso adelante y tomar esa decisión que tantos miedos nos ocasiona, luego te lo agradecerás a ti mismo.

2 de diciembre de 2008

Kiwix, la wikipedia offline

Desde hace algún tiempo me he dedicado de lleno a un proyecto que me apasiona intensamente. Este proyecto es llamado Kiwix. Bien, este es un software creado para poder leer Wikipedia sin conexión a Internet, en especial, para esos sitios recónditos en donde el acceso a Internet es complicado, o en comunidades en donde no existan los recursos para poseer dicho acceso.

Apenas está en pañales en su versión 0.7 beta, y se están corrigiendo algunas fallas como algunos problemas en el sistema de búsqueda.





Cómo dato interesante es que no simplemente sirve para cargar wikipedia fuera de linea, sino también cualquier proyecto de la fundación wikimedia como lo son: wikilibros, wikidiccionario, wikiespecies, wikisource, wikinoticias...entre otros. Disponible para importar bases de datos de todos los idiomas.

Acá coloco los pasos para la instalación:

1) Descargar el archivo zeno e indices de wikipedia en español disponible desde el enlace de "Download" del mismo programa en la base superior. O bajar en http://ftp.crihan.fr/mirrors/wikipediaondvd.com/es.wikipedia.tar manualmente

2) Entrar a Manage corpus

3) Dar click en ADD

4) Llenar campos del formulario
name : es.wikipedia,
format : zeno,
root : es.wikipedia,
home : A/Wikipedia:Portada,
Index root : path en donde descomprimiste el
archivo es.wikipedia.tar y en donde se encuentra el archivo zeno (Formato comprimido usado para wikipedia offline)

Cómo dato importante, es que es un proyecto GNU/GPL, disponible actualmente para linux, mac y windows.

3 de octubre de 2008

Filosofía libre del Software

Cuando estoy a punto de comenzar el desarrollo de un sistema en cualesquiera de las empresas en donde he trabajado, todo comienza con una motivación.

Si bien es cierto que el desarrollo de aplicaciones o codificación de algoritmos es una actividad meramente lógica y técnica; también es necesario el empleo de una musa o inspiración creativa que nos llegue a conseguir el punto exacto en la terminación de un proyecto impecable.

Es decir, usamos ambos hemisferios cerebrales para tal actividad, tanto el derecho, dedicado a la lógica, como el izquierdo, dedicado a las actividades artísticas.

Ahora centrémonos en esta musa, llámese también la razón de ser o el sentido propiamente dicho que va a tener este sistema que vamos a desarrollar, dejando a un lado el interés monetario, que es tan importante para nuestras vidas pero que a la final no puede comprar tan solo la satisfacción.

El otro día, me comentaba un amigo que -mi interés en el software libre es meramente técnico-. Ahora bien, si analizamos esto, es sencillamente imposible que nos enfoquemos únicamente en la parte conceptual de proyectos de software libre, a menos que seamos robots que no necesitamos musa inspirativa para lograr la consecución de sistemas de cualquier tipo, que de por sí podemos descartar ya que precisamente lo que caracteriza a un robot es la falta de emotividad, falta de creatividad y mucho menos inspiración.

Entonces, llegamos al punto en que, la filosofía libre del software podría ser la musa, el saber que nuestro trabajo será reusado por otros garantiza la inmortalidad del mismo, es en sí el valor suficiente o el impulso necesario para el empujón al comienzo de la primera línea algorítmica.

Una vez que somos concientes de que al liberar nuestro código no solamente aportamos nuestro pequeño grano de arena a esta gran montaña de saberes que nos ha regalado la comunidad, sino que también nos hacemos inmortales dentro de la própia inmortalidad logica creativa del código liberado. La libertad se refiere a estar sin ataduras de licencias, ni de empresas, ni de software quienes al principio prometieron ayudarnos con una plataforma y en protección de nuestros derechos intelectuales, pero que a la final se llevan consigo hasta a la tumba nuestras ideas copiadas en dicho código encerrándolas en cajas herméticas en donde nadie puede verlas o matándolas cuando sencillamente estas empresas quiebran y ya la plataforma que estaba en nuestros zapatos desapareció, todo el conocimiento que hemos construido se desbarata como las torres gemelas, como una torre de naipes.

En paises como el nuestro, hablo de Venezuela, y en general latinoamérica. En donde, el sentido tecnológico aún no logra llegar a los estratos más bajos de la sociedad. El software libre aún no termina de florecer dentro de la comunidad desarrolladora.

Es muy común encontrar compañías arraigadas profundamente al desarrollo de aplicaciones con Visual Studio, que a su vez se amarra a SQL SERVER y a su vez a Windows, siendo todo lo anterior en sí un monopolio que se adhiere a las empresas y que las hace dependiente de un sistema y lenguaje sustentándose en el puro interés monetario, dejando en segundo orden temas como la seguridad, creatividad y eficacia, cosas que tampoco el dinero puede comprar.

Cuando desarrollamos código con estas herramientas privadas nuestro algoritmo está destinado a morir, ya que cómo puede un organismo mortal ¿cómo lo son las empresas sustentar el conocimiento que es inmortal?.

Encerrados en edificios de oficinas en donde no existe ningún tipo de inspiración más allá que la monetaria y esto se observa incluso en compañías que intentan innovar como Google INC., que ha desarrollado uno de los mejores ambientes laborales pero que a la final cae en el mismo circulo del conocimiento -->> creatividad -->> dinero, pero es aquí, en donde viene el conocimiento cuando circulo se va desgastando, por falta de energía que la impulse a seguir, como resultado de que el valor monetario toma una importancia superior a la creativa.

Cuando Google empezó a incorporar a sus propios empleados a formar parte de las acciones de la misma empresa, empezó a empeñar su nivel creativo, dándole más importancia al resultado que a la forma o la manera de lograrlo, el desarrollo meramente por un fin.

Así pues, sería interesante plantearnos interrogantes personales como ¿Donde está realmente la riqueza para mí? ¿Cuanto cuesta un segundo creativo?. En el mismo momento en el que la moral paso a un segundo lugar, colocando un sistema inmoral de conocimiento tecnológico por dinero generador de pobreza científica, en ese instante dejamos de ser libres.

21 de septiembre de 2008

Diseño gráfico con vectores en Linux

Hace algún tiempo me tropecé con un programa llamado inkscape que no parecía en lo absoluto interesante. En ese entonces, no comprendía en qué podría ayudarme un programa para el diseño de vectores, el concepto de vectores no se me era familiar. Sin embargo, por alguna extraña razón, este programa, se me atravesaba, una y otra vez cuando intentaba instalar algún paquete relacionado con diseño gráfico.

Posteriormente, decidí comenzar a investigar al respecto, y poco a poco fui descubriendo una gran comunidad de desarrolladores y usuarios detrás de este software. Sin embargo, no me consideraba diseñador, si bien es cierto que me tope en más de una ocasión con la necesidad de maquetar formularios, esto es muy distinto a construir el diseño de portales enteros; algo ya común para personas que trabajan en pequeñas empresas o de forma freelance, en donde es mucho mejor hacerlo uno mismo.

En wikipedia confirme la gran importancia de los vectores, en donde saltaba a la vista un formato aprobado por la W3C y usado por inkscape de forma nativa para sus salvados, este formato, llamado SVG al parecer permite no solamente realizar imágenes vectoriales, sino también animaciones.

Pues la ventaja que comprendí que tienen los vectores frente a otros formatos de imágenes como .jpg es, principalmente, que una vez realizada una imagen de forma vectorial, esta puede ser exportada o visualizada en cualquier resolución posible, es decir, en teoría, una imagen de resolución infinita, que puede ser mostrada en la gran gama de Navegadores Webs disponibles actualmente en el mercado.

Olvidé lo más importante, es un formato abierto y libre.