Arragonán
Generar JSON con Groovy 1.8
Septiembre 13th, 2011 - [Enlace local]
Una de las muchas novedades que vinieron con Groovy 1.8 fue el soporte nativo para generar y leer JSON.
Llevo un par de días estando trabajando con este soporte JSON para reunir datos importados de distintas fuentes, y luego poder mantener los datos resultantes en un formato estructurado. Principalmente porque no todos son necesarios a día de hoy, pero a futuras se puede echar mano de ellos.
Después de hacer todo lo necesario unificar todos los datos en un map en memoria, para persistir el JSON, he hecho uso de JsonBuilder.
Sería algo así:
def builder = new groovy.json.JsonBuilder()
builder.data(){
for (item in items){
"${item['name']}"() {
zone(item['zone'])
position(item['position'])
....
....
}
}
}
Esto lo que generaría es algo de una estructura como:
{"data":
{"name1": { "zone" : "zone1", "position": "position1", ... }}
{"name2": { "zone" : "zone2", "position": "position2", ... }}
...
...
}
Después tan sólo debía escribirlo en un fichero:
new File("path/to/file.json").write(builder.toString())
Y listo.
» Leer más, comentarios, etc...
Monocaffe
Grails and Tomcat 7 Datasource
Septiembre 12th, 2011 - [Enlace local]
This should be fast and easy. You want a shared datasource on your Tomcat 7 server, which you can change without deploying a new Grails war and that is shared between all your Grails applications on this same Tomcat server.
You have to configure your DataSource.groovy file with this:
production{
pooled = false
dbCreate = "update"
jndiName = "java:comp/env/jdbc/MyGrailsDS"
}
Generate your war, place it for deployment and go configure the conf/context.xml file on your Tomcat server.
<Resource name="jdbc/MyGrailsDS" auth="Container" type="javax.sql.DataSource" username="abc" password="abc" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/my_grails_schema"/>
Start your Tomcat 7 server and enjoy. Now you can change the database your applications point at by simply changing the configuration on the context.xml file.
» Leer más, comentarios, etc...
Variable not found
Enlaces interesantes 51
Septiembre 12th, 2011 - [Enlace local]
Estos son los enlaces publicados en Variable not found en Facebook y Twitter desde el lunes, 05 de septiembre de 2011 hasta el domingo, 11 de septiembre de 2011. Espero que te resulten interesantes. :-)
- Discriminar acciones según el nombre de los parámetros, por Pablo
Fecha: 09/09/2011 - OpenRa: clon open source del clásico Command&Conquer escrito en C#.
Fecha: 08/09/2011 - MonoDevelop 2.6 is out, by Miguel de Icaza.
Fecha: 08/09/2011 - Serie "Javascript OMGs!", by Mike Taulty.
Fecha: 08/09/2011 - How to write a small game using HTML5 and Javascript
Fecha: 08/09/2011 - Extending the ASP.NET error page (show me the SQL edition), vía Pablo Iglesias.
Fecha: 08/09/2011 - Creating Multiple Javascript Objects when using the Revealing Module Pattern, by Dan Wahlin.
Fecha: 08/09/2011 - Best Tools for Professional Javascript Development, by Joe Stagner
Fecha: 08/09/2011 - Entity Framework Code First Migrations Alpha 2 released.
Fecha: 07/09/2011 - TinyMCE HTML Text Editior & ASP.NET MVC - Setting It Up Has Become Easy With Nuget
Fecha: 07/09/2011 - NerdDinner 3.0 released with ASP.NET MVC 3.0, Razor, HTML5, jQuery Mobile, etc...
Fecha: 07/09/2011 - Adding Export Capabilities to the Razor WebGrid, by Mike Ceranski
Fecha: 06/09/2011 - SQL Server Compact Toolbox for Visual Studio 2010 now available, vía José Miguel Torres Fecha: 06/09/2011
- Model Binding: Obteniendo datos, por Luis Ruiz Pavón
Fecha: 06/09/2011 - ASP.NET vNext Series - Model Binding SelectMethods
Fecha: 06/09/2011 - ASP.NET MVC Mobile ViewEngines available on NuGet
Fecha: 05/09/2011 - Synchronisation in Parallel Loops.
Fecha: 05/09/2011 - Gestionando la memoria Cache en ASP.NET MVC, por Sebis.
Fecha: 05/09/2011 - CSS Tricks and the Alternate Universe of Graphics Primitives, by K. Scott Allen.
Fecha: 05/09/2011 - Using Lucene.NET search engine library in .NET applications.
Fecha: 05/09/2011 - Recibir resultados de una página en otra: Transferencias y Cross-page posting, por José Manuel Alarcón.
Fecha: 05/09/2011 - How to Navigate the HTML5 Video Maze.
Fecha: 05/09/2011 - Offline web applications: a working example.
Fecha: 05/09/2011 - Interesante comparación de herramientas de logging, vía Jorge Serrano.
Fecha: 05/09/2011
Publicado en: Variable not found
» Leer más, comentarios, etc...
Picando Código
Firmware Broadcom para WiFi en Debian
Septiembre 8th, 2011 - [Enlace local]
Hace poco tuve un pequeño incidente con el firmware de la tarjeta inalámbrica en mi laptop con Debian: dagobah. Mi tarjeta wireless es:
El problema que tuve fue tras una actualización del sistema. Estaba conectado a Internet a través de una red inalámbrica (metodología conocida como “pillar WiFi del vecino”) y procedí a actualizar el sistema.
Durante el apt-get upgrade, se actualizó el paquete firmware-b43-installer. Este paquete instala el firmware necesario para usar el driver del kernel b43 para los chipsets BCM4306/3 – BCM4311 – BCM4318 – BCM4321 – BCM4322.
Lo que hace este paquete tras actualizarse es descargar una versión nueva del firmware. Durante la actualización, perdí la conexión inalámbrica. Los paquetes ya se habían descargado, pero durante su posterior instalación, el paquete instalador no pudo descargar los nuevos archivos de firmware. Apagué mi computadora y decidí volver a intentar la actualización en otro momento.
Me encontré con la sorpresa al encender nuevamente la laptop de que ya no tenía el firmware. Algo estaba mal. Para encontrar la raíz del problema, supuse que podría empezar por el paquete .deb que no pudo concretar su instalación.
Revisé /var/cache/apt/archives donde se guarda el caché de paquetes descargados. Ahí encontré las dos versiones:
ls /var/cache/apt/archives/ | grep firmware -rw-r--r-- 1 root root 7340 Jun 2 05:47 firmware-b43-installer_1%3a014-4_all.deb -rw-r--r-- 1 root root 7892 Aug 3 16:32 firmware-b43-installer_1%3a014-9_all.deb
Analicé el deb y me encontré con varios archivos comprimidos, y por ahí aprendí un poco de la estructura de los paquetes .deb. Para complementar y dar un marco teórico a lo que metí mano, de Wikipedia:
Los paquetes Debian son archivos ar estándar de Unix que incluyen dos archivos comprimidos: uno que contiene la información de control y otro que contiene los datos.
Dentro del archivo control.tar.gz del .deb, me encontré el script preinst, que por el nombre, deduje se ejecuta primero en el flujo de la instalación. Mirando el código me encontré con esto:
if [ -d /lib/firmware/b43 ]; then echo "Deleting old extracted firmware..." rm -rf /lib/firmware/b43 fi
Después seguí mirando el postinst. En principio:
wget http://downloads.openwrt.org/sources/broadcom-wl-4.178.10.4.tar.bz2 tar xvjf broadcom-wl-4.178.10.4.tar.bz2 cd broadcom-wl-4.178.10.4/linux b43-fwcutter -w "$FIRMWARE_INSTALL_DIR" wl_apsta.o cd $tmp rm -rf broadcom-wl-4.178.10.4 broadcom-wl-4.178.10.4.tar.bz2 }
Y luego de un poco de código de control de versiones de firmware, versiones del kernel, proxy y demás, lo siguiente:
wget http://downloads.openwrt.org/sources/broadcom-wl-4.150.10.5.tar.bz2 tar xjvf broadcom-wl-4.150.10.5.tar.bz2 cd broadcom-wl-4.150.10.5/driver b43-fwcutter -w "$FIRMWARE_INSTALL_DIR" wl_apsta_mimo.o cd $tmp rm -rf broadcom-wl-4.150.10.5.tar.bz2 broadcom-wl-4.150.10.5
El paquete instala el firmware en el directorio /lib/firmware/b43. El error estaba en que el postinst, el script que se ejecuta al iniciar, elimina todos los archivos de firmware antiguos para dar lugar a los nuevos. Al haber perdido la conexión el postinst no pudo descargar el nuevo firmware, pero el antiguo ya había sido borrado, quedándome sin firmware para mi tarjeta de red inalámbrica.
Para solucionarlo, pensé “¿Qué haría McGyver?” y procedí a descargar el firmware en el teléfono móvil de mi padre (contaba con la suerte de que tuviera 3G) con las URLs que usa el script postinst. Luego pasé los archivos a mi computadora y seguí los pasos del postinst a mano: descomprimí y ejecuté b43-fwcutter para instalar el firmware nuevo (básicamente creo que solo descomprime los archivos .so en /lib/firmware/b43). Y listo, mi tarjeta quedó funcionando nuevamente y pude volver a conectarme
Pero la cosa no quedó ahí. Instalé el paquete reportbug, y reporté que el script de preinst eliminaba el firmware antiguo sin tener certeza de que el nuevo vaya a ser instalado. El bug fue el #638668 y quedó corregido 6 días después de haberlo reportado. Es así en el changelog quedó:
Changes:
b43-fwcutter (1:015-1) unstable; urgency=low
(...)
* Removed preinst scripts. The code is moved to postinst scripts.
In this way removing of /lib/firmware/b43* directories is only
possibile if the firmware was downloaded correctly. (Closes: #638668)
Y ese fue mi aporte al querido sistema Debian durante las vacaciones
» Leer más, comentarios, etc...
MadeInFlex
Release Candidate de AIR 3 y Flash Player 11
Septiembre 8th, 2011 - [Enlace local]
Has salido las Release Candidate de AIR 3 y Flash Player 11.
Como plato fuerte de AIR 3, tenemos las Native Extensions, que nos permitirán añadir nuevas características a nuestras aplicaciones en tiempo de ejecución.
Os dejo dos links sobre este tema para que los leáis:
» Leer más, comentarios, etc...
Ingenieria de Software / Software Engineering / Project Management / Business Process Management
Sure Step Methodology for Microsoft Dynamics Applications
Septiembre 7th, 2011 - [Enlace local]
Para todos aquellos partners que se dedican a implementar aplicaciones de Microsoft Dynamics ahora tenemos la versión online de Sure Step Methodology
https://mbs2.microsoft.com/Surestep/default.aspx?wa=wsignin1.0
» Leer más, comentarios, etc...
Picando Código
Taller de Ruby On Rails en Montevideo
Septiembre 7th, 2011 - [Enlace local]
Como plato de entrada a la RubyConf Uruguay 2011, se organiza un taller de Ruby On Rails en Montevideo. De esta manera se elimina la pobre y débil excusa para no ir a la RubyConf de “no sé Ruby”.
La información a continuación:
¿Cuándo?
¿Dónde? Boulevard España 2529
Este primer taller sera gratuito y tratará sobre Ruby y Ruby on Rails. Haremos una introducción al lenguaje de programación Ruby en la mañana y una introducción a Ruby on Rails en la tarde. Todo será a base de ejercicios y de meter manos en código.
Para realizarlo hemos sido inspirados principalmente por el trabajo de RailsBridge.
Hay cupo por lo que es importante registrarse con tiempo. Ante dudas y comentarios contactar taller arroba rubyconfuruguay.org.
Nada mejor que ensuciarse un poco las manos picando código para aprender un nuevo lenguaje. Y Ruby y Rails son ideales para esto, ya que uno sale andando en muy poco tiempo. No desaprovechemos esta oportunidad, a registrarse.
» Leer más, comentarios, etc...
Variable not found
Membership, roles y profiles sobre SQL Compact con ASP.NET Universal Providers
Septiembre 7th, 2011 - [Enlace local]
Hace un par de días comentaba la aparición de Universal ASP.NET Providers, un componente que incluye proveedores de membership, roles, profiles y estado de sesión capaces de funcionar con todas las versiones de SQL Server desde la 2005, ediciones express, SQL Azure y SQL Compact 4.0, y utilizables en cualquier aplicación ASP.NET, ya sea Webforms o ASP.NET MVC.
En este post vamos a ver un ejemplo ómo podemos utilizar este nuevo componente para montar en pocos segundos el sistema de membresía, roles y perfiles de una aplicación web utilizando SQL Compact Edition, algo que por otra parte no es una idea nada descabellada para sitios de pequeño calibre. Recordad que esta edición de SQL Server no requiere un servicio funcionando en el servidor (se ejecuta en el mismo proceso que la aplicación web), por lo que puede resultar muy apropiada para su uso en pequeños sitios donde no se justifica la implantación de sus hermanas mayores (express o superiores).
1. Instalamos el tooling en Visual Studio 2010 SP1
Lo primero que vamos a hacer es instalar las herramientas de SQL Compact Edition para el Visual Studio. Éstas las podéis descargar desde este enlace, aunque antes debéis aseguraros de tener instalado el Service Pack 1 de Visual Studio.Esto no es estrictamente necesario si no pensamos crear o acceder a la base de datos desde Visual Studio, aunque en cualquier caso es recomendable para poder echar un vistazo a la estructura y datos más adelante.
2. Creamos una aplicación web
Creamos ahora una aplicación Web desde Visual Studio. No importa si es ASP.NET MVC o WebForms: en la pila de tecnologías estamos un nivel por abajo, directamente jugando con características de ASP.NET, que, como sabéis, son comunes a ambos frameworks.3. Descargamos de Nuget los componentes que necesitamos
Para lograr nuestros objetivos sólo necesitaremos dos paquetes:- el proveedor de datos SQL CE, que nos permitirá conectarnos a esta base de datos y acceder a su información ya sea utilizando directamente las clases de ADO.NET como Entity Framework,
- el paquete de Proveedores Universales para ASP.NET, que creará la abstracción sobre el origen de datos concreto y nos permitirá trabajar virtualmente con cualquier motor relacional (aunque, como comentaba en el post anterior, por las pruebas que he hecho de momento no sea así).
PM> Install-Package System.Web.Providers [...] Successfully installed 'System.Web.Providers 1.0.1'. PM> Install-Package SqlServerCompact [...] Successfully installed 'SqlServerCompact 4.0.8482.1'.
Si en cambio sois más de utilizar el GUI, podéis buscar en la galería los paquetes “ASP.NET Universal Providers” y “SqlServerCompact”:
4. Modificamos la cadena de conexión
El proceso de instalación del paquete de proveedores habrá modificado nuestro web.config, dejándolo listo para su utilización con SQL Express. Como no es esto lo que queremos, acudimos a este archivo y modificamos la cadena de conexión usada por los proveedores:<connectionStrings>
<add name="DefaultConnection"
connectionString="Data Source=|DataDirectory|\Datos.sdf;"
providerName="System.Data.SqlServerCe.4.0" />
</connectionStrings>
Observad que estamos indicando que el proveedor de datos es SqlServerCe (lo hemos descargado previamente usando Nuget), y que la base de datos se llamará datos.sdf y estará ubicada en la carpeta App_Data del proyecto.
De forma opcional, podemos aprovechar el momento para limpiar un poco el web.config, eliminando líneas que vienen en la plantilla de proyectos por defecto, pero que ya no vamos a necesitar.

5. ¡Y esto es todo!
Pues sí, eso es todo lo que necesitamos hacer. En este momento ya tenemos configurados los proveedores de membresía, roles y perfiles. De hecho, dado que las plantillas de proyecto tanto para MVC como para Webforms ya incluyen un sistema de autenticación y registro básico, podemos directamente ejecutarla y utilizar sus funcionalidades para registrarnos y autenticarnos en el sistema:
Asimismo, dado que se están utilizando mecanismos estándar en el framework, podemos utilizar la propia herramienta de gestión de ASP.NET para crear los usuarios, asignarles funciones o definir reglas de acceso por carpetas. Como ya sabéis, esta utilidad viene incluida de serie en el framework, y podemos acceder a ella a través del menú “Proyecto > Configuración de ASP.NET” de Visual Studio o pulsando sobre un icono que aparece en el explorador de soluciones.Eso sí, para comenzar a definir roles y asignarlos a usuarios es necesario activar previamente el proveedor de roles (
DefaultRoleProvider), ya sea desde la herramienta de administración, bien añadiendo en el nodo <RoleProvider> del web.config el atributo enabled="true".De la misma forma, podemos activar la persistencia del estado de sesión sobre la misma base de datos estableciendo el atributo
mode="Custom" en el nodo <sessionState> (por defecto está configurado como "InProc" ).En cualquier caso, una vez accedamos a alguno de estos proveedores, podremos observar que se ha creado de forma automática la base de datos llamada Datos.sdf en la carpeta App_Data. Por supuesto, también podríamos haber indicado el nombre de un base de datos existente (creada por ejemplo desde el mismo VS) y el sistema habría creado únicamente las tablas e índices usados por los proveedores sin afectar al resto de objetos.
Recapitulando: si ya tenemos el tooling y el proveedor de datos para SQLCE en un proyecto, lo único que tenemos que hacer es, en primer lugar, descargar a través de Nuget el paquete de Proveedores Universales de ASP.NET, y a continuación ajustar la cadena de conexión en el web.config. Más sencillo, imposible.
He dejado en Skydrive una solución de ejemplo con un proyecto Webforms y otro MVC para que podáis probarlo de forma sencilla. En la base de datos hay un usuario creado (jmaguilar con clave jmaguilar, aunque podéis registraros desde las propias aplicaciones); para que podáis ver cómo se comporta el sistema de autenticación y membresía, no se permite el acceso a las páginas “Acerca de” a usuarios no identificados previamente.
Publicado en: Variable not found.
» Leer más, comentarios, etc...
Najaraba.com: Software libre, metodologías ágiles y más.
Visual Management Open Space 2011, mi resumen
Septiembre 6th, 2011 - [Enlace local]
De nuevo tuve la suerte de poder asistir a un Open organizado en Decide por Raquel Laina -esta chica se merece otro aplauso ;) - y esta vez era para hablar sobre la gestión visual. No tenía muy claro el alcance del tema, pero se refería a lo siguiente: Visual Thinking Visual Management Información visual El tema abarca bastante más allá de los tablones que usamos en metodologías ágiles, y podía
» Leer más, comentarios, etc...
Variable not found
ASP.NET Universal providers
Septiembre 6th, 2011 - [Enlace local]
Poco antes de verano comentábamos de pasada la aparición de su versión alfa, y ya desde mediados de agosto tenemos aquí la versión final de ASP.NET Universal Providers, un componente que incluye proveedores de membership, roles, profiles y estado de sesión capaces de funcionar con todas las versiones de SQL Server desde la 2005, ediciones express, SQL Azure y SQL Compact 4.0, y utilizables en cualquier aplicación ASP.NET, ya sea Webforms o ASP.NET MVC.
Lo interesante que tiene el ensamblado System.Web.Providers, que así es como se distribuye el componente, es que podemos modificar el motor de persistencia sobre el que trabajan simplemente tocando la cadena de conexión en el web.config, evitándonos el tener que crear proveedores en cuanto nos salíamos de los provistos por defecto en la plataforma (SQL Server). O en otras palabras, tenemos aquí un proveedor para gobernarlos a todos ;-)
Como no podría ser de otra forma, la distribución del paquete de proveedores se realiza a través de Nuget, por lo que su instalación y puesta en marcha es sencillísima.

