4 bits blog
Función split para C
Mayo 16th, 2008
Hace poco programando en C, eché en falta una función split al estilo de Java, para dividir una cadena de caracteres en varias usando un carácter separador (ya sé que en el método de Java se pueden usar expresiones regulares, pero yo sólo buscaba la división a partir de un carácter).
Como no existe nada parecido, bueno strtok es algo parecido pero tiene muchos inconvenientes (para muchos es una función maldita), pues me decidí a programar una función que lo hiciera, viendo que parece que funciona bastante bien voy a dejar aquí el código por si a alguien le resultase útil o incluso quisiera mejorarla (es toda vuestra).
#include <stdlib.h>
/* split: Splits a string in parts delimited by a character. */
char **split (char *string, char sep) {
char **ret;
char *p = string;
int i = 0;
int nParts = 0;
int len = strlen (string);
ret = (char **) malloc (sizeof (char *));
if (ret == NULL)
return NULL;
ret[0] = NULL;
while (i < len) {
/* Jump the separator characters */
while ((p[i] == sep) && (i < len))
i++;
/* Find a non separator character */
if (i < len) {
char **tmp = (char **) realloc (ret,
(nParts + 2) * sizeof (char *));
if (tmp == NULL) {
free (ret);
return NULL;
}
ret = tmp;
tmp = NULL;
ret[nParts + 1] = NULL;
ret[nParts] = (char *) malloc (sizeof (char));
if (ret[nParts] == NULL) {
for (i = 0; i < nParts; i++)
free (ret[i]);
free (ret);
return NULL;
}
int j = 0;
for (i; ((p[i] != sep) && (i < len)); i++) {
ret[nParts][j] = p[i];
j++;
char *tmp2 = (char *) realloc (ret[nParts],
(j + 1) * sizeof (char));
if (ret[nParts] == NULL) {
for (i = 0; i < nParts; i++)
free (ret[i]);
free (ret);
return NULL;
}
ret[nParts] = tmp2;
tmp2 = NULL;
}
ret[nParts][j] = '\0';
nParts++;
}
}
return ret;
}
Como podéis ver la función devuelve un array de cadenas de caracteres cuya última posición es NULL, de modo que sólo tengáis que recorrer el array hasta encontrar NULL para conseguir las partes de la cadena dividida. Como es obvio, deberéis liberar la memoria del array devuelto una vez no lo vayáis a usar.
Si veis algún fallo decirlo y se corrige.
» Leer más, comentarios, etc...
Picando Código
Disponible Revista TuxInfo #6
Mayo 16th, 2008
Con la ausencia de los últimos días, me perdí el lanzamiento de la revista TuxInfo. Recién me estoy poniendo al día con las noticias, y ya la estoy descargando:

