domingo, 15 de agosto de 2010

Se acelera la promoción del e-book

O'Reilly y Apress han acelerado la promoción de sus libros. Para el caso de Oreilly simplemente no ha dejado de "hechar la casa por la ventana" desde inicios de año con una serie de productos exquisitos. Apress en cambio se quedaba atras, pero desde hace dos semanas comenzó a ofrecer una serie de libros actuales o por editarse, y si usted mi buen/a amigo/a es un desarrollador sobre tecnologías Microsoft .Net, entonces Apress debería revisarlo todos los días, no se olviden que una cuenta PayPal que proteja a su targeta de crédito es básica para hacer las compras.

Un tip muy importante para el caso de O'Reilly, es que si el libro que usted desea no lo encuentra en promoción, posiblemente visitando su facebook corporativo encuentre unas jugosas promociones.

Lo lamentable para los ecuatorianos, es que desde la lógica de la impuestología de la "Revolución Ciudadana" en la República del Ecuador, estas compras son consideradas "fugas de capitales" y no como "transferencia tecnológica", por lo que la compra es grabada por un impuesto, que, aunque pequeño es ilegítimo... cosas de su magestad.

sábado, 14 de agosto de 2010

Lady Java

Lady Java, por fin un homenaje a los que vivimos en el lado pardo de la abstracción. Este es en cambio un "comercial": Java vs. punto NET, agradable, aunque no suelo compartir los mensajes anti Microsoft

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:

  1. Todos los documentos fuentes los dejo en formato de texto, no me preocupa su contenido.
  2. Leo cada línea de los archivos texto, de donde extraigo los emails utilizando el patron anterior.
  3. Cada email recuperado se agrega a un arreglo.
  4. El arreglo es ordenado alfabéticamente.
  5. Se eliminan los duplicados.
  6. 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.