Entradas etiquetadas ‘ programacion ’

HOWTO: Symfony Framework 1.2 en Ubuntu Jaunty 9.04

Sábado, Mayo 2, 2009

Symfony es un framework para desarrollar aplicaciones web basándonos en el patrón MVC.

La instalación es bastante cómoda y se puede realizar a través de PEAR. El proceso es muy simple:

  1. Instalamos Apache. También es posible usar otros servidores, pero yo me siento cómodo con Apache. Yo tengo la mala costumbre de usar para ello un método bastante “cutre” que consiste en instalar phpmyadmin, ya que así se resuelven todas las dependencias necesarias para Apache, PHP y MySQL de una vez.

    Durante la instalación nos preguntará qué servidor queremos usar con PHPMyAdmin, seleccionamos Apache y listo.

    Yo instale y configuré previamente MySQL manualmente, pero usando este método es posible que os guíe durante la configuración.

    1. sudo aptitude install phpmyadmin
  2. Instalamos pear:
    1. sudo aptitude install php-pear
  3. Añadimos el canal de Symfony:
    1. sudo pear channel-discover pear.symfony-project.com
  4. Instalamos Symfony mediante PEAR:
    1. sudo pear install symfony/symfony

Por último solo nos resta configurar Apache. Yo he configurado un host virtual con un log separado, así podré testear y depurar cómodamente. Veamos como hacerlo por pasos.

  1. Añadimos la entrada con el dominio que queramos a /etc/hosts. Yo he elegido dominio.com para el ejemplo, pero se puede elegir otro
    1. echo "127.0.0.1 dominio.com" >> /etc/hosts
  2. Ahora creamos una entrada en /etc/apache2/sites-available/dominio.com con el siguiente contenido:
    1. <VirtualHost *:80>
    2.         ServerName dominio.com
    3.         ServerAdmin webmaster@dominio.com
    4.  
    5.         DocumentRoot /var/www/web
    6.         DirectoryIndex index.php
    7.  
    8.   Alias /sf /usr/share/php/data/symfony/web/sf
    9.   <Directory /sf>
    10.     AllowOverride All
    11.     Allow from All
    12.   </Directory>
    13.  
    14.         ## Cambiamos esta ruta por la que nos convenga
    15.         ErrorLog /path/al/log/fichero.log
    16.  
    17.         # Possible values include: debug, info, notice, warn, error, crit,
    18.         # alert, emerg.
    19.         ## Podemos cambiar también el nivel de log por el que más nos convenga
    20.         LogLevel debug
    21.  
    22.         CustomLog /path/al/log/fichero.log combined
    23.         ServerSignature On
    24.  
    25.   #Configuracion de symfony
    26.   <Directory "/var/www/web">
    27.     AllowOverride All
    28.     Allow from All
    29.   </Directory>
    30. </VirtualHost>
  3. Por último activamos el host virtual, mod_rewrite y reiniciamos apache
    1. sudo a2ensite dominio.com
    2. sudo a2enmod rewrite
    3. sudo /etc/init.d/apache2/reload

Solo falta editar el archivo /etc/php5/apache2/php.ini y cambiar la linea magic_quotes_gpc = Off por magic_quotes_gpc = On

Para comenzar a desarrollar podemos acudir a la página de Symfony y seguir su increíble “tutorial” escrito en forma de libro o en librosweb si preferís el libro en español.

Evitar el uso de eval() en Javascript

Jueves, Noviembre 6, 2008

Hoy en el trabajo he descubierto que la función eval() de Javascript y Firebug se llevan muy mal. Tan mal que no conseguía depurar una clase que estoy desarrollando. Googleando un poco he conseguido encontrar varias formas de evitar eval() y algunos motivos por lo que es recomendable evitar su uso.

El funcionamiento de eval() es el siguiente:

  1. Se convierte el argumento en un String.
  2. Se parsea el String y se convierte en código Javascript.
  3. Se ejecuta el código Javascript resultante.

Evidentemente saltarse los pasos 1 y 2 mejora el rendimiento. Además evita esos problemas “raros” que he comentado antes con Firebug.

En concreto los problemas con los que me he encontrado incluían los siguientes usos de eval:

  • Asignar una propiedad a un objeto cuyo nombre está almacenado en un String.
  • Llamar a una función cuyo nombre está almacenado en un String.
  • Crear un objeto de una clase cuyo nombre está almacenado en un String.

