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

Un repaso del Spring I/O 2011

Febrero 28th, 2011 - [Enlace local]

Ya hace casi un par de semanas que se celebró el Spring I/O 2011, y algunos ya han escrito sobre ello.

Iba a hacer un resumen completo del evento, pero visto que otros ya han hecho muy buenos resúmenes y que me he enfriado sólo destacaré lo que me resultó más interesante de las charlas y talleres que pude asistir. Estaba muy difícil elegir entre los 3 tracks, se veía que iba a haber nivel… a ver si este año suben los videos para ver charlas que me perdí de las que me hablaron muy bien.

- Lo que más me gustó:

De cero a multinacional con Grails y EC2, de Jorge Uriarte y Eloy García-Borreguero. Siempre es interesante ver como otra gente soluciona sus problemas y más cuando usan un framework que tú mismo usas, en cierto modo me recordó un poco a nuestra charla de jobsket del año pasado. No por el contenido ni por el producto, si no por ver un caso real y que el caso fuera un negocio en internet.

Conociendo Griffon a fondo, de Andrés Almiray. La verdad que no le había prestado demasiada atención a griffon por que estoy bastante alejado de las aplicaciones de escritorio desde que me pagan por programar :P . Pero vi que era una buena oportunidad de aprender un poco de la mano de Andrés(entre otras muchas cosas, uno de los fundadores de griffon), ya que posiblemente desarrolle en el futuro un pequeño proyecto de escritorio y quería conocer que me ofrecía el framework. Como mínimo debería hacer un hola mundo :)

Aplicaciones web ultraescalables con Redis de Alberto Gimeno. No es colegeo(que podría serlo :P ), ya sabía por donde iban a ir los tiros de su presentación porque fuimos hablando sobre el evento desde días antes, y precisamente fui porque sabía de antemano que iba a resultar interesante. No decepcionó, asistió mucha gente y fue la charla en la que más gente vi preguntar; les descubrió a mucha gente una alternativa a las típicas bases de datos relacionales.

Tuning your Grails applications, de Peter Ledbrook. Que sin descubrir grandes cosas, hizo un interesante repaso a las buenas prácticas que deberíamos utilizar en el desarrollo web para que nuestras webs sean más rápidas(empezando por evitar optimizaciones prematuras :) ), y algunas formas de hacerlo con Grails.

Esto fue lo que más me gustó, otras cosas que me resultaron muy interesantes fueron las keynotes de Juergen Holler y Graeme Rocher, la charla de pruebas de Aitor Alzola, el taller de Geb con Fátima Casaú

Por otro lado, el primer día hice de facilitador(que dicen los agilistas :P ) de un taller de groovy koans. Vamos, que hice una pequeña introducción-presentación de que son los koans, la gente se puso a programar y yo echaba una mano a quien me pidiera ayuda o tuviera alguna duda.

Esta fue la mini presentación que preparé:

Groovy Koans – SpringIO 2011
View more presentations from Dani Latorre

Los koans recortados que hicimos en el taller están en github.

Personalmente me gustó mucho el evento, se notó que se aprovechó el rodaje y experiencia de los eventos de México DF y de Madrid y que habían más medios que el año pasado. También un WIN montar fiesta la primera noche para que la gente se relacionara distendidamente tras el duro día :)

Al final lo mejor, como siempre, es reencontrarte con amiguetes y conocidos; desvirtualizar o conocer gente nueva. Si al final lo bueno siempre está en el cara a cara :)

Nos vemos en otra ;)

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

xailer.info (esp)

Multivisor: Cómo ver 500 formatos de archivos usando 90 líneas de código

Febrero 28th, 2011 - [Enlace local]

En mi ya larga experiencia usando xailer, siempre he tenido dos espinitas clavadas que se me habían resistido especialmente:

La integración de controles ActiveX en mis programas y la posibilidad de visualizar limpiamente archivos pdf dentro de un formulario sin tener que recurrir a trucos con el explorer que se empeña en que me aparezcan las barras de herramientas de acrobat cada vez que intento visualizar un documento.

Pues bien, hoy vamos a matar dos pájaros de un tiro y ver cómo hacer ambas cosas.

Hace un tiempo, gracias a un plugin para total commander descubrí la tecnología Outside in de Oracle que nos permite acceder, transformar y controlar el contenido de cerca de 500 formatos de ficheros.

Imaginaros mi sorpresa al ver que además disponía de un control activex para acceder a esa maravilla. Total, que no me pude resistir, y aquí está el resultado.

En el área de descargas de xailer, en la sección de ejemplos, tenéis el instalable del ejemplo que vamos a ver, así como todos los fuentes necesarios para poder crear vosotros mismos el ejecutable.

Os recomiendo que os lo instaléis antes de seguir leyendo, ya que así os registrará el fichero ocx en vuestro sistema y os permitirá seguir los ejemplos paso a paso.

