sábado, 14 de agosto de 2010
Lady Java
miércoles, 26 de mayo de 2010
JavaScript "a medias"
Entre los libros viejos encontré uno muy especial: "JavScript paso a paso". Lo había adquirido en 1997 y me permitió dar los primeros pasos en programación web dinámica. Me sentí muy satisfecho al programar un calendario en ese lenguaje y visualizarlo en netscape. La siguiente vez que tomé un libro de JavaScript fue Fundations of Ajax a finales del 2005.
Me he introducido en el mundo de jQuery, que como todo framework web ofrece la potencialidad Ajax. Pero algo se me ha quedado en el camino con respecto a JavaScript y es que el lenguaje ha cambiado y ha dado grandes pasos desde 1997. Antes de continuar con jQuery, me detendré cuidadosamente a revisar JavaScript purito para lo que me he equipado de la siguiente literatura: JavaScript: the good parts y Learning JavaScript
No pienso seguir engañándome a mi mismo haciendo largas consultas en el Internet de como hacer cosas específicas solamente porque no me he actualizado en el lenguaje.
Soy fundamentalmente un desarrollador de software en Java, que siempre me preocupo del estado del lenguaje y todos los días descubro cosas nuevas especialmente en los proyectos de apache, pero a JavaScript, que no he dejado de utilizarlo desde hace 10 años, siempre lo he tomado como la prima menor en mis escenarios de producción de software, un gran error de mi parte!
martes, 25 de mayo de 2010
Libros electrónicos a 10 dólares
Hace más de tres años que salí de Sydney, para repatriarme a la República “de todos”, Ecuador, experimenté la desagradable experiencia de dejar encargada toda mi literatura técnica, la que al final fue a parar a la biblioteca municipal de Hurstville, una de las mini ciudades que conforman la metrópoli australiana.
No me afecta mucho dejar un libro de Java o C# que lo haya revisado, pero abandonar un libro de ingeniería de software, de patrones de integración o patrones de diseño, realmente duele. Me equivoqué al poner en la maleta tres manuales de tecnología .Net. Mis temores era que en la República del Ecuador era más popular la plataforma .Net que Java, cuando yo era y soy programador de esta última.
Para la época ya había adquirido algunos libros electrónicos en Apress, luego la práctica de revisar la promoción diaria de un libro a US$10 se ha vuelto una acción de todos los días. Es la única manera de estar actualizado en la plataforma en que uno trabaja.
Al principio era un truquito de Apress pero este año se le unió O'Reilly con productos mucho más interesantes y actuales. También Manning Manning y Site Poit han entrado de una manera más discreta en la dinámica de la oferta de un libro diario por US$10. Me parece que los libros de tecnología ya no seguirán costando esas ingentes sumas de entre US$40 y US$200, supongo que los editores de libros están encontrando la cifra mágica de DIEZ para los libros electrónicos, cuyas ediciones se vuelven más y más importantes con la presencia en el mercado de los dispositivos iPad y Kindle (cuando sea grande me compro uno)
martes, 20 de enero de 2009
"...ya no quiero trabajar para Google !"
Cómo se sentiría si el multimillonario dueño de google le dice: "la gente que trabaja en google, no lo hace por dinero, sino por cambiar el mundo"?
http://www.techcrunch.com/2009/01/18/why-google-employees-quit/
domingo, 11 de enero de 2009
Rapidamente: como extraer los emails de un documento sin formato específico
Me han entregado una serie de documentos que contienen emails, no tienen un formato definido, pueden estar en MS -Word, texto o en hoja electrónica, la tarea encomendada es extraer todas las direcciones electrónicas de dichos documentos.
Lo solución es en base a expresiones regulares.
Una sola expresión regular será suficiente para cumplir la tarea: [A-Za-z0-9._%+-]+@([A-Za-z0-9_+-]+\.)+[A-Za-z0-9]{2,4}. Esta nos permitirá extraer todos y cada unos de los emails de cualquier documento.
Para el efecto me planteo los siguientes pasos:
- Todos los documentos fuentes los dejo en formato de texto, no me preocupa su contenido.
- Leo cada línea de los archivos texto, de donde extraigo los emails utilizando el patron anterior.
- Cada email recuperado se agrega a un arreglo.
- El arreglo es ordenado alfabéticamente.
- Se eliminan los duplicados.
- Se imprime la lista.
El programa en groovy es muy corto:
1 def emails = [] 2 new File(args[0]).eachLine { 3 it.eachMatch(/[A-Za-z0-9._%+-]+@([A-Za-z0-9_+-]+\.)+[A-Za-z0-9]{2,4}/) { 4 emails << it[0] 5 } 6 } 7 println emails.sort().unique()
donde:
emails es el arreglo que almacenará cada email recuperado.
new File(args[0]).eachLine hace dos cosas: habre el archivo y lee cada linea.
it.eachMatch(...) extrae cada email según la expresion regular, que es almacenado con la expresion emails << it[0]
println emails.sort().unique() ordena, elimina los duplicados y luego imprime la lista de emails resultantes.
Este scripts lo podemos guardar en un archivo de nombre emails.groovy, y su ejecución desde la linea de comandos:
groovy emails.groovy archivo.txt
donde archivo.txt es el nombre del archivo texto que contiene los emails. Al ejecutarse este programa, el nobre del archivo es recogido en la variable dinámica args[0]
domingo, 4 de enero de 2009
“with” en Groovy
Acabo de leer un artículo Getting Groovy With “with”, donde el autor nos presenta un ejemplo de código Java para imprimir una fecha
1 // PrintIndependenceDay.java 2 import java.util.Calendar; 3 import java.util.Date; 4 public class PrintIndependenceDay { 5 public static void main(String[] args) { 6 Calendar calendar = Calendar.getInstance(); 7 calendar.clear(); 8 calendar.set(Calendar.MONTH, Calendar.JULY); 9 calendar.set(Calendar.DATE, 4); 10 calendar.set(Calendar.YEAR, 1776); 11 Date time = calendar.getTime(); 12 System.out.println(time); 13 } 14 }
Y luego nos presenta el código equivalente en Groovy
1 // PrintIndependenceDay.groovy 2 def calendar = Calendar.instance 3 calendar.with { 4 clear() 5 set MONTH, JULY 6 set DATE, 4 7 set YEAR, 1776 8 println time 9 }
En realidad este código es bastante legible para un programador en Delphi o Visual Basic.
Cuando programo en Java o Groovy, es una prioridad reducir el ruido como lo hace este “closure”. Groovy es un lenguaje dinámico una de cuyas tareas es reducir el ruido que se tiene en Java. En este caso el “ruido” se expresa como la repetición (6 veces) de “calendar” , que en el programa en Groovy se lo escribe una sola vez.
Solo cuando leí el blog caí en cuenta de enorme ayuda que extrañaba de mis tiempos de programador Delphi. Recomiendo la lectura total del mismo
sábado, 3 de enero de 2009
40 años de la “madre de todos los demos”
Douglas Engelbart es un norteamericano nacido en 1925, cuyas investigaciones en la interacción entre los seres humanos y la computadora que le llevaron a inventar el ahora familiar e íntimo mouse, que lo puede adquirir en las tiendas de abarrotes de en cualquier barrio o pueblo del planeta.
Lo realmente memorable alrededor de este hombre se da el 9 de diciembre de 1968, en el centro de Convenciones de San Francisco - California, donde presenta por primera vez el mouse, y unas cositas más, a las que en conjunto las llamo NLS (del inglés oN Line System), que consistía nada más y nada menos de un conjunto de computadoras geográficamente distribuidas comunicándose entre ellas mediante e-mail, hipertexto, texto interactivo, video y tele conferencia. Podemos suponer que al finalizar magna presentación de lo que menos se hablaba era del mouse.
Ya sabemos que alguien hace 40 años estableció el sendero de la tecnología distribuída como la conocemos ahora de una manera totalmente accesible.
lunes, 28 de julio de 2008
Libro electrónico
los programadores necesitamos los manuales de las plataformas con las que trabajamos. En este momento tengo sobre mi en mi escritorio manuales impresos de JfreeChart, Groovy, Grails, Mondrian, JavaScript, CSS, iReports y Netbeans 6, y de ellos he alcanzado a leer al menos la mitad, conforme necesite más conocimiento. De Grovy y Grails tengo 4 manuales que los he leido casi integramente, al igual que los dos de ireport y JasperReport. Del manual de Java Script puedo decir que es el tercero que lo leo desde 1997. Lo más importante es que todos esos manuales son actuales, casi salidos del horno, cuya versiones electrónicas en PDF -salvo el manual de mondrian- los adquirí en una de mis cuatro portales favoritos: apress.com, pragprog.com, manning.com y oreilly.com.
Posiblemente los mejores libros en TI sean aquellos de O'reilly, pero solamente unos pocos de ellos están disponibles en formato electrónico ya que dicha empresa prioriza el servicio en linea Safari que en base a una cuota mensual o anual (la menor es de US$28 mensulaes) tiene acceso a cierta cantidad de libros (mínimo 10) cada mes. Estube suscrito a este servicio por dos años y finalmente debo decir que no me convence: el dia que apress, manning y pragmatic programmer incluyan sus libros en ese servicio entonces valdrá la pena, mientras tanto debe valerse con las publicaciones de O´reilly, Oracle, Microsoft, etc. Es decir está más lejos de programadores que juegan en las canchas del código abierto y libre.
apress.com, es mi portal favorito a la hora de buscar publicaciones en mis plataformas de trabajo: Java, Groovy, Grails, JavaScript, etc. Los libros son actuales, y apenas son publicados es posible que ponga la version electrónica a disponibilidad.
pragprog.com.com, sus publicaciones siguen fielmente una estrategia, dar visiones concretas y pragmaticas sobre determinadas tecnologías a los lectores. Es posible que la lectura entera de uno de sus libres lo deje productivo y motivado en temas como Ajax en menos de una semana, pero no lo convierte en experto, pero si lo suficientemente motivado para querer leer un libro de manning.com que en cambio si ofrece mayor nivel de profundidad.