Es decir, tres casos muy parecidos que se reducen a uno solo, acceder a variables cuyo nombre conocemos a posteriori. Para solucionar esto basta con saber que hay varias formas de acceder a una propiedad de un objeto en Javascript. La típica:

  1. objeto.atributo = valor

y la no tan típica:

  1. var nombreDelAtributo="atributo";
  2. objeto[nombreDelAtributo] = valor;

Ahora solo falta saber otra cosa. Cualquier variable se puede acceder también como un atributo del objeto window, un ejemplo:

  1. var cadena = "Hola mundo!";
  2. alert(window.cadena); //mostrará un alert con "Hola mundo!"
  3. alert(window[‘cadena’]); //también mostrara un alert con "Hola mundo!"

Ahora veamos algunos ejemplos de usos de eval() y otras formas de avordar el mismo problema.

  1. /*
  2. *asignar un valor a un atributo cuyo nombre no conocemos a priori
  3. */
  4. eval(‘objecto.’ + nombreDelAtributo + ‘=valorDelAtributo’);
  5. //se podría cambiar por
  6. objeto[nombreDelAtributo] = valorDelAtributo;
  7.  
  8. /*
  9. * Llamar a un metodo de un objeto estando el nombre del metodo almacenado en una variable
  10. */
  11.  
  12. eval(‘objeto.’ + nombreDelMetodo + ‘(argumento)’);
  13. //podría ser
  14. objeto[nombreDelMetodo](argumento);
  15.  
  16. /*
  17. * Crear un objeto de una clase teniendo el nombre de la clase en una variable
  18. */
  19.  
  20. eval(‘var objeto = new ‘ + nombreDeLaClase + ‘()’);
  21. //sería
  22. var objeto = new window[nombreDeLaClase]();

En el último ejemplo podemos hacer esto por que una clase es también una variable del programa, y como tal se almacena como un atributo del objeto window.

Y vosotros, ¿usáis eval() en vuestro código? ¿conocíais estas soluciones?

HOWTO: Obtener el tipo MIME de un archivo mediante PHP

Domingo, Junio 15, 2008

Edito sábado, 09 de agosto de 2008: Corregido un error en el nombre del paquete de PEAR en Ubuntu. Gracias david.

Sigo peleándome con mi proyecto fin de carrera, y mi última batalla ha consistido en obtener el tipo MIME de un archivo mediante PHP. Tras un vistazo al manual de PHP me encontré con esta extensión de PHP que hace lo que necesito y mucho más.

Se puede instalar mediante PEAR, para ello seguimos el siguiente procedimiento.

  1. Instalamos PEAR, las librerías para desarrollo de PHP y de libmagic.
    1.  
    2. sudo aptitude install php-pear php5-dev libmagic-dev
    3.  
  2. Usamos el comando pecl para instalar la extensión
    1.  
    2. sudo pecl install fileinfo
    3.  
  3. Añadimos la extensión a nuestro php.ini, para ello accedemos creamos un nuevo archivo llamado extensiones.ini en la carpeta /etc/php5/conf.d y añadimos dentro la linea:

    extension=fileinfo.so
    
  4. Por último reiniciamos apache
    1.  
    2. sudo /etc/init.d/apache2 restart
    3.  

Ya tenemos la extensión instalada, ahora para obtener el tipo mime podemos usar un código parecido a este.

  1.  
  2. $finfo = new finfo(FILEINFO_MIME, "/usr/share/misc/magic");
  3. $filename = ‘/ruta/al/archivo.jpg’;
  4. $mime_type = $finfo->file($filename);
  5.  

Tras esto tendremos el tipo MIME almacenado en la variable mime_type. Para más ejemplos de uso de la extensión se puede acudir a la página del manual de PHP.

HOWTO: symfony framework en Ubuntu Hardy 8.04

Sábado, Mayo 31, 2008

Edito (15 de junio de 2008 – 11:52 ): He añadido un par de modificaciones que hay que hacer a la configuración de apache.
Edito (16 de junio de 2008 – 12:10): Otra corrección necesaria en la configuración de apache.