Una vez descargado e instalado el paquete “ASP.NET Universal Providers”, además de añadirse el ensamblado System.Web.Providers y sus correspondientes referencias al proyecto, veremos que en el web.config se ha incluido una cadena de conexión, llamada “DefaultConnection”, que es la que será utilizada por estos nuevos proveedores. Por defecto podremos comprobar que esta conexión está configurada para trabajar sobre una instancia de usuario de SQL Express, pero simplemente modificándola podremos hacer que funcione sobre ediciones superiores de SQL Server, SQL Azure o SQL Compact.
Un detalle importante es que, para evitar daños colaterales, el proceso de instalación no elimina la cadena de conexión previa (esa que vemos con la denominación “ApplicationServices”), ni la configuración de proveedores previa: simplemente añade el nuevo proveedor y lo establece por defecto, por lo que podemos eliminar tranquilamente esas configuraciones que ya no utilizamos.
Una vez configurada correctamente la cadena de conexión (“DefaultConnection”) ya no será necesario tocar nada más; el sistema se encargará de crear las tablas necesarias para almacenar la información de usuarios, roles, perfiles, e incluso para hacer persistente el estado de sesión (si utilizamos el proveedor incluido en este componente); además, si no existe la base de datos, será capaz de crearla automáticamente si tenemos permisos para ello. Como nota negativa, seguro que habéis pensado que ya que es posible modificar el proveedor de datos a nivel de archivo de configuración, parece lógico que podamos utilizar cualquier origen de datos disponible, ¿verdad? Pues no necesariamente. He probado con el conector MySQL y no ha habido forma de echar a andar estos proveedores debido a un problema de incompatibilidad del tipo “image” en los metadatos. No sé si se debe a limitaciones del Universal Provider, o bien se trata de algún problema en la implementación del conector MySQL.
Sin duda, es un avance interesante que puede ahorrarnos bastante tiempo en esa tarea tan molesta que es montar la infraestructura de membresía y seguridad de nuestras aplicaciones. Y además, como comentaba Hanselman en su momento, estos proveedores es posible que formen parte de la próxima versión del framework, por lo que habrá que estar atentos a ellos.
En un próximo post os mostraré un ejemplo práctico, cómo utilizar este componente para poner en marcha el sistema de membership, roles y perfiles sobre una base de datos SQLCE.
Publicado en: Variable not found.

