Noticias Weblogs Foros Wiki Código

Meta-Info

¿Que es?

Planeta Código es un agregador de weblogs sobre programación y desarrollo en castellano. Si eres lector te permite seguirlos de modo cómodo en esta misma página o mediante el fichero de subscripción.

rss subscripción

Sponsors

Puedes utilizar las siguientes imagenes para enlazar PlanetaCodigo:
planetacodigo

planetacodigo

Si tienes un weblog de programación y quieres ser añadido aquí, envíame un email solicitándolo.

Idea: Juanjo Navarro

Diseño: Albin

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. :-)

Y no olvides que puedes seguir esta información en vivo y en directo desde Variable not found en Facebook, o a través de Twitter.



Publicado en: Variable not found



» Leer más, comentarios, etc...

Picando Código

Firmware Broadcom para WiFi en Debian

Septiembre 8th, 2011 - [Enlace local]

Debian

Debian

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:

0b:00.0 Network controller: Broadcom Corporation BCM4311 802.11b/g WLAN (rev 01)

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.

Wireless

Wireless

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 :D

Comparte: Twitter Identi.ca del.icio.us Google Bookmarks BarraPunto Bitacoras.com Tumblr Print Facebook

» 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:

link 1
link 2

» 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]

Ruby on Rails

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.

Yo quiero ir

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.

Comparte: Twitter Identi.ca del.icio.us Google Bookmarks BarraPunto Bitacoras.com Tumblr Print Facebook

» 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.



Creando la nueva aplicación web ASP.NETPara ilustrar nuestro ejemplo crearemos una aplicación Webforms seleccionando la plantilla “Aplicación Web ASP.NET” en el cuadro de diálogo de nuevo proyecto del IDE, pero podríamos perfectamente elegir la “Aplicación web de ASP.NET MVC” y todo sería exactamente igual.



3. Descargamos de Nuget los componentes que necesitamos

NugetPara lograr nuestros objetivos sólo necesitaremos dos paquetes:

Desde la consola de Nuget podemos conseguirlo 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”:



Instalando los componentes con Nuget



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.



De limpieza por el web.config

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:





Registro de usuarios en ASP.NET Webforms



Herramienta de administración de ASP.NETAsimismo, 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]

ASP.NETPoco 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.



Instalando los proveedores universales con Nuget

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.



Eliminando del Web.config líneas que ya no usamos

Tablas creadas por los proveedoresUna 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 . Hay una serie de jugosas novedades.

  1. 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.
  2. Al ser una introducción, habrá una pequeña chapa previa explicando los principios del TDD… :-)
  3. 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….
  4. Si es tu primera vez, estaremos encantados de sentarnos contigo y explicarte en qué consisten las Code Katas.
  5. 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.
Además:
  1. 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).
  2. Los Katayunos se harán más o menos cada seis semanas, en lugar de las cuatro que se venían haciendo.
  3. El anfitrión del Katayuno decidirá qué Kata-Koans-Whatever se ejecuta durante las sesiones…
No hay ni que decirlo: pero cualquier sugerencia, feedback, ofrecimiento a colaborar, etc. será siempre bienvenido :-)
Comienza la temporada.. ¡yay!


» 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. :-)

Y no olvides que puedes seguir esta información en vivo y en directo desde Variable not found en Facebook, o a través de Twitter.



Publicado en: Variable not found





» Leer más, comentarios, etc...

Variable not found

Booting up

Septiembre 4th, 2011 - [Enlace local]

Vamos allá¡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 :razz:

» 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

PLAIN TEXT
Properties:
  1. # Ruta al jar de flexTasks, incluído al instalar Flash Builder
  2. FLEX_TASKS=C:/Program Files (x86)/Adobe/Adobe Flash Builder 4.5/sdks/4.5.1/ant/lib/flexTasks.jar
  3.  
  4. # Ruta al archivo que se utiliza como template para la clase Version
  5. VERSION_FILE_TEMPLATE=versionBuilderAssets/Version.as.template
  6.  
  7. # Ruta al archivo de la clase Version real (se sobreescribe a cada compilacion)
  8. VERSION_FILE_DESTINATION=src/io/joan/garnet/Version.as
  9.  
  10. # Parametros de version (modificar cuando se quiera cambiar de version)
  11. MAJOR=0
  12. MINOR=1
  13. PATCH=0
  14.  
  15. # El formato de fecha que se utiliza para generar el parametro build de la version
  16. BUILD_TIME_FORMAT=yyyyMMddHHmm

La tarea Ant

PLAIN TEXT
XML:
  1. <?xml version="1.0" encoding="utf-8"?>
  2. name="Version Builder" basedir="." default="main">
  3.     file="versionBuilderAssets/versionBuilder.properties" />
  4.     resource="flexTasks.tasks" classpath="${FLEX_TASKS}" />
  5.     name="main">
  6.         >
  7.             property="BUILD_TIME" pattern="${BUILD_TIME_FORMAT}" />
  8.         >
  9.         file="${VERSION_FILE_TEMPLATE}" tofile="${VERSION_FILE_DESTINATION}" overwrite="true" />
  10.         file="${VERSION_FILE_DESTINATION}" token="@major@" value="${MAJOR}" />
  11.         file="${VERSION_FILE_DESTINATION}" token="@minor@" value="${MINOR}" />
  12.         file="${VERSION_FILE_DESTINATION}" token="@patch@" value="${PATCH}" />
  13.         file="${VERSION_FILE_DESTINATION}" token="@buildtime@" value="${BUILD_TIME}" />
  14.         message="Build version number:${line.separator}Major: ${MAJOR}${line.separator}Minor: ${MINOR}${line.separator}Patch: ${PATCH}${line.separator}Build: ${BUILD_TIME}"/>
  15.     >
  16. >

El template del archivo de versión

PLAIN TEXT
Actionscript:
  1. package io.joan.garnet
  2. {
  3.     import mx.utils.StringUtil;
  4.  
  5.     public class Version
  6.     {
  7.         public static var MAJOR_VERSION:uint = @major@;
  8.         public static var MINOR_VERSION:uint = @minor@;
  9.         public static var PATCH:uint = @patch@;
  10.         public static var BUILD_TIME:String = "@buildtime@";
  11.        
  12.         public static function toString():String
  13.         {
  14.             return StringUtil.substitute("v{0}.{1}.{2} build.{3}", MAJOR_VERSION, MINOR_VERSION, PATCH, BUILD_TIME);
  15.         }
  16.     }
  17. }

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.
builders builders2 Ant Tasks

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

» Leer más, comentarios, etc...

Información legal y técnica