Monthly Archives: agosto 2010

Linux y Yo. Las cosas claras

Allá por enero, debido a que la instalación de Ubuntu que había realizado sobre mi notebook falló, decidí darle una oportunidad a Windows 7. La verdad es que la experiencia me gustó mucho, porque finalmente Microsoft logró un sistema operativo decente que no se cuelga y que pone todo fácil y a la mano. Para un usuario promedio de escritorio, el sistema operativo simplemente resulta fantástico.

Pero yo no soy un usuario promedio de escritorio, sino que soy desarrollador web y estudiante de Ingeniería en Sistemas. Por lo tanto, si bien me gustaron todas esas simplezas que aporta el nuevo Windows, me interesa ver el sistema operativo un poco más desnudo para poder toquetear un poco más. Y por si fuera poco, como desarrollo principalmente utilizando plataformas libres y open source, que mejor sistema operativo para hacer esto que uno libre. Así que hace un par de semanas volví a Linux, pero esta vez a mi viejo amigo, Archlinux.

Los resultados son los siguientes: Gnome proporciona una interfaz muy intuitiva también, aunque extraño la de Windows 7. Por el otro lado, el poder configurar todos y cada uno de los detalles del funcionamiento de mi computadora es algo invaluable para mí (más propio de Archlinux y menos de Ubuntu).  Y si a todo esto le sumamos que no tengo que andar lidiando con archivos de configuración “awindozados” que indican todos las rutas con “C:\…” y que andan cuando quieren, se facilita muchisimo la configuración de los demonios (en windows eran servicios). En fin, es mucho más simple para dejar andando una plataforma de programación que requiera de servicios tales como bases de datos, servidores http, etc.

Algunos puntos importantes a destacar son que la instalación de Arch levanta menos temperatura, la batería dura un 5-10 % más, la instalación full con todas mis cosas no pasa de los 6gb (en windows ocupa 20), y el consumo de ram normal se encuentra entre los 300 y 400mb (En windows iba desde los 800mb a los 1200mb). Esto no es ni positivo ni negativo, ya que a mi pc le sobran recursos y si los disponemos pues están para usarlos. Lo dejo como nota adicional para quien tenga una pc más modesta. Además vale aclarar que no he instalado efectos visuales ni nada raro, sino que dejé el Gnome como viene, pero activé el composite interno.

Conclusión

Si nos sacamos la camiseta del software libre y miramos todo esto de manera objetiva podemos hacer una división sobre cuando convendría utilizar un sistema operativo u otro (queda claro que ambos se pueden utilizar para todo, excepto jugar, y que cada uno puede terminar eligiendo el que más le guste). Si sos un usuario de escritorio, al que le interesa chatear, jugar, escuchar música y realizar todo ese tipo de tareas simples, pues yo recomendaría instalar Windows 7 con algún buen antivirus que se mantenga actualizado fácilmente y realizar un mantenimiento periódico (una pequeña limpieza semanal y una grande mensual). Si sos developer de alguna plataforma propietaria, como Flash con ActionScript o Adobe Coldfusion, también optaría por un Windows. Por el contrario, si sos developer especializado en tecnologías libres, o administras bases de datos o algún tipo de tarea que requiera de mayor configuración interna de la máquina, a Linux sin pensarlo.

Y si caés en esta última categoría, podemos dividirla en 2, usuarios simples o complejos.

Si sos un usuario simple, es decir, un usuario sencillo que necesita de algunas herramientas y quiere obviar configuraciones complicadas, pues Ubuntu está haciendo muy buenas versiones y recomendaría una de esas (a mi me falló porque yo estaba probando una beta que luego actualicé a final).  Si por el otro lado te gusta tunear tu pc a fondo y dejarla como a vos te gusta en todo sentido, optaría por alguna distro como Archlinux, Debian o Gentoo tal vez.

Por último, si llegaste hasta acá me gustaría invitarte a leer este artículo publicado en linuxadictos sobre la libertad en el software.

Assembla y PBworks – Recursos gratuitos y de calidad para proyectos de desarrollo en equipo.

