|
RSS: 
Shared Items: 
domingo 31 de mayo, 2009 a las 01:14
Hace algunos días hice el cambio desde un sistema arcaico de comentarios para el blog al nuevo y excelente Google Friend Connect. Este nuevo sistema de Google permite además inscribirse en un sitio (en este caso, JuanCri.com).
Espero incluir más gadgets en el futuro.
viernes 20 de marzo, 2009 a las 11:30
Eso sería, hoy es el día internacional sin carne...

miércoles 25 de febrero, 2009 a las 12:47
Supongamos una aplicación ASP.NET simple, con una página como ésta:
<% @Page %>
<form runat="server">
<asp:textbox runat="server" id="textBox1" /><br />
<asp:button runat="server" id="button1" /><br />
<asp:label runat="server" id="label1"/>
</form>
En un servidor Ubuntu Server Hardy 8.04 (LTS), necesitaremos haber compilado mono y xsp, sin otros requerimientos que los necesarios para compilar.
Ahora, agreguemos un validador de campo requerido:
<asp:requiredfieldvalidator runat="server" errormessage="*" controltovalidate="textBox1" >>
Aquí vamos a tener un problema. El validador RequiredFieldValidator llamará al constructur de su padre BaseValidator, el que a su vez asignará el color rojo (Color.Red) a su label. La propiedad estática Color.Red llamará a KnownColors.FromKnownColor, cuyo constructor estático invocará a GDIPlus.RunningOnWindows () y así las referencias terminarán intentando llamar a libgdiplus (biblioteca nativa). SI creen que eso no es un problema, esperen a intentar compilar libgdiplus, que depende de xlib (desarrollo) y sus decenas de dependencias.
Una posible solución es desvincular libgdiplus de xlib y hay una solución aparente, pero mientras esto no sea oficial, seguiremos sufriendo la dependencia....
domingo 15 de febrero, 2009 a las 08:50
Dada la necesidad, hice un pequeño cambio en la biblioteca net-pop3 de Mono para agregar soporte SSL. El parche está aquí y el código fuente completo aquí (hasta que sea aprobado para entrar al repositorio subversion).
Un pequeño ejemplo de código:
var conexion = new POP3SslConnection ("juancri@juancri.com", "claveultrasecreta", "pop.gmail.com");
conexion.Open();
short [] mensajes = conexion.List ();
var mensaje = mails.Retr (mensajes [mensajes.GetUpperBound (0)]);
Console.WriteLine ("De: {0}", mensaje.From);
Console.WriteLine ("Para: {0}", mensaje.To);
Console.WriteLine ("Subject: {0}", mensaje.Subject);
Console.WriteLine ("Fecha: {0}", mensaje.Date);
Console.WriteLine ("Mensaje:\n {0}", mensaje.Message);
conexion.Close ();
lunes 2 de febrero, 2009 a las 01:11
Me gusta ver series en alta definición. Algunos ejemplos son House MD y Heroes. Sin embargo, ninguna de éstas es transmitida en HD en Chile, así es que la única forma de verlas es descargando las versiones publicadas por grupos como EZTV.
Varios canales locales retransmiten series producidas originalmente en alta definición y en widescreen.
Generalmente la razón de aspecto es 16:9, así:

Todo bien, hasta que llegamos a la televisión local de baja definición, donde la imagen original es cortada:

Aquí, suponiendo que la razón de baja definición es 4:3, ya hemos perdido 1/3 1/4 de la imagen.
Pero aquí viene la otra maravilla. Si tenemos un televisor LCD (o Plasma) que seguramente es widescreen y probablmente tiene una razón de aspecto 16:9, tenemos tres opciones: La primera es ver la imagen completa, sin deformaciones, pero con esta opción veremos dos bloques negros alrededor de la imagen. La segunda opción es estirar la imagen, pero ver una imagen deformada no es lo ideal. La tercera y más natural es volver a cortar la imagen, quedándonos con algo así:

Gracias a este nuevo paso perdemos otro tercio cuarto de imagen. Por lo tanto, al final del proceso, terminamos viendo un 44% 56.25% de la imagen original. Y esto tiene que ver sólo con la imagen (en términos de porcentaje), pero ¿qué tal la resolución?. Si en el original tenemos una imagen a 720p, estamos hablando de 921.600 pixeles. En la televisión local (SD) sólo tenemos 307.200 y, si cortamos la imagen para no deformarla en el LCD, estaremos viendo solo 204.800 230.400 puntos. Al final, estaremos viendo solo 22.22% 25% de los pixelex originales... PUAJ!
UPDATE: Ariel, en un ataque de nerdismo, hizo todos los cálculos de nuevo y descubrió que confundí 1/3 con 1/4... plop!
martes 13 de enero, 2009 a las 18:31
Hace tiempo que Linux dejó de ser un ciudadano de segunda clase cuando a hardware de redes se refiere, aunque NetworkManager no es mi aplicación preferida y muchas veces tengo que volver al clásico e infalible ifconfig.
3G (primer intento): Hace algunos meses, conecté un módem 3G de Movistar sin ningún problema (no recuerdo el modelo). NetworkManager lo reconoció, ingresé los datos de autenticación y ya.
Cable Módem: Conecté luego un módem de VTR (que ofrece triple play a través de TV Cable) y todo funcionó plug&play
3G (segundo intento): Para navidad (o saturnalia), me regalé un teléfono Samsung BlackJack II y compré una bolsa de datos para probar el servicio 3G (también anunciado como 3.5G). El dispositivo implementa RNDIS y una vez más NetworkManager lo reconoció y configuró automáticamente.
Hoy, sin embargo, intenté conectar un módem ADSL de Telefónica (ZTE ZXDSL 831 Series) a un router Linksys WRT54GL que corre DD-WRT y comenzaron los problemas. Aunque en Windows XP funciona correctamente, tanto en DD-WRT como en Ubuntu hay problemas con la navegación; los sitios comienzan a cargar y luego se detienen.
Finalmente, encontré el problema, solucionable tanto en Ubuntu como en DD-WRT. Lo que se debe hacer es cambiar el MTU. El valor por defecto es 1500 y se debe dejar en 1430.
Para Ubuntu:
a) Haz clic con el botón derecho sobre el NetworkManager y selecciona Edit Connections:

b) Selecciona el tab DSL y edita la conexión que corresponde al módem ADSL:

c) En el tab Wired, escribe el nuevo MTU (en este caso, 1430):

Para DD-WRT:
Simplemente cambia el valor en el tab Basic Setup (campo MTU):

Luego de esto, el servicio funciona sin problemas
jueves 8 de enero, 2009 a las 15:13
Hay diferentes utilidades distribuídas con Mono, las cuales permitenrealizar operaciones sobre assemblies (como mkbundle y el linker). Sin embargo, hay una que siempre me ha gustado mucho: MonoMerge.
MonoMerge utiliza Cecil para unir dos o más assemblies en uno solo.
Hoy necesitaba hacer esto dentro de un pequeño programa en boo. Aquí está el código:
// Importar monomerge
import Mono.Merge from "monomerge.exe"
// Algunas variables
rutaOrigen1 = "origenPrincipal.exe"
rutaOrigen2 = "origenSegundario.exe"
rutaDestino = "final.exe"
// Generar
print "Generando ejecutable..."
mergeContext = MergeContext ()
mergeContext.OutputPath = rutaDestino
mergeContext.Assemblies.Add (rutaOrigen1)
mergeContext.Assemblies.Add (rutaOrigen2)
primaryAssembly = AssemblyFactory.GetAssembly (rutaOrigen1)
secondaryAssembly = AssemblyFactory.GetAssembly (rutaOrigen2)
fix = FixReflectionAfterMerge (mergeContext, primaryAssembly, primaryAssembly)
fix.Process ()
AssemblyFactory.SaveAssembly (primaryAssembly, rutaDestino)
Sería bueno tener otra forma más simple de hacer esto, pero es mucho más simple que utilizar Cecil directamente ;)
miércoles 31 de diciembre, 2008 a las 13:52
¿Por qué, en general, cuando alguien quiere decir "Sitio web", dice "Página web"? ¡¿POR QUÉ?! (¿tal vez porque los primeros sitios tenían sólo una página?)
lunes 29 de diciembre, 2008 a las 19:01
Hace algunos días, reinstalé el sistema operativo (Ubuntu) en mi PC de escritorio del trabajo. Al tener ya el sistema corriendo, tuve que instalar algunas aplicaciones de las cuales no puedo prescindir.
Escritorio
- GnomeDo: Sin esto no hago NADA
- Banshee: El mejor player de audio (potenciado por Mono)
- Deluge: Excelente cliente para torrents [legales] (me gustaría usar BitSharp, pero parece no ser muy estable todavía)
- VirtualBox: Excelente software de virtualización, para correr esos sistemitas...
- MPlayer: Reproductor para los videos subtitulados
- VLC: Reproductor para todo el resto de los videos
- XChat: Cliente para IRC ;-)
Utilidades
Extensiones para Firefox:
UPDATE:
El cliente para torrent es MonoTorrent, no BitSharp ;)
domingo 28 de diciembre, 2008 a las 12:40
Después de algunos meses de negociaciones y reuniones ultra secretas, ha llegado el momento de comunicar que me voy a Japón a trabajar a una reconocida empresa de tecnología. Algunos de ustedes ya sabían de las conversaciones y me imagino que para otros todo esto será nuevo.
Todavía no puedo hablar sobre lo que haré, pero pronto lo verán en un blog más "oficial". La fecha clave es mi cumpleaños, el 23 de febrero ya debería estar en Tokio para firmar. Un abrazo a todos con los que he trabajado y estamos siempre comunicados.
Feliz 28 de diciembre.
miércoles 10 de diciembre, 2008 a las 01:21
Siguiendo con el activismo, quise publicar un pequeño comentario sobre los animales en general (y el vegetarianismo en particular) debido a que hoy vi el documental Earthlings.
A pesar de recibir ataques y burlas constantes por mi opción de ser ovo-lacto-vegetariano, cada día me convenzo más de que ha sido algo muy positivo.
Si bien, los adventistas (en el papel) apoyan fuertemente la dieta vegetariana, lamentablemente, es una costumbre que se ha dejado de lado ¿por qué? La mayoría de los adventistas justifican la dieta omnívora de alguna forma, ya sea por razones sociales o de costos. Los factores sociales como "yo fui criado así" pueden ser ciertos, pero entonces ¿por qué no inculcar a sus hijos a ser vegetarianos?. Me imagino que en realidad muchos no le ven nada de malo a comer carne. Es mucho más simple criticar el vegetarianismo y a los vegetarianos que buscar justificaciones válidas.
Es lamentable que, mientras los adventistas menosprecian la dieta vegetariana, existan personas como Robert Cohen, uno de los más importantes activistas contrarios al consumo de productos lácteos, utilicen mucha de la literatura adventista como base.
Puede sonar como una crítica, pero es sólo una invitación. Vean el documental o pidan una visita a su matadero local.
martes 9 de diciembre, 2008 a las 22:15
Comenzó una interesante campaña llamada Vota Libre, creada por GiroPaís. ¿Qué les puedo decir? ¡Excelente campaña!, ¡inscríbanse!

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!
|
|