viernes, 23 de diciembre de 2011

Feliz navidad y próspero 2012

Ha pasado un año completo para El blog de pico.dev y en febrero del 2012 este blog cumplirá el segundo aniversario. A punto de finalizar el 2011 llega el momento de hacer balance de lo que ha dado de si este año. En este 2011 he publicado 43 entradas, unas pocas menos que una media de una a la semana que me he fijado como objetivo desde hace un tiempo. Aunque aún el año no ha acabado este blog ha tenido cerca de 34.271 visitas, 25.251 visitantes y 55.280 páginas vistas, dicho así parecen muchas pero son «solo» cerca de unas 90-150 visitas diarias. Aún así son considerablemente más que el año 2010 (12.970 visitas, 9.758 visitantes y 20.946 páginas vistas) lo que es casi triplicar el tráfico del año anterior, el hecho de ir acumulando contenido en el blog se nota a medida que pasa el tiempo aunque muy lentamente. Seguro que otros blogs que publican cientos de entradas al cabo del año y tienen a varios usuarios publicando en él tienen bastantes más visitas, aunque mi objetivo no es publicar un gran número de entradas del estilo «Como instalar/actualizar el programa X por cada versión menor (X.X.1) en Ubuntu (u otra distribución)» o «Publicada la versión menor X.X.1 del programa X» que creo que aportan más bien poco sino escribir entradas que compartan alguna información más útil.

En cuanto a la temática de las entradas he escrito más sobre programación que lo que hice en el 2010 y eso creo que va a seguir siendo así aunque no dejaré de escribir de vez en cuando alguna más orientada a (Arch) Linux y software libre.

Si habéis llegado o suscrito recientemente a mi blog (y si aún no lo habéis hecho estáis invitados) os pongo aquí la hemeroteca de las entradas que he escrito durante este año:

Programación:
Unir Apache HTTPD y Tomcat mediante un reverse proxy
Enviar correos electrónicos mediante Java Mail
Implementación de un Comparator genérico en Java con ayuda de Groovy
Servidor web ligero Cherokee, instalación e integración con PHP en Arch Linux
Elegir herramientas para un proyecto Java
Instalar Symfony y Cherokee en Arch Linux
Hola mundo con Symfony 2 y Cherokee
Internacionalización a lenguajes con diferentes formas plurales en Java
Seleccionar el lenguaje (locale) según el dominio en Apache Tapestry
Comparar cadenas en Java ignorando acentos
Integración continua con Jenkins
Configuración de entorno en Java con ayuda de Groovy
Ejemplo sencillo con JavaCC de un analizador léxico y sintáctico
Formatear precios con símbolo de moneda en Java
Internacionalización (i18n) de campos con Hibernate
Convenciones para los literales en archivos .properties en Java

Tapestry:
Componente cache para Tapestry 5
Componente lista para Tapestry 5 (paginable y anidable)
Usar Apache Tapestry 5 con Groovy (u otros lenguajes de la JVM)
Motivos para elegir el framework Apache Tapestry
Peticiones Ajax en Tapestry
Peticiones Ajax en Tapestry (II)
Componente AjaxSpinner para Tapestry 5

(Arch) Linux:
Instalar Plymouth como arranque gráfico en Arch Linux
Poner en color pacman y yaourt
Obtener información del sistema en Linux (con inxi, lspci y hwinfo)
Añadir marcas de agua a imágenes con ImageMagick
Motivos para elegir la distribución Arch Linux
Personalizar GNOME (iconos, temas, extensiones, opciones)
Arte usando texto ASCII con FIGlet

Vídeo promocional sobre Arch Linux
El impuesto Windows
Como sería si Microsoft, Apple y Linux...

Otros:
Un día en la Euskal Encounter 19

Dicho lo cual solo me queda daros las gracias por ser parte de las visitas de este blog y desearos...


Referencia:
http://laventanamuerta.net/haz-llegar-la-navidad-a-tu-escritorio-con-los-fondos-navidenos-de-tux/
http://www.klowner.com/wallpaper/
http://www.youtube.com/watch?v=WdyplU0RVk8