» Leer más, comentarios, etc...
Cuaderno de software
¡Nueva temporada de Katayunos! ¡Apadrina a un Katayuner!
Septiembre 5th, 2011 - [Enlace local]
Que ganas teníamos de anunciar el comienzo de la nueva temporada de Katayunos. Hay una serie de jugosas novedades.
- El primer Katayuno será el sábado 24 de Septiembre, será de introducción y se hará simultaneamente en Vitoria, Bilbao, Pamplona y San Sebastián.
- Al ser una introducción, habrá una pequeña chapa previa explicando los principios del TDD…
- La web de Katayunos está sin actualizar, pero pronto se podrá ver en qué ciudades y fechas hay Katayuno, en qué lugar y con qué temática….
- Si es tu primera vez, estaremos encantados de sentarnos contigo y explicarte en qué consisten las Code Katas.
- Si no es tu primera vez… ¡Apadrina a un Katayuner! Que… ¿Qué? Que te traigas a alguien que no haya venido nunca y al que le pique un poco el gusanillo.
- Los Katayunos, en la zona norte al menos y tras el de introducción, se harán de manera más o menos rotatoria entre las cuatro capitales (la forma exacta de la rotación no está definida todavía, aunque probablemente no se hará en un sólo lugar, sino en dos simultaneamente).
- Los Katayunos se harán más o menos cada seis semanas, en lugar de las cuatro que se venían haciendo.
- El anfitrión del Katayuno decidirá qué Kata-Koans-Whatever se ejecuta durante las sesiones…
» Leer más, comentarios, etc...
Variable not found
Enlaces interesantes 50
Septiembre 4th, 2011 - [Enlace local]
Para abrir la temporada, ahí van los enlaces publicados en Variable not found en Facebook y Twitter desde el lunes 29 de agosto de 2011 hasta el domingo, 04 de septiembre de 2011.
Espero que te resulten interesantes. :-)
- Strongly Typed Data Controls, No más Eval y Bind!, por Luis Ruiz Pavón.
Fecha: 02/09/2011 - Esto lo haces tú en dos días, por Jorge Serrano
Fecha: 01/09/2011 - Moving Beyond Enumerations.
Fecha: 01/09/2011 - T4 Metadata and Data Annotations Template. ASP.NET MVC
Fecha: 01/09/2011 - The 4 Characteristics of Highly Effective Developers (vía Lluis Franco)
Fecha: 01/09/2011 - Detectar cambios en los datos en SQL Server, por Rodrigo Corral
Fecha: 1/09/2011 - Asynchronous scalable web applications with real-time persistent long-running connections with SignalR, por Scott Hanselman.
- Etiquetas autocerradas y tipo de contenido en XHTML y HTML5.
Fecha: 01/09/2011 - Smart Tasks y generación de eventos de controles desde la vista HTML, por Luis Ruiz Pavón
Fecha: 01/09/2011 - Sensacionales las novedades para trabajar con ISOs y VHDs en Windows 8 (vía CampusMVP)
Fecha: 01/09/2011 - HTML Editing Smart Tasks and Event Handlers generation, por ScottGu
Fecha: 01/09/2011 - Rules to Better Interfaces.
Fecha: 31/08/2011 - Nuget 1.5 Released, por Phil Haack
Fecha: 31/08/2011 - JavaScript básico en 10 minutos (vía Marc Rubiño)
Fecha: 31/08/2011 - JavaScript no es el demonio (creo)!, por Josep Maria Camps.Fecha: 29/08/2011
Publicado en: Variable not found
» Leer más, comentarios, etc...
Variable not found
Booting up
Septiembre 4th, 2011 - [Enlace local]
¡Qué poco han durado! Supongo que estos días no hay afirmación más repetida por todos los que volvemos de vacaciones. Y la sensación más habitual, sin duda, el sabor agridulce de saber que han acabado unos días estupendos. Pero que nos quiten lo bailao, eh? ;-)
El caso es que ya estamos aquí de nuevo. Descansados, oxigenados, ilusionados y listos para enfrentarnos a otro emocionante año que seguro nos traerá grandes alegrías :-)
Por empezar con novedades, habréis notado le he dado un lavado de cara a la plantilla del blog, que ya se le iban notando los años. He sustituido el layout líquido por uno de ancho fijo, más apropiado para facilitar la lectura en las ya extendidas pantallas panorámicas, he simplificado algo el código pasando a usar características de CSS3 (lo siento por los que aún navegáis en galeones ;-)), y he reestructurado la columna derecha, pasando a segundo plano la publicidad de los laterales a pesar de los vastos ingresos que generaban, y potenciando la vertiente social y de comunidad del blog.
Y dicho esto, ¡queda inaugurada la temporada 2011-2012 de Variable not found!
Como siempre, nos vemos por aquí.
» Leer más, comentarios, etc...
Bitácora de Javier Gutiérrez Chamorro (Guti) » Programación
Turbo Vision
Septiembre 4th, 2011 - [Enlace local]
En los tiempos de DOS, y los interfaces de usuario en modo texto, Turbo Vision (TVision), fue la librería que conseguiría llevarlos a la máxima culminación. Utilizada por Borland para crear primeramente Turbo Pascal 6 en 1990, y luego Turbo C++ 1 en ese mismo año. Los que optaban por Turbo Pascal, contaban con Turbo [...]
Artículos relacionados:
Turbo C 1.0 el comienzo
Vuelven los Turbo de Borland
Las aventuras de Turbo Man
» Leer más, comentarios, etc...
MadeInFlex
La comunidad Actionscript os necesita
Septiembre 3rd, 2011 - [Enlace local]
Hola, soy Xavi Colomer y juntamente con un grupo de emprendedores hemos creado una conferencia en Barcelona para desarrolladores, startups, empresas, etc. relacionado con las nuevas tecnologías.
Aunque esta conferencia es independiente de lenguajes de programación, nos gustaría que las comunidades participaran activamente en ella, y por este motivo hemos creado una especie de visualización de las mismas, y la hemos llamado… LA BATALLA DE LAS COMUNIDADES!
Aquí tenéis el link.

