Blog de Julio César Pérez Arques
Programación Basada en Google (PBG)
Enero 31st, 2009 - [Enlace local]
La Programación Basada en Google (PBG) es un paradigma de programación que hace furor entre los programadores junior... y no tan junior. También se conoce por Programación Orientada a Ejemplos (POE). Es aplicable a cualquier lenguaje de programación popular, e incluso a HTML y CSS.
Los principios en los que se basa son los siguientes:
- Leer manuales, libros o javadoc es un coñazo mortal.
- Lo que no está en Internet, no existe o no se puede hacer.
- Todo el mundo que escribe en Internet controla mazo.
El único requisito es una conexión a Internet y capacidad para pulsar Ctrl-C y Ctrl-V.
El modus operandi consiste en que ante cualquier problema que surja programando, se debe acudir a Google (fuente de infinita sabiduría) y realizar una búsqueda (1). Posteriormente, se selecciona uno de los recursos encontrados (2). Se hace un copypaste del código encontrado al proyecto, más los mínimos refactorings necesarios para que compile (3). Si no funciona, repetir (2) y (3). Si sigue sin funcionar, volver a (1). Si sigue sin funcionar, llamar a un compañero y suplicar ayuda.
Ahora en serio
Esta situación es el día a día en muchos equipos de desarrollo software. Y funciona. La cantidad y calidad de información que se puede encontrar con Google es muy grande. Así que funciona muy bien. Nos hace más productivos. Sobretodo si el compañero que da soporte y hace las ayudas, tiene pericia.Ésto por supuesto viene de perlas para sacar a juniors y becarios de las trincheras a primera línea de fuego. Pero tiene un doble filo, bastante largo, en forma de 2 negativos efectos sencundarios. Uno, el programador no gana, o gana muy poco, conocimiento base. Y dos, esa ganancia en productividad no siempre es real.
Conocimiento base
En Internet se puede aprender mucho sobre muchas cosas. Pero normalmente vas picoteando cosas muy determinadas de una materia. Si tienes un importante conocimiento base en esa materia, lo que vas picoteando va sumándose a tu conocimiento base de forma natural y duradera. Sin él, la mayoría de las veces sólo vas sobreviviendo.En mi opinión, la mejor forma de adquirir un saber real en algo es aprender y dominar sus bases. Y para ello nada mejor que un buen libro que te guíe desde el principio. Nunca serás capaz de diseñar un sistema OO de tamaño medio o grande, si no tienes una buena base en POO. Nunca serás un experto en Hibernate sin una buena base en SQL. Nunca crearás soluciones eficientes si no dominas las estructuras de datos. Nunca serás un gran programador Java si no conoces las principales clases de los paquetes básicos de Java. Etc, etc.
Falsa sensación de productividad
Google es tu amigo. Con su ayuda todos hemos salido de más de un apuro en tiempo record. Pero si hemos tenido que buscar algo es porque no lo sabemos y, por tanto, existe el riesgo de que no sepamos discernir si lo que hemos encontrado soluciona realmente nuestro problema y no sólo aparentemente.Un error de este tipo sólo se descubre en fases muy tardías del proyecto, donde el coste de arreglarlo se multiplica. Me vienen a la cabeza mapeos de Hibernate que aparentemente funcionaban pero que en realidad generaban un excesivo número de consultas, una linkedlist recorrida con get en lugar de un iterator que provocaba tiempos exponenciales de ejecución, algoritmos defectuosos de formateos de fecha o números decimales en base a substring, conexiones a base de datos sin liberar,...
Este post no es ningún alegato en contra de buscar información en Internet, sólo prentende llamar la atención sobre un hábito que está sustituyendo a la lectura de libros, cuando en realidad deberian ser complementarias.
Otro efecto secundario es, ante esta sensación de productividad o rendimiento, lo rápido que crece el ego y la vanidad de cada uno. Pero ya sí que tiene dificil remedio...
» Leer más, comentarios, etc...
Picando Código
Probando ArchLinux: Primeras impresiones
Enero 31st, 2009 - [Enlace local]
Hace poco volvió a mí “peque”, mi vieja laptop IBM ThinkPad T22. Es una Pentium 3 a 900Mhz y con 256 MB de Ram. Estuvo por un tiempo sirviendo de herramienta para navegar la web y mensajería instantánea sobre Debian GNU/Linux con XFCE.
Sin haber probado una distribución nueva de GNU/Linux en muchos meses, aproveché que tenía la máquina de sobra para probar algo nuevo. Y una distribución que viene creciendo mucho y de la cual he oído y leído solamente cosas muy buenas, es ArchLinux.

ArchLinux
ArchLinux es un sistema operativo estilo UNIX, una distribución GNU/Linux simple, ágil y liviana. Requiere un cierto nivel de conocimiento íntimo de sus configuraciones y de la metodología de sistemas tipo UNIX. Así se describen en su wiki, una documentación completísima que sirve de guía para instalar y configurar el sistema desde cero.
ArchLinux fue diseñada especialmente para que llegara a ser un sistema operativo enfocado en los usuarios avanzados. No posee herramientas de configuración automática, y basa su filosofía en 3 cosas:
- Mantener el sistema lo más simple y ligero posible, Seguir el principio KISS (Keep It Simple Stupid).
- Confiar en los GUIs para construir y configurar un sistema termina por dañar al usuario. Es por esto que el usuario necesitara conocer todo lo que los GUIs ocultan y llevar a cabo las configuraciones de forma manual.
- Arch permite al usuario hacer todas las contribuciones que desee mientras que no vayan en contra de la filosofía de Arch.
Queda claro con esto entonces, que no es una distribución para cualquiera. Está orientada a usuarios que tengan conocimientos previos, o el tiempo para adquirirlos. Ayudados de la wiki oficial, encontramos absolutamente todo el conocimiento necesario para dejar nuestro sistema funcionando a gusto.
Comentando un poco más sobre mi experiencia en particular, descargué el ISO desde un torrent del sitio de descarga de ArchLinux. Instalé el sistema base desde el CD. Desde la instalación ya tenemos que elegir qué instalar y qué no, y debemos editar los archivos de configuración del sistema.