Lo primero que vamos a hacer será crear un sencillo formulario en el que vamos a situar a la izquierda del todo un Listbox para mostrar los ficheros que queremos visualizar y un Bevel a la derecha, que será donde se mostrará el contenido del fichero seleccionado.
Justo encima del bevel pondremos dos controles más: un BtnBmp para poder imprimir lo que estamos viendo, y un Combobox que nos permitirá seleccionar la forma de visualizar nuestro documento

Algo así:

Una vez tengamos el formulario creado, nos vamos al menú componentes de xailer y seleccionamos importar activex

Veremos como nos aparece una ventana que se va llenando con todos los controles activex que están disponibles en nuestro sistema.

De todos ellos tenemos que seleccionar el que dice oixctrl class, que es el correspondiente al control activex de Oracle Outside In technology.

Como os decía, lo seleccionamos y pulsamos el botón crear clase.

Veremos como xailer se pone a trabajar y nos crea el solito el fichero prg necesario para poder interactuar con el control indicado.

Cuando termine, veremos en nuestro gestor de proyectos un nuevo prg llamado oixctrl.prg que contiene todas las propiedades, métodos y eventos necesarios para poder trabajar con el nuevo control.

Ya sólo nos queda poner un poco de nuestra parte y decirle al programa qué hacer con las nuevas características recien estrenadas.

Para empezar, vamos a crear dos datas nuevas a nuestro formulario
  1. Data oView
  2. Data cDir INIT ".\samples\"
oView: el objeto que contendrá el control ocx
cDir: el directorio donde están los ficheros de ejemplo que vamos a mostrar.

Es importante tener muy claro que de momento sólo le hemos dicho al programa que tenemos la intención de usar un nuevo elemento que se llamará oView, pero aún no le hemos dicho que va a contener.
Para ello usaremos el evento OnInitializate del formulario.
  1. METHOD FormInitialize( oSender ) CLASS TForm1
  2.   Local aImges,n
  3.   WITH OBJECT ::oView := Toixctrl():New( ::oBevel1 )
  4.           :nAlign := alCLIENT
  5.           :Create()
  6.           :ViewFile( .f., ::cDir+"oivwx.pdf" )
  7.   END
  8.   aImges := Directory( ::cDir )
  9.   FOR n := 1 TO Len( aimges )
  10.          ::oListbox1:addItem( aImges[n,1] )
  11.    NEXT
  12. RETURN Nil
Aunque no os lo creáis, las palabras mágicas que van a hacer que podamos mostrar hasta ficheros de autocad dentro de nuestros formularios ya se las hemos dicho y son :.
  1. WITH OBJECT ::oView := Toixctrl():New( ::oBevel1 )
Si nos fijamos en el fichero oixctrl.prg que nos ha creado Xailer vemos que aparece una línea que dice
  1. CLASS Toixctrl FROM TOcx
En ella, Xailer crea una nueva clase llamada Toixctrl “con capacidades ocx”, así que lo primero que hemos hecho ha sido decirle al programa que nuestro data oView va a ser
un objecto del tipo Toixctrl y que queremos que “cuelgue” no del formulario principal si no del bevel que hemos creado al empezar (::oBevel1)

Una vez creado, para que sea más bonito, vamos a indicarlo a Xailer que además de colgar de oBevel1, queremos que ocupe todo el espacio posible dentro del bevel (:nAlign := alCLIENT)

Ahora que ya tenemos definidad las características del control, tan sólo nos queda decirle que lo cree llamando al método :create()

Y listo!, a empezar a utilizarlo!!

En oixctrl.prg tenemos todos los métodos, propiedades y eventos que ha “heredado” nuestro nuevo control del ocx original. Eso sí, para saber qué hace cada una de ellas no nos quedará más remedio que recurrir a la documentaciónd del ocx en cuestión.

Vamos a ver las más elementales del ocx que estamos usando.

Para visualizar un fichero utilizaremos el método ViewFile( lFileOpenDlg, cFile)
- lFileOpenDlg es una variable lógica que si la establecemos a .t. nos mostrará una caja de diálogo estándar de apertura de fichero y nos mostrará el fichero seleccionado
- cFile es una variable de tipo texto con el nombre del fichero a visualizar.

En nuestro ejemplo vamos a establecer
  1. :ViewFile( .f., ::cDir+"oivwx.pdf" )
para que nada más crear el control nos muestre en la ventana el manual de instrucciones del mismo.

Bien, pero… ¿dónde se va mostrar?. Pues dentro de oBevel1!, ocupando todo el espacio posible.

Todo lo demás es púramente decorativo,
Leemos todos los ficheros del directorio samples y se los asignamos al listbox
  1. aImges := Directory( ::cDir )
  2. FOR n := 1 TO Len( aimges )
  3.   ::oListbox1:addItem( aImges[n,1] )
  4. NEXT