La buena noticia es que hay mucha participación en el evento, la mala es que la comunidad de Actionscript / Flex se esta quedando atrás! Para aumentar puestos en el ranking solo tenéis que registraros en la web, y seleccionar Actionscript / Flex como primer lenguaje de programación.
Para cada comunidad hay distintos campos:
INICIATIVA: Número de papers colgados por la comunidad.
REPUTACIÓN: Número de votos ( la diferencia entre votos positivos y negativos ).
PIRATERÍA: Número de votos negativos que provienen de la comunidad.
Espero que os guste esta idea, lo hemos hecho con la simple intención de hacer el evento más divertido y ameno.
A parte de esto nos gustaría ver vuestras propuestas para sesiones en el call 4 papers, que sólo hay una!
Os animo a participar
» Leer más, comentarios, etc...
Fetishcode
Combo filtrable en Panel Collection
Septiembre 2nd, 2011 - [Enlace local]
A
» Leer más, comentarios, etc...
Joan Llenas at garnet.io :: Thoughts on software development
Auto versionado de aplicaciones con Flash Builder
Septiembre 2nd, 2011 - [Enlace local]
Flash Builder 4.X se distribuye integrado con Apache Ant, una herramienta para la automatización de procesos de compilación.
Esto nos permite utilizar todo su potencial para crear todo tipo de runtinas que complementen o incluso sustituyan el build predeterminado que realiza Flash Builder.
Ya seas desarrollador Flex o ActionScript es posible que le encuentres un uso a ANT, desde mover archivos al ser compilados, subirlos automáticamente al ftp o incluso añadir de forma automática un número de versión o fecha de compilación al swf resultante.
En esta entrada mostraré precisamente esto, cómo crear un pequeño script ANT que automatize el versionado de una aplicación en cada compilación.
El archivo de propiedades
-
# Ruta al jar de flexTasks, incluído al instalar Flash Builder
-
FLEX_TASKS=C:/Program Files (x86)/Adobe/Adobe Flash Builder 4.5/sdks/4.5.1/ant/lib/flexTasks.jar
-
-
# Ruta al archivo que se utiliza como template para la clase Version
-
VERSION_FILE_TEMPLATE=versionBuilderAssets/Version.as.template
-
-
# Ruta al archivo de la clase Version real (se sobreescribe a cada compilacion)
-
VERSION_FILE_DESTINATION=src/io/joan/garnet/Version.as
-
-
# Parametros de version (modificar cuando se quiera cambiar de version)
-
MAJOR=0
-
MINOR=1
-
PATCH=0
-
-
# El formato de fecha que se utiliza para generar el parametro build de la version
-
BUILD_TIME_FORMAT=yyyyMMddHHmm
La tarea Ant
-
<?xml version="1.0" encoding="utf-8"?>
-
name="Version Builder" basedir="." default="main"> -
file="versionBuilderAssets/versionBuilder.properties" /> -
resource="flexTasks.tasks" classpath="${FLEX_TASKS}" /> -
name="main"> -
> -
property="BUILD_TIME" pattern="${BUILD_TIME_FORMAT}" /> -
>
-
file="${VERSION_FILE_TEMPLATE}" tofile="${VERSION_FILE_DESTINATION}" overwrite="true" /> -
file="${VERSION_FILE_DESTINATION}" token="@major@" value="${MAJOR}" /> -
file="${VERSION_FILE_DESTINATION}" token="@minor@" value="${MINOR}" /> -
file="${VERSION_FILE_DESTINATION}" token="@patch@" value="${PATCH}" /> -
file="${VERSION_FILE_DESTINATION}" token="@buildtime@" value="${BUILD_TIME}" /> -
message="Build version number:${line.separator}Major: ${MAJOR}${line.separator}Minor: ${MINOR}${line.separator}Patch: ${PATCH}${line.separator}Build: ${BUILD_TIME}"/> -
>
-
>
El template del archivo de versión
-
package io.joan.garnet
-
{
-
import mx.utils.StringUtil;
-
-
public class Version
-
{
-
public static var MAJOR_VERSION:uint = @major@;
-
public static var MINOR_VERSION:uint = @minor@;
-
public static var PATCH:uint = @patch@;
-
public static var BUILD_TIME:String = "@buildtime@";
-
-
public static function toString():String
-
{
-
return StringUtil.substitute("v{0}.{1}.{2} build.{3}", MAJOR_VERSION, MINOR_VERSION, PATCH, BUILD_TIME);
-
}
-
}
-
}
Enlazar la compilación con la tarea Ant
Para que cada vez que compilamos se ejecute la tarea Ant antes de la compilación de Flex debemos agregar un nuevo Builder desde las propiedades del proyecto.
Descarga ejemplo
En el zip hay un proyecto Flex4 para Flash Builder.
Auto Version Build (2) - 25.8 kB
Más info
» Leer más, comentarios, etc...
Fetishcode
Oracle 11gR2 Express Edition dejo de ser BETA
Septiembre 2nd, 2011 - [Enlace local]
A
» Leer más, comentarios, etc...
Fetishcode
Obtener el valor de una Bind Variable.
Septiembre 2nd, 2011 - [Enlace local]
A


