JuanCri.com

RSS: RSS
Shared Items: RSS
Add to Google

martes 2 de diciembre, 2008 a las 00:03

Hoy, Mouse.cl publicó una noticia

IBM elije las cinco innovaciones para los próximos 5 años

Dejé un mensaje "¿elige no es con g?", así es que decidieron cambiarle el título:

IBM presenta las cinco innovaciones para los próximos 5 años

y, además, eliminaron mi comentario... ¡bienvenidos a la web 2.0!

Noticia en Mouse.cl

martes 18 de noviembre, 2008 a las 01:34

Hace algunos meses escribí sobre la notación que podría tener c# para tener lambda simplificado. En ese momento todavía desconocía que C# ya tiene soporte para lambda mucho más simple en su versión 3. Entonces, podemos escribri algo como

using System;

delegate string CrearString ();

public class Test
{
	public static void Main ()
	{
		Escribir (() => DateTime.Now.ToString ());
	}
	
	private static void Escribir (CrearString crear)
	{
		Console.WriteLine (crear ());
	}
}

Esto nos permitiría, en el caso de Log4net, escribir esto:

logger.Debug (() => "Ejecutando función de " + nombreX + " con parámetro " + z);

Lamentablemente, para que esto fuera posible, ILog tendría que soportar los esta sobrecarga. Pero podemos extender ILog, así:

using System;
using log4net;
using log4net.Config;

public delegate string CrearString ();

public static class ILogExtensions
{
	public static void Debug (this ILog log, CrearString crear)
	{
		if (!log.IsDebugEnabled)
			return;
		
		log.Debug (crear ());
	}
	
	public static void Main ()
	{
		BasicConfigurator.Configure();
		ILog log = LogManager.GetLogger (typeof (ILogExtensions));
		log.Debug (() => "Prueba a las " + DateTime.Now);
	}
}

:D

viernes 14 de noviembre, 2008 a las 16:44

Hace algunos días, en la lista de correo de Mono Hispano, comenzamos a discutir sobre el desarrollo de una plataforma abierta de facturación electrónica sobre Mono. Luego de algunos días, hoy se ha anunciado oficialmente FacturaSharp.

Con este puntapié, comenzamos la etapa de discusión de licenciamiento, arquitectura y otros temas de planificación. Si estás interesado, puedes visitar:

Factura Sharp en Google Code
Grupo de discusión de desarrollo en español

viernes 7 de noviembre, 2008 a las 00:42

Hay información en muchas partes, y no solo información diferente; también vivimos con información replicada en distintos formatos y lugares.

Un ejemplo claro es el reproductor de Música.

Si tenemos archivos en la base de un reproductor como Banshee, podemos cambiar la información sobre un track (título, álbum o artista). Esta información entonces se actualiza en la base de datos interna. Opcionalmente, los metadatos también se escriben de vuelta al archivo (en formatos como el ID3 tag). Aunque así fuera, hay otro lugar donde estos datos se almacenan y es el sistema de archivos. Generalmente, tenemos nuestra biblioteca ordenada en la forma artista/álbum/canción.extensión (por ejemplo: The Corrs/The Corrs Unplugged/Runaway.mp3), incluso, sólo el nombre del archivo podría tener esta información (sin contar a los directorio)

Todo funciona a la perfección hasta que una de estas fuentes de datos cambia, sin que el resto se sincronice. Esto no es un problema para un usuario avanzado, pero imaginen a su madre (o abuela) sentada frente a la pantalla ¿le interesa saber la diferencia entre los metadatos de un archivo y el nombre del mismo? ¿o podrá darse cuenta de que cuando cambia el nombre del archivo, estos datos no se ven reflejados en el reproductor de audio?. Este es un gran desafío para el ambiente de escritorio. Incluso, si  tenemos dos reproductores de audio (Rythmbox y Banshee), sus bases de datos son distintas y, por lo tanto, ya tenemos la información en 4 o 5 lugares distintos.