Contenido de la revista
- OPINIÓN - Pesadilla en lo profundo del WiFi
- SERVIDORES - Poniendo a punto Squid
- PROGRAMACIÓN - Trac: Gestión de proyectos de desarrollo de Software (Parte I)
- LABORATORIOS - Migrando la oficina de la mano de OpenOffice.org, Parte 1 (Presentando a OpenOffice)
- DISTRIBUCIONES - Sabayon, el gentoo simple
- JUEGOS - Glesd
- TAPA - Tuxinfo en el Flisol 2008, cobertura completa no solo en Argentina
- TAPA - Salimos a instalar Ubuntu 8.04 Hardy Heron y les contamos sus secretos
- Y como siempre la seccion paginas, juegos y rincon del lector
- Y mucho mas en sus 97 paginas.
DESCARGA DE NUMEROS ANTERIORES
» Leer más, comentarios, etc...
Picando Código
CEIBAL JAM: ¡Programá para la XO del Plan Ceibal!
Mayo 15th, 2008
Como les adelantaba hace un par de semanas, se va a realizar un Ceibal Jam, una convocatoria para programadores que quieran desarrollar para las XO. Como mencioné antes, es una iniciativa sumamente interesante para programadores. No se me ocurre mejor forma de comenzar a colaborar con el software libre que programando aplicaciones para las OLPC. Se creó una lista de correo, por lo que veo que se perfila a ser una comunidad entera de desarrolladores para las XO. Acá les dejo un poco de información:
Llegó la hora de generar aplicaciones para los laptops XO. Uruguay se encuentra en una posición privilegiada, debido a la alta densidad de estos equipos de que estamos disponiendo, lo que da una gran base instalada sobre que puede utilizar nuestro software. Dicho de otra manera, los programadores uruguayos tienen el doble beneficio de poder brindar soluciones prácticas a las necesidades educativas (y, por qué no, de otros tipos) de nuestro país y al mismo tiempo, que estas puedan explotar por el mundo entero.
La Wiki de Ceibal Jam fue actualizada, entre otras cosas, con algunas noticias interesantes:
- Se ha creado una lista de distribución: olpc-uruguay@lists.laptop.org, en que los miembros suscriptos podremos intercambiar aportes para este encuentro y el futuro. Los registrados al encuentro hasta la mañana de hoy (15/5) han sido invitados automáticamente. Para suscribirse, hay que acceder a lists.laptop.org/listinfo/olpc-uruguay
- Nota: ¿Qué es un Jam? ¿Qué va a ser Ceibal Jam?
- El UyLUG ha anunciado el encuentro en su página.
- LATU ha confirmado que contaremos con algunos laptops XO con los que trabajar durante el encuentro.
- Se ha creado un grupo en Facebook de desarrolladores de Ceibal. No busca ser el ámbito oficial para el trabajo en grupo, pero es una herramienta muy poderosa para mantenernos comunicados.Unite!
- Se ha anunciado el encuentro en el blog proyecto-ceibal.blogspot.com
- Tenemos un poster para difundir el evento. (Dejar comentarios sobre el diseño en la pestaña de discusión.).
- La actividad está avalada por la Facultad de Ingeniería por resolución de su Consejo del día 24/4/08.
Toda la información la pueden encontrar en el wiki, pero acá les dejo otros datos importantes a ver si los tientan:
- Fecha: 17 y 18 de Mayo, 9 a 21hs.
- Lugar: Facultad de Ingeniería, Salón de Actos.
Propuesta de trabajo
Estos horarios son tentativos. No es la idea que el encuentro sea una conferencia, sino que todos tengamos una base para empezar a trabajar.
- 9:00 hs - Bienvenida y plan de trabajo.
- 10:00 hs - Introducción a la XO y Sugar. Guadalupe Artigas y Esteban Bordón.
- 11:00 hs - Emuladores. Pablo Flores y Gabriel Eirea.
- 12:00 hs - Python. Santiago Aguiar.
- 16:00 hs - Evaluación y realimentación de usuarios.
- 19:00 hs - Puesta en común.
- 21:00 hs - Cierre del evento.
Talleres introductorios
A continuación, una lista de temas que se propone tratar en los talleres iniciales. Si te interesa encargarte de dar un taller o tenés otro tema para proponer, simplemente editá esta sección.
- Emuladores
- Python
- Entorno Sugar
- Mesh
Por mi parte, estoy considerando seriamente la posibilidad de asistir. Si bien tengo algunos obstáculos, estaría muy interesante ir. Veremos…
» Leer más, comentarios, etc...
Picando Código
De vuelta a la acción
Mayo 15th, 2008
Después de las maratónicas jornadas previas a la entrega del anteproyecto, vuelvo al blog.
Ni en el foro he estado respondiendo mucho.
Disculpas por el cuelgue, Picando Código de vuelta en la carrera!
» Leer más, comentarios, etc...
Navegapolis
Hay empresas que maduran, otras simplemente se esclerotizan
Mayo 15th, 2008
"La empresa empieza a contratar MBAs y ejecutivos con marchamo blue-chip. Empiezan a brotar, como las malas hierbas, los procesos, procedimientos, listas de control, etc. Sobre el inicial entorno igualitario se va construyendo una rígida jerarquia. Se crea orden en el caos, pero también se mata el espíritu emprendedor. Nace la burocracia para compensar la incompetencia y establecer la disciplina".
Jim Highsmith, Agile Project Management
» Leer más, comentarios, etc...
MadeInFlex
Google Maps API para Flash/Flex
Mayo 15th, 2008
Al fin Google sigue los pasos de Yahoo y nos anuncia la llegada de una API para integrar Google Maps en nuestras aplicaciones Flash/Flex.
Aquí tenéis más información al respecto:
Google Maps API for Flash/Flex
Sin duda, una noticia muy interesante!
» Leer más, comentarios, etc...
Joan Garnet
Flash Player 10 Astro
Mayo 15th, 2008
Esta major release del flash player no es comparable a la 9 porque no lleva una nueva máquina virtual, pero la verdad es que si hay un segundo puesto éste es para Flash Player 10 codename Astro! Además esta release lleva claramente la firma de la comunidad por la influencia que ésta ha tenido en la dirección que algunas de las novedades han tomado!
No voy a explicar mis experiencias porque me acabo de enterar y no he experimentado nada pero las nuevas funcionalidades hablan por si solas.. las pongo por órden de interés según mi criterio.
1. Dynamic Sound Generation: Posibilidad de generar sonido dinámicamente a través de nuevas APIs de la clase Sound.
(sacado de kaourantin.net)
-
var sound:Sound = new Sound();
-
function sineWavGenerator(event:SamplesCallbackEvent):void {
-
for ( var c:int=0; c<1234; c++ ) {
-
var sample:Number = Math.sin((Number(c+event.position)/Math.PI/2))*0.25;
-
sound.samplesCallbackData.writeFloat(sample);
-
sound.samplesCallbackData.writeFloat(sample);
-
}
-
}
-
sound.addEventListener("samplesCallback",sineWavGenerator);
-
sound.play();
2. New Text Engine + Text Layout Components: Acceso de bajo nivel a un nuevo motor de renderizado de texto que permite crear componentes de texto totalmente personalizados. Junto con el motor se han proporcionado algunos componentes AS3 que hacen uso de él.
3. File Reference runtime access: Posibilidad de cargar y guardar archivos del sistema de archivos del usuario en el Flash Player (sin necesidad de AIR). No he leído acerca de esto pero seguro deben haber implicaciones en cuanto a politicas de seguridad...
Hay más cosas que se pueden consultar en las release notes, como por ejemplo un nuevo tipo llamado Vector que es parecido a Array pero en el que todos los elementos deben ser del mismo tipo, los efectos 3D nativos que permiten de forma sencilla añadir, animar o transformar elementos 2D en un mundo pseudo 3D....
Una release realmente interesnte!
» Leer más, comentarios, etc...
Arragonán
Entrevista en el Periódico de Aragón
Mayo 15th, 2008
Hoy se ha publicado una pequeña entrevista en el periódico de aragón que me hizo Daniel Torres Burriel, para la columna semanal que escribe sobre blogueros aragoneses.
La verdad es que me costó mucho dar una explicación sobre qué es Grails y qué voy a hacer en el Summer of Code para un periódico, para que quien lo leyera al menos se hiciera una mínima idea (no se si lo he conseguido).
Por otro lado, parece que al final me han descubierto el porqué de que este blog se llame arragonán
, quien quiera saber más en la wikipedia hay bastante información sobre el dialecto ribagorzano.
PD: Sí, lo sé, esto es autobombo
» Leer más, comentarios, etc...
soft·in·spain
¿Que es “metroo”?
Mayo 15th, 2008
Pues no tengo ni idea, dicen que es una web 2.0, tienen videos promocionales, pero poco más se sabe.