Cuando nos embarcamos en un proyecto de código abierto, existen muchas empresas que brindan soluciones de manera gratuita (como Google Code), pero cuando deseamos desarrollar algún pequeño proyecto privado la calidad de las soluciones sin costo disminuye considerablemente.

Después de una búsqueda sobre recursos útiles para desarrollo de proyectos privados me encontré con dos soluciones que realmente me parecieron interesantes y muy cómodas. Hablo de un servicio para creación de repositorios de control de versiones y un servicio de  wikis muy sencillas de editar y muy poderosas.

Assembla.com

Este sitio nos brinda repositorios gratuitos de SVN y GIT para que utilicemos en nuestros proyectos. La capacidad de los mismos en su versión no paga es de 2gb de espacio en disco, proyectos y usuarios ilimitados. Es una excelentisima opción de calidad para ser un servicio no pago. Obviamente existen restricciones, como la imposibilidad de utilizar un sistema de tickets y algunas otras herramientas, pero podemos suplir dichas falencias gracias a otros servicios.

URL: http://www.assembla.com

PBworks


Este servicio nos provee de Wikis para nuestros proyectos. Las wikis gratuitas tienen licencia de uso no comercial y cuentan con algunas restricciones de personalización y de exportación de contenidos, pero si lo que buscamos es un conjunto de herramientas para resolver problemas de índole privada esto no debería ser impedimento de nada. Además nuestra wiki se encuentra alojada en los servidores de PBWorks, pudiendo ser esta accedida de forma pública o privada desde cualquier lugar.

La interfaz de edición de las páginas de la wiki es excelente. Brinda un editor de textos WYSIWYG con la posibilidad de usar atajos del teclado para casi todo. Esto es un punto muy a favor, sobre todo si hay que introducir a personas no habituadas a la edición de wikis.

Las wikis gratuitas soportan múltiples usuarios y diferentes permisos para cada uno de ellos. Lo único que necesita un usuario para utilizar una wiki es tener una cuenta en el sitio.

URL: http://pbworks.com

¿Por qué utilizar estándares en el desarrollo de sitios y aplicaciones web?

A pesar de que los años pasan y la tecnología avanza a pasos agigantados, todavía se ven muchos sitios web y aplicaciones que desarrollan sus interfaces para que “se vean bonitas” en vez de pensar en cosas como la usabilidad y la accesibilidad.

Un desarrollo de una aplicación no solo debe hacerse de forma que cumpla con los requisitos solicitados, sino que además debe brindar una experiencia agradable al usuario. Una aplicación puede triunfar o fracasar totalmente gracias a esto.

Para el caso particular de las aplicaciones con interfaces web, podemos dividirlas en dos partes muy marcadas: el lado del servidor, donde se realiza la programación dura (en lenguajes como PHP, Java, Python, etc) y el lado del cliente, en donde se utilizan (X)HTML, CSS Javascript para brindar los contenidos a los usuarios. Este último lado es el que se interpreta en los navegadores web y se muestra a los usuarios. También es este último lado el que parsean los motores de búsqueda para indexar nuevos contenidos y mostrarlos en los resultados de las búsquedas. Aquí es donde entran en juego los estándares web de la W3C.

Podemos desarrollar páginas web con tablas y se van a ver realmente bien, o podemos llenar de código sucio una página que los visitantes en su mayoría no se van a dar cuenta. Pero no solo debemos desarrollar para obtener algo bonito, sino además algo funcional, accesible, fácil de mantener, rápido de cargar y profesional.

Estructura

Los estándares web nos permiten crear documentos con una estructura válida, coherente y significativa. No es lo mismo crear un texto en negrita y grande, que un encabezado h1, aunque sean iguales visualmente. Un ser humano puede interpretarlos de la misma manera, pero no así los motores de búsqueda o los lectores de pantalla que utilizan los no videntes. Además, al estructurar los documentos correctamente, estamos creando un modelado de objetos de documento (DOM) correcto, que luego nos permitirá mejorar la presentación mediante hojas de estilo y el comportamiento con Javascript.

Crear buenas estructuras genera un marcado mucho más limpio que luego facilita la implementación de lenguajes de servidor, generando un código final mucho más prolijo y liviano del que podría generarse con un marcado sucio (por ejemplo, el uso de tablas para crear layouts).