Symfony es un framework para desarrollar aplicaciones web basándonos en el patrón MVC. Me estoy peleando a fondo con él por que lo estoy usando para mi proyecto fin de carrera y me viene genial por que me evita pelearme con muchas cosas a la hora de desarrollar la parte de mi proyecto que es una aplicación web.

La instalación es bastante cómoda y se puede realizar a través de PEAR o mediante un paquete .deb. Yo he elegido la opción de PEAR por que me ha parecido más cómoda y así evito tener que añadir otro repositorio a Ubuntu. El proceso es muy simple:

  1. Instalamos Apache. Yo tengo la mala costumbre de usar para ello un método bastante “cutre” que consiste en instalar phpmyadmin, ya que así se resuelven todas las dependencias necesarias para Apache y PHP

    1.  
    2. sudo aptitude install phpmyadmin
    3.  
  2. Instalamos pear:

    1.  
    2. sudo aptitude install php-pear
    3.  
  3. Añadimos el canal de Symfony:

    1.  
    2. sudo pear channel-discover pear.symfony-project.com
    3.  
  4. Instalamos Symfony mediante PEAR:

    1.  
    2. sudo pear install symfony/symfony
    3.  

Por último solo nos resta configurar Apache. Para mi proyecto he configurado un host virtual con un log separado, así podré testear y depurar cómodamente. Configurarlo en Ubuntu es muy sencillo, solo es necesario añadir una entrada a /etc/hosts y crear el archivo de configuracion del host virtual. Veamos como hacerlo por pasos.

  1. Añadimos la entrada con el dominio que queramos a /etc/hosts. Yo he elegido dominio.com para el ejemplo, pero se puede elegir otro

    1.  
    2. echo "127.0.0.1 dominio.com" >> /etc/hosts
    3.  
  2. Ahora creamos una entrada en /etc/apache2/sites-available/dominio.com con el siguiente contenido

    1.  
    2. NameVirtualHost *
    3. <virtualHost *>
    4.         ServerName dominio.com
    5.         ServerAdmin webmaster@dominio.com
    6.  
    7.         DocumentRoot /var/www/src/web
    8.         DirectoryIndex index.php
    9.  
    10.         ## Cambiamos esta ruta por la que nos convenga
    11.         ErrorLog /ruta/al/fichero/de/log/archivo.log
    12.  
    13.         # Possible values include: debug, info, notice, warn, error, crit,
    14.         # alert, emerg.
    15.         ## Podemos cambiar también el nivel de log por el que más nos convenga
    16.         LogLevel warn
    17.  
    18.         CustomLog /ruta/al/fichero/de/log/archivo.log combined
    19.         ServerSignature On
    20.  
    21. #Configuracion de symfony
    22.  
    23.     Alias /sf /usr/share/php/data/symfony/web/sf
    24.  
    25.     <directory "/usr/share/php/data/symfony/web/sf">
    26.         AllowOverride All
    27.         Allow from All
    28.     </directory>
    29.  
    30.  
    31.     <directory "/var/www/src/web">
    32.         AllowOverride All
    33.         Allow from All
    34.     </directory>
    35.  
    36. </virtualHost>
    37.  
  3. Por último activamos el host virtual, mod_rewrite y reiniciamos apache

    1.  
    2. sudo a2ensite dominio.com
    3. sudo a2enmod rewrite
    4. sudo /etc/init.d/apache2/reload
    5.  

Solo falta editar el archivo /etc/php5/apache2/php.ini y cambiar la linea magic_quotes_gpc = On por magic_quotes_gpc = On

Algunas aclaraciones. En mi caso el código fuente de la aplicación va en una carpeta de mi directorio de usuario y la carpeta /var/www/src es un enlace simbólico a esa carpeta. Este directorio también queda a vuestra elección, pero hay que tener en cuenta que suele ser necesario hacer cambios en el directorio con el código, por lo que es conveniente tener acceso de escritura y también que hay que hacer los cambios pertinentes en el fichero del host virtual de Apache.

Para comenzar a desarrollar podemos acudir a la página de Symfony y seguir su increíble “tutorial” escrito en forma de libro o en librosweb si preferís el libro en español.

Los auténticos programadores…

Miércoles, Mayo 14, 2008

Hacía tiempo que no me reía tanto como me he leído leyendo Los programadores de verdad… en Mundogeek.

Pero el el broche de oro lo ha puesto el propio Zootropo al recordarme esta genial tira de xkcd.