Cada vez que cambiamos de línea en el listbox hacemos una nueva llamada a ViewFile con el valor del nuevo fichero a visualizar
  1. METHOD Listbox1Change( oSender, nIndex ) CLASS TForm1
  2.   ::oCombobox1:nIndex=1
  3.   ::Combobox1Change( ::oCombobox1, 1 )
  4.   ::oView:ViewFile( .f., ::cDir+oSender:aItems[nIndex] )
  5. RETURN Nil
En el combobox definiremos cómo se va a visualizar el fichero: a tamaño natural, ajustado en ventana, etc..
Para ello utilizamos las propiedades BMPFitMode, VECFitMode y WPFitMode que nos definen el tipo de visualización para ficheros de imagen, vectoriales y texto
  1. METHOD Combobox1Change( oSender, nIndex, nOldIndex ) CLASS TForm1
  2.  IF nIndex > 4
  3.      ::oView:BMPFitMode := nIndex
  4.      IF nIndex > 3
  5.          ::oView:WPFitMode := nIndex
  6.      ENDIF
  7.  ENDIF
  8.  ::oView:VECFitMode := nIndex
  9. RETURN Nil
y por último, en el botón utilizamos el método PrintOI(0,128,0,0)
  1. METHOD BtnBmp1Click( oSender ) CLASS TForm1
  2.   ::oView:PrintOI(0,128,0,0)
  3. RETURN Nil

De este método sólo nos interesa el primer parámetro, que si es 1 nos muestra la caja de configuración de impresora antes de imprimir.
El resto de los parámetros, mejor dejarlos como están.

Listo, ya sólo tenemos que darle al play y disfrutar de nuestro ejemplo funcionando.

Para terminar, recordaros que para que nuestro ejemplo funcione en otros ordenadores, no basta con copiar el fichero ejecutable, sino que es necesario copiar y registrar el ocx y todos los ficheros accesorios.

Dentro del fichero zip con los fuentes del ejemplo os dejo el script de instalación de Inno setup, pero esa es otra historia y os la contaré otro día.

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

Variable not found

Enlaces interesantes 32

Febrero 28th, 2011 - [Enlace local]

Estos son los enlaces publicados en Variable not found en Facebook y Twitter desde el domingo, 20 de febrero de 2011 hasta el domingo, 27 de febrero 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...

MadeInFlex

Adobe AIR y Flash Player Incubator

Febrero 28th, 2011 - [Enlace local]

El equipo de runtimes de la Plataforma Flash anunció este domingo el programa Adobe AIR y Flash Player Incubator.

Incubator es un sitio dentro de Adobe Labs creado para compartir con los desarrolladores características que aún se encuentran en desarrollo e inclusive bajo consideración para incluirse en futuras versiones de los runtimes.

Flash Player runtimes

Es un programa un tanto diferente de los programas de beta tradicionales, ya que esta enfocado a desarrolladores interesados en probar características de última punta de Flash Player y contribuir en el desarrollo de la plataforma. Sin lugar a dudas tendremos que estar atentos de los esfuerzos generados en este proyecto porque a pesar de no ser un modelo Open Source estrictamente hablando, si permite a los interesados involucrarse más a fondo con la evolución de Flash.

Dentro de las nuevas características que podemos probar en el build actual de Incubator se incluyen:

Los invitamos a todos a consultar la fuente original de la información y probar Incubator para compartir con el equipo de MadeInFlex sus comentarios al respecto.

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

Bitácora de Javier Gutiérrez Chamorro (Guti)

Comentarios de series VI

Febrero 27th, 2011 - [Enlace local]

Sin más dilación, vamos ya a por la sexta entrega de los comentarios de series: Breaking badBreaking Bad nos muestra la historia de Bryan Cranston que interpreta el papel de Walter White, que tras cumplir sus cincuenta años descubre que tiene un cáncer de pulmón incurable lo que le llevará a dar un drástico cambio [...]Artículos relacionados:

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

Cuaderno de software

Doce meses, doce libros

Febrero 25th, 2011 - [Enlace local]

Aprovechando la llegada de mi nuevo y flamante Kindle y tras haberme dado cuenta de que ultimamente he dejado de lado la lectura de libros de desarrollo y me he centrado demasiado en el Google Reader, he decidido pedir ayuda en la blogostwitercosa para decidir cuales van a ser los doce libros que me voy a leer durante el 2011 (en efecto, 12 meses, 12 katas… y 12 libros).

Además, me reservo el derecho de ir editando y actualizando esta entrada con mi opinión sobre los libros que vaya leyendo. Por ahora llevo:

¡Agradecería un montón que me ayudárais a decidir qué leer en abril, mayo, junio… !

Un saludo!


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

Bitácora de Javier Gutiérrez Chamorro (Guti)

Traslado guti.webcindario.com

Febrero 23rd, 2011 - [Enlace local]