Eso si, han lanzado una promoción en la que he picado, por poner el cuadro que puedes ver en la parte superior izquierda del blog y si alguien hace clic el día en que se lance, se apunte a su promoción y resulte ser el primero (muchas cosas), esa persona y yo ganaremos un iPod. Así que ya sabes, si entras en este blog, no te olvides de hacer clic en el cuadro de metroo
Veremos de que se trata la nueva web de “Alianzo”.
» Leer más, comentarios, etc...
MadeInFlex
Flash Player 10 Beta
Mayo 15th, 2008
Ya podéis descargar la primera beta del Flash Player 10. Esta nueva release conocida como "Astro" incorpora multitud de novedades. Algunas de ellas son : Nueva API 3D, Filtros personalizados a través de Adobe Pixel Blender (antes conocido como Hydra), Nuevo motor de Texto y componentes de layout, Mejoras en el manejo del color, Nuevo tipo de datos Vector, Nuevo protocolo RTMFP, Nuevo codec de Audio Speex, Soporte para Ubuntu y mil cosas más
» Leer más, comentarios, etc...
Variable not found
Chuleta de jQuery 1.2 en PDF
Mayo 14th, 2008
He descubierto una nueva chuleta, esta vez de la mano del diseñador y desarrollador web G. Scott Olson, que publicó hace unos meses la jQuery 1.2 Cheat Sheet.
Además de seguir tapando huecos en la pared, nos valdrá para tener a mano una referencia rápida (muy rápida) de jQuery, donde encontraremos funciones, selectores, eventos, métodos de manipulación, efectos y utilidades de esta magnífica librería javascript.
Publicado en: www.variablenotfound.com.
» Leer más, comentarios, etc...
Navegapolis
5 niveles de agilidad
Mayo 14th, 2008
B. Crosby en su libro "Quality is Free" (1979) definió l a Quality Management Maturity Grid" (QMMG) para determinar el grado de desarrollo y asentamiento de los procesos de una organización en un rango de cinco escalones que denominó:
1.- Incertidumbre
2.- Despertar
3.- Aclaración
4.- Sabiduría
5.- Certeza
Es el concepto que tomó CMM / CMMI para definir sus cinco niveles de madurez, y que empleado para representar, no la dimensión de la organización en madurez de procesos, sino la dimensión en agilidad se podría esbozar como algo así:
» Leer más, comentarios, etc...
Picando Código
Uptime previo a la entrega del anteproyecto
Mayo 14th, 2008
fernando@nando-debian:~$ uptime
14:12:18 up 17:50, 1 user, load average: 1.41, 0.92, 0.49
» Leer más, comentarios, etc...
Picando Código
Anteproyectoooooo…
Mayo 14th, 2008
Bueno, mi ausencia se debe al anteproyecto de la carrera. La entrega es HOY.
Tenemos un mini video grabado de anoche. Dormimos como 3 horas igual.
Tómenlo como quieran, yo lo veo como una señal, en este momento el número de páginas de la documentación es de: 42!
No olviden llevar una toalla!
» Leer más, comentarios, etc...
Pensamientos ágiles
insideApps: el hermano pobre de Wily Introscope
Mayo 14th, 2008