Compatiblidad

Los navegadores web son creados en base a los estándares web. Estos le brindan al navegador un conjunto de etiquetas conocidas y la forma de que estas son utilizadas. Si utilizamos estándares logramos que los navegadores digieran correctamente los documentos generados y muestren lo que realmente queremos que muestren. La falta de uso de estándares hace que los navegadores interpreten los documentos web de modo “no estricto“, generando en la mayoría de los casos comportamientos indeseados.

Además, los motores de búsqueda se encuentran preparados para digerir correctamente código bien marcado, por lo que un buen uso de estándares permite una mejor recepción del contenido por parte de los buscadores y esto genera una mejor interpretación. En definitiva, esto hace que Google o Yahoo interpreten mejor nuestro sitio y luego obtendremos mejor posicionamiento en las búsquedas y más visitas.

Documentos más livianos

El buen uso de estándares fomenta en mayor medida la reutilización y el código limpio y simple. Esto permite obtener documentos más livianos, lo cual singifica que consumirán menos ancho de banda y transferencia desde el servidor. Si pagamos algún servicio de alojamiento, estos generalmente nos limitan estos recursos, por lo cual un buen uso de estándares sería muy beneficioso para nosotros.

Un documento más liviano, es más facil de descargar y se carga más rápido en los navegadores web. Este es un punto muy importante a favor del uso de estándares para el desarrollo y diseño web.

Accesibilidad

La web hoy en día es un medio de comunicación de libre acceso y todos deberíamos ser capaces de obtener la información que brinda. Si utilizamos estándares, estamos permitiendo que personas con alguna incapacidad puedan recibir el contenido que brindamos de manera aceptable. Esto significa que el software para dichas personas puede interpretar correctamente los documentos web que desarrollamos.

En algunos paises, la falta de accesibilidad en un sitio web es considerada como un caso de discriminación y es totalmente punible.

Facilidad de mantenimiento

Hemos dicho que al usar estándares se crea un código más limpio. Esto permite una mayor facilidad para localizar problemas y repararlos, así como extender nuestras aplicaciones con pequeñas modificaciones en puntos localizados. Un buen uso de estándares conjuntamente con buenas prácticas puede permitirnos mantener grandes aplicaciones con unos pocos retoques.

Visión de futuro

Los estándares nos aseguran que nuestros desarrollos actuales seguirán funcionando correctamente en un futuro. Esto se dá gracias a que los navegadores se verán obligados en algún punto a interpretar correctamente las marcas generadas por los estándares y van a tener que responder correctamente ante estas.

Profesionalismo

Personalmente, lo primero que hago para convencerme si un desarrollo es bueno o malo es dar click derecho de mouse en el navegador y mirar el código fuente de la página que estoy visualizando. De esta forma puedo reconocer fácilmente un buen o un mal diseño.

Cuando desarrollamos para la web, tenemos que hacerlo teniendo en cuenta nuestro prestigio y calidad como profesionales. Si hacemos que las cosas simplemente se vean bonitas no vamos a llegar muy lejos. El uso de estándares nos da prestigio porque al utilizarlos estamos generando código con una máxima calidad y de nivel internacional.

Un desarrollador o diseñador web que utiliza estándares da la impresión de que está al tanto de las últimas tendencias y conoce sobre las últimas tecnologías en uso. Es importante dar esta imágen para conseguir mejores trabajos.

Además, al usar estándares web combinados con buenas prácticas de usabilidad y accesibilidad podemos hacer quedar realmente bien a nuestros clientes, permitiendoles brindar aplicaciones sencillas de usar y poderosas. Como dije anteriormente: una aplicación puede triunfar o fracasar por sus interfaces (en este caso son via web).

Firefox potenciado para desarrollo web

Como todos sabemos, Mozilla Firefox incorpora la excelente característica de poder ser extendido mediante complementos. Esto hace que el navegador pueda ser personalizado y adaptado a las necesidades de diferentes usuarios. En este caso quiero comentar algunos complementos que hacen que el zorrito de fuego sea una excelente herramienta para desarrolladores web.

1 – Firebug