El robot automático de webcindario / miarroba, ha decidido eliminar el espacio de guti.webcindario.com, oficialmente, debido a la presencia de malware.

Con todos los programas alojados de mi autoría, y la mayoría con el código fuente disponible, es un motivo realmente difícil de creer, y me inclino a pensar que la carga de servidor que requiere el creciente éxito de SumatraPDFOpt, ha sido el desencadenante de ese cierre.

Desde webcindario, no dan mecanismo alguno para obtener más explicaciones, o hacer que una persona revise el contenido para poder reconsiderar el cierre, pero no lo hay.

Llevaba algún tiempo cansado de la cada vez más abusiva publicidad en webcindario, y sobretodo de las limitaciones que imponían, así que como no hay mal que por bien no venga, desde hoy, el espacio de Software Javier Gutiérrez Chamorro (Guti): SumatraPDFOpt, RealSpeed, WinVer, TXT2PDF, Lamark, XPlorer, SMETAR, MEMTRACE, se encuentra oficialmente en guti.isgreat.org... Esperemos, que con más suerte.

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

Bitácora de Javier Gutiérrez Chamorro (Guti) » Programación

Traslado guti.webcindario.com

Febrero 23rd, 2011 - [Enlace local]

El robot automático de webcindario / miarroba, ha decidido eliminar el espacio de guti.webcindario.com, oficialmente, debido a la presencia de malware.

Con todos los programas alojados de mi autoría, y la mayoría con el código fuente disponible, es un motivo realmente difícil de creer, y me inclino a pensar que la carga de servidor que requiere el creciente éxito de SumatraPDFOpt, ha sido el desencadenante de ese cierre.

Desde webcindario, no dan mecanismo alguno para obtener más explicaciones, o hacer que una persona revise el contenido para poder reconsiderar el cierre, pero no lo hay.

Llevaba algún tiempo cansado de la cada vez más abusiva publicidad en webcindario, y sobretodo de las limitaciones que imponían, así que como no hay mal que por bien no venga, desde hoy, el espacio de Software Javier Gutiérrez Chamorro (Guti): SumatraPDFOpt, RealSpeed, WinVer, TXT2PDF, Lamark, XPlorer, SMETAR, MEMTRACE, se encuentra oficialmente en guti.isgreat.org… Esperemos, que con más suerte.

Artículos relacionados

Guti Park
Guti en La Sexta
Guti en japonés

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

Arragonán

DNDzgz también en las II Jornadas de Tecnologías Libres de Zaragoza

Febrero 22nd, 2011 - [Enlace local]

Comentábamos en la cuenta de twitter de @DNDzgz, que nos han invitado a las II Jornadas de Tecnologías Libres de Zaragoza, organizadas por Milla Digital.

Concretamente hablaremos mañana miércoles sobre DNDzgz y Open Data, enmarcado en el día de la Jornada de Datos públicos Abiertos y Aplicaciones para dispositivos móviles.

Después de nosotros estarán la gente de warp hablando de Vive Zaragoza, aplicación que podría considerarse equivalente a la nuestra, pero nativa para terminales Android.

Pues eso: Miércoles 23 de Febrero a las 19:00 en el Museo Pablo Gargallo(Plaza de San Felipe, 3). Por ahí estaremos :)

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

Variable not found

Enlaces interesantes 31

Febrero 21st, 2011 - [Enlace local]

Estos son los enlaces publicados en Variable not found en Facebook y Twitter desde el domingo, 13 de febrero de 2011 hasta el domingo, 20 de febrero 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...

Najaraba.com: Software libre, metodologías ágiles y más.

Equipos, equipos, equipos,… y luego ágil

Febrero 21st, 2011 - [Enlace local]

El ideal de los equipos autoorganizados, es eso, casi siempre -me temo-, un ideal. En mi personal investigación sobre el tema de los equipos de alto rendimiento (¿alguna vez habeis participado en uno? - la sensación es "diferente"-) estoy trabajando en dos areas principalmente:1) La organización de las personas como equipo. Es decir, ¿qué diferencia un grupo de personas trabajando juntas, de un

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

Arragonán

Arrancando el Cachirulo Valley

Febrero 20th, 2011 - [Enlace local]

Supongo que muchos de los que leéis este humilde blog ya sabréis de la existencia de Cachirulo Valley. Una aventurilla que estamos arrancando Alberto Gimeno, Guillermo Latorre, Iván Loire, Pablo Jimeno y el que os escribe.

Comida inauguración Cachirulo Valley

Cachirulo Valley es una iniciativa que pretende ayudar a fomentar el desarrollo tecnológico-emprendedor de Aragón. Sabemos que el core de la iniciativa seamos desarrolladores puede dar la sensación que pensamos en enfocar las diferentes acciones/ideas únicamente a gente con nuestro mismo perfil profesional, la respuesta es NO. Como muestra de ello, han colaborado ya varias personas que no son desarrolladores y esperamos que más gente diferente aporte lo que desee.