Real programmers...

Una pequeña traducción para los que se pelean con el idioma de Shakespeare.

-¿nano? Los programadores de verdad usan emacs.
-Hey, los programadores de verdad usan VIM.
-Bueno, los programadores de verdad usan ed.
-Los programadores de verdad usan una aguja magnetizada y una mano firme.
-Perdonad, pero los auténticos programadores usan mariposas.

Abren sus manos y dejan que las delicadas alas aleteen al viento.

Esto causa distorsiones en la atmósfera formando zonas de alta presión que funcionan como lentes reflejando los rayos cósmicos hacia el disco duro y modificando el bit que interesaba al programador.

-Por supuesto, emacs tiene una combinación de teclas que hace precisamente esto: C-x M-c M-mariposa

Aunque aún más genial que la tira es el texto que aparece si mantienes el ratón sobre ella

Real programmers set the universal constants at the start such that the universe evolves to contain the disk with the data they want.

Lo que en español viene a ser algo así como:

Los programadores de verdad fijan la constante universal al principio para el el universo evolucione para contener el disco con los datos que ellos quieren.

mooSmartForms: Dando un toque de estilo a tus formularios

Sábado, Noviembre 17, 2007

¿Por qué otra librería que hace lo mismo?

Hace poco tuve que terminar de darle forma a un proyecto con Joomla! una de las cosas que más trabajo cuesta es darle estilo a un formulario usando CSS. Probé un par de soluciones como FancyForm y CRIR pero ninguna se adaptaba al código generado por Joomla, así que no me quedó más remedio que escribir mi propio script que hiciera lo propio.

Como funciona.

mooSmartForms está inspirado en otras librerías como CRIR y FancyForm, por lo tanto usa el mismo mecanismo. Mediante Javascript oculta los controles del formulario y añade un estilo para el control desactivado y otro para el control activado a la etiqueta asociada al control.

La librería permite aplicar una clase CSS a los elementos. Hace uso de mootools, de ahí el “moo” del nombre. Para que nuestro código sea “estilizable” tiene que tener las siguientes características.

  • Cada checkbox o radio input necesita tener un elemento label asociado a su id.

Listo :D no hay más requisitos. A continuación un ejemplo de como sería ese código “estilizable”.

  1. <label for="check">Checkbox
  2. <input id="check" type="checkbox" />
  3. </label><label for="radio1">Radio1</label>
  4. <input id="radio1" name="sample" type="radio" />
  5. <label for="radio2">Radio2</label>
  6. <input id="radio2" name="sample" type="radio" />

Para que el script haga su trabajo hay que insertarlo en la página y además necesitamos mootools.

  1. <script src="mootools.js" type="text/javascript"><!–mce:0–></script>
  2. <script src="moosmartforms.js" type="text/javascript"><!–mce:1–></script>

Un pequeño ejemplo del aspecto que podemos conseguir con la librería. Ejemplo de mooSmartForms

Aquí tenéis mooSmartForms para descargarlo y usarlo como queráis. Tiene una licencia MIT, así que podéis hacerle todas las “perrerías” que os apetezca. Si queréis personalizar el estilo solo tenéis que editar el fichero mooSmartForms.css

Soporte.

He probado mooSmartForms con los siguiente navegadores:

  • Internet Explorer 6 y 7
  • Firefox 2
  • Konqueror
  • Safari 3 ( gracias a Álvaro por el testeo )
  • Opera

Si conseguís que funcione en otro navegador agradecería que me lo hicierais saber :D . Aunque también se agradece un aviso con cualquier error que encontréis o con problemas que se me hayan pasado.

Para futuras versiones.

  • Estilos para el resto de elementos de los formularios.
  • Posibilidad para discriminar los elementos que queremos “estilizar”.
  • Capacidad para añadir efectos a las transicciones entre los estados de los elementos.
  • Posibilidad de elegir el nombre que queremos darle a las clases CSS de los elementos.

Para terminar.

Si encontráis algún error o algún problema podéis dejar un comentario en el post. Sin necesitáis añadir código al post, por favor, utilizad esta web.

Créditos.

Las imágenes que se usan para el estilo de ejemplo pertenecen al tema de iconos silk icons que tiene licencia Creative Commons.

Realizar Busquedas con Google Maps en tu web