sábado, 17 de diciembre de 2011

Arte usando texto ASCII con FIGlet

Seguramente hayas visto en algunos sitios una figura o texto formado por caracteres ASCII, probablemente no hayan sido creadas a mano con la inspiración de un artista, hay herramientas incluso usables desde la web que permiten generarlas. FIGlet es una de ellas que permite crear una figura ASCII a partir de un texto. Su instalción en Arch Linux es tan simple como instalar el paquete figlet con:

$ yaourt -S figlet

En la propia página de figlet podemos encontrar enlaces a varios conjuntos de fuentes a aplicar al texto que queramos generar. También podemos ver algunos ejemplos.

FIGlet tiene más opciones pero la más habitual tal vez sea indicar la fuente a usar y el mensaje del que queremos su representación en arte ASCII.

$ figlet -w 200 "El blog de pico.dev"
 _____ _   _     _                   _              _               _            
| ____| | | |__ | | ___   __ _    __| | ___   _ __ (_) ___ ___   __| | _____   __
|  _| | | | '_ \| |/ _ \ / _` |  / _` |/ _ \ | '_ \| |/ __/ _ \ / _` |/ _ \ \ / /
| |___| | | |_) | | (_) | (_| | | (_| |  __/ | |_) | | (_| (_) | (_| |  __/\ V / 
|_____|_| |_.__/|_|\___/ \__, |  \__,_|\___| | .__/|_|\___\___(_)__,_|\___| \_/  
                         |___/               |_| 

$ figlet -f letters.flf -w 200 "El blog de pico.dev"

EEEEEEE lll  bb      lll                      dd                 iii                        dd                
EE      lll  bb      lll  oooo   gggggg       dd   eee   pp pp         cccc  oooo           dd   eee  vv   vv 
EEEEE   lll  bbbbbb  lll oo  oo gg   gg   dddddd ee   e  ppp  pp iii cc     oo  oo      dddddd ee   e  vv vv  
EE      lll  bb   bb lll oo  oo ggggggg  dd   dd eeeee   pppppp  iii cc     oo  oo ... dd   dd eeeee    vvv   
EEEEEEE lll  bbbbbb  lll  oooo       gg   dddddd  eeeee  pp      iii  ccccc  oooo  ...  dddddd  eeeee    v    
                                 ggggg                   pp

Los textos ASCII generados por FIGlet nos pueden ser de utilidad en los sitios en los que solo podamos usar caracteres de texto como en correos electrónicos que no lleven formato html o en los archivos de log de una aplicación.

Una vez que tenemos nuestro arte ASCII podemos darle color si genera su salida en la terminal y pretendemos usarlo en una aplicación Java.

Referencia:
http://www.figlet.org/
http://patorjk.com/software/taag/
http://www.network-science.de/ascii/

viernes, 9 de diciembre de 2011

Como sería si Microsoft, Apple y Linux...

¿Como sería si Microsoft, Apple y Linux se decicasen a la industria automovilística y vendiesen motores y coches conociendo sus políticas y formas de comercializar su software y productos?

set small_troll_mode=on

Empecemos por Microsoft

Microsoft
Algunos modelos de sus motores son conocidos y recordados por provocar fallos en el coche que son instalados [1], algunos no más molestos como que las ruedas se desinchan de vez en cuando o el aire acondicionado no funciona a veces si a la vez tienes puesta la radio y algunos graves como que el motor se apaga de repente o deja de frenar cuando lo necesitas que provocan pequeños accidentes y pequeñas perdidas de memoria en el conductor a los que se les queda la cara de un tono azulado después de los hechos por el susto.

Aproximádamente cada segundo martes del mes [2] tienes que llevar el coche al taller para hacer una revisión de algunas partes del coche por fallos de seguridad detectados en diversas partes del mismo, no sabes muy bien que van a revisar pero oye si lo dice Microsoft por algo será. Otros problemas de seguridad conocidos y explotados por los ladrones para acceder al interior no son resueltos pasados meses e incluso años siempre a criterio de Microsoft, ellos saben lo que es importante y bueno para sus usuarios.

Los coches vienen con un montón de extras inútiles [3] que no quieres como una alerón hortera, una luces de neon en los bajos o un sistema de alarma que deja de funcionar a los 30 días si no pagas la licencia. Todo ello hace que el coche nuevo y recien salido de fábrica circule a una velocidad máxima de 80 km/h cuando debería alcanzar los 120 km/h y a veces sin ningún motivo aparente se reduzca a 50 km/h pasados unos meses.

No puedes abrir el capó del coche para para ver como es el motor, y por tanto no puedes cambiarle de aceite, la batería o algunas piezas para conseguir una mayor potencia, fiabilidad, seguridad o menor consumo de combustible.

Las administraciones públicas que tienen enormes flotas de automóviles comprados a Microsoft [4] se gastan cada año millones de euros en renovar licencias para usarlos, ya que el coche en realidad no lo compran solo les da un licencia de uso. Pueden comprar coches con motor Linux que algunos no tienen costes de licencias pero los funcionarios están acostumbrados a los coches con motor Windows, es el que usan como particulares.

Por lo visto debe de haber una forma de duplicar un motor rápidamente, las personas lo utilizan para instalarle a sus coches la última versión del motor Windows que siempre dicen trae nuevas prestaciones. Saben que esto no es legal por la licencia de uso del motor y les llaman piratas, pero a la vez Microsoft lo consiente, sabe que cuando vayan a sus trabajos sus empresas tendrán que pagar ya que no estarán acostumbrados a ningún otro tipo de motor. Sino puede obligarles a comprar la licencia como particulares al menos los convierte en adictos a sus motores, piensan que es mejor que usen uno de ellos pirateado que uno de la competencia [5], y así están los funcionarios de muchas las administraciones públicas.

En alguna ocasión el navegador GPS de Microsoft venía ya instalado en el coche junto con el motor. Sin embargo, la Unión Europera a partir de una denuncia del fabricante de navegadores Opera [6] dictaminó que esto era un abuso de posición dominante ya que impedía al resto de fabricantes de GPS colocar sus navegadores y dificultaba la libre competencia. Microsoft argumentaba que el navegador GPS era parte inseparable de su motor y que sin él en no funcionaba. Finalmente, Microsoft se vió obligada a darle al usuario la posibilidad de seleccionar su navegador GPS en una Ballot Screen [7], ya estaba escarmentada de anteriores multas por valor de 500 millones de euros por anteriores litigios [8].

Pasados 5 años, con suerte, tienes que comprar otro coche porque el que que tienes ya no puede cargar con los trastos que llevas en él, no sabes por qué ya que los utilizas para hacer lo mismo que hace 5 años solo son un poco más modernos, te han comentado que puede ser debido a la obsolescencia programada. Tal vez solo quieres la carrocería que ya tienes el motor de tu anterior coche que es antiguo pero que todavía puede funcionar en el nuevo o tal vez te plantes instalar un motor basado en Linux ya que conoces alguna distribución que te lo dá sin ningún coste, ya estas cansado de los defectos de los motores Windows, el comercial sorprendido te dirá que eso no es posible que a ellos los fabricantes de coches no les venden solo carrocerias, ya les dan el motor de Windows preinstalado y así es como lo venden, a esto algunas personas lo conocen como el impuesto Windows.

El turno de Apple

Apple
Al contrario que Microsoft, Apple no solo fabrica motores sino también la carrocería y tampoco podras adquirirlos por separado. La producción se ha deslocalizado a China ya que allí hay mano de obra más barata, abundante y los trabajadores de esas plantas tiene menos derechos laborales que los trabajadores occidentales. Sin embargo, cuando sale algún caso de que algún empleado de esas fábricas llega a suicidarse [1] por las condiciones en que se encuentra, en Apple, dicen que van a cancelar relaciones contractuales si los contratistas no ponen remedio en un intento de que el asunto no afecte a su marca [1].

Apple no fabrica coches de bajo coste, según ellos no saben hacerlo sin que sean una basura [2], (¡tragaros eso fabricantes de utilitarios PC!), asunto arreglado ya tienen una razón para vender sus coches a esos precios, a pesar de utilizar las mismas piezas, son sensiblemente mas caros que los coches PC. A quien no le importa pagar el precio de un coche Mac no le importa sacar de nuevo y a menudo la tarjeta de crédito para pagar el precio que tienen sus accesorios y para pagar los añadidos de la nueva App Store, motivo por el cual esta tiene más éxito que el mismo concepto en otras marcas.

Cada cierto tiempo sacan nuevas actualizaciones para sus motores con un precio de tan solo X con 99, tipica regla comercial para fijar precios y hacer pensar a los clientes que estan pagando menos en un intento por confundirles y demostrando que no les importa contar mentiras piadosas, parece que funciona.

Tampoco puedes abrir el capo para ver como es el motor ni modificarlo ni puedes saber si te han puesto un sistema de segimiento y rastreo CarrierIQ con el que puedan conocer en que sitios has estado o analizar y recopilar información tuya sin tu consentimiento ni saber con que fines [3]. Cuando los alarmados conductores Mac se informan de la existencia de dichos dispositivos instalados en sus vehículos les comentan que en el próximo modelo dejarán de utilizarlos, prometen hacer borrón, cuenta nueva y asunto arreglado, aquí no ha pasado nada ¡estos no son los androides que andáis buscando!. Algunas personas tachadas de poco menos que locos ya advertían de que estas funciones malévolas en motores privativos podían estar presentes [4].

Dicen que sus productos son respetuosos con el medio ambiente, solo utilizan piezas que lo sean, son eléctricos e híbridos nada de utilizar la obsoleta y contaminante tecnología de combustión. Sus motores son lo último y son productos deseados, su maquinaria de marketing se encarga de hacer que asi sea. Tienen una carrocería cuidada pero solo en dos colores, negro y blanco, este último les costó sacarlo al mercado varios meses más tarde que el primero parece ser que por un problema en los focos [5].

Apple es distinta, en los lanzamientos de sus productos algunos clientes pueden pasarse una noche esperando en la puerta del concesionario a que abran al día siguiente para gastarse su dinero y comprar lo último de la marca [6]. Para que no decaiga el ánimo los empleados del concesionario los reciben con aplausos y vitores cuando entran.

Ahora Linux

Linux
Los motores Linux son libres y podrás utilizarlos con cualquier propópsito. Su licencia te da el derecho a obtener sus planos, y si tienes los conocimientos puedes estudiarlos, modificarlos y redistribuir tu mejoras con tus vecinos para ayudarles, estas son las 4 libertades básicas [1]. Algunas personas han logrado proporcionar la mayor potencia, fiabilidad, seguridad o menor consumo de combustible que no se puede hacer con motores Windows o Max OS X. Con los accesorios en su mayoría tambien libres pasa otro tanto de lo mismo.

Han demostrado su fiabilidad y ser muy versátiles y se pueden instalar además de coches, en otro tipo de vehículos como motos, camiones, barcos y aviones e incluso en micromotos como Kutxashares. Pueden utilizar no solo válvulas x86 sino también de las marcas ARM, MIPS, OpenRisc, PowerPC y otras menos conocidas [2].

No existen concesionarios Linux y no lo encontrarás en el resto de concesionarios PC, se piden por internet y en la mayoria de los casos su coste es nulo, a pesar de ello la mayoría de personas PAsan DE FOllones y se quedan con lo que les dán preinstalado aceptando sus defectos. Su negocio no se basa principalmente en vender licencias sino servicios, como RedHat, IBM y Canonical. Dado que cualquier persona puede proponer mejoras construyen comunidades, el avance conseguido por esas comunidades luego es aplicado a sus productos comerciales y el avance en los productos comerciales acaba llegando también a las comunidades de modo que todo el mundo se vea beneficiado. Alrededor de los motores Linux y sus accesorios se crean talleres mecánicos y puestos de trabajo localizados [3] con el objetivo de prestar esos servicios en su ámbito local.

El reciente concepto de App Store y Market para Apple y Microsoft es algo que ya tenian los distribuidores Linux desde hace ya mucho tiempo.

Estos motores tampoco están exentos de fallos y a veces a sus coches también se les desinchan las ruedas pero por lo general una vez conocidos son resueltos más rápidamente que en los coches Microsoft y Apple. Algunos fabricantes de accesorios mecánicos no dan soporte para estos motores y a veces no funcionan correctamente aunque los más comunes ya no suelen presentar problemas, no es como en los años 90 pero la leyenda urbana sigue extendida.

Algunas versiones de los distribuidores requieren que los usuarios monten las piezas ellos mismos como en Arch Linux y Gentoo, otros distribuidores lo ponen tan fácil o más que no tienen nada que envidiar a los coches Microsoft, es el caso de Ubuntu, Linux Mint y Fedora. Tener esta amplia variedad de modelos de motores Linux hace que a alguna gente le cueste decidirse por uno, tratan de buscar «el mejor», pero se equivocan, en Linux no hay «el mejor» quizá sí el mas adecuado para cada tipo de conductor. Para los que tienen el primer motor Linux posiblemente las opciones más adecuadas serían UbuntuLinux MintFedora o openSUSE. Para los usuarios que ya llevan un tiempo usándolos quizá les parezca más adecuada para sus necesidades Arch Linux aunque hay muchos otros modelos [4].

Pasado el tiempo si tratas bien el coche y no lo metes por cualquier carrtera no notarás una degradación de prestaciones y funcionará a los mismos 120 km/h del primer día.

set small_troll_mode=off

Por suerte ni Microsoft, ni Apple, ni Linux se dedican a la fabricación de motores ni coches pero piensa si lo hicieran si aceptarías que instalasen en tu coche un dispositivo de seguimiento sin que te informasen de ello o si no te parecería ridículo que hubiese gente esperando una noche en la puerta de un concesionario para comprar un nuevo modelo de Renault o si tu coche recien comprado te viene con un motón de accesorios que no quieres o si... tal vez tampoco los coches y los ordenadores no sean lo mismo pero... ¿si algunas de estas cosas no las aceptarías en tu coche u otros ámbitos por que las aceptas en tu ordenador? Tú decides.

Artículos relacionados:
El impuesto Windows
De Windows a Arch Linux
Guía instalación Arch Linux (Parte I, instalación base)

Referencia:
Microsoft
[1] Buscar: Windows Millenium y Windows Vista
[2] Buscar: windows martes de parches
[3] Buscar: windows programas preinstaldos
[4] Buscar: windows administracion pública
[5] Buscar: Las versiones pirateadas de Windows frenan el avance de Linux
[6] Buscar: windows explorer denuncia opera
[7] Buscar: windows ballot screen
[8] Buscar: microsoft multa union europea

Apple
[1] Buscar: apple foxconn suicidios
[2] Buscar: apple ordenadores basura 500
[3] Buscar: apple carrieriq
[4] Buscar: richard stallman
[5] Buscar: apple iphone blanco retrasado
[6] Buscar: apple colas tiendas

Linux
[1] Buscar: libertades software libre
[2] Buscar: linux arquitecturas soportadas
[3] Buscar: empresas software libre euskadi
[4] Buscar: linux distribuciones

viernes, 2 de diciembre de 2011

Convenciones para los literales en archivos .properties en Java


Java
La internacionalización (i18n) y la localización (i10n) en las aplicaciones Java ya sean de escritorio o aplicaciones web se suelen hacer a través de archivos .properties obtenidos a partir de la clase ResourceBundle que contienen los literales para cada uno de los idiomas que soporta la aplicación, a cada literal se le asocia una clave que será el medio por el cual se identificará a la hora de recuperarlos.

Un extracto de un archivo típico suele tener el siguiente aspecto:

...
#Combos
comboDepartamentos=Todos los departamentos
comboAreas=Todas las áreas
comboRepositorios=Todos los repositorios
comboAplicaciones=Todas las aplicaciones
comboModulos=Todos los módulos
comboProgramas=Todos los programas
...
#Mantenimiento de Repositorios
mr.aceptar=Aceptar
mr.buscar=Buscar
mr.cancelar=Cancelar
mr.confirmarEliminar=Los repositorios seleccionados pueden tener información relacionada que será eliminada en cascada. ¿Desea eliminar los repositorios seleccionados y la información relacionada?
mr.registroEliminado=El registro ha sido eliminado por otro usuario.
mr.validacion.nombreExiste=Existe otro repositorio con el mismo nombre.
...
#Mantenimiento de Aplicaciones
ma.aceptar=Aceptar
ma.buscar=Buscar
ma.cancelar=Cancelar
...
#Mantenimiento de Módulos
mm.aceptar=Aceptar
mm.buscar=Buscar
mm.confirmarEliminar=Los módulos seleccionados pueden tener información relacionada que será eliminada en cascada. ¿Desea eliminar los módulos seleccionados y la información relacionada?
...

Como se puede observar las claves de los literales de cada pantalla están identificados por un prefijo (mr, ma, mm) con el objetivo de agrupar los de cada pantalla, algunos no tienen prefijo como los de la sección #Combos. A los literales muy largos como mr.confirmarEliminar y mm.confirmarEliminar se les asigna una clave más corta que el propio literal y que tendremos que asignar para identificarlo.

Estas convenciones tienen algunos problemas. Uno de ellos es que hay literales que son muy comunes en la aplicación y estarán varias veces repetidos como Aceptar, Buscar, Cancelar lo que implica que los traductores tendrán que tarducirlo varias veces y a los programadores mantener mayor número de literales, además de ralentizar el trabajo ¿tiene sentido pedir a los traductores traducir el mismo literal varias veces? No. Los literales largos como mr.confirmarEliminar y mm.confirmarEliminar tienen el problema de que sus claves son poco representativas de su literal siendo vistos en el archivo de código fuente donde se use, lo que hace que leerlo sea poco significativo y representativo de los textos que luego se muestran.

Para solventar estos problemas y después de varios años de experiencia trabajando con archivos de literales en Java prefiero seguir otras convenciones. Según estas los archivos tendrían el siguiente aspecto:

...
Aceptar=Aceptar
Buscar=Buscar
Cancelar=Cancelar
...
El_registro_ha_sido_eliminado_por_=El registro ha sido eliminado por otro usuario.
Existe_otro_repositorio_con_=Existe otro repositorio con el mismo nombre.
Los_repositorios_seleccionados_pueden_tener_información_relacionada_=Los repositorios seleccionados pueden tener información relacionada que será eliminada en cascada. ¿Desea eliminar los repositorios seleccionados y la información relacionada?
...
Los_módulos_seleccionados_pueden_tener_información_relacionada_=Los módulos seleccionados pueden tener información relacionada que será eliminada en cascada. ¿Desea eliminar los módulos seleccionados y la información relacionada?
...
#Combos
Todas_las_aplicaciones=Todas las aplicaciones
Todas_las_areas=Todas las áreas
Todos_los_departamentos=Todos los departamentos
Todos_los_modulos=Todos los módulos
Todos_los_programas=Todos los programas
Todos_los_repositorios=Todos los repositorios
...

Como se puede ver para los literales cortos la clave será el propio literal en nuestro idioma nativo sin ñ o tildes, con esto al leer el archivo de código fuente sabremos cual es el texto exacto que se mostrará y no tendremos que estar inventándonos constantemente identificadores para los literales. Los literales cortos pero formados por varias palabras tendrán un «_» para representar el espacio. Las claves de los literales largos son el literal acortado con suficientes palabras para que no se repitan, les añado un «_» al final para saber que se ha acortado, el objetivo de acortarlo es que con unas cuantas palabras ya podemos hacernos una idea del texto que se muestra. Además los literales están ordenados alfabéticamente por la clave para encontrarlos más fácilmente. No digo que estas reglas no puedan tener excepciones para algunos casos pero siguiéndolas para la mayoría evitaremos que según vaya pasando el tiempo estos archivos se conviertan en un problema de mantenimiento, cuando en una aplicación tenemos 2000 o más literales, créeme, puede llegar a serlo.