Pero claro, como pensamos en el sector tecnológico, evidentemente el punto de vista técnico tiene mucha importancia, se nos cae el alma cuando en algunos lugares se trata la parte técnica como una commodity… que un producto sea bueno es importante, y eso no se puede comprar igual que la luz o el agua.

Queremos intentar servir de ayuda para promocionar todo lo que se cuece en nuestra tierra; ahí está el calendario de eventos o las reseñas en el blog, y en breve queremos empezar a publicar entrevistas a gente de empresas tecnológicas aragonesas. Posiblemente también publiquemos en algún momento contenido no aragonés que consideremos interesante.

Irán surgiendo más ideas y acciones concretas, no sólo va a ser generar contenido en un blog… Creo que puedo adelantar, o igual me dan una colleja por hacerlo :P , que estamos planteando montar un pequeño evento que seguro que resultará muy interesante ;)

Por supuesto que estamos abiertos a cualquier persona que quiera colaborar de cualquier modo y a recibir sus ideas. Si hay algún interesado en la sala, puede ponerse en contacto con nosotros fácilmente, somos gente maja y muy accesible :D

Sabemos que pueden surgir intereses oscuros alrededor de esta pequeña iniciativa, por ser molona más que porque sea buena. Pero tenemos claro que pretendemos estar lejos del humo y del mamoneo, veremos si lo conseguimos.

Que no nos pase nada :D

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

Ideas + Ingeniería del Software

¡De mudanza!

Febrero 19th, 2011 - [Enlace local]

Estoy en proceso de migración de blogs y demás gaitas a un único servidor: http://www.juanignaciosl.com . A partir de ahora todo el contenido (pasado, presente y futuro) relativo a mí lo podrás encontrar ahí.



Concretamente, el apartado de Ingeniería del Software (el sustituto de este blog) lo encontrarás en http://www.juanignaciosl.com/categorias/ingenieria-del-software . También hay los siguientes apartados:

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

Bitácora de Javier Gutiérrez Chamorro (Guti)

8 bits, cine y televisión (II)

Febrero 19th, 2011 - [Enlace local]

Tras casi un año de escribir 8 bits, cine y televisión, no hay como hacer un poco de memoria, y revisar algunos títulos, para conseguir que nos vengan a la memoria nuevos candidatos. ¡A disfrutarlos! Artículos relacionados:8 bits, cine y televisión (III) 8 bits, cine y televisión Operaciones de bits en PHPArtículos relacionados:

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

Picando Código

Vacaciones…

Febrero 18th, 2011 - [Enlace local]

Vacaciones

Vacaciones

Aprovechando la licencia, voy a pasar por un proceso de “desenchufamiento” de internet. Por esto, no habrán posts en Picando Código por lo menos hasta marzo. Voy a hacer una recorrida por las costas del país :D

Espero sepan entenderlo y no armen revueltas en las calles saqueando locales comerciales y dando vuelta unidades del transporte colectivo público. También espero poder superar el síndrome de abstinencia a Internet…

No creo que sea un desenchufe total, pero por lo menos es seguro que no voy a escribir nada más para el blog por estos días. Tampoco voy a estar respondiendo mails. Si llego a escribir algo será por identi.ca o Twitter.

Espero encontrar todo en orden cuando vuelva…

Foto por Rafael Alvez, licencia Creative Commons. Link a la foto original: Flickr

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

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

Ingenieria de Software / Software Engineering / Project Management / Business Process Management

Project Management Office Processes

Febrero 17th, 2011 - [Enlace local]

Para aquellos que creen que la ofna de proyectos es solo tener Project Server y Project Professional o para los que no tienen idea de como conformar una PMO, el siguiente documento les ayudará mucho

http://www.artechhouse.com/GetBlob.aspx?strName=mir-ch03.pdf

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

Cuaderno de software

Control del proyecto con Jira + Greenhopper

Febrero 17th, 2011 - [Enlace local]

Como una imagen vale más que mil palabras (los tachones son para preservar un poco la intimidad de mis desarrollos.. :-) ), aquí dejo cómo quedó mi backlog a finales de enero.

Estoy contento porque ésta es la primera iteración (la de Enero de 2011) en la que por fin encajo más o menos todas las piezas:

Es un mantra del agilismo eso de “personas > procesos > herramientas”. Pero en mi caso, la herramienta Jira ( y su plugin Greenhopper) me han arrojado muchísima luz sobre cómo implementar “el eso del kanban y el agilismo”. La recomiendo encarecidamente.

Ojo, ésta manera de llevar la planificación, ejecución y control de un proyecto funciona realmente bien cuando se combina con integración contínua y TDD. Nunca hay que olvidar que el código es lo primero.

Todavía recuerdo mi primera implementación de un backlog con google docs... :-P


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