Visitando TheServerSide he visto anunciado el lanzamiento de una herramienta que a simple vista podría pasar desapercibida, pero que cuando nos ponemos a leer un poco más sobre ella parece realmente interesante.
Se trata de insideApps de la empresa determyne, que como anuncian en TheServerSide, lo han lanzado como Open Source con licencia LGPL (aunque también tienen una versión comercial).
Con el paso de los años me he dado cuenta que una de las ventajas más importantes de Java sobre otras plataformas, y que normalmente escapa a toda comparativa, es su capacidad de monitorización. Que una plataforma te proporcione ayudas para los desarrollos y que convierta el desarrollo de aplicaciones en una cosa de niños es importante, pero casi es más importante el que la plataforma ofrezca visibilidad y transparencia sobre todo lo que está pasando detrás de los bastidores, y ahí es donde Java con APIs como Attach permiten que cualquiera cree un agente que se enlaza con la máquina virtual y que te permite hacer cosas cmo las que hace insideApps, es decir recoger información, enviarla a un nodo centralizado que la agrupa y consultar más tarde dicha información a através de una consola web. 
No he probado insideApp seriamente, simplemente he lanzado su demo, y la verdad es que parece realmente interesante. El año pasado os hablaba sobre Wily Introscope, que es una herramienta potentísima, pero que requiere también una buena cantidad de información, ya que nosotros tenemos que decirle específicamente a Wily lo que queremos que monitorice. Por el contrario, el planteamiento de insideApp es diferente, ya que prometen que simplemente es conectar esta herramienta e insideApp se encarga de detectar la topología de tu aplicación y de mostrar como se van comportando las diferentes transacciones, sin tener que configurar nada. 
Jugando con la demo te das cuenta de que la aplicación no es tan espectacular como Introscope, y no te da tanta información, pero bueno al ser Open Source no cuesta nada descargársela y darle una oportunidad a ver que es capaz de mostrarnos sobre nuestras aplicaciones.
Si alguien la prueba, me encantaría leer vuestros comentarios (y si no también).
» Leer más, comentarios, etc...
niko's mini factory
Links for 2008-05-13 [del.icio.us]
Mayo 14th, 2008
- impala
Impala is a dynamic module framework for Java enterprise application development. Impala builds on the Spring Framework to provide a genuinely modular, highly productive environment for web-based applications.
» Leer más, comentarios, etc...
Cerebro en la Sombra
Cliente IRC online en Flex en colaboración con Irc-Hispano
Mayo 12th, 2008
Ayer lunes entró en producción uno de nuestros proyectos más ambiciosos junto a Irc-Hispano, la red de chat más grande e importante del mundo hispanohablante. Se puede acceder a nuestra aplicación desde aquí.
Hacía muchos años que queríamos algo así pero no existía la tecnología necesaria. Los que usamos Internet desde hace muchos años, en mi caso desde 1994, sabemos que antes de que existiese el Messenger ya estaba el IRC, el chat de toda la vida. El problema era que se necesitaban programas concretos para utilizarlo (Mirc) y después había que saber configurarlo y tener unas nociones básicas (servidores, nicks, canales, kick, ban, join…). Muy complicado para el usuario no experto. Así apareció a finales de los 90 la probablemente mayor utilidad de los applets de Java: el cliente IRC online. Ahora los usuarios ya no necesitaban conocimientos ni instalarse nada, simplemente accedían a la web, ponian su nick, el canal donde querían chatear, y a “relacionarse”. Incluso aparecieron clientes IRC en HTML, muy útiles pero sin las opciones de usabilidad de las otras.
La idea era muy buena, pero nadie había contado con los problemas asociados: necesidad de la máquina virtual de Java, lentitud, pesadez, etc. Los usuarios no tenían más que problemas.
Corría entonces el año 2002 cuando se nos ocurre hacer lo mismo pero en Flash, una tecnología presente en la mayoría de navegadores y con una implantación mucho mayor que la de Java. Nos pusimos a investigar y nos llevamos una gran decepción, no había forma de comunicarse con un servidor IRC estandar, en aquél momento Flash sólo disponía de xmlsocket, que permitía conectarse a hosts remotos pero siguiendo unas especificaciones especiales.
Todo estaba perdido hasta 2006. En junio de este año Adobe (que ya había absorvido a Macromedia) lanzaba Flex2 y junto a él la versión 9 de Flash Player con la funcionalidad más esperada por nosotros: la posibilidad de crear sockets binarios. Con esto ya se podían hacer en Flash clientes pop/smtp, ftp y, por supuesto, IRC. Esto marcó un antes y un después y nos pusimos de inmediato a planificar nuestro sueño. Tardamos más de seis meses en meternos de lleno en el proyecto puesto que ya estábamos trabajando en otros.
Desde el primer día tuvimos que comenzar a pelearnos con el RFC del protocolo IRC, fundamental para conocer el funcionamiento del sistema ya la sintaxis de todos los mensajes de ida y vuelta con el servidor. Una vez tuvimos el núcleo básico fue relativamente sencillo construir toda la interfaz de usuario sobre él, creando los comandos y acciones así como los eventos de respuesta. El primer problema era que había muchas opciones distintas, así que fuimos fijando prioridades y trabajando sobre ellas.
Cuando teníamos una versión básica pero funcional y debido a las políticas de seguridad de la máquina virtual Flash, nos pusimos en contacto con Irc-Hispano y desde el primer momento les encantó la idea, los planes y nuestro prototipo, con lo que fue sencillo llegar a un acuerdo que beneficiase a ámbas partes. Mientras nosotros desarrollábamos, la gente de Irc-Hispano se ocupaba del testing.
Hablando ya técnicamente, y aunque esté mal que yo lo diga, se ha hecho un trabajo impresionante exprimiendo toda la potencia de Flex. Hemos conseguido integrar bastantes cosas que a simple vista son casi imposibles de utilizar en Flex, como los smileys en un área de texto, o los colores de fondo. Documentándonos por aquí y por allí y viendo lo que habían conseguido otros conseguimos adaptar ciertos sistemas a nuestras necesidades quedando el conjunto francamente bien.
Desde el primer momento tuvimos claro que la única forma de conseguir sacar una aplicación de este tipo era usando técnicas de desarrollo ágiles, y así lo hicimos, preparando periódicamente versiones funcionales de lo que hubiese y poniéndola a disposición de los usuarios para que nos aportasen el feedback necesario, no solo de errores sino también de usabilidad y funcionalidad en general. La experiencia ha sido perfecta y todo el equipo ha salido beneficiado de este modo de trabajo, ya que se elimina automáticamente el estrés del miedo a los cambios cuando el producto está ya terminado.
Y así llegamos hasta hoy en que se lanza públicamente. Se han hecho muchas más funcionalidades de las previstas inicialmente y seguramente se irán haciendo muchas más a medida que se vaya utilizando. Por nuestra parte ha sido un esfuerzo enorme en horas de trabajo y quebraderos de cabeza para hacer y solucionar problemas sin respuesta aparente, pero el resultado ha valido la pena.
A partir de ahora esperamos ir corrigiendo bugs y añadiendo mejoras, ideas no nos faltan y seguramente habrá muchas sorpresas ;). Algún día también refactorizaremos :P.
» Leer más, comentarios, etc...
MadeInFlex
Utilización de Flex Component Kit: FLVPlayback desde Flex
Mayo 12th, 2008
Últimamente vemos, cada vez más, como el video se va introduciendo en la mayoría de los sites, llegando incluso a usarse como elemento principal del site: YouTube, Tele5 entre otras.
Flex nos aporta un componente de video para ello (VideoDisplay), pero quien lo haya utilzado, sabe que prácticamente no aporta nada. Por no traer, no trae ni la barra de progreso.
Gracias al Flex Component Kit for Flash CS3, ahora podemos utilizar el componente de video de Flash o FLVPlayback, dentro de nuestra aplicación Flex sin mucho esfuerzo.
(more...)
» Leer más, comentarios, etc...
Pensamientos ágiles
Guías de salarios en Irlanda
Mayo 12th, 2008