Sábado, Octubre 20, 2007

Estos días me he tenido que pelear bastante en serio con Google Maps y Google Local Search. Necesitaba un mapa que permitiese buscar una dirección y que pudiera, una vez encontrada la dirección, guardarla en una base de datos.

Por suerte Google Maps permite hacer cosas así con poco código aunque de todas maneras me tocó pelearme durante un par de días con su API hasta que conseguí encontrar lo que quería. Casi todo lo necesario se encuentra en la documentación de su API, el único problema es que necesitas saber exactamente lo que buscas antes de poder encontrar algo. En este enlace está la ayuda de Local Search, que aunque no es demasiado extensa tiene algunos ejemplos interesantes.

Mis requsitos exactos eran los siguientes:

  • Un mapa con un cuadro de búsqueda
  • Un sistema para poder moverse por los resultados de la búsqueda de forma sencilla para el usuario

En este caso particular solo necesitaba las coordenadas del centro del mapa una vez que el usuario ha encontrado lo que buscaba. Este dato se copiará en un campo oculto de un formulario para poder guardarlo en una base de datos. En el ejemplo se mostrarán las coordenadas en un DIV junto al mapa.

Una vez que sabemos lo que necesitamos nos ponemos manos a la obra. Vamos a repasar las herramientas que vamos a usar:

  • Lo primero que necesitamos es una key para acceder al API. Para ello visitamos esta dirección. Lo único necesario para conseguirla es una cuenta en Google, sirve la que se usa para acceder a GMail.
  • Como vamos a hacer un uso intensivo de Javascript es una buena idea buscarse un ayudante. En mi caso he echado mano a la librería mootools 1.11 por que es con la que mejor me llevo, pero imagino que sirven otras librerías del mismo estilo como jQuery o prototype. El motivo para usar este tipo de librerías es que permiten moverse libremente por el árbol DOM del documento HTML y capturar eventos que ocurren en él de forma sencilla. Dos tareas que vamos a necesitar para nuestro ejemplo.
  • Por último no nos puede faltar nuestra navaja suiza para el desarrollo web: Firebug ya que nos permitirá depurar y testear nuestro Javascript de forma sencilla.

Aquí podéis encontrar el ejemplo terminado y aquí os lo podéis descargar. Tiene una licencia MIT, así que podéis hacer lo que queráis con él, aunque agradecería un aviso si lo usáis para cualquier cosa, simple curiosidad :)

Por último unas cuantas aclaraciones. He intentado comentar el código lo más claramente posible, si tenéis cualquier duda podéis preguntar en los comentarios e intentaré responder. Si tenéis que añadir el código al post, por favor, hacedlo aquí (aquí tenéis una ayuda por si no sabéis usarlo) y añadid un enlace en el post.

He comentado el codigo linea por linea para los que, como yo, no tengan ni idea de Javascript, mootools o Google Maps. Espero que a ellos les pueda servir como ejemplo de lo que se puede hacer con estas 3 tecnologías juntas.

Lista de provincias, poblaciones y códigos postales

Lunes, Octubre 8, 2007

Hace unos días necesité una lista los más extensa posible de provincias españolas, con sus poblaciones y códigos postales correspondientes. El caso es que después de buscar durante un buen rato encontré esto.

La lista está en tres formatos: XML, texto plano y MySQL. Al final yo no conseguí averiguar como subir la base de datos en MySQL a mi servidor… así que tuve que optar por escribir un script en php para extraer la información que necesitaba del archivo de texto. Al final, como soy un poco descuidado lo perdí. Pero para los que necesiten escribir uno nuevo un par de pistas.

Hace falta usar las funciones: fopen, strtok y fgets.

Joomla 1.5

Viernes, Septiembre 28, 2007

Por motivos de trabajo llevo una temporada trabajando y destripando Joomla 1.5. Es el principal culpable de que últimamente postee con cuentagotas.

Este CMS es uno de los más usados del mercado y en esta nueva versión han mejorado bastante. Su licencia es GPL 2 y está programado en PHP.

Ya había usado las versiones 1.0.X con anterioridad y me sorprendían enormemente su facilidad de uso y la cantidad de extensiones, plugins y módulos que se podían encontrar para él. Aunque administrar una página web no es una tarea trivial Joomla facilita enormemente la tarea. Dispone de herramientas para administrar usuarios, artículos (en forma de weblog), contactos, enlaces, etc. y además su API para la creación de plugins y componentes es bastante extensa y soporta el patrón MVC.