Variable not found

Compilación de vistas ASP.NET MVC y el error “No se pudo cargar el tipo EntityDesignerBuildProvider”

Febrero 17th, 2011 - [Enlace local]

ASP.NET MVCHacía tiempo que no activaba la compilación de vistas en ASP.NET MVC. La verdad es que si no tienes una máquina potente ralentiza bastante la construcción de las soluciones, pero ahora que la tecnología está de nuevo de mi lado, pensé que sería buena idea activarla en un proyecto MVC 3 y resulta que me he topado con el siguiente error de compilación:

No se pudo cargar el tipo 'System.Data.Entity.Design.AspNet.EntityDesignerBuildProvider'
Pero vamos a empezar por el principio, para los que se han incorporado recientemente a ASP.NET MVC. Recordemos que esta característica permite comprobar la corrección de las vistas (Razor o Webforms) en tiempo de compilación, por lo que es bastante útil para la detección temprana de errores que de otra forma sólo podríamos detectar accediendo a la vista en tiempo de ejecución.



Para activarla, basta con abrir el archivo del proyecto MVC (el .csproj o .vbproj) con un editor y cambiar un detalle en la configuración. Esto podemos hacerlo desde cualquier editor tipo bloc de notas, o desde el mismo Visual Studio abriendo el menú contextual sobre el proyecto y seleccionando la opción “Descargar el proyecto”, como vemos en la captura de pantalla:

Menú contextual > Descargar el proyecto
Justo a continuación, de nuevo sobre el proyecto, volvemos a abrir el menú contextual, seleccionando en este caso la opción “Editar {nombreProyecto}”.

Menú contextual > Editar proyecto
Ya con el archivo abierto, veremos que se trata de un XML, en el que simplemente hay que localizar el tag <MvcBuildViews>false</MvcBuildViews> e introducir el valor true en su interior.

Archivo de configuración

Salvando el archivo, acudimos de nuevo al menú contextual sobre el proyecto, y seleccionamos “Volver a cargar el proyecto”, con lo que ya tendremos activa esta característica. A partir de ese momento, el proceso de construcción del proyecto incluirá la compilación de los archivos de vistas, por lo que podremos ver y corregir los errores detectados en ellas.



El único problema, al que hacía referencia al principio del post, es el extraño error “No se pudo cargar el tipo 'System.Data.Entity.Design.AspNet.EntityDesignerBuildProvider'“ que aparecerá al finalizar la compilación cuando estéis utilizando Entity Framework en el proyecto. Por alguna extraña razón, el hecho de tener activa la compilación de vistas hace que se produzca este error (!).



Bueno, pues si os aparece simplemente debéis añadir la siguiente línea al web.config:



<assemblies>
  ...
  <add assembly="System.Data.Entity.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
</assemblies>


De todas formas, ya os adelanto que aunque tengáis un último modelo de máquina, cuando el proyecto tiene cierto volumen váis a notar el tiempo extra a la hora de compilar y, si sois algo impacientes, lo tendréis la mayor parte del tiempo desactivado.



Publicado en: Variable not found.



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

Ingenieria de Software / Software Engineering / Project Management / Business Process Management

Como redactar Reglas de Negocio

Febrero 16th, 2011 - [Enlace local]

De lectura obligada

http://www.rulespeak.com/es/download_file.php

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

Ingenieria de Software / Software Engineering / Project Management / Business Process Management

Business Rules

Febrero 16th, 2011 - [Enlace local]

Que tan importante son las reglas del negocio???, yo siempre digo a mis clientes que es lo que da vida a la aplicación, imaginen un sistema sin reglas de negocio!!!, este artículo explica la importancia de las reglas de negocio, me gusta como empieza el autor:

“In the human body, power is provided by the muscles; in business operations, it is supported by processes. Nerves and muscles are separate; business rules and processes should be separate too”

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

Bitácora de Javier Gutiérrez Chamorro (Guti)

IPv4 e IPv6 explicado para todos

Febrero 16th, 2011 - [Enlace local]

Espoleado por el comentario de jk, y dado que el fin de las direcciones IPv4 es algo que se encuentra poco menos que en boca de todos, voy a intentar explicar de qué va todo esto, para que nos hagamos una idea. Vamos a ver, todo el tráfico que circula por internet, utiliza el protocolo [...]Artículos relacionados:

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

Monocaffe

Grails hasMany Delete

Febrero 16th, 2011 - [Enlace local]

Suppose the following:

class Group{

String name

static hasMany = [users:User]

}



class User{

String name

}
This means, you have lots of Users for some Group, but also a User might have other Groups, so can't use a "belongsTo". To delete a Group is really easy:

def b = Group.get(0)

b.delete(flush:true)
On the other hand, you might want to delete a User, but not the Group:

def b = User.get(0)