Los amigos de Microsoft anunciaron con bombos y platillos WinFS, ya hace varios años. WinFS, junto a Avalon e Índigo eran los pilares de lo que hasta entonces se conocía como Longhorn, hoy Windows Vista (también conocido como Windows Bosta). Finalmente, resultó ser un vaporware, y de los grandes, ya que causó mucha expectación.

Al otro lado de la calle, imagino a GNOME con su propia base de datos de multimedia (tal vez puede ser una API con distintas implementaciones). Las aplicaciones de audio entonces, utilizan esta base de datos común. Así, el escritorio además puede proveer una forma simple de navegar estos archivos, en Nautilus, mostrando los metadatos y no necesariamente los nombres reales. Cuando los archivos son copiados a otras unidades, el entorno puede renombrarlos para reflejar el contenido y guardar en ellos el ID3 para mantener compatibilidad con otros dispositivos y ambientes.

Banshee, hasta ahora, permite sincronizar los cambios en metadatos hacia los archivos (ID3) y hacia los nombres (disponible en SVN trunk).

domingo 26 de octubre, 2008 a las 01:35

Como ya conté antes, este año, Mono estuvo presente por primera vez en el Encuentro Linux a través de Mono Hispano.

En la clausura, quisimos hacer algo diferente y regalamos bananas a todos los asistentes.

Cada banana iba acompañada de un pequeño logo de Mono y, para los desarrolladores, se entregó toda la información que nos fue posible. Nuestra principal misión era integrar más desarrolladores a la lista de Mono Hispano. Recuerden que pueden inscribirse y también visitarnos en IRC (#mono-hispano en GIMPNet).

Como una plataforma moderna, ofrecimos nuestro propio garbage collector:

Más fotos:

El resto en http://fotos.juancri.com/v/elinux2008/

 

 

viernes 24 de octubre, 2008 a las 01:34

Desde el miércoles 22 hasta hoy, viernes 24, hemos estado participando del Noveno Encuentro Linux, en la Universidad de Concepción. Durante este evento, Mono Hispano ha estado presente con un pequeño stand donde hemos mostrado aplicaciones ya desarrolladas en mono y a la vez invitar a los desarrolladores a unirse a la comunidad, incorporándose a la lista de correo e IRC. Muchas personas tienen dudas sobre qué es mono y cuáles son sus características. Invitamos a todos aquellos que necesiten más información y ayuda específica a que nos contacten.

Como parte de las actividades, mañana estaremos repartiendo plátanos gratis (free de free banana) a los asistentes.

 

Pueden ver más fotos del encuentro en http://fotos.juancri.com/v/elinux2008

miércoles 15 de octubre, 2008 a las 19:05

La próxima semana, Concepción se convertirá en la capital del software libre gracias a la realización del Encuentro Linux. El miércoles 22, durante el OpenDay, José Pino (aka Joil) dará una charla sobre Mono. Además, estaremos presentes durante todo el encuentro como parte de Mono Hispano.

Un día antes, el martes 21, daré una charla titulada "Mono en la jungla del software", en la Universidad del Bío-Bío a las 5pm. Esta actividad es organizada por Gabriel (aka DrStein), quien prometió jugo y galletitas.

lunes 6 de octubre, 2008 a las 02:23

Se ha lanzado oficialmente Mono 2.0.

Las novedades más importantes:

Incluye APIs de acceso a datos (ADO.NET), Windows Forms, Linq y otras, además de bibliotecas específicas de Mono como Cecil y Mono.Posix.

El compilador de C# incluye soporte para Linq. Además se incluyen otras utilidades como el esperado debugger, Gendarme, Mono Linker y otros.

¡Felicidades a todos quienes colaboraron para sacar adelante este release tan esperado!

lunes 6 de octubre, 2008 a las 01:32

Recién ha sido lanzado Npgsql2. Esta biblioteca escrita totalmente en C# permite conectar a PostgreSQL sobre Mono/CLI.

Esta versión es la estable para la versión 2.0 y 3.5 del framework. Entre los logros de Npgsql se encuentra el ser un componente imprescindible de JuanCri.com ;)

 

