Blog de Julio César Pérez Arques
Cierre y resumen del 2009
Diciembre 31st, 2009 - [Enlace local]
Finalmente este año 2009 llega a su fin. Ha sido un año que ha dado mucho de sí. Marcado, profesionalmente hablando, por La Crisis, Oracle compra Sun y el rugir de lo Ágil. Es tiempo de hablar con uno mismo, celebrar los éxitos, reconocer los errores, aprender de las experiencias y plantearse nuevas metas. Descansar el cuerpo y la mente, para volver ya el año que viene con renovadas fuerzas.
En lo relativo a este blog, me quedo con la espinita clavada de no haber superado el número de posts del año pasado. 35 el año pasado, por 34 éste. Por poco. Y eso que iba por muy buen camino, pero en Agosto me mudé y con el ordenador en el suelo, aún a falta de elegir mi despacho, se hace muy duro escribir.
Lo que sí han aumentado considerablemente han sido el número de visitas y el número de suscriptores. El primero se ha doblado (cerca de 35.000), aunque mucha culpa la tienen las visitas desde Google, y el segundo se ha quintuplicado (190). Pero lo que más me ha gustado han sido los debates que se han generado en algunos posts. Muchas gracias a todos.
El top 5 de los posts más visitados de este año ha sido (1) Buenas prácticas para desarrollar Servicios web SOAP, (2) Esquema de un Sistema de Gestión de Desarrollo Software, (3) Chuleta Maven, (4) 10 formas de mejorar tu código y (5) Programación basada en Google.
Una de mis nuevas experiencias de este año ha sido gracias a Jorge Rubira, que me invitó a participar en los podcasts Servicios web y Testing de aplicaciones de javaHispano. Fue un auténtico placer contribuir en ellos junto al susodicho, a Alfredo Casado, Leonardo de Seta y Jorge Luis Bugarín.
También me ha dado tiempo a hacer un experimento con AdSense. No es que quisiera monetizar el blog, simplemente tuve un ataque de emprendedor y quería ver, de primera mano, cómo funcionaba el tema de la publicidad en páginas web. De hecho, no ha llegado a generar ni 5 euros y no se cobra nada hasta que no se ganan al menos 70. En el próximo diseño del blog lo eliminaré.
Otra opción que estoy meditando es si pasarme a contractor o freelance y anunciar mis servicios por el blog. Ya veremos...
Llegados a este punto, sólo me queda desearos un Feliz 2010 y dedicaros un brindis por el talento.
» Leer más, comentarios, etc...
Picando Código
Downtime del servidor por corte de energía
Diciembre 30th, 2009 - [Enlace local]
Esta madrugada hubo un corte de energía en los datacenter, por lo que mis sitios web sufrieron un downtime de unas horas. En los foros de HostGator, postearon la siguiente información al respecto:
A las 12:38am el sistema UPS de los data centers de Dallas 2/6 fallaron causando un corte eléctrico generalizado. Cuando falló el sistema UPS a su vez causó que se apagara el interruptor principal la energía a lo largo de todo el sistema.
El sistema UPS está diseñado para ser a prueba de fallas si la energía principal se detiene, pero si el UPS falla entonces causa que la energía principal deje de fluír. Aunque hay generadores de respaldo disponibles también son enrutados a través de los mismos sistemas para asegurar que no hayan pequeños cortes mientras se cambia la energía.
Esto fue anunciado a las 3:47 am tiempo central, a las 7:47 am en mi huso horario. En ese momento anunciaban que todo había vuelto a la normalidad, excepto mi servidor, el cual estaba realizando un fsck automático para reparar posibles daños.
A las 5:55am tiempo central (9:55 acá), se anunció que el fsck había terminado, y las páginas se están sirviendo nuevamente.
Me contacté con el servicio técnico de HostGator ni bien noté que algo andaba mal, y tuve una respuesta inmediata, solo me quedó esperar a que el servidor volviera a estar en pié. Les recomiendo HostGator como servicio de Hosting, hasta ahora ha sido un servicio excelente.
» Leer más, comentarios, etc...
PROGRAMANDO EN .NET
Propósitos para el 2010
Diciembre 30th, 2009 - [Enlace local]
Pues eso, a falta de horas para que acabe el año se me ha dado por hacer una lista de los propósitos para el 2010, a ver si consigo cumplir con alguno :P- Ser bueno ... no, voy a seguir siendo malo que es más divertido :D- Acabar alguno de los 2 libros que tengo sobre Arquitectura de aplicaciones en .NET- Probar la beta 2 del Visual Studio 2010, a ver si este cambio de versión no me pilla el toro
» Leer más, comentarios, etc...
Ingenieria de Software / Software Engineering
Microsoft Sure Step 2010 for Dynamics Implementation
Diciembre 29th, 2009 - [Enlace local]
Como algunos sabrán existen Metodologías para la implementación de aplicaciones empresariales (ERP, CRM, SCM etc) las cuales tienen sus diferencias con respecto a las metodologías que se usan para el desarrollo de software a la medida (RUP, Waterfall, Espiral etc) entre estas metodologías esta Sure Step la cual fué desarrollada por Microsoft para la implementación de las aplicaciones Dynamics, recientemente liberaron Sure Step 2010 la cual viene con grandes beneficios entre los cuales se encuentran lo siguientes:
- Agile Project Type (Resaltar en este rubro que se integra mucho de la metodología SCRUM)
- Orgaizational Change Management Discipline
- ISV Guidance
- Enhanced to the Diagnostic Phase (Resaltar que en este rubro se proporciona herramientas para estimar proyectos)
Realmente se ha dado un gran salto en esta nueva versión, adicionalmente ya se maneja el tan mencionado concepto de xRM así como la verticalización hacia ciertas industrias.
Mas información en el siguiente link
http://geeks.ms/blogs/juanrafael/archive/2009/12/21/microsoft-dynamics-sure-step-2010-liberado.aspx
» Leer más, comentarios, etc...
Najaraba.com: Software libre, metodologías ágiles y más.
Quinto cumpleaños
Diciembre 29th, 2009 - [Enlace local]
Hoy hace cinco añitos este blog. Casi abandonado y en la pobreza de posts sobrevive a mi poca dedicación al mismo. Pensaba que este año había sido el más triste en el mundo Najaraba, pero ahora he visto que el 2007 fue incluso más parco en la publicación de posts.Así que solo saludo al personal que siga leyendo este blog, y que informo que sigo vivo :)Aunque este año ha ido bastante activo en
» Leer más, comentarios, etc...
Picando Código
Actualizados plugins para WordPress: UserAgent-Spy y List Category Posts
Diciembre 28th, 2009 - [Enlace local]
El fin de semana tuve un rato para dedicarle a la programación PHP, y actualicé mis plugins de WordPress:
List Category Posts:
Permite listar posts de una (o varias) categoría(s) determinada(s) en una página o post.
Ya en la versión 0.7, la mayoría de los cambios fueron contribuciones de usuarios del plugin. Hay varios temas de soporte y contribuciones al plugin en el Foro de WordPress.
UserAgent-Spy:
Plugin para mostrar el Sistema Operativo y Navegador Web de las personas que dejan comentarios en nuestros blogs de WordPress.
Fue una actualización con pocos cambios, la versión 1.1. Unos cuantos cambios más quedaron para más adelante.
Tengo muchas nuevas ideas para los dos plugins, pero que llevan más tiempo de desarrollo. En algún momento tendré tiempo de implementarlas. Mientras tanto, cualquier aporte es bienvenido en los foros, o dejando comentarios.
» Leer más, comentarios, etc...
Variable not found
PremoniSense, la gran novedad de Visual Studio 2010
Diciembre 27th, 2009 - [Enlace local]
Seguro que muchas veces te has preguntado qué es el “programa para la mejora de experiencia de usuario”, esa pantalla que nos aparece desde hace muchos años tras instalar Visual Studio (y otros productos de Microsoft), sugiriéndonos sutilmente que ayudemos a recopilar información del uso que damos a sus servicios y software.
En el encuentro de desarrolladores DevConn4 del pasado diciembre ya se oían rumores sobre el uso que estaban dando a esta información los chicos del laboratorio, y concretamente los investigadores del grupo Information retrieval and management, pero nada que pudiera ser tomado en serio en aquél momento.
El pasado uno de Abril, Dough Seven, Senior Product Manager de Visual Studio Team System en Microsoft, en el marco de las DSL’s Developers Conference, ya dejó caer que en la próxima versión de Visual Studio (la 2010) se introducirían “tecnologías que revolucionarían la forma en la que desarrollamos software e incrementarían la productividad de forma nunca vista”. Ahora, con el tiempo, se entiende que no se refería a nuevas plantillas, componentes o mecanismos de refactorización, se trataba de una pequeña pista de lo que se estaba cociendo en Redmon.
Y por fin, cuando ya va quedando menos para lanzamiento oficial de Visual Studio 2010 (estaba previsto para el próximo mes de marzo, aunque ha sido retrasado), es el mismísimo S. Somasegar Vicepresidente Senior de la División de Desarrollo, el que ha desvelado el gran secreto: la tecnología PremoniSense™.
Tras este enigmático nombre se encuentra el resultado de recopilar pautas de comportamiento de decenas de miles de desarrolladores de todo tipo durante más de diez años y procesarlas mediante complejos mecanismos estadísticos e inteligencia artificial. Esto ha permitido desarrollar un motor de inferencia, alojado en la nube, capaz de analizar en tiempo real el uso que hacemos del entorno de desarrollo y adelantarse a nuestras acciones, automatizando gran parte de las tareas habituales de los programadores.
Cómo funciona
El modus operandi es el siguiente: cuando PremoniSense™ detecta un comportamiento conocido, aparece un cuadro describiéndonos cuál es el siguiente paso que vamos a dar en función de lo que hemos hecho hasta el momento; la base de conocimiento de la que obtiene esta información es tan amplia que estadísticamente se estima que el índice de error de sus predicciones el 0,1%, es decir, un fallo de cada 1000 acciones. Pero lo más interesante sin duda es que, dado que conoce perfectamente nuestras intenciones, nos ofrece la posibilidad de hacer el trabajo por nosotros automáticamente.Áreas de interacción
De momento, esto que veremos en Visual Studio 2010 será únicamente un adelanto, por lo que sólo será posible disfrutar de él en tres áreas de actividad en el proceso de desarrollo de software: la arquitectura de aplicaciones, el desarrollo o implementación, y la calidad del software.Se prevé que Visual Studio 2012 ya incluirá soporte de PremoniSense™ completo para otras áreas, como la ingeniería de requisitos, el despliegue o el soporte postventa.
Pero bueno, centrándonos en el presente, a continuación describo las áreas en las que esta tecnología estará presente en VS2010, con algunas capturas de pantalla de ejemplo que demuestran la increíble potencia de esta tecnología, que a veces sólo se puede describir con la palabra “magia”.
- Arquitectura (Architectural PremoniSense™)
El motor de inferencia será capaz de detectar, en función del tipo de aplicación que estemos desarrollando, la arquitectura más apropiada a utilizar en cada momento, refactorizando el proyecto para adaptarse a la misma.
Por ejemplo, si estamos creando una aplicación MVC con servicios de uso genérico será capaz de crear un proyecto independiente WCF capaz de permitir accesos securizados desde el exterior. Si observa que utilizamos procesos basados en flujos de trabajo, será capaz de mover el código a un proyecto independiente implementando dichos procedimientos con Workflow Foundation. Si detecta acceso a datos desde capas no permitidas (p.e., desde controladores en MVC), los trasladará a un proyecto independiente (el típico DAL, o capa de acceso a datos), actualizando las referencias automáticamente.
Asimismo, será capaz de detectar funcionalidades duplicadas transversales al sistema (por ejemplo, acceso a logs, seguridad, gestión transaccional), extraer sus implementaciones e inyectarlas de nuevo utilizando técnicas propias de la programación orientada a aspectos (AOP), todo de forma automática.
En teoría, el sistema soporta arquitecturas de hasta 7 capas, con posibilidad de entender y plantear soluciones integrando tecnologías tanto de Microsoft (como Sharepoint, Office, Exchange, WWF, EF, WCF, JASP, WPF, MVC, MVP o HTML) como open source (Rails, PHP, NHibernate, MySQL, Oracle, EJB, FSB, UPNP, ó MRW).
- Desarrollo (PremoniSense™ for Code)
El funcionamiento de PremoniSense™ en esta área es conceptualmente muy similar a las ayudas del IDE e incluso al soporte ofrecido desde herramientas externas como Resharper, el objetivo es ayudarnos a codificar más rápidamente y sin errores, pero llevado al extremo. Por citar unos ejemplos, ahí van los que más me han llamado la atención (podéis ver la lista completa en la documentación oficial):
- Autogeneración de funcionalidades CRUD. Es decir, el sistema detectará cuándo estamos realizando un mantenimiento típico (altas, bajas, modificaciones y consulta) y lo implementará por nosotros. Para ello, analizará la estructura de la base de datos y creará el código más apropiado y correcto según su experiencia acumulada en el tipo de sistema de que se trate.
- Autoasignación de propiedades. PremoniSense detectará cuándo estamos poblando las propiedades de un objeto y las establecerá por nosotros, determinando de forma automática el origen de la información. Por ejemplo, si estamos ante el clásico bloque de código para traspasar datos desde los campos de un formulario a una entidad, lo detectará y generará el código por nosotros; o en la implementación de un constructor con parámetros, asignará automáticamente los miembros internos coincidan con éstos.
- PremoniStence, el nombre interno que han dado a lo que vendría a ser un “EF++”, que mantiene sincronizado el mecanismo de persistencia (¡sea cual sea!) con el resto de capas de la aplicación. Esto es realmente espectacular: por ejemplo, si ampliamos el tamaño de un campo de la base de datos, ya no hay que preocuparse por modificar los formularios, pues las propiedades de los controles visuales detectados por el motor se actualizarán de forma automática; o si cambiamos el nombre de una propiedad en una entidad, se actualizará el nombre del campo en la base de datos, e incluso las etiquetas de descripción a nivel de interfaz de usuario. Pero ojo, que no se trata de un mecanismo de binding o mapeo como los existentes en la actualidad, sino de un proceso totalmente automático que nos vigilará continuamente e irá realizando estas tareas de forma silenciosa.
- Autoimplementación de métodos, que utiliza la gigantesca base de conocimiento acumulado durante años para implementar métodos de forma automática, basándose únicamente en su nombre y signatura (parámetros de entrada y tipo de retorno). Por ejemplo, ya no será necesario implementar más el clásico método “
long factorial(long n)”: él lo hará por nosotros :-))
Como puedes comprobar, PremoniSense™ además nos regala la reaparición estelar de nuestro viejo amigo Clippo, esta vez disfrazado de adivino. Al parecer se trata de un guiño de los desarrolladores de Visual Studio al equipo de Office… humor friki, supongo ;-D
- Simplificación de algoritmos, un mecanismo capaz de replantear el código de métodos complejos, reescribiéndolos de forma más simple y mantenible de forma automática, basándose en los parámetros de entrada, los resultados de salida y el análisis semántico del procedimiento implementado. Internamente se conoce como PremoniKiss, por las iniciales de KISS, el famoso principio para el desarrollo de software que aboga por la simplicidad de las creaciones.
- En la misma línea, PremoniYagni, un detector prematuro de funcionalidades y características inútiles, que nos alertarán cuando estemos comenzando a introducir en nuestras aplicaciones características que estadísticamente se conoce que no son utilizadas por los usuarios, o estemos entrando en el pantanoso terreno de la sobreingeniería. YAGNI son las iniciales de You ain’t gonna need it (“no vas a necesitarlo”).
- Detección automática de dominios de aplicación, personalizando su comportamiento para hacer la experiencia de desarrollo más liviana. Así, una vez inferido el dominio del sistema, será capaz de generar automáticamente las entidades de datos, gestores, e incluso lógica de negocio más apropiada, y adaptar sus deducciones, consejos y acciones a dicho dominio.
Algo realmente interesante de PremoniSense™ for Code es que el código que genera es dinámico, es decir, que es capaz de seguirle el rastro y modificarlo de forma automática cuando se produce algún cambio en las premisas de las que partió en el momento de inferir su generación, manteniéndolo siempre actualizado y correcto.
- Autogeneración de funcionalidades CRUD. Es decir, el sistema detectará cuándo estamos realizando un mantenimiento típico (altas, bajas, modificaciones y consulta) y lo implementará por nosotros. Para ello, analizará la estructura de la base de datos y creará el código más apropiado y correcto según su experiencia acumulada en el tipo de sistema de que se trate.
- Calidad (PremoniSense™ for Quality)
PremoniSense™ también está preparado para utilizar su enorme base de conocimiento con objeto de incrementar exponencialmente la calidad de nuestras aplicaciones en varios ámbitos. Por citar algunos:
- Generador de pruebas unitarias, que utilizará la base de conocimiento para generar por cada clase un set de pruebas de unidad lo suficientemente extenso como para asegurar que son mayormente correctas. Basado inicialmente en el proyecto Pex de Microsoft Research, incrementa la calidad del código hasta niveles nunca vistos anteriormente, puesto que las pruebas serán generadas teniendo en cuenta el dominio de la aplicación y los fallos que se suelen producir en cada uno.
- Autodocumentador de diseño, aunque sólo disponible para los poseedores de la próxima suite Office 2010, que creará partiendo de plantillas prediseñadas todo el juego de documentación de diseño de la aplicación, siguiendo los estándares definidos por diversas metodologías (entre las que se encuentra, curiosamente, Métrica 3).
- Como una extensión del punto anterior, pero que vale la pena destacar de forma independiente, PremoniSense™ será capaz de generar un borrador de manual de usuario del sistema, basándose principalmente en tres factores: el conocimiento del comportamiento de los usuarios acumulado durante años, el interfaz que se haya creado y las funcionalidades implementadas. Obviamente, no nos dará todo el trabajo hecho, pero lo que hasta ahora se trataba de una ardua tarea de redacción se reducirá a un simple repaso y retoque de los textos.
- Detección de procesos no finitos, que se acerca a la solución del clásico problema de la parada para máquinas de Turing, utilizando el motor estadístico de PremoniSense™ para determinar cuándo los algoritmos empleados en un sistema presentan incorrecciones que le harán entrar en un bucle infinito, antes de que esto se produzca.
- Detección de publicación prematura, se trata de un mecanismo de control sobre la base de código capaz de determinar cuándo un producto está suficientemente maduro para ser publicado (o desplegado a un servidor en producción) en función de su complejidad, número de pruebas funcionales y unitarias realizadas, y la extensa base de experiencias anteriores.
- Generador de pruebas unitarias, que utilizará la base de conocimiento para generar por cada clase un set de pruebas de unidad lo suficientemente extenso como para asegurar que son mayormente correctas. Basado inicialmente en el proyecto Pex de Microsoft Research, incrementa la calidad del código hasta niveles nunca vistos anteriormente, puesto que las pruebas serán generadas teniendo en cuenta el dominio de la aplicación y los fallos que se suelen producir en cada uno.
Obviamente la noticia no es real, se trata simplemente de una broma del Día de los Inocentes. Pero molaría que fuera verdad, ¿eh? ;-DD
Publicado en: Variable not found.
» Leer más, comentarios, etc...
Variable not found
We wish You a Merry Christmas
Diciembre 24th, 2009 - [Enlace local]
(el que quiera algo más friki puede ver la felicitación de 2007 ;-D)
Publicado en: Variable not found.
» Leer más, comentarios, etc...
MonoCaffe
Java7 Closures
Diciembre 24th, 2009 - [Enlace local]
Al votar hoy en la encuesta de JavaHispano.org acerca de los closures en Java 7 pude ver que los resultados reflejaban que una gran cantidad de personas registradas en este sitio no conocen los closures. La verdad es que cualquier programador que haya trabajado con otros lenguajes como Lisp, JavaScript o Ruby conocerá los closures decerca. Incluso Groovy, tiene closures.
Funciones-objeto y closures
Lo primero que hay que entender es la diferencia entre funciones como objetos y closures. Una función puede ser anónima o definida, pero también pueden ser objetos en si mismas. Esto nos permite utilizar funciones como argumentos, ser devueltas por otras funciones o ser almacenadas en estructuras de datos. Vamos, son objetos de primera clase o de primer orden.Un closure es una función más su entorno y estos pueden ser de igual forma tratados como objetos de primera clase, pero al contener un entorno, podemos acceder a variables (o funciones) de este entorno incluso cuando el mismo no este activo. Existen lenguajes que soportan funciones-objetos o closures o ambos, y muchos de los lenguajes funcionales en su mayoria utilizan funciones y funciones-closure.
Entonces, un closure, por ejemplo, nos permite definir una función que tiene acceso a una variable, así que podemos almacenar esta funcion en un objeto y acceder a ella. El contexto de la función no se limita sólo a los objetos a los que tiene acceso directo, pero también a las variables que obtiene vía el entorno.
¿Cómo encaja esto dentro de Java?
Veamos un ejemplo clásico de sort con un método anónimo:- anArray.sort(new Comparator
() { - public int compare(MyClass a, MyClass b) {
- return a.myProperty().compareTo(b.myProperty();
- }
- });
- anArray.sort( (a, b) => a.myProperty().compareTo(b.myProperty() );
- public List
squareIntegers( List iList) { - List
result = new ArrayList (iList.size()); - for (Integer i : iList){
- result.add(i*i);
- }
- return result;
- }
- iList = squareIntegers(iList);
- iList = iList.map( { Integer i => i*i } );
definición teórica de closure, es decir, un método que puede obtener o hacer "close over" sobre el contexto del código al que pertenece sería:
- public Collection
getSpanishDvd( Collection dvds ){ - return select( dvds, { Dvd aDvd => dvd.isSpanish() } );
- }
- public static
Collection select(Collection source, {T=>Boolean} predicate) { - Collection
result = new ArrayList (); - for (T o : source) {
- if (predicate.invoke(o)) result.add(o);
- }
- }
¿Son utiles los closures?
En lenguajes como Python llevan mucho tiempo discutiendo sobre la necesidad de lambda y la verdad es que IMO no son algo necesario, pero que es bueno tener a mano para cuando las circunstancias lo precisen. Este tema es parecido al de los for-each con Java6 donde muchas personas desconfiaban de la implementación de estos y de su utilidad. Como sucede con cualquier herramienta, es mejor entenderla antes de utilizarla para no terminar con código spaghetti que dificulte la lectura y el mantenimiento.Os recomiendo leer el libro SICP para comprender los closures en su totalidad y además un poco de Lisp.
» Leer más, comentarios, etc...
Arragonán
Cómo ven los fanboys a los lenguajes de programación
Diciembre 23rd, 2009 - [Enlace local]
Vía RubyInside. El de sistemas operativos en el blog de Abel Mendivil.
» Leer más, comentarios, etc...
Blog de Julio César Pérez Arques
Participación en el podcast Testing de aplicaciones de javaHispano
Diciembre 23rd, 2009 - [Enlace local]
En javaHispano han publicado las dos partes del podcast Testing de aplicaciones en el que tuve el enorme placer de participar durante una noche del ya lejano mes de Noviembre.
El podcast fue en realidad una intensa tertulia, junto a Alfredo Casado, José Luis Bugarín y Jorge Rubira, donde mezclamos la importancia y ventajas del testing automático de aplicaciones con experiencias, buenas prácticas, técnicas, frameworks y herramientas.
La primera parte se centra más en introducir el testing automático, los tipos de tests, buenas prácticas y la metodología TDD.
Mientras que en la segunda parte se tratan herramientas y frameworks concretos, principalmente del mundo Java, para terminar comentando cómo explotar el testing al máximo desde un entorno de integración continua.
Poco más que añadir a lo contado en el podcast y comentado en javaHispano. Sólo volver a animaros a dar el salto a hacer testing a los que aún no lo habéis hecho. Merece la pena.
Espero que os haya gustado.
» Leer más, comentarios, etc...
avemundi, blog de un micro-isv » Desarrollo de software
enlaces 23.diciembre.2009
Diciembre 23rd, 2009 - [Enlace local]
Para estos días de fiesta dejo un par de enlaces que me han gustado mucho.
- Dan Pink en la sorprendente ciencia de la motivación. Un video de una conferencia acerca de la motivación, y de por qué la motivación extrínseca no funciona en ciertos casos. Algo de lo que habló Joel Spolsky hace mucho tiempo en un post titulado Incentive Pay Considered Harmful.
- Things I will never like about Mac OS X. Un artículo donde se crítican determinados aspectos de la interfaz gráfica de usuario de OS X. Completamente de acuerdo, sobre todo en la argumentación de interfaz centrada en aplicaciones.
» Leer más, comentarios, etc...
MonoCaffe
DVD Rip en Ubuntu 9.10
Diciembre 20th, 2009 - [Enlace local]
Estos dias me he puesto a hacer copias de seguridad de toda la filmoteca de DVDs que tenemos para los niños y es un arduo trabajo. Por suerte he empezado a utilizar una herramienta que viene con Ubuntu Karmic Koala llamada Thoggen que hace un gran trabajo al simplificar todo el proceso.
Lo primero que me gusto fue lo sencillo de su interfaz y que automaticamente selecciona los capitulos que piensa pueden ser los importantes, por lo que no hace falta adivinar cuales son. Dado que sólo codifica en OGG Vorbis, sólo tenemos que seleccionar el tamaño y el idioma.
Que sólo permita utilizar OGG tambien puede ser un problema si vamos a reproducir estos videos en black-box-appliances como lo son los reproductores de DIVx de toda la vida. Es muy raro encontrar alguno con soporte para OGG Vorbis, pero esto tampoco es un problema gracias a mencoder.
Con el siguiente comando, podreis convertir vuestros videos a MPEG-4 que cualquier reproductor en el mercado será capaz de reproducir. Además, junta todos nuestros capitulos en un único fichero:
$mencoder -oac mp3lame -ovc xvid -xvidencopts vhq=1:bitrate=2200:nopacked:nogmc:noqpel:nocartoon:bvhq=0:max_bframes=2:quant_type=mpeg ficheros_entrada.* -o fichero_salida.avi
Espero os sea util.
» Leer más, comentarios, etc...
Variable not found
Actualizando el equipo con Disk2Vhd
Diciembre 20th, 2009 - [Enlace local]
Por cosas de la procrastinación, tenía una máquina pendiente de formatear desde hace unos años ;-P, y he aprovechado el fin de semana para hacerlo. Como sabréis, esto no es tarea fácil, se requiere mucho pragmatismo, gran concentración y, principalmente, vencer al Diógenes digital que todos llevamos dentro ;-D.
Y claro, una vez que nos ponemos, el problema es cómo conseguir minimizar los daños colaterales. Esta máquina, aunque algo antigua, estaba todavía en uso y tenía gran cantidad de archivos y software instalado en su disco de sistema. También contaba con un disco exclusivamente para datos, pero éste no me suponía ningún problema.
En estos casos normalmente no basta con hacer un salvado del disco duro, a lo bruto, sobre otro disco, formatear y listo; así sólo conseguiremos tener acceso desde la nueva máquina a los ficheros físicos del sistema anterior, pero no podremos realizar tareas de nivel superior, como copiar configuraciones, exportar o importar datos desde aplicaciones, etc. Y lo que es imposible, al menos en mi caso, es planificar este movimiento con tanta exactitud que no se quede ni un byte por detrás.
La conclusión a la que llegué es que la única forma de hacerlo con cierta tranquilidad era virtualizando el sistema anterior. Esto me permitiría acceder en vivo a la configuración anterior y traspasar archivos con la seguridad que necesitaba.
Y aquí es donde ha entrado en juego Disk2Vhd, la magnífica herramienta de Sysinternals (¿he dicho Microsoft? ;-)), que es capaz de generar un disco duro virtual (archivo con extensión .vhd) a partir de un disco duro físico. Y lo mejor de todo, que puede hacerlo sobre el propio equipo que está generando el volcado, es decir, en caliente.
El único requisito es disponer de espacio libre (por ejemplo, como yo lo hice, en un disco duro externo), estar corriendo Windows XP SP2, Windows Server 2003 SP1 o superiores, incluyendo sistemas x64, y suficiente espacio en un disco duro como para almacenar el archivo resultante del volcado.
La aplicación es muy sencilla de utilizar. Se descarga desde su sitio web y se ejecuta, no requiere instalación (también puedes usarla directamente); tras ello, simplemente debemos elegir los discos a virtualizar, seleccionar una ubicación de salida para el archivo .vhd, esperar unas horitas y ya lo tenemos. Normalmente bastará con virtualizar el disco de sistema.
Consejo #1: para que la conversión se realice más rápidamente, lo mejor es hacer que el .vhd a generar resida en un disco duro distinto del que estamos virtualizando, aunque se puede realizar sobre el mismo.Una vez con el archivo .vhd a buen recaudo, ya podemos formatear tranquilamente el disco del sistema, montar el nuevo sistema operativo y comenzar a instalar las aplicaciones que vayamos a necesitar.
Para acceder al sistema anterior tal y como estaba antes de la masacre, basta con instalar Virtual PC, crear una máquina virtual, “engancharle” el disco .vhd que hemos generado, y arrancar normalmente, pero ojo:
Consejo #2: haz una copia de seguridad del archivo .vhd antes de realizar cambios sobre el disco duro virtual. Me he encontrado algunos callejones sin salida en los que me ha venido de perlas (p.e., petes del Virtual PC al instalar las Virtual Machine Additions que me dejaban la máquina virtual inutilizada).La primera vez que enciendes la máquina virtual se llevará un buen rato arrancando Windows; es lógico, pues todos los controladores que tiene instalados corresponden a la máquina física, y el nuevo entorno debe ser configurado, prácticamente igual que si hubiéramos instalado el disco duro físicamente en otro equipo y arrancáramos desde él. Cuando esta reconfiguración finaliza, podremos utilizar con normalidad la máquina virtual e ir pasando las configuraciones y archivos al nuevo sistema tranquilamente.
Consejo #3: revisa la configuración básica de tu máquina virtual para evitar conflictos y funcionamiento anómalo en algunas aplicaciones; nombre de máquina, dirección IP, variables de entorno del sistema operativo, etc. En mi caso, la variable TMP/TEMP apuntaba a una unidad inexistente en el entorno virtual, y provocó algún que otro problemilla.Y por si lo que queremos acceder a los datos del equipo anterior en bruto, existe la posibilidad de montar un archivo .vhd como si fuera un disco duro más y acceder a su contenido directamente, por lo que podemos evitar la incomodidad de tener que arrancar Virtual PC para todo. Si usas Windows 7 (o 2008), esta capacidad viene “de serie”, sólo tienes que activarla desde el administrador de discos:
Publicado en: Variable not found
» Leer más, comentarios, etc...
Picando Código
Disponible WordPress 2.9
Diciembre 19th, 2009 - [Enlace local]
Acabo de actualizar el blog a WordPress 2.9.
Como la mayoría de las veces que se realiza actualización o cambio importante en la plataforma del blog, dedico un post a WordPress.
Las cuatro características más importantes que destacan sus desarrolladores en esta nueva versión son:
- Papelera con opción de “deshacer”, para deshacer las acciones de borrar posts o comentarios (y elimina los molestos mensajes de confirmación al borrar algo).
- Editor de imágenes que permite escalar, editar y rotarlas. Supuestamente el primero de varios arreglos multimedia por venir.
- Actualización y chequeo de compatibilidad de plugins en bloque, para actualizar varios plugins de una sola vez.
- Embebido de videos más sencillo, con solo pegar la URL se transforma en código embebido con soporte para YouTube, Daily Motion, Blip.tv, Flickr, Hulu, Viddler, Qik, Revision3, Scribd, Google Video, Photobucket, PollDaddy, y WordPress.tv (y más en próximos lanzamientos).
Me voy a tomar el atrevimiento de probar esta nueva característica a continuación:
El video pertenece al tema “Yo no soy el hijo de Hernández” del Cuarteto de Nos. Video muy bueno que me encontré en el blog de Enrique Place.
Pueden leer más en el post del blog oficial:
WordPress 2.9, oh so fine
Los que tengan blogs con WordPress ya podrán actualizarlo automáticamente desde su tablero, o descargarlo: WordPress 2.9.
» Leer más, comentarios, etc...
Picando Código
Revistas Linux+ : Libres de descarga
Diciembre 19th, 2009 - [Enlace local]

Linux+ DVD - Diciembre de 2009
La revista Linux+ decidió cambiar su paradigma de distribución de contenidos. Es por esyo que ya está su nuevo número disponible en formato digital libre para la descarga. De esta forma la revista puede llegar a cualquier persona en cualquier lugar del mundo.
La última edición impresa de Linux+ se lanzó este mes, un recuerdo de los 6 años de dicha edición:
Linux+ 12/2009 (60).
El tema central de este número es Diversión
Y como es tradicional, un DVD adjunto con Supreme SuperGamer, una distro GNU/Linux con juegos (libres y privativos). DVD versión de 8,5 GB.
Los artículos incluidos :
- Processing: Código abierto para la creación de arte digital
- Reproductores de música: Lo mejor en Linux
- VCL: Streaming de video
- En Linux también se juega… y mucho
- Recaptcha: Protegiendo formularios web
- Linux en la PYME paso a paso
- LVM: Implementación de volúmenes lógicos
- Hacking para Linuxeros: Evadiendo la seguridad de los Captcha
La primer edición de 2010, corresponde a Linux+ 61, la primera a ser distribuida con la nueva modalidad:

Revista Linux+ 61 - 01/2010
El tema central de este número es : Programación.
Viene con estos contenidos:
- ¡Primer número on-line para libre descarga!
- Inter f aces gráf icas con SDL
- Make: compilación inteligente
- Programando con inteligencia (artificial)
- Theremín Virtual: Un instrumento musical de nueva generación
- Herramientas forenses para la adquisición
- Analisis de soportes de datos con herramientas de código libre
- DNS: Domain Name System
- Juegos
- Linux en el instituto: Implementación de un servidor
- Esclavos de ordenadores nuevos
Puede leer más info sobre cada uno antes de descargar en el enlace:
SDL Interfaces gráficas de usuario.
Pueden descargarse varias ediciones anteriores en PDF desde el sitio web de la revista.
» Leer más, comentarios, etc...
MonoCaffe
Monocaffe Connections Manager 0.8
Diciembre 18th, 2009 - [Enlace local]
Ya está disponible la nueva versión de MCM para ser descargada desde el sitio habitual.
http://launchpad.net/mcm/
Para esta nueva versión se han arreglado gran variedad de fallos y se han añadido algunos cambios que mejoran la interfaz.
» Leer más, comentarios, etc...
PROGRAMANDO EN .NET
Establecer propiedades del IDE de Visual Studio dependiendo del proyecto que se abre
Diciembre 18th, 2009 - [Enlace local]
En el proyecto en el que estoy trabajando tenemos en el Team Foundation un branch con la solución de desarrollo y otro con la misma solución de producción. Considero que es una buena práctica que evita subir código no probado a producción y por ahora nos está llendo bastante bien.El "problema" es que a veces tenemos que tener ambas soluciones abiertas a la vez, y como los cambios que tienen
» Leer más, comentarios, etc...
xailer.info (esp)
Messages para Xailer
Diciembre 18th, 2009 - [Enlace local]
Hace tiempo que no os dejaba una revisión de los mensajes para Xailer que muchos de vosotros usais en vuestros proyectos.
Novedades.
Algunos pequeños Bug de cálculos de tamaños de forms resueltos.
OJO MsgOptions ha cambiado de orden sus parámetros por compatibilidad con el resto de mensajes.
Nuevo MsgListCheck para selección de opciones con checkbox.

El enlace http://www.bisoft.es/Demos/Messages/Mensajes.rar
Salu2
» Leer más, comentarios, etc...
xailer.info (esp)
Gestión de cámaras IP con Xailer
Diciembre 18th, 2009 - [Enlace local]
Me comentaba el otro día el amigo Paco Viruete, un gran tipo dicho sea de paso, la necesidad de acceder a cámaras IP de vigilancia desde una aplicación Xailer y ¿por que no?.
Aquí teneis un ejemplo de como integrar hasta 4 cámaras Ip al mismo tiempo en un form de Xailer y las 4 en movimiento claro.

NOTA IMPORTANTE: las cámaras son de la marca Axis (http://www.axis.com/) ya que utilizo el controlador para desarrollo que se distribuye con ellas y debemos de conocer sus IPs.
Para quien quiera probarlo aquí le dejo el proyecto completo y unas utilidades extra.
http://www.bisoft.es/Demos/Camara/Camara.rar
En la carpeta .\Redist hay 2 ejecutables
1. AXISMediaControlSDK_redist.exe es el encargado de instalar los controladores de las cámaras para hacerlas accesibles desde programación.
2. IPUtility.Exe sirve para averiguar y/o cambiar las IPs de las cámaras en la red y sus nombres de usuario y contraseña, estos datos hay que suminstrarselos al programa en
CLASS TForm1 FROM TForm
Data cIpCamara1 Init “192.168.1.35″
Data cIpCamara2 Init “192.168.1.36″
Data cIpCamara3 Init “192.168.1.37″
Data cIpCamara4 Init “192.168.1.38″
Data cUserName Init “root”
Data cUserPassword Init “root”
Espero que le podaís sacar provecho e incluso implementeis cosas nuevas como grabación a disco, sonido, etc.
Salu2.
» Leer más, comentarios, etc...
xailer.info (esp)
Gestión documental con Xailer. La clase tScanner
Diciembre 18th, 2009 - [Enlace local]
Ultimamente a todos los que os conozco en persona, me habéis mostrado algún interes en esta clase que preparé hace tiempo para poder escanear documentos directamente con Xailer y poder almacenarlos en archivos de múltiples tipos (Bmp, Jpg, Tiff multipágina, PDF multipágina, etc.) y/o cargarlos a campos Blob o Memo de bases de datos.
Pues bien, como lo prometido es deuda aquí os he preparado un ejemplo completo de como funciona esta clase.

Para comenzar se basa en un OCX comercial de costo reducido (unos 110 $Usd http://www.ciansoft.com/twaincontrolx/default.asp) y distribuible con nuestras aplicaciones libre totalmente de royalties de por vida. Os adjunto una versión de prueba del OCX en mi ejemplo y por lo tanto con limitaciones como la de no poder grabar los escaneos efectuados.
Hemos probado esta clase tanto con escaneres sencillos de sobremesa, como en multifunciones de red de tamaños gigantes con escaneo en A3 color, alimentación automática de un centenar de páginas, escaneo a doble cara, etc. siempre ha funcionado correctamente.
Solo es necesario que el escaner tenga interfaz Twain, lo cual es lógico y común para cualquier escaner.
La clase se encarga de instalar y registrar automáticamente el OCX necesario, de localizar los escaneres disponibles y de comenzar a escanear.
Os adjunto el manual del OCX también para que podais ver el potencial de este.
Para aquellos que os decidais a comprar el producto final dos advertencias.
1.- Debeis de pedir la versión del OCX para xHarbour y Xailer (incluye una pequeña modificación sobre el original por temas de protección)
2.- Debeis de cambiar en Scanner.Prg y en Twain.Prg cualquier referencia a TwainControlXTrial.ocx por TwainControlX.ocx, que será el Ocx que habreís comprado y con el os servirán un Password que debeís de incluir en Scanner.Prg sustituyendo a “demo” en Data cPassword Init “demo”
Espero que le saqueis provecho.
http://www.bisoft.es/Demos/Escaner/Escaner.rar
» Leer más, comentarios, etc...
Ingenieria de Software / Software Engineering
Cursos de SQL Server
Diciembre 18th, 2009 - [Enlace local]
Vía el Blog de Business Intelligence fácil (por cierto muy recomendable) llego a otro Blog Cursossqlserver donde se presentan varios videos de SQL Server en sus versiones 2008, 2005 y 2000, les recomiendo se echen un paseo por este extraordinario blog.
» Leer más, comentarios, etc...
Arragonán
Meme: Objetivos para el 2010
Diciembre 18th, 2009 - [Enlace local]
Me pasa el meme Miquel Camps, a.k.a gafeman. Y aunque no suelo ponerme objetivos oficialmente, voy a hacer una excepción
- 1. Hacer rentable jobsket, este objetivo es el principal y oficialísimo XD. Como supongo que muchos sabréis, este miércoles hemos lanzado los planes para empresas, que es de lo que pretendemos vivir
. - 2. Crear un plugin de geolocalización con google maps para Grails, lo tengo en la cabeza, me falta el tiempo para escribirlo, quizás con un par de fines de semana tontos…
- 3. Aprender Ruby de verdad, tengo vacíos de conocimiento acerca de este lenguaje, que probablemente sea de los más divertidos con los que programar.
- 4. Este me da vergüenza hasta ponerlo: retomar y lanzar flatee, que me da mucha pena dejarlo como lo dejé
, cerca de estar lo suficientemente acabado como para poder lanzar una primera versión. - 5. Hacer mis pinitos con alguno de los lenguajes de programación funcional que se oyen desde hace un tiempo (Erlang, Scala, Clojure…).
- 6. Volver a leer más libros, que este año he leído bastante menos que el anterior.
- 7. Tratar de mover algún mini-evento-reunión de
alcohólicos anónimostécnicos en Zaragoza, es algo que hemos hablado algunos muchas veces, se echa en falta algún evento, pero quizás seamos demasiado frikis y realmente no haya hueco para eso XD. Además, que como ahora no vivo allí, aunque me pase casi cada semana, para mi ahora es todavía más difícil moverlo. - 8. Mejorar mi Inglés. Sí, soy muy torpe con el inglés, aunque leyendo no suelo tener excesivos problemas, es mi eterno punto débil.
- 9. Organizarme y aprovechar mejor mi tiempo, es muy posible que me acabe haciendo con un pomodoro para ayudarme
. - 10. Ir por fin a vaquillas. Para justificar que nunca haya ido, diré que cuando he podido moverme ese fin de semana del año ha sido a los san fermines.
- 11. Mantener la constancia de ir al gimnasio. Empecé hace 2 meses y por ahora la mantengo(aunque ya no salgo a correr), la verdad que me está ayudando bastante a evitar los problemillas de espalda y de rodilla que he tenido en algunas temporadas, además de ayudarme a despejar la mente.
- 12. Tener una oficina donde trabajar, o algo que se le parezca. Lo de trabajar en casa, bares o lugares así, está bien para hacerlo algunos ratos, pero después de año y medio uno empieza a estar cansado de esta situación.
Pues nada, veremos lo que se cumple y lo que no.
Y si tienen ganas de seguir el meme, les animo hacerlo a Jordi Monné, Jesús Navarrete, Dani Torres Burriel, Alberto Gimeno, José Félix Lucía, David Bonilla, Manuel Recena, Abel Muiño, Mamen Pradel, Juan Luis Belmonte, Raúl Expósito, Isa Casanova, Sergi Almar… y paro aquí que igual ya es demasiada gente. Y sí, a algunos os lo paso para ver si dáis señales de vida, porque escribís todavía menos que yo XD.
» Leer más, comentarios, etc...
avemundi, blog de un micro-isv » Desarrollo de software
el Puchero en ComputerHoy
Diciembre 17th, 2009 - [Enlace local]
La revista ComputerHoy Práctico nº 29 que salió a la venta la semana pasada trae una revisión sobre mi programa el Puchero.
» Leer más, comentarios, etc...
Variable not found
Disponible ASP.NET MVC 2 Release Candidate
Diciembre 17th, 2009 - [Enlace local]
Recién salida del horno, tenemos ya la versión candidata de ASP.NET MVC 2, la última antes de la versión final que aparecerá antes de marzo, el mes previsto para el lanzamiento de Visual Studio 2010.
Como indica Haack en su post, la mayor parte del trabajo se ha centrado en corregir bugs e introducir mejoras a funcionalidades existentes, como:
- relativas a la validación en cliente:
- separación de los scripts de validación a un único archivo, que puede ser incluido en cualquier parte de la vista.
- soporte para la globalización de mensajes.
- mejora de Html.ValidationSummary() para que soporte mensajes de error a nivel de modelo, y no vinculados a campos concretos.
- se permite la inclusión de botones que se salten la validación de formularios.
- se permite especificar cuándo se ejecutan las validaciones: mientras el usuario teclea, cuando se pierde el foco en un control o sólo en el submit.
- otras mejoras:
- plantillas T4 que generan código según la versión del framework destino.
- el código HTML generado por el diálogo “Add View” es consistente con los templated helpers.
Enlaces:
Publicado en: Variable not found