Herramienta imprescindible para cualquier desarrollador web que esté trabajando del lado del cliente. Esta fantástica herramienta nos permite modificar el código fuente de la página renderizada, modificando estructura, estilos y comportamientos de la misma (obviamente estas modificaciones no son permanentes). Además, nos permite seleccionar los distintos elementos del DOM y de esta forma ver por qué reglas de CSS se encuentran afectados.

Una excelente funcionalidad que también nos provee Firebug es la posibilidad de medir el tiempo de carga de una página web y poder analizar los tiempos de carga de los diferentes elementos, como el código html, las hojas de estilo, las imágenes y los scripts. Una utilidad realmente necesaria si buscamos optimizar nuestro sitio.

https://addons.mozilla.org/es-ES/firefox/addon/1843/

2 – FirePHP

Un complemento que trabaja conjuntamente con Firebug (se necesita de este instalado) que nos permite hacer debugging de aplicaciones web construidas con PHP como lenguaje de servidor. Simplemente añadiendo una clase a nuestra programación y haciendo una llamada a un método podemos utilizar esta completa herramienta para analizar valores de variables y todas aquellas cosas que hagan a la depuración de código. Este complemento resulta muy útil cuando no se cuenta con algún sistema de depuración como el provisto por Netbeans u otros.

https://addons.mozilla.org/es-ES/firefox/addon/6149/

3 – Web Developer

Imprescindible herramienta que nos permite modificar y analizar nuestro sitio. Esta herramienta permite hacer validaciones de las páginas contra los estándares de la W3C, ver el sitio en diferentes resoluciones, ver el sitio con o sin CSS o javascript, etc. La utilidad nos permite analizar comportamientos bajo diferentes situaciones. Herramienta que no puede faltar.

https://addons.mozilla.org/es-ES/firefox/addon/60/

4 – Measure It

Una simple utilidad que nos permite medir el tamaño en píxeles de cualquier elemento de una página web. Es una simple herramienta que nos genera una capa sobre el sitio que estamos visitando y en base a esta nos permite establecer un recuadro sobre un elemento que posteriormente nos indicará las dimensiones de este. No es escencial pero si muy cómodo.

https://addons.mozilla.org/es-ES/firefox/addon/539/

5 – Google Analytics?

Si trabajamos con el popular sistema de métricas web de Google, esta herramienta puede sernos muy útil. Simplemente nos indica con un ícono en la barra de estado si la página que estamos visitando tiene el Google Analytics Tracking Code instalado. Ideal para realizar una correcta implementación de las estadísticas.

https://addons.mozilla.org/es-ES/firefox/addon/5631/

6 – No Do Follow

Esta pequeña utilidad nos permite conocer si los enlaces de una página contienen o no el atributo nofollow. Una buena idea si estamos linkeando a sitios cuyo contenido no podemos controlar o no podemos hacernos responsables. Además es útil si deseamos evitar la fuga de pagerank.

https://addons.mozilla.org/es-ES/firefox/addon/5687/

Conclusión

Con estas herramientas podemos hacer que nuestro navegador favorito se convierta en un verdadero centro de depuración, optimización y análisis de nuestro sitio o aplicación web. Estas son las cosas que hacen de Firefox el monstruo que es hoy en día.

Parseando feeds RSS con PHP y Simplepie

SimplepiePor cuestiones de trabajo me tuve que embarcar en la misión de obtener información de cientos de feeds RSS en un proyecto desarrollado con PHP (más precisamente con el framework CakePHP). Evidentemente parsear todo un feed RSS o atom no es tarea facil y requiere de varias horas/días de programación con expresiones regulares y algunas que otras mañas para solucionarlo.

Afortunadamente existe Simplepie, un elegante framework orientado a objetos que nos ayuda a obtener información de los feeds RSS y atom que necesitemos, con una api muy sencilla de utilizar y resultados asombrosos. En el sitio web oficial pueden acceder a la wiki que contiene muchisima documentación.

El único problema que me surgió después de esto es que desgraciadamente algunos feeds están mal hechos y el framework no parsea bien los resultados, pero con cualquier feed de plataformas populares no deberían existir problemas.

Una excelente opción para ahorrar mucho tiempo y obtener soluciones elegantes.