domingo 28 de septiembre, 2008 a las 19:38

En la película Bicentennial Man, basada en un cuento de Isaac Asimov, Robin Williams interpreta a Andrew Martin, un robot que busca su independencia. Al pedir su independencia, argumenta que los hombres han luchado tanto por aquella "libertad", que él quiere tenerla también y saber qué significa.

En el ámbito de los negocios es muy común optar por estándares que permitan la independencia de los proveedores. Sin embargo, esta tendencia no se observa en el software. Más y más empresas encadenan todos los días sus datos y sus procesos a software cerrado, permitiendo que su negocio dependa en gran parte de unos cuantos proveedores, y además pagan para eso.

Cuando se compra un software cerrado, además del costo del mismo programa, de la capacitación y el soporte, se debe hacer la siguiente pregunta: ¿qué pasa si este producto se deja de producir dentro de un mes? o ¿qué pasa si esta empresa quiebra en menos de un año?.

Algo parecido a lo que pasa con UML es lo que sucede con Oracle. Además de ser cerrado, lo cual incluye a su protocolo, su informe de errores es horrible, por lo cual generalmente necesitaremos de un "experto Oracle", que nos puede decir lo mismo que podríamos ver si tuviera un sistema decente de errores. Por supuesto, esos expertos se deben capacitar y certificar en los programas oficiales de Oracle. Pero claro, el respaldo de una empresa es más importante que el respaldo del código, aunque es esto último lo que garantiza la libertad.

Si usted está al frente de una empresa, piénselo dos veces antes de comprar software cerrado. El software libre asegura una libertad que es difícil de cuantificar.

miércoles 24 de septiembre, 2008 a las 19:38

Hace un tiempo escribí sobre URL rewriting, el cual considero muy útil e importante. Pero Google tiene otra opinión. Pensé que tal vez yo estaba razonando fuera del recipiente, pero hoy leo que Google Blogoscoped está de acuerdo conmigo.

La verdad es que no entiendo la postura de Google. ¿Qué es mejor?. Siguiendo con un ejemplo típico:

Complicado: http://www.falabella.com/webapp/commerce/command/ExecMacro/falabella/macros/SubCat.d2w/report?cgmenbr=1891&nivel=1&cgrfnbr=2458461&cgpadre=2457964&cghijo1=2458461
Simple: http://www.falabella.com/tienda/audio

¿No?

lunes 22 de septiembre, 2008 a las 19:45

La gente de Neutralidad Sí! está todavía luchando por impulsar la ley de neutralidad. Ya he hablado varias veces de este tema y creo que no me voy a cansar. El mercado de internet es muy poco regulado; es un mercado donde te pueden ofrecer peras y darte manzanas, aunque la mayor parte de las veces recibes fruta podrida.

Hoy han publicado una nota sobre el estado actual del proyecto, entrampado por tácticas politiqueras dignas del siglo pasado, donde todo se hacía a escondidas. ¿Por qué la gente está en contra de la transparencia si no fuera para seguir siendo corruptos y ladrones?. Cuando Barack Obama habla sobre el lobby y lo turbio que es, me parece algo tan lógico. Sin embargo, en la jungla latinoamericana de políticos que se dan vuelta la chaqueta según la circunstancia, sigue siendo una práctica aceptada. Con un voto prácticamente asegurado gracias al sistema binominal, un senador no tiene ninguna presión para hacer lo que los votantes quieren o necesitan.

A veces es triste ser utópico en materias tan simples y lógicas.

lunes 15 de septiembre, 2008 a las 05:19

Hoy se ha publicado el sitio sshkeys.net y aproveché de subir mi llave, disponible en: http://sshkeys.net/juancri@juancri.com