ArchLinux booteando en ThinkPad T22
Es bastante fácil seguir los pasos mientras voy leyendo la wiki en mi otra computadora. Instalar el sistema base no tuvo complicación alguna. Más tarde leí sobre el gestor de paquetes pacman, y cómo funciona. Veo que tengo unos cuantos megas para actualizar el sistema entero, incluyendo la última versión de Linux: 2.6.28.
Seguí por probar instalar la placa de red Wireless. Una tarjeta PCMCIA Wireless 54M PM150NXT08 de NEXXT Solutions. Por ahora la única forma que conozco de hacerla funcionar es mediante ndiswrapper y el CD de drivers que trae compatibles con sistemas operativos Windows. Así que inclui ndiswrapper en los paquetes de la instalación, y logré instalarla sin problemas:
ndiswrapper -i (ruta del driver) modprobe ndiswrapper
Y listo, prendió sus luces. Lástima que no tiene la capacidad suficiente para agarrar la señal de mi router, tuve que acercarme un tanto más para conectarme. Terminé conectándome por cable directo al router.
Acto seguido instalé el servidor X, con los drivers de la placa de video (Savage) y las configuraciones correspondientes. Como dije, todo está en la wiki, y no hubieron complicaciones. Seguí con el gestor de login. Volví a instalarle Slim, un gestor bastante liviano. Y por último XFCE como gestor de escritorio.
Cada paso que damos y logramos algo nuevo, nos enseña algo más. Los procesos están detallados en la wiki, y los conceptos se detallan para que el usuario pueda tener conocimiento de lo que está haciendo, y no solo repetirlo como un autómata.
Hasta ahora tengo únicamente las cosas que mencioné en el post instaladas. Mañana pienso hacer un upgrade completo del sistema, y comenzar a instalar las aplicaciones más usadas (lo vengo configurando todo de a ratos). Por ahora el sistema vuela, anda extremadamente rápido. Pero tiene muy poca cosa instalada. Además cada demonio, módulo, y demás que tenga que ser cargado, debe ser ingresado a mano por el usuario.
Es una distribución realmente entretenida porque el tiempo que uno demora en configurarla es una inversión en conocimiento sobre el sistema. Ya iré comentando cuando lo deje más completo y le de cierto tiempo de uso.