b.delete(flush:true)
This will throw a lot of exceptions from Hibernate and JDBC. How are you supposed to do it? Well, first of all, you'll need a way to get a Group for a given User, but since "users" is transitive, you can't do something like Group.findByUser(user) so go ahead and add the following code to your Group class:

static Group findByUser(User user){

def criteria = Group.createCriteria()

def result = criteria.get {

users {

idEq(user.id)

}

}

return result

}
Now, go to your UserController delete method and add the following

if (userInstance) {

try {

AlertGroup g = Group.findByUser(userInstance)

if(g){

g.users.remove(userInstance)

}

userInstance.delete(flush: true)

...
The clear call will empty the references in the current object so you don't get any trouble.

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

Variable not found

Serialización y deserialización Json en MVC 3

Febrero 16th, 2011 - [Enlace local]

ASP.NET MVCHace unos días hablaba de ObjectInfo y ServerInfo, dos helpers presentes en System.Web.Helpers, un componente compartido por ASP.NET MVC 3 y WebPages. Hoy vamos a revisar la clase estática Json, también definida en dicho espacio de nombres, que podemos utilizar para codificar objetos en formato JSON (JavaScript Object Notation) y viceversa, crear instancias de objetos partiendo de un texto JSON.



El primero de los sentidos, CLR—>JSON, no es algo que no pudiéramos hacer antes utilizando los serializadores Javascript, pero este componente nos lo pone algo más fácil. Por ejemplo, dada la siguiente clase del Modelo:



Clase del Modelo

… y un controlador en el que suministramos a la vista una instancia de dicha clase:



Código del Controlador



En la Vista podríamos introducir un código como el siguiente para volcar sobre la salida la representación JSON del objeto del modelo. Observad que hasta ahora para conseguir lo mismo teníamos que escribir bastante más código:



Código de la Vista



Fijaos también que el resultado de Json.Encode (bueno, y la alternativa anterior también), debemos pasarlo por una llamada a Html.Raw() para evitar que sea codificado a HTML antes de enviarlo al cliente. En cualquier caso, el resultado puede ser asignado directamente a una variable, puesto que el marcado generado es la representación JSON del objeto suministrado listo para su uso, como puede observarse en  el resultado de procesar la vista anterior:



Código generado



Por otra parte, también podemos utilizar la clase Json para hacer la conversión inversa, es decir, construir un objeto del CLR desde un string que representa un objeto codificado en JSON. Como en el caso anterior, también podíamos utilizar JavascriptSerializer para conseguirlo, pero ahora podemos hacerlo más rápidamente:



Deserialización JSON a objeto



Publicado en: Variable not found.



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

Joan Llenas at garnet.io :: Thoughts on software development

Runtime fonts

Febrero 16th, 2011 - [Enlace local]

Cargar fuentes bajo demanda es algo que puede ayudar mucho a disminuir el tamaño de un archivo swf, sobretodo cuando estamos creando una aplicación que requiere de varios tipos de fuentes y con rangos Unicode ámplios.
Es el caso por ejemplo de aplicaciones que requieren globalizarse (g11n) y a causa de ello se deben proporcionar tipografías de varios alfabetos.
La cosa se pone peor si además utilizamos más de una tipografía en la aplicación, cosa muy normal en realidad.
Flex nos proporciona una forma muy sencilla de crear archivos SWF con tipografías compiladas. Son lo que se llaman CSS Modules.

Los CSS Modules son archivos CSS a los que se les pasa el compilador. Algo tan sencillo como esto mxmlc estilos.css. O si no te gusta la línea de comandos, desde Flex builder simplemente haciendo click derecho sobre el archivo CSS verás que puedes marcar la opción Compile CSS to SWF.
Cuando compiles revisa la carpeta de salida (bin-debug) y verás que hay un archivo swf con el nombre del CSS que has marcado como compilable.

Una vez tenemos compilado el CSS solo nos queda realizar la carga e inyectarla en el motor de estilos de Flex. Para ello utilizaremos el método especialmente creado a este respecto: loadStyleDeclarations2() de la instancia del StyleManager que tenemos disponible desde cualquier control Flex.
Este método devuelve un IEventDispatcher que podemos utilizar para controlar el proceso de carga con los eventos: StyleEvent.COMPLETE, StyleEvent.ERROR y StyleEvent.PROGRESS.
Dejo un ejemplo sencillo que carga fuentes a través de la selección en un DropDownList.

RuntimeFonts.mxml

PLAIN TEXT
MXML:
  1. "1.0" encoding="utf-8"?>
  2. xmlns:fx="http://ns.adobe.com/mxml/2009"
  3.     xmlns:s="library://ns.adobe.com/flex/spark"
  4.     xmlns:mx="library://ns.adobe.com/flex/mx">
  5.     >
  6.         [CDATA[
  7.             import mx.events.StyleEvent;
  8.             protected function dropdownlist1_changeHandler():void
  9.             {
  10.                 fonts.enabled = false;
  11.                 var dispatcher:IEventDispatcher = styleManager.loadStyleDeclarations2( fonts.selectedItem.url );
  12.                 dispatcher.addEventListener(StyleEvent.COMPLETE, onComplete);
  13.             }
  14.             private function onComplete(event:StyleEvent):void
  15.             {
  16.                 sample.setStyle("fontFamily", fonts.selectedItem.label);
  17.                 fonts.enabled = true;
  18.             }
  19.  
  20.         ]]>
  21.     >
  22.     horizontalCenter="0"
  23.         verticalCenter="0" horizontalAlign="center">
  24.         id="sample" text="The quick brown fox jumps over the lazy dog" fontSize="30"/>
  25.         id="fonts" change="dropdownlist1_changeHandler()"
  26.             width="200"
  27.             selectedIndex="-1">
  28.             >
  29.                 label="Kingthings Stirrup"
  30.                     url="fonts/Kingthings_Stirrup.swf"/>
  31.                 label="Circline"
  32.                     url="fonts/Circljo.swf"/>
  33.             >
  34.         >
  35.     >
  36. >

Kingthings_Stirrup.css

PLAIN TEXT
CSS:
  1. /* http://www.abstractfonts.com/font/14632 */
  2. @font-face {
  3.     src: url("Kingthings_Stirrup.ttf");
  4.     embedAsCFF: true;
  5.     fontFamily: "Kingthings Stirrup";
  6.     fontStyle: normal;
  7.     fontWeight: normal;
  8. }

Descarga ejemplo

En el zip hay un proyecto Flex4 para Flash Builder.

Runtime fonts (0) - 61.43 kB
zip

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

xailer.info (esp)

Xailer Portable

Febrero 15th, 2011 - [Enlace local]

¡¡¡Xailer se hace portable!!!

Esta es una de las continuadas peticiones que nos han hecho multitud de usuarios de Xailer durante mucho tiempo y podemos anunciaros que ya está listo a falta de pequeños detalles comerciales. Esperamos que el nuevo Xailer Portable cubra las necesidades de movilidad que muchos de vosotros nos habéis demandado.

Xailer portable consiste básicamente en poder utilizar Xailer desde cualquier dispositivo de datos, independientemente de la máquina donde se esté ejecutando el propio IDE. El dispositivo puede ser un disco duro externo o un simple ‘Pen Drive’. Xailer se registra para su uso desde dicho dispositivo únicamente, pero estando conectado a cualquier PC.

Xailer no otorga ninguna licencia adicional, simplemente aporta otro método de activación para la licencia que ya se posee. Se trata por tanto de un añadido sobre la licencia original, de coste único (se paga una única vez) y que está directamente ligado sobre la licencia original sobre la que se otorga.

No obstante, con la compra de Xailer Portable obtendrá un nuevo número de serie, pero por razones puramente administrativas. La caducidad de la suscripción de esta licencia será la misma que la del número de licencia de la cual procede y si usted actualiza su versión de Xailer en la licencia principal automáticamente se actualizará también la fecha de caducidad en su licencia Portable.

Una licencia de Xailer Portable permite la activación de Xailer hasta en dos dispositivos hardware diferentes. A diferencia de la versión estándar, Xailer Portable no se podrá desactivar hasta pasados 6 meses desde su activación. Pero para vuestra tranquilidad os diré que incluso un posible formateo del dispositivo no supondrá ningún problema. Es importante que se utilice únicamente una de las activaciones y que la otra se use únicamente como activación de seguridad en caso de que se pierda o estropee el dispositivo.

En casos excepcionales es probable que Xailer no sea capaz de registrarse en un determinado dispositivo hardware, aunque en nuestras pruebas esto sólo ha ocurrido una vez con un ‘Pen Drive’ de bajísima calidad.

Sólo se podrán acoger a la compra de Xailer Portable aquellos usuarios que tengan una licencia profesional o Enterprise de Xailer 2.3 o posterior.

El coste de Xailer Portable será el mismo para licencias Xailer o Enterprise y tendrá un coste de 95 euros. Será una cantidad que sólo habrá que pagar una única vez ya que sus derechos de suscripción y actualizaciones estarán completamente vinculados con la licencia de la cual procede.

En breve estará disponible Xailer Portable como nuevo producto en la Web. Durante únicamente la primera semana podréis conseguir Xailer Portable a un precio excepcional de 75 euros. Aquellos que estéis interesados os recomiendo estar atentos, aunque os informaremos desde este mismo Blog cuando esté disponible.

Por último comunicaros que en la próxima reunión de ‘Xaileros’ que se realizará en Murcia el día 26 de Febrero sortearemos entre todos los asistentes una versión de Xailer Portable. ¡Os esperamos!

Un cordial saludo
[El equipo de Xailer]

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

Información legal y técnica