lunes 8 de septiembre, 2008 a las 11:09

Mañana, martes 9, a las 19:30 Hrs. nos reuniremos los usuarios de Mono en Chile. El lugar será el Pizza Hut de Guardia Vieja, en providencia:


Ver mapa más grande

¡Los esperamos!

jueves 4 de septiembre, 2008 a las 19:26

Estas sí que son ofertas... ¡Toma DELL!

Oferta LAN.com

Todavía está publicado en su RSS aquí y una copia acá.

miércoles 3 de septiembre, 2008 a las 10:09

Con tanto el boom de Google Chrome, lo probé, pero sorpresa: no soporta Google Toolbar:

Google Chrome

lunes 28 de julio, 2008 a las 17:18

Nunca he sido admirador de los servicios de Telefónica Chile (ex CTC). Estoy intentando contratar un plan de internet (el teléfono no me interesa). Después de cotizar con las compañías más importantes, decidí pedir la instalación de teléfono + ADSL de Telefónica Chile, ya que ofrecía un descuento de 50% durante los primeros seis meses.

Lunes 7 de julio: Cotizo y el vendedor me indica que hay que hacer un cambio en el tipo de cliente, así es que lo cursará el mismo día para que estest listo al día siguiente. Me ofrecen un descuento de 50% por 6 meses.

Martes 8 de julio: Pido la instalación a Telefónica Chile (área de negocios). El vendedor  me indica que el cambio de tipo de cliente debería estar listo en unas horas y que en 5 días tendría todo instalado

Martes 15 de julio: Nadie me ha llamado y asumo que instalarán hoy, así es que llamo para saber a qué hora estará listo. La vendedora me dice que no hay ninguna orden y pido hablar con el vendedor original, Julio Valdés. Él me indica que recién está listo el cambio de cliente (que debió demorar un día solamente)  y que cursará todo lo antes posible.

Lunes 21 de julio: Llamo nuevamente y me informan que recién se emitió la orden y debía esperar un par de días para que me llamaran los técnicos.

Martes 22 de julio 16:00: Me llama Jorge Maxi de la agencia de Apoquindo, indicando que aparece una orden anulada. Le digo que hay una en curso y me dice que él piensa que el técnico debe tener la orden en la mano y por eso no figura. Esperaremos hasta el día siguiente para que se instale.

Martes 22 de julio 16:05: Me llama Luis Saez de la misma agencia. Le digo que hablé con Jorge Maxi hace cinco minutos. Queda de averiguar y me dice que la orden está anulada porque hubo un error al seleccionar la central. Me ofrece cursarla de nuevo y le pido que lo haga y que me instalen lo antes posible, así es que viene a mi casa y firmo una orden.

Martes 22 de julio 17:00: Llamo a Julio Valdés, el vendedor original y le pregunto qué pasó. Me dice que sólo quieren robarle la venta y él se encargará de ver las órdenes.

Miércoles 23 de julio 10:00: Llamo a Julio Valdés y me dice que efectivamente hubo un error técnico y se anuló la orden. Le pregunto si puede cursar una nueva, ya que Saez me ofrece un descuento menor y me dice que ok, que en un día estará todo instalado.

Viernes 25 de julio 15:30: Por fin me visitan técnicos de telefónica, pero traen la orden antigua. Me piden aplazar esta orden así el lunes 28 pueden instalar sin problemas la siguiente que, suponen, debe estar en proceso.

Lunes 28 de julio 9:30: Me llama un técnico para instalar y aún tiene la orden antigua. Le pido que me deje conversar con el vendedor antes para saber qué hacer.

Lunes 28 de julio 10:00: Por fin me puedo comunicar con Julio Valdés y me dice que efectivamente la orden antigua está pendiente y debo hablar con alguien de área comercial para anular la orden y así procesar la nueva. Me transfiere con un ejecutivo comercial y éste me dice que no se puede anular por teléfono con ellos, porque ya está en el área técnica. Llamo al técnico y le digo que la anule.