ArchLinux + Xorg + XFCE
Más sobre ArchLinux:
- Sitio Oficial de ArchLinux
- Wiki Oficial de ArchLinux
- ArchLinux en Wikipedia
- Comunidad hispana de ArchLinux (Documentación en español)
» Leer más, comentarios, etc...
Joan Garnet :: Arquitectura y desarrollo RIA
Upgrade de wordpress
Enero 31st, 2009 - [Enlace local]
He hecho un upgrade del software de este blog (wordpress). Si alguien ve algo raro es que probablemente algo ha ido mal y se tiene que revisar.
Agradecería un simple aviso a través de un comentario aquí mismo si se da el caso.
Gracias!
» Leer más, comentarios, etc...
Picando Código
Skynet - ¿Codename “Google.com”?
Enero 30th, 2009 - [Enlace local]
¿Es en Terminator 3 que John Connor se da cuenta por primera vez que Skynet “está vivo”?
¿Es esto una mala señal?
La expresión “is alive!” me hizo acordar a Skynet… ¡O el monstruo de Frankestein!
» Leer más, comentarios, etc...
.: El Blog de Inwe :. » Programación
Reconocimiento facial
Enero 30th, 2009 - [Enlace local]
Como muchos ya saben, el nuevo iPhoto (ILife 09) incorpora el reconocimiento facil dentro de las fotos de nuestras fototecas, pudiendo así visualizar las fotos donde aparece cada persona. Hace poco que he probado esta nueva funcionalidad, y la verdad es que reconoce la gran mayoría de caras que aparecen en las fotos, pero no sólo caras, e aquí un ejemplo:
Entradas relacionadas
» Leer más, comentarios, etc...
Arragonán
Acceder al ApplicationContext en un HttpSessionListener
Enero 30th, 2009 - [Enlace local]
public void sessionCreated(HttpSessionEvent event) {
TestService testService = (TestService) getApplicationContext(event).getBean(”testService”);
//….
}
PD: Esto es una nota mental para no olvidarlo, y si de paso le sirve a alguien, pues mejor aún ![]()
PDD: Están muy bien servicios como gist o pastie, para compartir pequeños trozos de código
» Leer más, comentarios, etc...
Cerebro en la Sombra » Técnico
Primeros accesorios para mi LG X110
Enero 29th, 2009 - [Enlace local]
Ya me han llegado los primeros accesorios para mi LG X110 que, como comentaba hace un par de semanas, me regalaron estas navidades. Los he comprado en Dealextreme, la misma tienda online de Hong Kong donde había comprado las tarjetas para desbloquear teléfonos móviles ya que, además de unos precios muy competitivos, los gastos de envío son ¡GRATIS!, sí, envío internacional completamente GRATIS. Me he comprado una funda de neopreno que se ajusta como un guante al cacharrillo y una batería de 6 celdas
. La funda es muy necesaria. Hasta ahora lo estaba transportando en un bolso de bandolera, muy cómodo, pero me he dado cuenta de que roza el portatil con una cremallera interior y se está comenzando a rallar, con el guante de neopreno no habrá más roces.
Ésta es la funda (4,27 euros) y ésta la batería (37,08 euros al cambio), precios inmejorables. Como habéis comprobado, la batería es la del MSI Wind U100 y la funda la del Asus Eee PC1000. En el primer caso el modelo es el mismo, en el segundo el tamaño es casi idéntico.
Veamos cómo ha salido el pedido y cómo se comportan las nuevas adquisiciones. Hice dos pedidos, primero la funda y unos días después la batería, no me decidía
. La funda llegó perfectamente alojada en un sobre de burbujas, a fin de cuentas es una funda, no se va a romper
. La batería por su parte llegó también en un sobre acolchado pero dentro de una caja y rodeada de espuma, mejor imposible. Aquí tenéis la prueba viviente de que el empaquetado es inmejorable… para ser gratis el envío
.
Y aquí mis dos nuevos accesorios.
Analicemos ahora la batería, lo más importante para un ultraportátil. Ya sabemos todos que la de 3 celdas que traen de serie no llega para nada, sin embargo casi nadie se espera el tamaño que tiene la nueva batería y el efecto que tendrá al colocarla en tu LG X110. En esta imagen podéis ver que la nueva es considerablemente mayor, añade toda la “pata” redondeada que se ve en la foto al tamaño de la original. En peso también se nota la diferencia, pero vamos, buscamos una batería más grande a costa de que pese un poco mas ¿no?
.
Ahora vemos cómo queda el portatil con la batería original y con la nueva, ¿veis lo que comentaba de la “pata” redonda?. Fijáos hasta donde suben las patitas originales del netbook. Esta elevación que parece una tontería hace perder estabilidad al portátil si lo colocamos sobre una mesa. Si abro la pantalla lo que suelo abrirla, el X110 cae hacia atrás, con esta inclinación pesa mas la pantalla que el cuerpo.
Hablemos ahora de la batería en sí misma. Obviamente no es igual que la original, ni siquiera es del mismo material. En la foto se puede apreciar levemente como ni el color ni la textura son iguales. La original es blanco nuclear brillante, muy parecida al hardware de Apple, la nueva es un blanco “sucio”, tirando a grisáceo, y totalmente áspera y mate. Vale, ess una batería, va debajo del netbook y no se ve, no tiene importancia, pero quería aclararlo para los más pijos
.
¿Qué nos falta por decir de la batería? Ah! lo más importante. La original duraba 1h45′. Las dos primeras pruebas de la nueva llegaron a las 4 horas y media con el bluetooth apagado y el wifi conectado y descargando cosillas. Si se mantiene en esa duración me daría con un canto en los dientes. Ojalá tarde en reducirse
. De momento me quedo con esa idea y la esperanza.
Quería comentar también que he visto por ahí (sobre todo en Ebay), baterías de 7 y 9 celdas. Investigando un poco encontré gente que decía que duraban lo mismo que la de 6 y que lo más probable es que fuesen las mismas remarcadas, así que fui directamente a por la de 6 celdas.
Sólo me queda enseñaros cómo queda el netbook con la batería de 6 celdas en su nueva funda. Perfecto, como un guante con un poco de holgura para poder meterlo y sacarlo fácilmente y añadir algún accesorio como un modem 3G.
Por cierto y hablando de modems 3G. Escribí a LG preguntando si habría opción en algún momento de añadir el que se acopla al X110, porque sí, trae la ranura para meter la SIM pero al otro lado no hay nada
. Esta fue la respuesta:
Estimado cliente,
En respuesta a su consulta lamentamos inidcarle que por el momento no es posible instalar el modem 3G en su equipo X110. Para saber cuando sera posible instalarlo le sugerimos visite con frecuencia nuestra web http://es.lge.com ya que cuando sea posible instalar el 3G aparece indicado en dicha web. En caso de duda, por favor, contacte con nuestro teléfono 902500234, que presta atención de lunes a viernes de 9 a 20 horas.
Atentamente,
Servicio de atención al cliente LG Electronics
Tel 902500234 de 9 a 20 horas de lunes a viernes
http://es.lge.com
¿Simple respuesta para quitarte de encima o futura posibilidad real? Ahí queda eso.
» Leer más, comentarios, etc...
Ideas + Ingeniería del Software
Micromanagement
Enero 29th, 2009 - [Enlace local]
Hoy he caído por casualidad en una tira sobre micromanagement en Geek Hero Comic:
Está claro que esta tira no es Sinergia Sin Control, pero me ha hecho pararme a pensar si tengo un problema: me he visto reflejado con el tipo del peinado de el de Simply Red (o el Actor Secundario Bob, o Bisbal, o mi amigo Valle ^_^).
Tengo que admitir que soy muy maniático con muchos detalles que considero importantes, y, más que importantes, malos síntomas. Hoy mismo, en una presentación sobre metodología de desarrollo que he hecho para los compañeros, me he declarado un entrometido maniático, y les he pedido disculpas por anticipado al respecto.
Concretamente, soy MUY maniático con estos detalles (entre otros), que si seguís el blog ya habréis visto comentados:
- Programar usando el ratón en vez de dominar (progresivamente) los atajos de teclado.
- No aprovechar las vistas de Eclipse, en sus diferentes variantes: ordenar el código mediante algún criterio en vez de utilizar la vista 'outline'; no utilizar //TODOs y //FIXME para que aparezcan en Tasks; no explotar las posibilidades de la depuración...
- ¡Cortapegar!
- Nomenclatura de variables.
- ...
Tengo que admitir que me siento bastante representado en unos cuantos puntos (la Wikipedia lo asocia a desórdenes obsesivos compulsivos, no sé si diría que tanto, pero casi), así que debo reconocer mi errores al respecto (alguno ciertamente grave). En mi defensa, diré que mi intención siempre fue intentar ayudar, pero está claro que no siempre fue de forma correcta.
Prometo esforzarme en mejorar :).
Una vez hecho este ejercicio de autocrítica...
¿Dónde está la barrera que separa el micromanagement del management y del mentoring? Parece claro que los tres son prácticas relacionadas. Diría incluso que el micromanagement es la perversión de la unión de los otros dos, es llevarlos al extremo. Pero ¿dónde comienza uno y empieza el otro? Creo que es algo subjetivo, que depende de los implicados. Lo que a una persona le puede parecer una ayuda, una sugerencia, a otro le puede parecer un entrometimiento. Seguramente llegar al punto de la confrontación es un síntoma, pero hay otros, como la falta de percepción de confianza, que no son tan fáciles de ver.
Sin embargo, ¿no son herramientas como Checkstyle una forma de micromanagement? ¿No lo es el Daily Scrum? Yo los veo como herramientas para mejorar la calidad del producto y uno mismo, pero esa es mi percepción...
¿Qué opináis? ¿Microgestionais? ¿Lo habéis sufrido alguna vez? ¿Creéis que con ciertas personas o en ciertos momentos puede ser necesario adoptar posturas así? ¿Cómo lo evitaríais?
Supongo que, como siempre, in medio stat virtus.
P.D.: a los compañeros que leáis esto, no dudéis en atarme en corto en este aspecto ;)
» Leer más, comentarios, etc...
Nuevos Programadores
LINQ To SQL: Un ejemplo de acceso a datos con VB.Net
Enero 29th, 2009 - [Enlace local]
Este es un ejemplo simple de como usar LINQ To SQL para acceder a datos, hacer búsquedas y agregar, borrar o modificar datos de una base de datos.
Es sin duda un ejemplo básico, pero que puede ayudar mucho a quien recién empieza a utilizar LINQ.
Muestra el uso tanto de Select, Join, (Join y OrderBy), Like, InsertOnSubmit y DeleteOnSubmit.
Algo a destacar, dentro de lo básico, cuando recién empezaba con LINQ me encontré con el problema de querer insertar registros relacionados en 2 tablas con ID Autonumérico, lo cual me llevó un tiempo descubrir como se hacía, ya que la mayoría de los ejemplos que había en la web eran de una beta de LINQ en la cual el método que insertaba el registro devolvía el ID.
Nota: En la clase LINQ2SQL.vb hay que editar la constante connStr para que contenga el usuario y password de su propio servidor SQL Server.
Descargar el Ejemplo de LINQ To SQL (106.23 KB)
También te puede interesar:
» Leer más, comentarios, etc...
Picando Código
El sitio web de LINUX+ se renueva
Enero 29th, 2009 - [Enlace local]
El sitio web de la revista LINUX+ está cambiando. Su objetivo es transformarlo en la fuente de toda la información sobre GNU/Linux y Software Libre necesaria.
Las diferentes secciones:
Portada - Información sobre el número actual de la revista, encuestas y conferencias patrocinadas.
Descargas - Artículos y revistas para leer online o descargar en PDF. Cada dos semanas un artículo nuevo para leer, y cada 30 días un número entero de LINUX+. Además cuenta con un centro de descarga con software libre para el trabajo diario con GNU/Linux.
Eventos - La revista patrocina eventos en América Latina y España, puedes entrar para estar al tanto de estos eventos.
Otra de las novedades es su nuevo foro, para hablar sobre la revista, programación, hardware, etc.
La revista está abierta a la colaboración de todos los interesados en el software libre y GNU/Linux.
» Leer más, comentarios, etc...
Picando Código
20 cosas que aprendí de Microsoft
Enero 29th, 2009 - [Enlace local]