Hace unos días surgió una charla entre los amigos que estamos en jaiku sobre los salarios en Irlanda. Este además es un tema común en otros foros y por el que me llega algún correo, eso sí muy de vez en cuando.
El caso es que si hay gente por ahí que lea esto y esté pensando el pasar una temporada por esta isla, lo más sencillo para coger una idea sobre los salarios que se paga por aquí es echarle un vistazo a una de las múltiples guías que publican periódicamente las empresas de contratación y los portales de empleo. Os dejo unos enlaces:
IT Salary Guide 2008
Manpower Salary Guide 2007
Premier Salary Guide 2008
IrishJobs Salary Survey 2008
Montones de Salary Surveys no IT
Como veréis, el rango de salarios es muy amplio, y realmente depende de lo que quieras hacer y de la experiencia que tengas. Por ahora, no se está notando demasiado la crisis, aunque sí que es cierto que las empresas multinacionales han tardado más de lo normal en empezar la contratación de personal, ya sabéis, por eso de ver como iban las cosas por el otro lado del charco.
Si os queréis fiar de alguna, probablemente yo lo haría de la de Irishjobs. En las de los recruiters he detectado unos salarios un poco más bajos, quizás porque a fin de cuentas no pueden reflejar su márgen que suele ser un 15%-25%.
Pues nada, espero que os sea útil.
» Leer más, comentarios, etc...
Pwned's blog
Capacitación On line en Microsoft Technet
Mayo 12th, 2008
Via MSP Ivana Tilca me entero de los cursos de capacitacion que ofrecen las personas de Microsoft TechNet de forma totalmente gratuita.
Los cursos de capacitacion forman parte de un serie de eventos realizados en el Lanzamiento de {Heroes}AGENDA
Key note: Bienvenida con breve introducción y paseo de la nuevas funcionalidades técnicas de Windows Server 2008, Visual Studio 2008 y SQL Server 2008.
Windows Server Core: Introducción a Windows Server 2008.
Windows Server Virtualización: Administrando la infraestructura de TI; virtualización de la plataforma para nivelar las inversiones.
Windows Server Seguridad: Evitando que la información se filtre; seguridad en la plataforma para trabajar con confianza.
Windows Server Web: Respondiendo a nuevas demandas en mi plataforma Web; optimización de la plataforma Internet para crecer.
Windows Server 2008/Vista: Windows Server y Vista. La mejor combinación.
SQL track 1: Administración en SQL 2008.
SQL track 2: Aplicaciones de Misión Crítica sobre SQL 2008.
Creando la siguiente generación de aplicaciones Web con mayor productividad. Diseñador HTML & CSS, AJAX, JS Debugging & Intellisense.
Herramientas para asegurar la calidad utilizando Visual Studio Team System. Métricas de código, cobertura de código, Testing en VS2008 e Integración de código.
Aplicaciones con interfaces familiares bajo Microsoft Office System. Ribbons Designer, Custom Task Pane, Outlook Form Regions, Workflows en SharePoint.
Clientes ricos ocasionalmente conectados. Desarrollo con WPF. Synchronization Services.
Accediendo a múltiples fuentes de datos con LINQ. Características de LINQ, combinando datos de diferentes fuentes.
Silverlight 2: Iluminando la Web. VS 2008, nuevas características en Silverlight 2.
Conectando al mundo con .NET Framework 3.5: WCF + WF para mejores resultados. Syndication Services e integración WCF+WF.
Extendiendo Visual Studio 2008. Demostraciones de extensiones de Visual Studio. Resumen de ecosistema: Shell & GAT/GAX.
» Leer más, comentarios, etc...
Pwned's blog
Extraccion de informacion de M-P-3
Mayo 12th, 2008
En primera, dejenme decirle que no tenia ni la mas remota idea de que tipo de informacion podrian mantener archivos binarios como los MP3, es decir, informacion como el titulo de la cancion, el album al que pertenecen asi como el numero de track, en principio me base en una clase algo sencilla y que funcionaba bastante bien pero solo con algunos MP3's y llegue a la conclusion de que no todos estaban estructurados o codificados de la misma manera, ya que en algunos extraia la informacion como debia, y en otros simplemente no extraia nada.
<?php
require('id3.class.php');
$myId3 = new ID3("C:\wamp\www\mp3\evoriganywhere.mp3");
$myId3->getInfo();
echo $myId3->getAlbum();
echo "<hr>";
echo $myId3->getTitle();
?>
La clase que realmente me resolvio el problema se llama getID3 y esta bastante bien documentada, con ejemplos practicos del uso de la clase y sobre todo muy facil de leer el codigo fuente.
Un saludo y a codificar MP3's.
» Leer más, comentarios, etc...
Arragonán
Podcast de Spring Hispano
Mayo 12th, 2008
Desde Spring Hispano, la comunidad hispana de Spring framework, han publicado su primer podcast alrededor de este framework.
Interesante iniciativa, sobre todo por la poca cantidad de contenido en español que hay sobre este framework.
Si te interesa Spring, también en los podcast de javaHispano hay algunos en los que se habla de spring.
» Leer más, comentarios, etc...
Picando Código
Resúmen semanal del Foro - Semana 4
Mayo 12th, 2008
Ya vamos 4 semanas en el foro, el próximo jueves 15 cumple un mes en línea!
Las novedades de la semana son:
- Fue arreglado un problema con permisos en el foro de Recursos libres, dando permisos a todos los usuarios.
- Ya tenemos un par de posts en Recursos Libres por parte de dmu:
- Sugar - CRM - vendría bien cualquier aporte de alguien que haya tenido experiencia con éste programa.
- Programa libre para gestión de cámaras IP - También pregunta por algún programa con éstas características, aparte de ZoneMinder.
- En el foro Case Else (Off-Topic):
- Diego nos cuenta del ataque de un Trol en su blog, en el post:
Vixta, Linux con color a MS Vista
Donde seguimos comprobando que hay gente que defiende lo indefendible, y no tiene nada mejor que hacer.
- Diego nos cuenta del ataque de un Trol en su blog, en el post:
- En el foro Ayuda con GNU/Linux, se han encontrado algunas soluciones:
- Pablopolus, un nuevo miembro, consiguió ayuda con un problema de conexión a ADSL en Ubuntu 8.04.
- martinciyo pudo solucionar su error de Señal fuera de rango en Ubuntu 7.04, gracias a xanthus.
Por último, comentar que publicamos un tema especial para los juegos Warcraft 3 y Starcraft. Dada la popularidad de ambos juegos entre los miembros del foro (tanto en Windows como en GNU/Linux bajo Wine), se creó ese tema a modo de “troubleshooting” para poder correrlo en Wine, y como punto de reunión para organizar Lan Parties por internet:
WARCRAFT 3 y STARCRAFT
Por último, invitar a todos a unirse al foro. Nuevos usuarios se unen regularmente, y mantenemos un ambiente muy ameno de cooperación y diversión. Habemos usuarios principiantes, intermedios, y más. Toda experiencia, conocimiento, iniciativa y demás es bienvenida:
PicandoCódigo - UG Foro
» Leer más, comentarios, etc...
Variable not found
Retornando ActionResults en acciones ASP.NET MVC
Mayo 11th, 2008
Scott Guthrie, en el anuncio de la publicación en Codeplex de la actualización del código del framework MVC del pasado mes de abril, comentó que uno de los cambios en los que estaban trabajando era en la modificación de las acciones de un controlador, haciendo que éstas pasaran a retornar un objeto del tipo ActionResult.
Como recordaréis, hasta ese momento las acciones no tenían tipo de retorno, pero han replanteado el diseño para hacerlo más flexible, testable y potente. Así, pasamos de definir las acciones de esta forma:
public void Index()
{
RenderView("Index");
} a esta otra:
public ActionResult Index()
{
return RenderView();
} En el código anterior destacan dos aspectos. En primer lugar que la llamada a
RenderView() no tiene parámetros; el sistema mostrará la vista cuyo nombre coincida con el de la acción que se está ejecutando (Index, en este caso). En segundo lugar, que la llamada a RenderView() retorna un objeto ActionResult (o más concretamente un descendiente, RenderViewResult), que será el devuelto por la acción.De la misma forma, existen tipos de ActionResult concretos para retornar el resultado de las acciones más habituales:
RenderViewResult, retornado cuando se llama desde el controlador aRenderView().ActionRedirectResult, retornado al llamar aRedirectToAction()HttpRedirectResult, que será la respuesta a unRedirect()EmptyResult, que intuyo que será para casos en los que no hay que hacer nada (!), aunque todavía no le he visto mucho el sentido...
Además de las citadas anteriormente, una de las ventajas de retornar estos objetos desde los controladores es que podemos crear nuestra clase, siempre heredando de
ActionResult, e implementar comportamientos personalizados.Esto es lo que ha hecho el genial Phil Haack en dos ejemplos recientemente publicados en su blog.
El primero de ellos, publicado en el post "Writing A Custom File Download Action Result For ASP.NET MVC" muestra una implementación de una acción cuya invocación hace que el cliente descargue, mediante un download, el archivo indicado, en su ejemplo, el archivo CSS de su sitio web:
public ActionResult Download()
{
return new DownloadResult
{ VirtualPath="~/content/site.css",
FileDownloadName = "TheSiteCss.css"
};
}
La clase
DownloadResult una descendiente de ActionResult, en cuya implementación encontraremos, además de la definición de las propiedades VirtualPath y FileDownloadName, la implementación del método ExecuteResult, que será invocado por el framework al finalizar la ejecución de la acción, y donde realmente se realiza el envío al cliente del archivo, con parámetro content-disposition convenientemente establecido:public class DownloadResult : ActionResult
{
public DownloadResult()
{
}
public DownloadResult(string virtualPath)
{
this.VirtualPath = virtualPath;
}
public string VirtualPath { get; set; }
public string FileDownloadName { get; set; }
public override void ExecuteResult(ControllerContext context)
{
if (!String.IsNullOrEmpty(FileDownloadName)) {
context.HttpContext.Response.AddHeader("content-disposition",
"attachment; filename=" + this.FileDownloadName)
}
string filePath = context.HttpContext.Server.MapPath(this.VirtualPath);
context.HttpContext.Response.TransmitFile(filePath);
}
}
El segundo ejemplo, publicado en el post "Delegating Action Result", vuelve a demostrar otro posible uso de los ActionResults creando un nuevo descendiente,
DelegatingResult, que puede ser retornado desde las acciones para indicar qué operaciones deben llevarse a cabo por el framework.El siguiente código muestra cómo retornamos un objeto de este tipo, inicializado con una lambda:
public ActionResult Hello()
{
return new DelegatingResult(context =>
{
context.HttpContext.Response.AddHeader("something", "something");
context.HttpContext.Response.Write("Hello World!");
});
} Como veremos a continuación, el constructor de este nuevo tipo recibe un parámetro de tipo
Action<ControllerContext> y lo almacenará de forma local en la propiedad Command, postergando su ejecución hasta más adelante; será la sobreescritura del método ExecuteResult la que ejecutará el comando:public class DelegatingResult : ActionResult
{
public Action<ControllerContext> Command { get; private set; }
public DelegatingResult(Action<ControllerContext> command)
{
this.Command = command;
}
public override void ExecuteResult(ControllerContext context)
{
if (context == null)
throw new ArgumentNullException("context");
Command(context);
}
}
Puedes ver el código completo de ambos ejemplos, así como descargar proyectos de prueba en los artículos originales de Phil Haack:
Por último, recordar que todos estos detalles son relativos a la última actualización de la preview de esta tecnología y podrían variar en futuras revisiones.
Publicado en: www.variablenotfound.com.
» Leer más, comentarios, etc...
Blog de Sergio Álvarez Fernández
HippoHX
Mayo 11th, 2008
Llega de la mano de Zarate un nuevo proyecto para hacer aplicaciones de escritorio en Flash. Cómo el mismo dice “Técnicamente: APIs + herramientas encima de SWHX“.

Podéis estar atentos a la web del proyecto, o al propio blog de Zarate donde de momento, además de descargarlo, podeís ojear las FAQs y los tutoriales.
Un proyecto a tener en cuenta, viniendo de quien viene.
Saludos! ![]()