Hasta ahora nunca había tenido que programar un componente para Joomla, sin embargo la tarea no es imposible. En la página web de Joomla podemos encontrar una ayuda bastante buena para esta tarea: un API bastante completo (aunque algo caótico) y algunos ejemplos de código además de un foro con bastante actividad.

El principal problema es que la documentación de la versión 1.5 aún no está completa y claro, tarde o temprano tienes que acabar buceando en el código de los componentes que forma el núcleo de Joomla a los cuales, dicho sea de paso, les falta un poquito de documentación. Esa es la única pega que le veo, aunque quizá sea por que estoy muy acostumbrado a Java y la documentación que incluye de serie me resultaba muy cómoda.

Por cierto en Leandono’s Blog se puede encontrar la primera parte de un tutorial bastante prometedor para la creación de plantillas de Joomla.

Por último recomendaros algo de bibliografía sobre el tema: Learning Joomla 1.5 Extension Development de Packt publishing esta muy bien y además de incluir muchos ejemplos de código avanza paso a paso en el desarrollo de una web completa con Joomla y explica muchas cosas acerca del API de Joomla que no son fáciles de averiguar.

Si el trabajo me deja un poco de tiempo intentaré postear algún ejemplo “tonto” de un componente muy básico.

Tutorial: Usar Firefox para desarrollo web I

Martes, Agosto 14, 2007

Ya dije en la entrada “Extensiones útiles para Firefox ( mis favoritas )” que algunas de las extensiones que uso son bastante específicas para el diseño web. Intentaré hacer una pequeña serie de posts hablando de ellas y dando algunos consejos para su uso.

Aunque hay bastantes extensiones que pueden resultar muy útiles para el diseño y desarrollo de páginas web yo uso principalmente dos, que son las siguientes ( en orden de importancia según el uso que les doy ):

  1. Firebug
  2. Webdeveloper Toolbar

Sin lugar a dudas para mí la estrella es Firebug. En este primer post voy a centrarme en ella y poco a poco veremos como usarla para que nos asista en el desarrollo.

Firebug: Instalación

Para instalar la extensión nos vamos a su web y pulsamos en el botón grande y naranja que dice “INSTALL FIREBUG 1.0 FOR FIREFOX”. Esta es la parte fácil del tutorial :D

Lo más básico.

Mediante firebug podemos acceder al árbol DOM de la web y editarla “on the fly”, además es perfecto para darle esos últimos retoques a las hojas de estilos que se nos resisten. También podemos usarlo para optimizar el tiempo de carga de la página, averiguar si hay algún elemento que no carga bien, depurar nuestro javascript, y muchas otras cosas que yo todavía no he descubierto. Para nuestro ejemplo usaremos un pequeño fichero HTML que contiene 2 div y una hoja de estilos bastante rudimentaria.

Como podéis ver es algo bastante rudimentario lo primero que vamos a hacer es inspeccionarlo y ver lo que lleva por dentro. Para ello abrimos la web de ejemplo y abrimos firebug con ella abierta. Para abrir podemos abrir Firebug por las siguientes vías.

  • Herramientas > Firebug > Open Firebug
  • Pulsando en el botón correspondiente en la barra de estado del navegador

(más…)

No uses GOTO en tus programas

Viernes, Julio 20, 2007

Muy buena la tira de xkcd de hoy.

No uses GOTO para programar

Más tiras aquí.
Ya sabéis… usar GOTO no es bueno… xD

TinyMCE: Editor WYSIWYG HTML integrable en páginas web

Jueves, Julio 19, 2007

Hoy me ha surgido un problema bastante tonto con una página web que estaba terminando de diseñar para un cliente. Uno de los requisitos es que el cliente necesitaba un cuadro de texto en el que insertar una descripción en texto con formato. Hasta ahí todo bien, hasta que me he dado cuenta de que el cliente no sabe ni tiene por qué saber formatear un texto en HTML. Buscando un poco en Google he encontrado TinyMCE ( DEMO ).