Microsoft - Estrellando discos desde 1985
- Microsoft Windows - “Estrellando discos duros y enlenteciendo tiempos de booteo desde 1985.”
- Nosotros tenemos la solución, pero solo si nosotros causamos el problema.
- No tiene porqué preocuparnos, somos Microsoft.
- El registro de Windows es un lugar de Magia Oscura. Evítalo si puedes.
- Windows. Se parece a una Apple, pero sin toda esa fea porquería de “Facilidad de uso” y “Funcionalidad”.
- Si tienes problemas (y los tendrás) simplemente reinicia.
- ¿Necesitas reiniciar? Haz clic en ‘Menú Inicio’.
- ¿Recuerdas cuando esto se sentía extraño? Se llama adoctrinamiento.
- Lo siento pero eres simplemente otro diente en el vasto culto Microsoft. ¿Alguien quiere reiniciar?
- Hay días en que pasas más tiempo reiniciando, que trabajando.
- Se llaman días de semana.
- Nunca actualices hasta que debas hacerlo.
- Vas a necesitar más espacio en el disco duro. ¡Ah! Y más memoria…una mejor tarjeta de video…una pantalla más grande para todos tus widgets…
- Ninguna actualización se da como estuvo planeada. Esta lección se puede aprender únicamente con la práctica.
- Debiste esperar al SP2.
- Windows es una caldo de cultivo para los virus. Ver apartado 3.
- Es posible tener más viruses que software legítimo.
- Tu máquina anda tan mal como antes de tener el virus.
- Así que ¿cómo saber si tu PC está infectada?
- ¿Está ejecutando Windows? Entonces sí, tienes un virus.
- Si funciona bien, entonces no es Microsoft.
(escrito en Linux usando Firefox y traducido en Debian GNU/Linux usando GNU IceCat)
Después de un buen tiempo de no publicar sus famosas listas de “20 cosas”, Kludge vuelve a la carga. Esta vez en contra de Microsoft, en un post muy gracioso y cargado de sentimientos hacia la empresa:
http://kludgespot.blogspot.com/2009/01/20-things-i-learned-from-microsoft.html
» Leer más, comentarios, etc...
Programación, Literatura y otras artes menores » Programación
Diseñando bases de datos… online
Enero 29th, 2009 - [Enlace local]
Hurgando en la red en busca de hostings, se me ocurrió darme un paseo por el Google App Engine, y aunque no tengo ninguna intención de poner una aplicación ahí, tuve curiosidad por ver su galería de aplicaciones… y me encontré el GAE SQL Designer, que no es otra cosa que un editor visual de bases de datos online, que además genera scripts para MySQL y MSSQL, entre otros; visto por arribita me pareció muy bueno, así que le dedicaré un rato, a ver si sirve para trabajar.
» Leer más, comentarios, etc...
Picando Código
Día “Agradece a un desarrollador de plugins” de WordPress
Enero 28th, 2009 - [Enlace local]

