Mostrando las entradas con la etiqueta Software Libre. Mostrar todas las entradas
Mostrando las entradas con la etiqueta Software Libre. Mostrar todas las entradas

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 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.

20 de septiembre de 2008

Yahoo User Interface

Yahoo User Interface(YUI), una serie de librerías escritas en JavaScript, para la construcción de aplicaciones interactivas (RIA). Liberadas bajo licencia BSD por parte de la compañía Yahoo. Dichas librerías son utilizadas para el desarrollo web específicamente para ser usadas como la programación de aplicaciones de escritorio, con componentes vistosos y personalizables y con una amplia implementación con AJAX. A continuación se muestra un ejemplo de declaración con el uso del componente DataTable:


//Declaración del conector al DataTable
var myDataSource = new YAHOO.util.DataSource(myHugeDataSet);
//Tipo de respuesta del DataSource
myDataSource.responseType = YAHOO.util.DataSource.TYPE_JSARRAY;
//Definiendo la estructura del DataSource
myDataSource.responseSchema = { fields : [ "id","nombre","edad" ] };
//Definición de cada columna del DataTable que debe ser igual a la del DataSource
var myColumnDefs = [ {key:"id"}, {key:"nombre"}, {key:"edad"} ];
//Cantidad de Registros en la variable de configuración del DataTable
var myTableConfig = { renderLoopSize : 20 };
/*
Creación del DataTable pasandole como parametros el nombre, la definición de las
columnas, el datasource o recurzo de donde se optienen los datos, y por último
la configuración general del DataTable
*/
var myDataTable = new YAHOO.widget.DataTable('tbl', myColumnDefs, myDataSource, myTableConfig);

Entre sus características tenemos:

* Capacidad de generar código ordenado para el programador
* Posibilidad de reutilizar controladores
* Manejo de AJAX
* Personalización de los componentes
* Soporte por parte de Yahoo Developers

Entre sus componentes/controles se encuentran:

* DataTable: Para mostrar datos de forma tabular.
* TreeView: Una especie de menú desplegable.
* Calendar: Control para seleccionar la fecha.
* Slider: Para seleccionar un valor numérico.