TinyMCE es un editor HTML WYSIGYG ( What You See Is What You Get ) programado en Javascript que se integra en páginas web de forma rápida y sencilla. Convierte los <textarea> en editores completamente funcionales y muy configurables. Una lista de algunas de sus características:

  • Soporte para varios navegadores.
  • Extensible mediante temas y plugins.
  • Soporte para diferentes lenguajes.

Al final parece que el cliente no se va a tener que pelear con HTML… menos mal.

Por cierto, ¿ he dicho ya que tiene licencia LGPL ?

RIMUJA GUI para GNU/Linux 0.1 ( o incluso 0.01 alpha o menos )

Lunes, Junio 18, 2007

Como lo primetido es deuda, aquí dejo un pequeño GUI que he hecho en kommander para conectar a la WIFI de la Universidad de Jaén ( RIMUJA ) desde GNU/Linux. Para usarlo necesitáis instalar kommander y lanzarlo con permisos de superusuario.

Me consta que funciona relativamente bien en Gentoo, pero no lo he probado en ninguna otra distro. Para usarlo hay que instalar Kommander y luego ejecutarlo como superusuario. Por ejemplo:

  1. kdesu kmdr-executor /ruta/a/rimuja.kmdr

Si usais Gnome puede ser algo como

  1. gksudo kmdr-executor /ruta/a/rimuja.kmdr

Aquí va el enlace de descarga.

Aquí os dejo una captura del programita. Pinchad en ella para verla en flickr. Si colocáis el ratón encima de cada uno de los elementos podréis ver para que sirve cada uno.


GUI para RIMUJA en GNU/Linux 0.1, originally uploaded by Nicolas Flamel.

El script tiene licencia GPL por lo tanto podéis cambiarlo, modificarlo y hacerle todas las perrerías que queráis siempre que os ajustéis a los términos de la licencia. Si encontráis algún fallo hacédmelo saber y lo corregiré en el menor tiempo posible.

Evidentemente el script está muy “verde” no funciona del todo bien y hay muchas cosas que me gustaría mejorar. Para la próxima versión espero poder arreglar las siguientes cosas.

  • Permitir almacenar el nombre de usuario y la contraseña en un archivo o preferentemente mediante kdewallet
  • Detección automática de las interfaces inalámbricas disponibles
  • Detección del nivel de la señal
  • Evitar de alguna forma tener que ejecutarlo como super usuario para que funcione
  • Evitar la necesidad de un fichero de configuración externo.
  • Detección de la instalación de wpa_supplicant
  • Instalación de wpa_supplicant por el usuario en caso de que no esté instalado.

Es una buena “wishlist” pero no creo que la pueda cumplir, algunas de las cosas sé como puedo hacerlas y otras las veo un poco más difíciles. Por supuesto se aceptan sugerencias, aunque lo que mejor me vendría es una buena documentación en Kommander, pero parece que los desarrolladores están en ello.

PS: Mis disculpas a los lectores asíduos por la falta de posts, pero los exámenes están aquí… y me comen todo el tiempo. Lo siento, prometo recuperar el ritmo cuando acabe con ellos ( o ellos acaben conmigo… ).

Edito 19-06-07 19:30: He corregido el enlace de descarga, por alguna razón Wordpress modificaba la extensión del archivo al subirlo.

Actualizando la actualización

Martes, Mayo 29, 2007

Ya que por fin parece que wordpress 2.2 ha querido funcionar he tenido que aplicar un par de parches de seguridad. No vaya a ser que algún super juaker esté disgustado con el blog y me fastidie el invento. El parche de seguridad lo he encontrado en este post de carrero.es. Lo único que hay que hacer es descargar el archivo, descomprimirlo y subirlo al ftp del sitio.

Y ahora una cuestioncilla… ¿ se podría hacer esto si wordpress no fuera soft libre ? ;)

Ejemplo de jQuery ( ahora jugando con los efectos )

Jueves, Mayo 17, 2007

Llevo unos días jugando con jQuery. Ya he dicho en algún post anterior lo mucho que me ha sorprendido la facilidad de uso y la potencia de esta librería. Por ahora solo he podido jugar un poco con los selectores y los efectos, aún no he tenido oportunidad de usar las herramientas de las que dispone, tanto para facilitar el uso de AJAX como para muchas otras cosas. De todas formas aquí va un ejemplo, un poco tonto, eso sí… de lo que se puede hacer con jQuery de forma muy sencilla.

Ejemplo de jQuery