Hoy WordPress superó la cifra de 4.000 plugins. Me alegra saber que ayudé con por lo menos 3 plugins a alcanzar esta cifra:
También aporté código a WP-Syntax, uno de mis plugins preferidos para WordPress, agregándole funcionalidad.
Gracias a esta cifra, Matt Mullenweg - creador de WordPress - declaró el 28 de enero el día oficial de “Agradecer a un desarrollador de plugin”. Y para celebrar nos invita a mirar los plugins que usamos, visitar el sitio del autor, contactarlo, y dejarles una nota de agradecimiento (o Paypal
), y pide donaciones para los autores de plugins.
Como dice en el post al respecto, WordPress es muy simple por sí solo. La gran cantidad de plugins y temas son lo que lo hacen tan atractivo. El blog promedio de WordPress tiene unos 5 plugins instalados. Picando Código cuenta con 20 plugins activos.
¡Desde acá un agradecimiento a todos los desarrolladores de plugins para WordPress!
» Leer más, comentarios, etc...
Yet Another Programming Weblog
El sistema de plugins cada vez más cerca de GCC
Enero 28th, 2009 - [Enlace local]
Hace bastante tiempo que se viene discutiendo el porqué de la falta de sistema de plugins en el compilador libre por excelencia, GCC. Al parecer el principal problema era legal, es decir, el miedo fomentar la proliferación de plugins propietarios. Pues bien, ya se ha establecido el marco de licencias que pueden regir ese sistema, que es la nueva versión de la GCC Runtime Library Exception y con ello su desarrollo está cada vez más cerca. Además esta nueva versión de la licencia permitirá la actualización a la licencia GPLv3 de algunas librerías del propio GCC. La FSF ha proporcionado un documento con las razones para esta licencia y las preguntas más frecuentes sobre ella. Más comentarios en Slashdot: Plug-In Architecture On the Way For GCC.
Actualización: Drizzt se ha puesto de acuerdo, otra vez casualmente, para hablar del mismo tema, con algunos comentarios sobre el cambio de la licencia: El valle del Viento Helado: La arquitectura de plugins del GCC y las licencias.
La misma entrada y más comentarios en El sistema de plugins cada vez más cerca de GCC en barrapunto
» Leer más, comentarios, etc...
The New Cult of Dead Cow » desarrollo
Importar CSV en Mysql
Enero 28th, 2009 - [Enlace local]
mysql> LOAD DATA INFILE ‘hoja.csv’ INTO TABLE tbl_name
FIELDS TERMINATED BY ‘,’
OPTIONALLY ENCLOSED BY ‘”‘
LINES TERMINATED BY ‘\n’;
» Leer más, comentarios, etc...
Picando Código
Disponible revista Linux+ DVD Febrero 2009
Enero 28th, 2009 - [Enlace local]
Ya está la revista Linux+ febrero 2009 (número 51). El tema de este mes: Hardware