Luens 28 de julio 15:00: Llamo a Julio Valdés para saber si finalmente pueden instalar. La ejecutiva que me contesta me dice que no trabajan con anexos y es imposible que transfiera la llamada (aunque ya he hecho esto unas 10 veces). Me dice que ella puede cancelar la orden y cursar una nueva. Finalmente, le pido que anule todo, NO QUIERO INTERNET DE TELEFÓNICA NI NINGÚN PRODUCTO QUE ME PUEDAN OFRECER.

¿Fin?

jueves 3 de julio, 2008 a las 17:51

The Adventist Youth of Las Condes invite you to practice and improve your English. We're hosting a Free English Workshop every Saturday at 5:30pm in the Adventist School of Las Condes. Food and juice is provided as well.

Si no entendiste, también estás invitado a este Taller Gratuito de Inglés, cada Sábado a las 5:30pm en el Colegio Adventista de Las Condes. No importa tu nivel de ingles.

La dirección es Apoquindo 5415, Las Condes, Santiago (entrada por Luis Zegers). Más información en este email.

 


Ver mapa más grande

martes 27 de mayo, 2008 a las 09:44

El problema es el siguiente: Instalamos una aplicación ASP.NET 2.0 y todo funciona de maravillas. Movemos la aplicación a otro PC y ¡bang!, ya no corre. La razón es que no encuentra una propiedad de SqlParameter.

Al ver la documentación, descubro que una propiedad está disponible desde .NET 2.0 SP1 en adelante... es decir, ¡se agregan elementos a la API en un service pack!

Tenemos dos soluciones: No utilizamos la propiedad o subimos los requerimientos mínimos a .NET 2.0 SP1... ¡plop! (voto por la primera)

martes 6 de mayo, 2008 a las 17:10

Hoy estaba agregando Log4net a un proyecto y, por primera vez, decidí comprobar cada llamada al logger con IsDebugEnabled, IsInfoEnabled, etc. Esto es muy útil para optimizar el código y no construir strings innecesarios. Por ejemplo, esta expresión:

logger.Debug ("Ejecutando función de " + nombreX + " con parámetro " + z);

En este caso, la concatenación de strings se realizará antes de llamar al método. Si el debug está desactivado, estaremos concatenando strings por las puras. Para corregir esto, podemos comprobar antes que el debug esté activado, así:

if (logger.IsDebugEnabled) logger.Debug ("Ejecutando función de " + nombreX + " con parámetro " + z);

Pero es bastante tedioso y repetitivo. Una solución sería que en vez de enviar strings concatenados, enviáramos la expresión. Esto se puede hacer con expresiones lambda (closures o métodos anónimos). Podríamos definir ILog.Debug así:

public delegate string CreateString ();
void Debug (CreateString create);

De este modo, el método Debug sería el encargado de verificar si el debug está habilitado y, sólo en ese caso, llamaría a la expresión para concatenar el texto. Podríamos llamar a este método de esta forma:

logger.Debug (delegate { return "Ejecutando función de " + nombreX + " con parámetro " + z; });

El problema es que aquí también agregamos demasiado código para ser una expresión simple. Lo ideal, para mí, sería hacer una llamada como esta:

logger.Debug ( { "Ejecutando función de " + nombreX + " con parámetro " + z); } );

Sería lo más simple. Al agregar las llaves "{ }", estaríamos diciéndole al compilador que queremos usar un método anónimo. Aquí nos evitaríamos usar tanto "delegate" como "return", que son palabras clave obvias en este caso.

Creative Commons License
Blog JuanCri.com por Juan Cristóbal Olivares licenciado bajo la Creative Commons Attribution 2.0 Chile License.
Mono PostgreSQL Firefox Gratis

© JuanCri.com