Revista Linux + DVD Febero 2009
En el DVD adjunto como siempre software libre para compartir:
# Guadalinex V5
Distribución preparada por la Comunidad Andaluza
# ComFusion 2.0
La nueva entrega de la distribución basada en Ubuntu
También podréis leer los siguientes artículos:
- Netbook y Linux: Reseñamos los Netbooks con Linux más populares
- TOR: Una verdad a medias
- Bebidas Libres: Os damos recetas para OpenCola y FreeBeer
- Técnicas SEO: Cómo posicionar la página web de tu empresa
- Remix: El último libro de Larry Lessig
- Stellarium: Las estrellas en tu ordenador
- LaTeX: La imprenta en casa
- XINETD: Introducción
» Leer más, comentarios, etc...
Arragonán
Apple también la caga
Enero 28th, 2009 - [Enlace local]
Desde el día 26 de diciembre soy propietario de un flamante Mac Book, que lleva desde el día 12 de enero en el servicio técnico… lo compré por lo bien que me habían ido hablando, y empujado por un poco de presión popular
.
Tengo que decir que los primeros días estaba encantado con la compra, me gustaron esas pequeñas diferencias que se encuentran respecto a un PC. Pero luego empezó la “pesadilla”, tal y como movía mínimamente el mac se ponía en reposo y no volvía en sí hasta unos minutos más tarde o si reiniciaba, pero luego fué a peor y ni reiniciando conseguía que volviera en sí.
Aquí viene la muestra:
Entonces acabé llamando a Apple Care, que tras probar varias cosas vía teléfono, me dijeron que lo llevara al servicio técnico(K-tuin Zaragoza) y eso hice. A los dos días me llamaron para decirme que para resolver el problema iban a pedir una pieza para sustituirla… pero no resultó ser la solución… y todavía siguen buscando :S. Por esto el viernes(11 días después) volví a llamar a Apple Care para explicarles la situación y ver si se podía sustituir o devolver, con quien hablé me dijo que llamara el lunes para hablar con atención al cliente(a las 18:00 ya está cerrado). El lunes(14 días después y tras 30 minutos al teléfono), por fin encontré a alguien(la segunda persona con la que he hablé) que me explicó que es un defecto grave de fabricación y me remitió al servicio post-venta de Apple Store(resulta que no es lo mismo).
Ayer, ya sin ganas de seguir perdiendo el tiempo contando una y otra vez lo mismo, y empezando a perder las buenas formas(otros 30 minutos de teléfono). La primera persona con la que hablé, al ver mi mosqueo(tras decirme que llamara a Apple Care…), me pasó con otra compañera que finalmente me dijo que no me podía ayudar con la sustitución(con lo que aumenté a cabreo) y al final le pedí(lo más educadamente que pude) que me pasara “con alguien que me pueda ayudar, que es lo que estoy pidiendo…”. Al final me pasaron con una tercera persona con la que me termino de desahogar, que finalmente me dijo que no podía prometer una sustitución, pero que iba a contactar con K-tuin para conocer el caso y que me llamaría en un par de días para contarme.
Resumiendo, me va a llegar una factura de teléfono interesante, en atención al cliente Apple (Care y Store) hay gente que no sabe por dónde le sopla el aire, y sobre K-tuin… puedo aceptar hasta cierto punto que no sepan cuál es el problema, pero tras decirme en dos ocasiones que me llamarían y no hacerlo(al final lo tenía que hacer yo) para mi es falta de seriedad y profesionalidad, deberían ser más atentos con sus clientes y como mínimo mantenerte informado de la situación, a mi se me han ido las ganas de comprar nada allí(cosa que iba a hacer)… Y ya veremos si vuelvo a comprar más productos de apple, para esto habrá que olvidar primero una de las peores experiencias de usuario que he tenido y, como no parece que seamos demasiados los que hemos tenido este tipo de problemas(haberlos haylos), no tengo esperanza de que la atención al cliente de apple cambie.
Veremos como termina la odisea.
» Leer más, comentarios, etc...
Cerebro en la Sombra » Técnico
El pasado de las redes sociales
Enero 27th, 2009 - [Enlace local]
Hace unas semanas quedé a tomar unas cañas con un viejo conocido de la Red, el señor Juanma Evaristo. Nos conocimos allá por el año 2000 en Madrid, en una cena organizada por Metropoli2000, hoy MetropoliGlobal, el origen de muchos de los webmasters de este país (Yonkis o ElOtroLado por ejemplo), por aquél entonces no era fácil ni barato acceder a un hosting. Nos sentamos juntos y dió la casualidad que era de Valencia. En aquella época era aficcionado al atletismo y llevaba la web CorreryTirar.com, hoy desaparecida. A pesar de vivir en la misma ciudad no nos habíamos vuelto a ver desde entonces, sí que habíamos mantenido el contacto durante estos años, bien por email bien por “redes sociales”, pero todos los intentos de quedar se quedaban en pura palabrería. Al final lo conseguimos y su primer comentario nada más vernos fue
Tío, con la movida de las redes sociales hoy en día, creía que ya serías millonario. Vosotros fuisteis los primeros.
Ojalá, le dije
. Las cosas me van muy bien, pero no tanto
.
La verdad es que tenía razón. Hoy que se habla tanto de Facebook y de Tuenti (los líderes), me hace gracia pensar que nosotros tuvimos un dia la potencia que hoy tienen ellos. Cuando aún nadie había acuñado el término “redes sociales”, antes de que existiese ningún otro portal ni “social” ni de “contactos”, existió GenteIRC.com (hoy GenteLive.com). Así éramos en diciembre de 2000.
Fué en abril del año 2000 cuando mi socio Marcos y yo decidimos crear un portal donde la gente pudiese publicar su perfil, sus gustos, sus preferencias y, sobre todo, su foto. Ya en aquellos tiempos vimos que para las personas era muy importante publicar sus fotos y hacerse ver a los demás. Eran tiempos sin “messengers” ni webcams (¿quién no recuerda los horrores de intentar utilizar el NetMeeting?). De hecho comenzaba a aparecer la banda ancha y las tarifas planas.
En dos años generábamos 30 millones de páginas mensuales (auditadas por OJD) y teníamos un contrato de exclusividad con lo que entonces era Eresmas (después Wanadoo y ahora Orange). Como se puede ver en el siguiente gráfico, en abril de 2002 rondábamos el millón de páginas diario.
Crecimos todo lo que pudismo por nuestra cuenta. En Eresmas no daban crédito a la fuerza que tenía GenteIRC, cómo devoraba páginas y se recibían cientos y cientos de registros nuevos cada día. Eran tiempos donde sólo interesaban las páginas vistas, el valor de una web eran las páginas que podía generar. Pero el apoyo que esperábamos que ellos nos diesen y nos ayudase a impulsar nuestro proyecto nunca llegó y nos quedamos sólos. Hubo acuerdos, promesas, estudios, proyectos de lanzamiento a nivel internacional del producto y mil y una situaciones más, pero la burbuja estalló y todo quedó en el aire, y un producto que necesitaba pasta para crecer quedó aparcado, y la única manera de continuarlo era con medios propios. Obviamente eso no nos frenó, seguimos hacia adelante con ilusión y confianza en nuestra idea, pero llegó un momento en que aparecieron los grandes competidores a nivel mundial completando nuestro producto, con capital para invertir y desarrollar su negocio. Ahí no podíamos pelear, no era nuestra batalla. Nos quedamos en nuestro nicho, que nos funciona bien todavía, pero vemos con resignación cómo una idea que tuvimos nosotros antes que nadie, una idea que llegó en el momento adecuado, se ha quedado en el camino por no sé si falta de contactos, de interés o de compromiso por parte de quien tiene la pasta. Siempre pensamos aquello de “¿no se me podíahaber ocurrido esto a mi?”, y cuando te ocurre no puedes aprovecharlo como se debería.
Según el informe 10 años de Internet España y el mundo de la consultora Tatum, ésta ha sido la evolución de la penetración de Internet en la población española hasta 2006. En 2008 se sitúa alrededor del 50%.
Según las estadísticas, la población española a principios de 2002 se situaba en torno a los 41 millones de habitantes. En 2008 éramos 46. Combinando esta información tendríamos unos 8 millones de internautas en 2001. En 2008 llegábamos a 23 millones, un 287%.
Otro dato más. Según Tatum, en 2003 el tiempo medio de conexión mensual era de 24horas. Hoy en día, según el EIAA (European Interactive Advertising Association), Internet ha desplazado a la televisión como medio de entretenimiento más utilizado con 48 horas de conexión mensuales (12 semanales según el estudio).
Añadamos un último dato. En 2002 éramos unos privilegiados los que disponíamos de banda ancha (128k), la mayoría utilizaba un modem de 54k, hoy nos parecen lentos 3Mb
. Antes, ver fotos era “lento“, hoy es como comer pipas.
En un país con el índice de bares por metro cuadro que tenemos y vistos los datos de penetración de Internet ¿alguien dudaba del éxito que tendrían las “redes sociales” tarde o temprano?. Ah, sí, los bares, aunque te tomes una caña, son un fenómeno de comunicación social al que no renunciaremos nunca, por mucho que se diga que Internet nos encierra, los bares siguen abriéndonos. Quedamos en un bar, charlamos, pasamos el rato, conocemos gente y nos relajamos después de un duro día de trabajo.
De todos modos ahí estamos todavía. El año que viene cumplimos ¡10 años! generando beneficios, ¿cuántos pueden decirlo mismo?
.
» Leer más, comentarios, etc...
Picando Código
Curso de JavaFX en JavaPassion.com
Enero 27th, 2009 - [Enlace local]

JavaFX
Me enteré a través de esta noticia en JavaHispano. El próximo viernes, 30 de enero, comienza un nuevo curso de JavaFX por Sang Shin en su conocido sitio javapassion.com.
Los contenidos y las fechas:
1. JavaFX Technology Overview - Jan. 30th, 2009
2. JavaFX Script I - Language Basics - Feb. 7th, 2009
3. JavaFX Script II - Data binding and Triggers - Feb. 14th, 2009
4. Creating GUIs I - March 1st, 2009
5. Creating GUIs II - binding, layout, event handling - March 8th, 2009
6. Animation - March 15th, 2009
7. JavaFX and NetBeans - March 29th, 2009
8. JavaFX Media - April 6th, 2009
9. JavaFX Deployment (and Java SE 6 Update 10) - April 13th , 2009
10. Project Nile (Designer Tool) - April 27th, 2009
11. Mixing JavaFX and Java - May 13th, 2009
12. Accessing Web Services, Mashup, JavaScript integration - May 20th, 2009
13. JavaFX Mobile - May 27th, 2009
14. Example code analysis:
15. Example code analysis:
Ya estoy inscripto en el grupo del curso. Sin embargo, es bastante decepcionante el hecho de que no haya un SDK disponible para sistemas operativos GNU/Linux. En los blogs de JavaFX explicaron que estaban trabajando activamente en ello. Nombraban dificultades con el video y aceleración gráfica, tanto en GNU/Linux como sistemas Solaris (¡¡¡su propio sistema operativo!!!).
Aparentemente la plataforma no es código puro en Java, sino que contiene código nativo del sistema operativo. Y las dos plataformas para las que ya está listo el release son Mac y Windows. No más “write once, write anywhere”…
En fin, encontré un par de sitios donde mencionan una forma de hacer funcionar el SDK de Mac con el plugin de NetBeans. Vamos a ver si logramos hacerlo andar para dar ese curso… ¿Alguien ha hecho andar JavaFX en GNU/Linux?
http://www.javapassion.com/javafx/
» Leer más, comentarios, etc...
SobreRaíles
Novedades en Edge Rails #11
Enero 26th, 2009 - [Enlace local]
| Nota: Esta entrada es una traducción de la publicada el 23 de Enero de 2009 por Mike Gunderloy en el blog de Ruby on Rails. |
Hemos tenido 28 entregas esta semana. Como siempre, lo mejor es ir a la lista de entregas de GitHub para echar un vistazo a todos y cada uno de los cambios. Según nos acercamos a la versión 2.3 muchos de los cambios que estamos viendo en lugar de ser nuevas funcionalidades son correcciones de fallos, y éstos por lo general no los vamos a cubrir.
Más Middleware para Rack
La adaptación de Rails a Rack continúa, con la refactorización de más y más código Rails en middlewares de Rack. Esta semana hemos visto que los parsers de XML, JSON y YAML han sido trasladados al middleware ActionController::ParamsParser. Este tipo de refactorización, a largo plazo, hará que muchos servicios de Rails queden abiertos a otros clientes de Rack sin que cada framework tenga que volver a inventar las mismas ruedas. commit
Fin de soporte
Si eres de los que estaban acostumbrados a usar script/performance/request para ver el rendimiento basado en tests de integración, tendrás que aprender un nuevo truco: se ha eliminado ese script del core de Rails. Pero no hay que preocuparse si dependemos de él, hay un nuevo plugin llamado request_profiler que podemos instalar para recuperar exactamente la misma funcionalidad.
También en esta lista está ActionController::Base#session_enabled? que ahora devuelve un aviso cuando intentemos usarlo. Dado que las sesiones se cargan ahora de forma perezosa para desactivarlas todo lo que tenemos que hacer simplemente… es no usarlas. commit
¡Cache local para todos!
La semana pasada vimos una mejora en el rendimiento de la caché se utiliza MemCacheStore, guardando una caché local de peticiones para evitar lecturas redundantes. Esto ha sido refactorizado esta semana de forma que se pueda usar con cualquier almacenamiento remoto de caché. commit
» Leer más, comentarios, etc...
MadeInFlex
ActionScript 3 Reference para el iPhone
Enero 26th, 2009 - [Enlace local]
Recién ha visto la luz de la mano de Mike Chambers una aplicación móvil que sin lugar a dudas se convertirá en un valioso recurso para todos aquellos desarrolladores AS3/Flex que tienen un iPhone.
La aplicación sigue los estándares de las aplicaciones nativas del dispositivo, por lo que las búsquedas sobre el diccionario de clases son muy rápidas. La orientación horizontal o vertical permite ver de una manera más comoda cierto tipo de contenido y cabe destacar que esta actualizado para las últimas versiones de Flash Player 10, AIR 1.5, and Flex 3.2
Más información en la liga oficial.
» Leer más, comentarios, etc...
Fetishcode...Thinking in objects
Plugins para JDeveloper.
Enero 26th, 2009 - [Enlace local]
A
» Leer más, comentarios, etc...
Ideas + Ingeniería del Software
Trazabilidad
Enero 25th, 2009 - [Enlace local]
Podríamos explicar la trazabilidad (bidireccional) en el contexto del desarrollo de software como "dado un requisito llegar a la línea de código que lo implementa, y al contrario, dada una línea, saber con qué requisitos corresponde"(a grandes rasgos, no cortapegéis esto para nada importante ;) ).
Esto tiene muchos matices y complicaciones, tanto teóricas como prácticas. ¿Realmente es importante? ¿Necesitamos bidireccionalidad? La trazabilidad es claramente una función no biyectiva: una misma línea probablemente corresponde con varios requisitos, y un requisito corresponde con muchos fragmentos de código dispersos.
Hasta hace poco siempre había visto esto como algo imposible de conseguir -a un coste razonable-. Los requisitos se registraban en un procesador de textos, las tareas en un diagrama de Gantt, y el código en un repositorio, todo desconectado. Los intentos que ví para solucionar esto eran añadir funcionalidad a estas herramientas para lograr lo que se necesitaba. Por ejemplo, hay (caros) plugins para Word que añaden "orientación a requisitos", permitiendo, por ejemplo, versionarlos. En las tareas del Project habría que meter los códigos de los requisitos. En los commits de código, los códigos de las tareas... Trabajo, trabajo, trabajo. Al final, se abandonaba.
El problema era de planteamiento. Es inutil forzar el uso de herramientas para un fin ajeno a los objetivos del implicado: al programador no le da ningún beneficio el esfuerzo extra de añadir el código de la tarea. Al analista, el uso de herramientas más complejas que el word le supone también más trabajo. El gestor del proyecto probablemente no tiene ni tiempo ni ganas de actualizar o comprobar el diagrama de gantt...
La solución ha venido de forma conjunta a la adopción de técnicas ágiles y el cambio de herramientas integradas. Las tareas se añaden en el gestor de incidencias (Trac en nuestro caso). Esto, de paso, soluciona el problema del versionado. Además, al ser información estructurada, al estar en una base de datos, se pueden generar informes y vistas en función de las necesidades. Al programador se le da el Eclipse con Mylyn, que le da valor añadido. Indicar la tarea en la que está trabajando no sólo no es trabajo (hacer un click en ella), sino que le aporta valor añadido, ya que el entorno recuerda el contexto (la perspectiva, las vistas, los ficheros abiertos...), haciéndole más fácil alternar entre tareas. Al final, en el gestor tenemos los requisitos (con su histórico) y podemos ver el código relacionado.
¿Moraleja? Si tienes que forzar a tu equipo a algo, la culpa no es del que no te hace caso, sino tuya. Las herramientas adecuadas para las tareas adecuadas.
» Leer más, comentarios, etc...
The New Cult of Dead Cow » desarrollo
Javascript y CSS ordenados
Enero 24th, 2009 - [Enlace local]
Muchas veces he visto ( y yo mismo por pereza tambien lo he hecho ) que cuando se trata de incluir un componente web o un modulo los estilos o el codigo javascript en lugar de estar en el head pasa a estar directamente encima del div que acabas de agregar.
Por ejemplo tienes una pagina molde en la cual cambias el contenido de un div(content) segun la url que se este visitando. Por ejemplo http:/tuweb/index.php/login o http/tuweb/index.php/matricula
Evidentemente son contenidos totalmente distintos y por lo tanto requieren para funcionar css y js distintos. Entonces, como hacemos para incluirlos y seguir respentando la norma de la W3C.
{foreach from=”$css” item=”cssitem”}
{/foreach}
Con este codigo, el motor Smarty se encargara de cargar automaticamente todos los css requeridos por nuestra aplicacion. Pero ¿ y como sabe smarty que css requerimos ?. La respuesta es muy sencilla, nosotros le vamos indicando a smarty que css se van requeriendo segun nuestra aplicacion active alguno u otro controlador.
$smarty->assign(”css”,array(”main.css”,”menu.css”,”content.css”));
Lo mismo es totalmente valido para JS.
» Leer más, comentarios, etc...
jordisan.net blog: sobre lo humano, lo divino... y lo técnico: desarrollo
Mis tropiezos con Google App Engine
Enero 24th, 2009 - [Enlace local]
¿Es Google App Engine una plataforma suficiente para desarrollar aplicaciones "serias"? ¿O son sus limitaciones demasiado restrictivas en algunos casos?
Hace bastante tiempo que tengo en mente una idea para desarrollar una aplicación web y, cuando me decidí por fin a implementarla, elegí Google App Engine, a pesar de que no conocía Python, el único lenguaje que soporta ahora mismo (aunque ha sido una buena excusa para aprender) y a pesar de algunas limitaciones propias de un servicio gratuito y en pruebas.
Al fin y al cabo, esos inconvenientes parecían quedar ampliamente superados por las ventajas de usar la misma infraestructura que usa Google para sus propias aplicaciones: robustez, existencia de un entorno de desarrollo, APIs de gestión de usuarios, de almacenamiento de datos, etc.




