MadeInFlex
MIF onsite IV!
Julio 12th, 2010 - [Enlace local]
El próximo 16 de Agosto tendrá lugar en Barcelona la cuarta edición del MIF onsite.
En esta ocasión el evento concentrará a 8 Platform Evangelists de Adobe de distintos puntos de Europa.
El formato de las charlas será 30 minutos cada una y tocarán temas variados dentro del contexto de la plataforma Flash.
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
En los próximos días tendremos más información acerca de las charlas. Manteneos atentos!
Cuándo
- 16 de Agosto 2010. Ponencias de 16 a 19h. Tras el evento tendremos la oportunidad de charlar un rato con los ponentes en la terraza del hotel.
Dónde
- H10 Marina Barcelona: Av. Bogatell, 64-68
08005 Barcelona, Spain
Regsitro
- Registro a través de la página de MadeInFlex de Adobe Groups. Las plazas son limitadas así que debéis inscribiros cuanto antes.
Precio
- gratis, gratuït, free (as in beer), 0€… Gracias Adobe!
» Leer más, comentarios, etc...
MadeInFlex
Oferta laboral – HQRecruiting
Julio 12th, 2010 - [Enlace local]
En HQRecruiting estamos realizando la búsqueda de un/a Programador/a Flex para uno de nuestros clientes más importantes.
Estamos realizando el recruiting de un/a Programador/a Flex para su departamento I&D, estando entre sus funciones el desarrollo de aplicaciones RIA en Flex empleando FlexBuilder.
HQRecruiting es una consultora tecnológica en plena expansión, con proyección internacional, líderes en innovación y aplicación de nuevas tecnologías al desarrollo del capital humano que cuenta con importantes clientes, grandes empresas de todos los sectores (entre las que se encuentran más del 50% de las empresas del IBEX 35) que apuestan por ellos en el desarrollo de proyectos de última generación, implementando soluciones tecnológicas innovadoras en gestión del conocimiento, formación y entrenamiento, desarrollo del talento, productividad y desempeño e innovación: plataformas de gestión y evaluación, comunidades en red, herramientas colaborativas, simuladores virtuales, aplicaciones web 2.0, juegos en red,… tecnología de última de generación aplicada al mundo de las empresas.
El perfil deseado debe poseer buen conocimiento y manejo de Flex, es deseable que cuente con experiencia en el manejo de PHP y MySQL, así como experiencia en el desarrollo de aplicaciones RIA.
Se ofrece incorporación a una empresa en crecimiento, con grandes posibilidades de desarrollo y aprendizaje, un excelente ambiente de trabajo (plantilla muy joven) y ubicada en el centro de Madrid (muy bien comunicada: 4 paradas de metro cerca, e intercambiador de autobuses a 10 minutos).
Si eres una persona exigente y responsable, si buscas nuevos retos que te permitan seguir aprendiendo y desarrollándote como profesional, envíanos tu candidatura.
Requisitios Imprescindibles:
- Contar con un 1 año de experiencia como Programador/a Flex
- Formación académica área informática
Requisitios Valorables:
- Experiencia y conocimientos de la aplicación Flash
- Conocimientos en PHP, MySQL
- Conocimientos de Linux
- Experiencia Gestión de proyectos
- Frameworks de desarrollo
- Patrones de diseño
- Conocimientos de Java (Tomcat)
- Conocimientos del estándar SCORM de ADL
Ofrecemos:
- Contrato por Obra 1 año + Indefinido
- Jornada Completa
- Salario a negociar según valía
Contacto: sfabregat [at] hqrecruiting [dot] com
» Leer más, comentarios, etc...
Arragonán
Usando Cucumber con Grails
Julio 12th, 2010 - [Enlace local]
Desde que trabajé hace algo más de un año con los cracks de Linking Paths y Rails que no tocaba Cucumber, hasta este fin de semana, que he estado haciendo algunas pruebas con el plugin grails-cucumber. Cucumber es una herramienta para hacer tests de aceptación(a la Behaviour Driven Development) escrita en Ruby que ayuda a bajar la barrera que separa a la gente de negocio o de testing(hay una leyenda urbana que dice que existen XD) con los programadores, utilizando un DSL de por medio.
Por un lado gracias a la JVM y JRuby podíamos aprovecharnos de esta interesante herramienta utilizando Ruby, y por otro, hace cosa de un año y algo que se han ido añadiendo soporte a otros lenguajes de la JVM con el proyecto cuke4duke. A día de hoy, también podemos escribir los tests con Java, Groovy, Scala, Clojure, Javascript y Ioke; cada uno que elija el lenguaje que más le guste
. Y siguiendo con la recapitulación, a principios de primavera surgió el plugin para grails y desde entonces que tenía pendiente probarlo, pero por falta de tiempo unas veces o simplemente no acordarme otras, lo había ido retrasando
.
En fin, pues después de encontrarme varios problemas para instalar y hacer funcionar el plugin, preferí hacer un fork para modificar el código bajo mis necesidades y luego hacer un pull request en github para que se pudieran aprovechar los cambios. Arreglé un problemilla con el script Gant de ejecución de cucumber con mi versión de grails(1.2.2), aproveché a actualizar las depenencias con jruby y cuke4duke a las últimas versiones y eliminé la dependencia con picocontainer.
Tras estos pasos me puse a escribir una feature como esta:
Feature: Search job offers
Scenario: Search job offers in zaragoza, we should have results
Given I'm at jobsket.es
And I write zaragoza into the seachbox
When I submit the form
Then the result should contains Promotora
And the result should contains zaragoza
Supongo que a los que conozcáis otras herramientas de BDD os resultará familiar o imaginaréis por donde van los tiros del significado de este DSL(pre-condiciones, proceso, post-condiciones). Pero como supongo que a algunos les resultará útil, ahí va una mini-explicación con mis palabras
Feature: Es la funcionalidad que vamos a testear, en este caso la búsqueda de ofertas de empleo en jobsket.
Scenario: El escenario vendría a ser una historia de usario de la funcionalidad, esto quiere decir que cada scenario sería probar una funcionalidad en un contexto distinto.
Given: El estado inicial del escenario, se pueden concatenar varios con And’s.
When: El proceso que queremos probar, también se pueden concatenar varios usando And’s… pero de inicio no tiene sentido, deberíamos probar sólo una cosa en cada escenario.
Then: Las comprobaciones para saber si el escenario se está ejecutando correctamente o no.
Bueno, una vez escritos los pasos de la feature, nos queda escribir los steps para que se ejecute el test del escenario. Como en nuestro caso queremos aplicar el test de aceptación a una interfaz web, utilizaremos el archi-conocido Selenium. El código en Groovy quedaría algo parecido a esto:
import org.openqa.selenium.By
import org.openqa.selenium.WebDriver
import org.openqa.selenium.WebElement
import org.openqa.selenium.htmlunit.HtmlUnitDriver
import static groovy.util.GroovyTestCase.*
this.metaClass.mixin(cuke4duke.GroovyDsl)
WebDriver driver
WebElement element
Before() {
driver = new HtmlUnitDriver()
}
Given(~"I'm at jobsket.es") {
driver.get("http://www.jobsket.es/home")
}
Given(~"I write (\\w+) into the seachbox") {keywords ->
element = driver.findElement(By.id("keywords"))
element.sendKeys(keywords)
}
When(~"I submit the form"){
element.submit()
}
Then(~"the result should contains (\\w+)") { someContent ->
assertFalse(-1 == driver.getPageSource().indexOf(someContent))
}
Si os fijáis, lo único raro es this.metaClass.mixin(cuke4duke.GroovyDsl), que hace la “magia” para que funcione el DSL. Los Given, When y Then se ejecutarán cuando coincida una cadena de las features, internamente funcina mediante expresiones regulares. El Before() se ejecuta antes de cada escenario, y para ser re-utilizable entre features distintas debería estar en el directorio support. El resto del código no deja de ser de selenium/webdriver normal y corriente, además de usar GroovyTest(basado en JUnit) para comprobar que se cumplen las post-condiciones.
Hasta aquí no hay diferencias con utilizar cuke4duke con Groovy sin Grails. Lo que aporta el plugin de grails es que ayuda a olvidarse de instalar jruby y la gema de cuke4duke, lo integra como herramienta de línea de comandos(ejecutando grails cucumber) y entonces tampoco es necesario configurar nada nuevo en el servidor de integracion contínua para ejecutar estos tests.
En mi opinión, todavía está lejos de la integración de Cucumber con Rails, al menos por lo que yo recuerdo. Con Rails tras cada escenario se devuelve la base de datos al mismo estado inicial, es posibl combinar comprobaciones a nivel de interfaz y a la vez acceder a los métodos de los modelos para preparar o comprobar el escenario… vamos, que ayuda a que puedan ser tests menos frágiles, que es lo negativo que se suele ver en los test de aceptación(también llamados funcionales o de sistema).
De todas formas, sigue siendo un plugin muy interesante por poder conocer en un lenguaje cercano al natural si un escenario está en un estado aceptable o no, y si hay gente no técnica de por medio puede ser una herramienta perfecta para acercar mundos.
Ala! Fin del tocho! XD
» Leer más, comentarios, etc...
Fetishcode
Extensiones en JDeveloper 10g y Windows 7.
Julio 12th, 2010 - [Enlace local]
A
» Leer más, comentarios, etc...
Fetishcode
Preview Descargable de IE9
Julio 11th, 2010 - [Enlace local]
A
» Leer más, comentarios, etc...
Fetishcode
Plan B: Netbeans
Julio 11th, 2010 - [Enlace local]
A
» Leer más, comentarios, etc...
Bitácora de Javier Gutiérrez Chamorro (Guti)
Funciones Javascript en Dreamweaver CS5
Julio 11th, 2010 - [Enlace local]
Actualizo el artículo que en su día publiqué sobre las funciones Javascript incluídas por Adobe en Dreamweaver CS 5 (11.0.4909).
Las tienes para descargar aquí (15 Kb. en formato JS), para que puedas utilizarlas en tus proyectos web, con o sin Dreamweaver.
» Leer más, comentarios, etc...
Picando Código
Noticias de GNU/Hurd – Junio 2010
Julio 9th, 2010 - [Enlace local]
En el sitio de noticias de GNU/Hurd publican los avances del pasado mes de junio. Si bien mayo fue un mes con muchas novedades en GNU/Hurd, además de un LiveCD con GNU/Hurd y servidor gráfico Xorg, en julio también hay cosas para informar:
Un montón de parches han entrado a la lista de correo y repositorios de código fuente:
Jérémie Koenig posteó un parche preliminar para agregar soporte initrd (initial ramdisk) en GNU Mach pasa su proyecto del Google Summer of Code 2010: Debian Installer. Con esto, y algunos otros parches todavía en proceso de cambio (in flux), terminó pudiendo instalar un sistema Debian GNU/Hurd usando el Instalador de Debian — lo cual es la meta de su proyecto. Que los parches estén in flux significa que todavía queda trabajo para hacer para resolver correctamente algunas cuestiones, así que no hay que preocuparse de que Jérémie no tenga trabajo hasta que se termine el GSoC.
Karim Allah Amed acercó el primer parche para portar el código de paginación en clúster de OSF Mach a GNU Mach, lo que debería mejorar el rendimiento de la memoria virtual de Hurd.
Emilio Pozuelo Monfort corrigió un bug en glibc, que desbloquea un problema visto en
lnde coreutils, y continuó progresando en otras áreas.Zheng Da comenzó a comitear parches para que su proyecto DDE soporte drivers de dispositivos en bloque, aparte de arreglar otros asuntos, también.
Samuel Thibault arregló fugas de memoria en
pfinet, la unidad de red TCP/IP de Hurd. Aunque un servidor pfinet colgado será reiniciado en su próximo uso, que se coma toda la memoria del sistema debe evitarse, por supuesto — y esto es corregido con estos parches.Carl Fredrik Hammar envió parches para mejorar la estabilidad del servidor auth (rendezvous port death / invalid rendezvous ports).
Por último, si no lo han visto aún: Richard Hillesley posteó un artículo GNU HURD: Altered visions and lost promise que causó bastante discusión (1, 2, 3, 4, 5) – algunas son críticas válidas y constructivas, otras no tanto. Si quieres contactarte con los desarrolladores de GNU Hurd, hay numerosas opciones para contactarse!
De destacar, ya prácticamente tenemos un Debian Installer que seguramente madure un poco más tras el Google Summer of Code. Entre los esfuerzos de GNU, ArchHurd y Debian, han ido manteniendo vivo el desarrollo de este kernel tan complejo. Le tengo fe a ArchHurd…
Comparte:
» Leer más, comentarios, etc...
Picando Código
1ra charla para el 5to Concurso Nacional de Videojuegos
Julio 9th, 2010 - [Enlace local]
Copio y pego desde UruguayGamer:
Comparte:Citamos el mail que se recibio con mas detalles sobre la primera charla dentro del marco del Concurso Nacional de Videojuegos.
Les recordamos también que está el evento en facebook.
Con muchísima alegría anunciamos que el próximo miércoles 14 de julio a las 18:30 hs en Ingenio Av. Italia 6201 (LATU) se llevará a cabo la primer conferencia del ciclo 2010.
Este año nuevamente el ciclo de conferencias se dará como un Taller y otorgaremos Diploma de Asistencia. La primer conferencia la dará Gonzalo Frasca, “Cómo pasar de la idea al juego: técnicas para convencer a otros que nuestro juego será lo más grande desde el Pacman.”
Los videojuegos, como todo proyecto, van cambiando y creciendo a medida que se van desarrollando. Durante ese proceso, hay que convencer a mucha gente de que el proyecto es el mejor: inversores, publishers pero también miembros del equipo y luego, por supuesto, a los jugadores. Esta charla explicará cuáles son los pasos a seguir para promocionar nuestro juego, incluso antes de que esté terminado.
Luego de la charla, Gonzalo Frasca aclarará dudas y responderá preguntas sobre la edición 2010 del concurso de videojuegos.
Gonzalo Frasca es Co-fundador y Director Creativo de Powerful Robot y uno de los organizadores del concurso.
Enterate de los detalles y lee las bases enwww.ConcursoVideojuegos.com
Confirmar asistencia a ppitta@latu.org.uy
El comité organizador
Ingenio/Proanima
» Leer más, comentarios, etc...
MadeInFlex
Oferta laboral – businessinria
Julio 9th, 2010 - [Enlace local]
Descripción de la empresa
businessinria, con sede en Madrid y proyección internacional, es una boutique de desarrollo web especializada en aplicaciones RIA (Rich Internet Application). businessinria ayuda a las empresas a definir una estrategia de presencia web, a posicionarse según dicha estrategia y a generar contenidos para atraer a los usuarios y clientes objetivo. Con un alto expertise en la web 2.0 ofrece soluciones de negocio así como servicios de consultoría, formación, mantenimiento y outsourcing.
Descripción de la plaza
Buscamos desarrolladores entre 1 y 3 años de experiencia en Adobe Flex.
Requisitos y conocimientos
Son imprescindibles conocimientos de Adobe Flex 3, deseables conocimientos de Flex 4 y experiencia el proceso de skinning de aplicaciones. Se valorarán conocimientos básicos-medios de manejo de herramientas de diseño gráfico (Adobe Photoshop)
Localidad y tipo de contrato
Buscamos candidatos para nuestras oficinas de Madrid. Contratos por obra y servicio con posibilidad de convertirse en contrato indefinido.
Salario bruto
A definir en función de la experiencia y valía del candidato.
Contacto
rrhh@businessinria.com
» Leer más, comentarios, etc...
jordisan.net blog: sobre lo humano, lo divino... y lo técnico: desarrollo
“Haz fácil lo imposible”, el nuevo libro de Steve Krug
Julio 8th, 2010 - [Enlace local]
Una reseña sobre la nueva obra del autor de "No me hagas pensar", publicada en el blog de SQUaC.
En el blog de SQUaC hemos publicado una reseña de "Haz fácil lo imposible", la discutible traducción (casi de manual de autoayuda) del título del libro "Rocket Surgery Made Easy", la última obra de Steve Krug, autor también del popular libro de introducción a la usabilidad "No me hagas pensar" ("Don't Make Me Think ").
A pesar de que el libro está en principio dirigido a personas no expertas en usabilidad que quieran incorporar técnicas de testeo con usuarios en sus desarrollos, la obra es muy recomendable también para cualquier profesional de la usabilidad; en mi opinión, su propuesta de dedicar periódicamente mañana al mes a las pruebas e involucrar a todo el equipo de desarrollo en ellas resulta más que interesante como un primer paso para integrar desarrollo de software y usabilidad, algo en lo que todavía hay mucho por hacer.
Las propuestas de Krug son muy pragmáticas; aboga, por ejemplo, por poner en común y centrarse únicamente en los problemas de usabilidad más graves detectados, y realizar las correcciones mínimas para corregirlos antes de la próxima ronda de pruebas.
Más sobre el libro "Haz fácil lo imposible" en el blog de SQUaC.
» Leer más, comentarios, etc...
jordisan.net blog: sobre lo humano, lo divino... y lo técnico: desarrollo
“Haz fácil lo imposible”, el nuevo libro de Steve Krug
Julio 8th, 2010 - [Enlace local]
En el blog de SQUaC hemos publicado una reseña de "Haz fácil lo imposible", la discutible traducción (casi de manual de autoayuda) del título del libro "Rocket Surgery Made Easy", la última obra de Steve Krug, autor también del popular libro de introducción a la usabilidad "No me hagas pensar" ("Don't Make Me Think ").
A pesar de que el libro está en principio dirigido a personas no expertas en usabilidad que quieran incorporar técnicas de testeo con usuarios en sus desarrollos, la obra es muy recomendable también para cualquier profesional de la usabilidad; en mi opinión, su propuesta de dedicar periódicamente mañana al mes a las pruebas e involucrar a todo el equipo de desarrollo en ellas resulta más que interesante como un primer paso para integrar desarrollo de software y usabilidad, algo en lo que todavía hay mucho por hacer.
Las propuestas de Krug son muy pragmáticas; aboga, por ejemplo, por poner en común y centrarse únicamente en los problemas de usabilidad más graves detectados, y realizar las correcciones mínimas para corregirlos antes de la próxima ronda de pruebas.
Más sobre el libro "Haz fácil lo imposible" en el blog de SQUaC.
» Leer más, comentarios, etc...
Cerebro en la Sombra » Técnico
Importar datos a SQL Server directamente desde Excel
Julio 8th, 2010 - [Enlace local]
Otro de esos pequeños problemas cotidianos que pueden acabar por convertirse en una tarea pesada. Siempre que tengo que importar datos de una hoja Excel acabo dando mil vueltas exportando a csv por aquí, importando por allá, etc. cuando en realidad es extremadamente sencillo, copiar y pegar.
En el Excel, seleccionamos las celdas a copiar y… las copiamos
, Ctrl+C o click en el botón derecho y copiar.
En el cliente de Microsoft SQL Server, abrimos la tabla donde queremos importar los datos y seleccionamos todo haciendo click en la celda superior izquierda, la primera de todas.
Ahora simplemente debemos pegar las celdas que habíamos copiado anteriormente, (Ctrl+V o botón derecho y pegar).
Ya está! Así de sencillo. Anda que no le he dado vueltas yo a estas cosas…
Debes prestar atención, eso sí, a las características de cada campo (autonuméricos, campos null, etc…).
» Leer más, comentarios, etc...
Variable not found
Primer vistazo a WebMatrix
Julio 7th, 2010 - [Enlace local]
Ayer mismo ScottGu anunciaba la publicación de la primera beta de WebMatrix, una curiosa, y por mi parte inesperada, solución integrada cuyo objetivo es facilitar el acceso al desarrollo de aplicaciones Web con tecnologías Microsoft, y principalmente, según parece, al desarrollador novel o procedente de otras plataformas.
WebMatrix se puede descargar de forma gratuita desde este enlace, y la instalación se realiza en unos minutos. Una vez completado el proceso, no requiere ningún tipo de registro del usuario, ni obtención de claves, simplemente funciona.
¿Y qué vamos a encontrar tras la instalación? En primer lugar, hay que destacar que WebMatrix no es sólo una herramienta de desarrollo; podríamos decir que es un pack que incluye tanto las herramientas como l
as plataformas necesarias para desarrollar, probar y desplegar aplicaciones para la web: IDE, repositorio de proyectos open source de partida, motor de datos, servidor web, y un nuevo framework de desarrollo sobre ASP.NET. Y todo ello integrado de forma muy elegante.
Veamos en mayor detalle cada uno de estos elementos.
El entorno WebMatrix
Una vez instalado el paquete, en nuestro menú de aplicaciones encontraremos un acceso directo a WebMatrix, que actuará como centro de control para el resto de sistemas integrados en el paquete, y como nuestro entorno de desarrollo.Una vez iniciado, a la hora de crear proyectos, podemos hacerlo desde cero o hacerlo desde distintos puntos de partida:
- partiendo de plantillas suministradas con WebMatrix, entre las que se encuentran un directorio de enlaces, un catálogo simple de productos o una galería fotográfica, entre otros.
- crearlas partiendo de algún software existente en una galería de software libre, la misma utilizada por Web Platform Installer. Para ello, sin salir del entorno, podremos seleccionar la plataforma deseada, y será descargada e instalada automáticamente. Es destacable que, además de la aplicación elegida, se instalarán también las dependencias requeridas (por ejemplo PHP, o el motor MySQL).

- Site, desde el que se pueden consultar y modificar aspectos generales sobre el proyecto, y acceder a herramientas como el gestor de datos, el generador de informes del sitio web, un visor de peticiones, o aspectos relativos al despliegue. Incluso es posible acceder a ofertas de alojamiento de nuestros sitios Web.
- Files, que da acceso a la estructura de carpetas y a los archivos de nuestro proyecto, y desde donde es posible crear, editar y añadir contenidos. En la siguiente captura se muestran algunos tipos propuestos al añadir un nuevo fichero al proyecto:
Como editor de código el entorno se queda bastante cortito, no tiene nada que ver con cualquiera de las ediciones de Visual Studio. De hecho, salvo el coloreado de código (disponible para HTML, CSS, Javascript, PHP, y ASP.NET), poco tiene que envidiarle el block de notas de toda la vida: nada de ayudas, autocompletado, intellisense o similares, dado que la orientación de WebMatrix es distinta, bastante más simple en este aspecto, a entornos de desarrollo profesionales. Por tanto, para desarrollar en serio debes pasar a Visual Studio, incluso en su versión Express, que superarán en mucho a esta herramienta.
Sin embargo, puede ser suficiente para desarrolladores que simplemente deseen retocar aplicaciones basadas en las plantillas suministradas, o software libre, que puede ser descargado directamente desde la herramienta, o usuarios que estén iniciándose en esta tecnología. - Databases, desde donde es posible gestionar las bases de datos utilizadas por el proyecto. En este momento dispone de soporte completo para SQL Server, MySQL y, otra gran novedad en WebMatrix, la nueva edición de SQL Server Compact Edition, que comentaré un poco más adelante.
- Reports, una herramienta que nos permite generar informes SEO sobre el sitio Web, capaz de analizar el sitio web de la misma forma que lo hace el toolkit SEO para IIS, para indicarnos aspectos errores y aspectos mejorables vistas a la optimización en buscadores.
IIS Express
ScottGu anunció hace unos días la próxima disponibilidad de IIS Express, un intento de mezclar la potencia de IIS 7.5 y la facilidad de uso de los servidores de desarrollo que estamos acostumbrados a utilizar desde Visual Studio. Lo mejor de los dos mundos.
Y aquí lo tenemos. Los sitios web abiertos desde WebMatrix son ejecutables directamente a través de este servidor, que iniciará al abrir el proyecto y quedará minimizado en el área de notificaciones de Windows. Desde este icono podemos consultar las aplicaciones actualmente en funcionamiento en el servidor, consultar información básica sobre ellas, como la ruta desde la que se está sirviendo, resetearlas, y algunas cosas más.
El comportamiento de las aplicaciones sobre IIS Express es idéntico a como sería en los servidores de producción con el correspondiente IIS 7.5, puesto que internamente se utiliza el mismo motor, evitándonos así la necesidad de contar con permisos de administrador, tener el servicio corriendo continuamente, o el engorro de configurar cada aplicación (permisos, pool de aplicaciones, etc.).
Desde el entorno de WebMatrix también podemos iniciar, parar, o resetear el servidor Web, así como, y esto es un detalle de lo más interesante, consultar en tiempo real las peticiones que se están produciendo a nuestra aplicación, muy útil en depuración:

SQL Server Compact Edition 4
Otra de las grandes novedades introducidas en WebMatrix fue también presentada hace unos días por el mismo Scott Guthrie: SQL Server Compact Edition (SQL CE), una versión reducida del motor de bases de datos de Microsoft diseñada para funcionar en el interior de aplicaciones ASP.NET.SQL CE es un motor ideado para ser la forma más fácil de incluir bases de datos en aplicaciones, eliminando los altos requisitos asociados a ello: es gratuito, y no requiere ningún servicio en el servidor, lo cual reduce los costes finales de alojamiento.
¿Y cómo es posible esto? Pues en primer lugar, haciendo que el motor sea basado en archivo; para mover datos entre un sitio y otro bastará con copiar el fichero de datos, como si se tratara de un Access. Asimismo, el motor se distribuye con la aplicación, y se ejecuta en memoria junto con ésta. De hecho, para desplegar un proyecto que use esta solución como repositorio de datos bastará con copiar unas DLLs en el directorio de binarios de la aplicación, y lo tendremos todo listo.
Como consecuencia, nada que instalar en servidor, ni se requieren privilegios especiales para ejecutarlo.
A nivel de programación es compatible con las API de acceso a datos de .NET, lo que quiere decir que no debemos encontrar problemas para utilizar tecnologías de mayor nivel como Entity Framework u otros ORMs. Sus únicas limitaciones vienen dadas por el tamaño de fichero máximo admitido (en estos momentos 4GB, aunque se prevé subir esta cifra) y por la ausencia de determinadas características como los procedimientos almacenados, o triggers, entre otros.
Y aunque está claro que el rendimiento no será comparable al de otras ediciones de SQL Server, y que no podrá aguantar una gran carga de usuarios, es posible upgradearla (a Express, Server o incluso Azure) sin tocar una línea de código. De hecho, desde el propio entorno de WebMatrix se dispone de herramientas para realizar la migración:
En WebMatrix existe una integración total con este nuevo motor de datos. Sin salir del entorno es posible agregar bases de datos al proyecto, editar su estructura, acceder a los datos, o manipular su diseño y propiedades:

ASP.NET Web Pages & Razor
ASP.NET Web Pages es un nuevo framework de desarrollo, presentado con WebMatrix, destinado a la creación de aplicaciones sencillas para la Web. Y con “framework nuevo”, me refiero a eso precisamente… es diferente a WebForms, y también diferente a la alternativa ASP.NET MVC:- no soporta controles de servidor
- no mantiene el estado de la vista (ViewState)
- no hay eventos
- no hay code-behind
- no hay separación de capas arquitectural, como en MVC
- no hay convenciones de nombrado o localización
- no hay tabla de rutas...
De hecho, al echarle un vistazo, no se puede evitar la sensación de estar ante algo con cierto aire retro, muy parecido a la programación con ASP clásico (sin .NET), PHP, JSP u otros lenguajes basados en el concepto de “todo está en la página”, aunque, eso sí, apoyado en el framework .NET, con las ventajas que ello conlleva.
ASP.NET Web Pages Dispone de un API propio (todavía algo escaso de documentación, estamos en Beta), con un gran número de funciones y helpers, algunos de ellos muy potentes, para facilitarnos el desarrollo. Por citar sólo algunos ejemplos, tendremos acceso a funcionalidades de alto nivel de Twitter o Facebook, inclusión directa de vídeos, validaciones con ReCaptcha, o manipulación de imágenes, utilizando helpers dentro de la propia página.
Por defecto utiliza el motor de vistas Razor, uno de los previsibles grandes cambios del próximo ASP.NET MVC 3, donde también será el ViewEngine por defecto.
Razor está diseñado para integrarse de forma más natural en el código de las páginas, siendo más conciso y expresivo que el utilizado hasta ahora. Pero sin duda, lo más destacable de este motor de vistas es que cambia la forma en la que incluimos código en el interior del marcado de una página: los clásicos bloques <% … %> que usamos desde hace muchos años y que contribuyen a dificultar la lectura son sustituidos por una nueva estructura, que se apoya en un parser mucho más inteligente y sensible al contexto, y que nos permite introducir código como el siguiente:
Destaca también el hecho de que Razor ni siquiera depende del contexto Web para funcionar, lo que deja la puerta abierta a su inclusión en otros tipo de aplicaciones, o incluso a la realización de pruebas unitarias sobre la vista.
¿Conclusiones?
El concepto WebMatrix, como suma de plataformas y herramientas que ofrecen una vía rápida para la creación o personalización de aplicaciones, sobre todo si están basadas en paquetes existentes como software libre, me parece muy interesante.Como entorno de codificación es obvio que se queda muy corto. Pero claro, tampoco habría tenido sentido para Microsoft crear un nuevo IDE, que dispone ya de Visual Studio y su magnífica versión Express, que también es gratuita. Como comentaba anteriormente, este entorno sirve para los casos en los que también te podría valer el Notepad, poco más o menos.
Sin embargo, sí me ha parecido muy correcta la integración en el entorno de las herramientas de gestión de bases de datos, el servidor web integrado, el sistema de deployment y el analizador SEO, y la pasmosa facilidad de instalación y uso del conjunto. Realmente, en sólo unos minutos puedes descargar un software open source, probarlo en local y subirlo a tu ISP, casi sin conocer lo que hay por detrás.
Para noveles o ajenos a tecnologías de Microsoft es una vía interesante para acceder a ella, aunque sea a través de un camino que no existía hasta ahora, y con un destino distinto a los conocidos hasta el momento, y que tendrá que demostrar su validez en la práctica. Lo que es seguro es que la sencillez de la propuesta hará que la curva de aprendizaje sea relativamente suave.
También lo considero interesante para los que ya llevamos algunos años en esto, pues materializa la posibilidad de dar un vistazo a varias novedades de calado que ya se venían comentando desde hace algún tiempo, como Razor, IIS Express, o SQL CE, y que seguro que entrarán en breve a formar parte de nuestras herramientas de uso habitual.
Respecto a ASP.NET Web Pages, en cierto sentido puede entenderse como un paso atrás… siempre que estés delante, claro ;-). Hay muchos desarrolladores que todavía luchan a diario con ASP clásico o cualquier otra plataforma de las mismas características, a los que saltar a esta tecnología seguro que costará menos trabajo que pasar a Webforms, pues las diferencias son mucho menores.
Enlaces:
- Scott Guthrie:
- Introducing WebMatrix
- New Embedded Database Support with ASP.NET
- Introducing IIS Express
- Introducing “Razor” – a new view engine for ASP.NET
- Scott Hanselman: Microsoft WebMatrix in Context and Deploying Your First Site
- David Ebbo: How WebMatrix, Razor, ASP.NET Web Pages and MVC fit together
- ASP.NET Web Pages API Quick Reference
- WebMatrix Home
- WebMatrix Beta Tutorials
- Download WebMatrix
» Leer más, comentarios, etc...
Cerebro en la Sombra » Técnico
Renombrar fotografías en orden cronológico de captura usando la información EXIF
Julio 7th, 2010 - [Enlace local]
Como sabéis, suelo hacer muchas, muchísimas fotos mensualmente. Además las suelo hacer con distintas cámaras, con lo que al sacarlas de las tarjetas de memoria y meterlas en la misma carpeta no quedan ordenadas cronológicamente. Muchas veces he tenido que pasarme horas renombrándolas para tenerlas bien ordenaditas, sobre todo cuando quiero hacer un libro de fotos.
Hoy estaba decidido a crearme un script propio en PHP usando la librería EXIF que leyese esta información y renombrase las fotos en base a ella cuando me he encontrado con Jhead, un pequeño programilla disponible para Linux, Windows y OSX que lo hace directamente y además tiene multitud de opciones.
Simplemente debes descargar el ejecutable y copiarlo en alguna ruta accesible (/usr/local/bin, c:\windows…) y listo para utilizar.
Desde la línea de comandos, nos vamos a la carpeta donde tenemos las fotos mezcladas y ejecutamos:
-
jhead -n%Y-%m-%d_%H-%M-%S *.jpg
Eso es todo, automáticamente nuestras fotos quedarán ordenadas por nombre, algo como:
- 2010-01-04_12-05-12.jpg
- 2010-01-04_12-05-20.jpg
- 2010-02-01_19-10-02-jpg
- ….
Es decir: YYYY-MM-DD_HH-MM-SS.jpg.
Un trabajo menos
.
» Leer más, comentarios, etc...
Bitácora de Javier Gutiérrez Chamorro (Guti)
Simulador de Casio W-59 en Flash
Julio 7th, 2010 - [Enlace local]
Hace casi 3 años, comencé un simulador de reloj digital Casio W-59 en Flash CS4 con Actionscript 3. Por esas cosas extrañas que a veces ocurren, después de la tarde inicial que invertí en desarrollarlo, el proyecto quedó en el olvido.
Hace algunas semanas lo reencontré, y planeé reescribirlo con Flash CS5, simulando todas sus funcionalidades. Sin embargo, por falta de tiempo, y otras prioridades, el momento de aplicar todos esos cambios nunca llega, de manera que me he decidido a publicarlo, incluyendo sus fuentes, para que podáis incrustarlo en vuestras páginas, o para que lo podáis modificar y ampliar como deseeis. Eso si, estaré encantado de recibir todas vuestras modificaciones, porque quién sabe, ¡igual algún día lo retomo!
El reloj es funciona, en cuando a horas, minutos, segundos, y día de la semana y del mes. El botón de 12h/24h (abajo a la derecha), está operativo, y cambia adecuadamente el modo de visualización horaria.
Algo dentro del código, está preparado para simular toda la operativa del reloj digital, aunque como digo, incompleta, y no un demasiado buen ejemplo de programación. En particular falta la señal horaria, la alarma, el cronómetro, y la luz.
En este paquete (99 Kb. en formato ZIP, tenéis los fuentes, y los recursos necesarios para modificarlo (tipografía de 7 segmentos, y las imágenes del reloj en cuestión para que podáis retocarlas.
» Leer más, comentarios, etc...
Variable not found
¿Un ViewState en ASP.NET MVC?
Julio 6th, 2010 - [Enlace local]
Esta cuestión, lanzada por un amigo de Variable not found en Facebook, comenzaba un pequeño e interesante debate hace unos días, tras la publicación del enlace al post Persisting model state in ASP.NET MVC using Serialize HTMLHelper, en el que se describía la posibilidad de mantener el estado entre peticiones utilizando un mecanismo similar al infame ViewState de Webforms.
Esta herramienta, como otras muchas, se encuentra en el proyecto MvcFutures, un ensamblado distribuido a través de CodePlex, que ha sido creado por el mismo equipo del framework MVC para experimentar nuevas características y funcionalidades futuras del producto.
Su funcionamiento es muy sencillo. Imaginemos el siguiente controlador, que envía a la vista un objeto de tipo User:
public ActionResult Prueba()
{
return View("MiVista", new User
{
Nombre = "José",
FechaNacimiento = DateTime.Now,
Email = "micorreo@correo.com",
Pais = "España",
Provincia = "Sevilla"
});
}
Desde la vista correspondiente podemos serializar el objeto del Modelo cuyo estado nos interese preservar, como en el siguiente ejemplo, en el que hacemos persistir las propiedades del objeto
User almacenado en la propiedad Model de la vista:<% using (Html.BeginForm()) { %>
<%= Html.Serialize("Userdata", Model) %>
... (resto del formulario)
<% } %>
Y ya desde la acción receptora de los datos del formulario, para volver a materializar el objeto serializado bastaría con incluirlo como parámetro de la misma, decorándolo con el atributo
[Deserialize] de la siguiente forma:[HttpPost]
public ActionResult Prueba([Deserialize]User userData, ... ) // Otros parámetros recibidos
{
// ...
}
Como de costumbre, el nombre del parámetro de la acción debe coincidir con el asignado al campo oculto donde se ha almacenado la información, que coincide con el identificador que hemos indicado (
"Userdata") en la llamada al helper en la vista.El único requisito fundamental para poder obrar esta magia es que la clase y todas sus propiedades sean serializables, como la siguiente:
[Serializable]
public class User
{
public string Nombre { get; set; }
public DateTime FechaNacimiento { get; set; }
public string Pais { get; set; }
public string Provincia { get; set; }
public string Email { get; set; }
public string FacebookUser { get; set; }
public string TwitterUser { get; set; }
}
¿Y cómo ve ve esto en tiempo de ejecución? El resultado será algo como el siguiente, donde podemos apreciar un cierto tufillo a ViewState:
<form action="/user/prueba" id="form0" method="post">
<input name="userData" type="hidden"
value="/wEy6QIAAQAAAP////8BAAAAAAAAAAwCAAAATk12Y0Z1dHVyZXNTZXJp />
YWxpemF0aW9uLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhb
CwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAI012Y0Z1dHVyZXNTZXJpYW
xpemF0aW9uLk1vZGVscy5Vc2VyBwAAABc8Tm9tYnJlPmtfX0JhY2tpbmd
GaWVsZCA8RmVjaGFOYWNpbWllbnRvPmtfX0JhY2tpbmdGaWVsZBU8UGFp
cz5rX19CYWNraW5nRmllbGQaPFByb3ZpbmNpYT5rX19CYWNraW5nRmllb
GQWPEVtYWlsPmtfX0JhY2tpbmdGaWVsZB08RmFjZWJvb2tVc2VyPmtfX0
JhY2tpbmdGaWVsZBw8VHdpdHRlclVzZXI+a19fQmFja2luZ0ZpZWxkAQA
BAQEBAQ0CAAAACgAAAAAAAAAACgoKCgoL"
... (resto del formulario)
</form>
Por defecto, el contenido del objeto se volcará en la página utilizando codificación Base64, aunque esto puede modificarse utilizando la sobrecarga del helper
Serialize() que permite indicar el tipo de serialización (SerializationMode) a emplear, eligiéndola entre texto plano (por defecto, PlainText o Base64), cifrada, firmada, o firmada y cifrada.En cualquier caso, se trata de agregar un chorizo de cierto volumen a la página, que la hará más pesada y afectará al rendimiento de nuestro sistema, sobre todo si el objeto que queremos hacer persistir es complejo, por lo que podría pensarse…
¿Estamos trayendo de nuevo el fantasma del ViewState a las aplicaciones MVC?
En mi opinión, no. Y si bien es cierto que estamos utilizando una técnica parecida al ViewState para conservar el estado de objetos, no creo que sea un mal comparable.El ViewState en Webforms no es una opción si realmente queremos sacar provecho de su potencia; si lo eliminamos totalmente, dejaríamos Webforms como un ASP clásico con esteroides ;-). Aunque ASP.NET 4 ha mejorado mucho el control sobre éste, sigue siendo necesario su uso para mantener el estado de la vista y dar soporte al modelo stateful de esta tecnología.
En ASP.NET MVC, la persistencia de un objeto completo en la página es un caso excepcional; no se me ocurren muchos escenarios en los que pueda sernos útil, y ninguno donde sea la única solución existente. Por ejemplo, si tenemos un proceso que el usuario debe realizar en varios pasos, u otro escenario en el que debamos mantener el estado del Modelo, está claro que debemos hacerlo persistir de algún modo, ya sea en cliente o en servidor.
Como comentaba el amigo Eduard Tomás hace unos días, utilizar variables de sesión no es siempre la mejor opción, y a veces hay que recurrir al cliente para almacenar cierta información. Imaginemos, por ejemplo, un asistente para el registro de usuarios en una comunidad on-line; si realmente no nos interesa almacenar dato alguno en el servidor hasta que el usuario confirme su registro en el último paso, una posibilidad bastante interesante sería delegar el almacenamiento temporal, la información introducida en cada uno de los pasos del asistente, a la capa cliente.
Aún en este escenario, el uso de la serialización de MvcFutures es totalmente opcional. De hecho, es perfectamente posible conseguir el mismo efecto introduciendo manualmente las propiedades de los objetos en campos hidden individuales, y recuperándolas posteriormente desde el controlador utilizando el Model Binder. Sin embargo, cuando el objeto sea complejo, el helper
Serialize() puede ahorrarnos muchas pulsaciones de tecla y evitar errores, aunque sea a costa de aumentar el peso de la página (imaginemos un objeto compuesto a su vez por otros, o colecciones).En lo que seguro que estamos totalmente de acuerdo, como siempre ocurre en estos casos, es en la necesidad de aplicar el sentido común y prudencia en su uso. Antes de utilizar esta técnica hay que tener en cuenta el peso adicional que vamos a añadir a las páginas; asimismo, desde el punto de vista de la seguridad, siempre tener en mente que la información almacenada en cliente es fácilmente manipulable.
Publicado en: Variable not found.
» Leer más, comentarios, etc...
knocte :: MonoTema
Mono? What?
Julio 6th, 2010 - [Enlace local]
Really sad to read this:.NET Culture Shock: Why .NET Adoption Lags Among StartupsEspecially sad to find that Mono is not mentioned in the article.Especially super sad to find that Mono is mentioned in the comments, but in a negative way.Hey Mono community, help me reply all this nonsense.
» Leer más, comentarios, etc...
Ingenieria de Software / Software Engineering / Project Management
Microsoft Project 2010 Ignite
Julio 6th, 2010 - [Enlace local]
Gracias a mi compañero Manuel me entero de esta serie de presentaciones sobre Microsoft Project 2010, presentaciones de índole técnico que abarca temas como los siguientes:
- Upgrades
- Workflows
- Reporting
En definitiva Excelente Material de Microsoft
» Leer más, comentarios, etc...
MadeInFlex
Enterprise Café: una aplicación AIR de Adobe interesante
Julio 5th, 2010 - [Enlace local]
Adobe ha lanzado Enterprise Café, una aplicación AIR que nos permite estar a la última de sus productos con finalidad enterprise. Esta aplicación nos permite, entre otras cosas, recibir las últimas noticias, buscar información y demás sobre los siguientes productos: LiveCycle ES (Enterprise Suite), Acrobat, Connect, ColdFusion y la plataforma Flash.
Para destacar algunas de las prestaciones de esta aplicación, enumero las siguientes:
- News: nos muestra las noticias más importantes sobre Adobe.
- Search: una herramienta para buscar contenido en diferentes sites.
- RSS Reader: Lector de RSS.
- Notes: nos permite guardar resultados de búsqueda para poder verlos posteriormente, por ejemplo cuando estemos offline.
- Water Cooler: Proporciona un chat a la comunidad para hablar sobre los diferentes productos.
- Forums: link directo a Adobe Forums.
- Events: Nos permite ver los eventos que se realizarán online o en nuestra área.
- Training: lista de eventos de training para los diferentes productos.
- Demos: demostraciones de aplicaciones de empleados de Adobe o de partners.
- Partner Showcase: Los partners pueden subir demos para que sean vistas por la comunidad.
- Adobe TV: videos sobre los diferentes productos de Adobe.
Tiene muchas otras cosas, pero es mejor que las descubrais utilizando la aplicación. Aquí os dejo el link.
» Leer más, comentarios, etc...
programania
TDD como dogma y para todo es un error
Julio 5th, 2010 - [Enlace local]
El software muchas veces se desarrolla en un escenario poco definido que irá cambiando a lo largo del desarrollo. Sin duda, es el gran caballo de batalla de los desarrolladores de software de hoy en día. Por consiguiente, el objetivo de cualquier equipo, es orientar su desarrollo a descubrir “la forma” de su software de la manera más rápida y confiable posible.
Para ello hay que buscar una manera que guíe tu desarrollo. Algo que “driven tu development”.
. Test Driven Development (TDD), Model Driven Development, loquesea Driven Development.
TDD seguramente sea una de las mejores maneras de descubrir el diseño de tu software, entendiendo el diseño de software como un conjunto de clases con unas responsabilidades y unas relaciones entre sí. Además, si eres realmente bueno haciendo TDD, se habilita la posibilidad de realizar refactoring y mejorar el diseño de tu código, los patrones que sigue, y su orientación a objetos, hasta dejarlo impecable. Además, se habilitan una serie de ventajas más. Algunos incluso afirman que si tienes TDD ya no necesitas nada más ( una idea provocadora y algo punky que me encanta, pero me parece algo excesiva).
Pero… ¿Qué pasa cuando el diseño (a nivel de OO y patrones) no es el principal caballo de batalla de tu aplicación?
Hace cuatro años, en mis comienzos profesionales y de este blog, definí algo torpe y ponpósamente el concepto de Template Driven Development, tras ver que la gente de 37 Signals tenía ideas parecidas a las mías con su concepto de Interface First. Y es que cuando tienes un cliente que es incapaz de visualizar aquello que le estás contando, es muy difícil capturar su feedback y saber si estás consiguiendo satisfacer sus requisitos. Necesitan un prototipo visual, y tú necesitas no perder el tiempo con prototipos inútiles. Es algo de lo que también habla la gente de Linking Paths: para descubrir lo que el cliente quiere, funcione muy bien crear un prototipo lo más real posible, “sin rellenar el funcionamiento”, por ejemplo. Quizá sea hacer, dentro del MVC, la V y la C…pero no la M.
Practico TDD en serio desde hace unos meses. A día de hoy todavía no soy capaz de confiar en mis pruebas unitarias lo suficiente porque no soy suficientemente bueno haciéndolas. TDD me ha descubierto que no soy tan bueno haciendo OO como creía. Me ha descubierto errores de diseño, bugs habituales… pero las pruebas automatizadas me está empezando a ahorrar bastante tiempo, la verdad.
A veces se utilizarán unas técnicas, otras veces otras, y otras veces varias a la vez, pero no creo que haya que aceptar dogmáticamente ninguna de ellas. Son diferentes herramientas y cada una tiene su utilidad. Pero utilizar TDD para todo, en mi opinión, es un error.
Lo que probablemente nunca funcione será hacer un gran superdiseño y luego intentar programar diez meses seguidos sin salirse de él.
Un par de links de Torres Burriel sobre integración entre diseño centrado en el usuario y metodologías ágiles. (link1, link2)
» Leer más, comentarios, etc...
Variable not found
Enlaces interesantes 11
Julio 5th, 2010 - [Enlace local]
Estos son los enlaces publicados en Variable not found en Facebook desde el domingo, 20 de junio de 2010 hasta el domingo, 04 de julio de 2010. Espero que te resulten interesantes. :-)
- Gran post de Eduard Tomàs: Como reciben parámetros los controladores: la tabla de rutas y algunos detallitos ;-)
Fecha: 02/07/2010 - Dino Esposito comenta su visión sobre la opción ASP.NET MVC.
Fecha: 02/07/2010 - Jon Galloway habla sobre el uso de ViewModels en plantillas de edición o visualización de ASP.NET MVC.
Fecha: 02/07/2010 - Monitorización de ActionResults utilizando filtros de acción en ASP.NET MVC., por K. Scott Allen.
Fecha: 02/07/2010 - Gran post de Elijah Manor: Creación, edición y eliminación de registros con jqGrid y ASP.NET MVC.
Fecha: 01/07/2010 - No es que me entusiasme la idea, pero poderse, se puede hacer: uso de vistas dinámicamente tipadas en ASP.NET MVC.
Fecha: 01/07/2010 - ¡Bases de datos embebidas en aplicaciones ASP.NET (y más) con SQL CE!
Fecha: 01/07/2010 - Post de Michael Ceranski sobre el control grid del proyecto MvcContrib. ASP.NET MVC
Fecha: 30/06/2010 - Eduard Tomàs: Algunos comentarios y reflexiones sobre el uso de la sesión en ASP.NET MVC
Fecha: 30/06/2010 - Cómo asegurar que todos los controladores heredan de un controlador base, mediante pruebas unitarias.
Fecha: 30/06/2010 - Implementación de funcionalidades comunes en controladores. ¿Mejor usar filtros, o controladores base?
Fecha: 29/06/2010 - El patrón Observer en .NET 4: IObservable(T) e IObserver(T).
Fecha: 29/06/2010 - Interesante post de José Manuel Alarcón: Cambiando los límites de las URLs en ASP.NET 4.
Fecha: 29/06/2010 - ¿Qué ocurre con los parámetros opcionales cuando se invocan los métodos vía reflection?
Fecha: 29/06/2010
» Leer más, comentarios, etc...
Picando Código
ArchLinux vs. Debian GNU/Linux
Julio 5th, 2010 - [Enlace local]
Se levanta el polvo en el terreno de las distribuciones basadas en GNU/Linux, y entran en comparación dos de los grandes pilares de la comunidad del software libre. Por un lado el veterano en estabilidad y gestión de paquetes: Debian GNU/Linux. Por el otro, el peso liviano de avanzada que está refugiando a usuarios de Debian: ArchLinux.
A pesar de la cursi introducción, quiero aclarar que este post tiene un fin constructivo, de demostrar las virtudes o carencias de ambas distribuciones en comparación desde mi punto de vista. He elegido Debian por ser mi distro favorita desde hace un buen tiempo, y ArchLinux por haberla reemplazado en mi computadora de escritorio como distro por defecto.
La discusión explica mis apreciaciones en distintos aspectos de cada distribución donde se comportan de manera diferente. En resumen, se trata de una comparación desde el punto de vista de un usuario de Debian que pasó a ArchLinux pero sin abandonar Debian.
Situémonos en contexto para empezar. Debian viene siendo mi distribución GNU/Linux preferida desde hace mucho tiempo. Es más, fue la distribución que hizo que dejara de estar probando otras opciones todo el tiempo. Usé Debian desde Etch, pasando por Lenny y ahora Squeeze. Primero me conformaba con Debian Stable, probé Sid, y me terminé quedando en Testing. Pueden ver varios posts al respecto a lo largo del tiempo en la página Debian en Picando Código.
Tengo Debian instalado en mi computadora portátil, y la uso diariamente. Estoy considerando seriamente instalarle ArchLinux, pero todavía no he encontrado tiempo, una excusa, o simplemente que me dé el raye de borrarle el sistema Debian actual e instalarle Arch.
Probé ArchLinux por primera vez en enero de 2009. Si bien no pasé mucho más de instalar el sistema, tuve una primera conclusión:
Es una distribución realmente entretenida porque el tiempo que uno demora en configurarla es una inversión en conocimiento sobre el sistema.
Ya en ese momento me pareció mas rápida y configurable que Debian. Si bien, probablemente podamos llegar al mismo nivel de configuración de nuestro sistema en Debian, ArchLinux nos obliga a que así sea. Por esto, debemos tener una idea de todo lo que instalamos, desinstalamos, y configuramos. Digamos que “no hace nada solo”, nosotros le tenemos que decir cómo queremos que haga las cosas.
No empecé a usar ArchLinux realmente hasta hace poco, en mi aventura por migrar a ArchLinux. Desde ahí puedo decir que soy usuario ArchLinux. Las razones para probar ArchLinux se fueron juntando, en aquel post lo explicaba:
En primer lugar, he aprendido mucho sobre Debian y me siento muy cómodo usándolo. Por esto, considero que estoy aprendiendo muy poco, ya que me encuentro en la “Zona de confort”. Esto es bueno, puedo realizar mi trabajo tranquilo sin preocuparme por la computadora. Pero a su vez, no estoy aprendiendo mucho en lo que respecta al uso del sistema operativo.
ArchLinux tiene una filosofía distinta en cuanto a la configuración del sistema. Generalmente no dejamos de configurar y arreglar, ya que su software se mantiene muy actualizado, y el usuario debe permanecer al tanto de los cambios en su sistema para mantenerlo a punto. Debian es un poco más conservador en ese aspecto.
Bien, veamos la comparación de ambas distribuciones en algunos puntos específicos:
Instalación de software: Pacman vs. Apt
Ambas distros cuentan con su gestor de paquetes con sus diferencias.
Debian APT :
Apt es sin duda una de las características especiales de Debian. Su nombre lo dice todo: Advanced Package Tool, herramienta avanzada de paquetes. Resuelve problemas de dependencias y obtiene los paquetes necesarios para instalar aplicaciones mediante dpkg. Si bien hay algunas interfaces gráficas para usarlo, es bastante potente desde la consola.
Los repositorios oficiales de Debian cuentan con más de 25.000 paquetes de software. Además, podemos usar cualquiera de sus ramas: estable, testing, inestable y experimental. Personalmente uso la rama de testing, mezclada con Sid (inestable) y cada tanto alguna prueba desde experimental. También se pueden usar repositorios de otros lugares, como por ejemplo el PPA de Ubuntu, ya que generalmente mezclando un poco logramos una compatibilidad y resolución de dependencias.
ArchLinux Pacman:
Pacman es el gestor de paquetes de ArchLinux. Combina un formato de paquete binario con un sistema de compilación (Arch Build System). Está escrito en C, usa el formato de paquete tar.gz y está por migrar a tar.xz. Viniendo desde apt, no encontré cosas que no pudiera hacer con pacman. El repositorio oficial de ArchLinux no cuenta con tantos paquetes como Debian, pero tampoco soporta tantas arquitecturas. De todas formas, la mayoría de los programas están ahí, y para los que no, existe AUR (ya comentaré más adelante)…
En este sentido, estaba bastante contento con apt hasta conocer pacman. Y realmente no logro ver la diferencia en cuando a rendimiento o ventajas de un gestor de paquetes sobre el otro. Ambos parecen cumplir su trabajo perfectamente. Hacen que la instalación de paquetes sea sencilla y simple.
Software disponible
Otro tema a tener en cuenta es la cantidad de software disponible para cada sistema. Debian es un sistema muy popular, por lo que generalmente, si un programa existe para GNU/Linux, por algún lado hay un .deb o repositorio desde el cual lo podemos instalar. No pasa lo mismo con ArchLinux, que usa el formato tar.gz. Sin embargo, ArchLinux cuenta con un plus llamado AUR y el Arch Build System: un sistema estilo “ports” de BSD para compilar y empaquetar software desde el código fuente. pacman es la herramienta para el manejo de paquetes binarios, y ABS es la colección de herramientas para compilar código en paquetes instalables .pkg.tar.gz.
El sistema de ports permite descargar, desempaquetar, parchear, compilar e instalar paquetes de código fuente. Técnicamente un port es un directorio con el nombre del software a ser instalado, que contiene scripts con instrucciones para descargar e instalar una aplicación desde el código.
AUR es el Arch User Repository, un repositorio gestionado por la comunidad de usuarios de Arch. Contiene descripciones de paquetes (PKGBUILDs) que permiten compilar un paquete desde el código fuente con makepkg e instalarlocon pacman. Esto es una de las fortalezas de Arch. Así como si un programa existe para GNU/Linux, en algún lugar hay un .deb para instalarlo, probablemente también esté listado en AUR. Este repositorio tiene bastante movimiento, y sus paquetes pueden ser votados a través de aurvote para que se incluyan en el repositorio oficial de la comunidad.
No voy a entrar en “cómo usar apt, pacman, AUR, etc.” pero sí hay algo interesante que comentar acerca de la manera de instalar paquetes desde AUR. El proceso es manual, debiendo entrar a la interfaz web, descargar los archivos necesarios, crear el paquete e instalarlo con pacman. En la wiki de Arch especifican: No hay y nunca habrá un mecanismo oficial para instalar material de compilación desde UNSUPPORTED. Todos los usuarios deberían estar familiarizados con el proceso de compilación. Me gustó mucho esta filosofía, ya que en pocas palabras dice “hay que aprender, y saber lo que se está haciendo”.
Dicho esto, existe un script no oficial – yaourt – que permite buscar paquetes e instalarlos desde AUR de forma muy práctica desde la consola. La cantidad de software disponible en el repositorio es inmensa…
Estabilidad
En este punto es importante recordar que mis instalaciones de Debian viene siendo una mezcla de testing, sid, experimental y otros repositorios no oficiales. Por lo tanto, a veces tuve problemas de resolución de dependencias con los paquetes, y la vez que probé Sid de alguna manera logré que el sistema explotara en un upgrade. Por lo tanto, no todo es necesariamente culpa del sistema.
En el aspecto de la estabilidad, en teoría, Debian es más fuerte y ArchLinux se preocupa más por tener las versiones más recientes de software. Sin embargo, noté una diferencia muy grande al pasar en la misma computadora desde Debian a ArchLinux. El rendimiento general de la máquina cambió, haciéndome suponer que ArchLinux es realmente más liviana que Debian. También hay que admitir, que al ser una distribución que te obliga a configurar todo, muchas cosas quedan desactivadas por defecto. En Debian por ejemplo, al instalar un servicio como Apache, o motores de bases de datos, éstos se inician automáticamente al arrancar el sistema. En Arch no, a menos que uno lo especifique a mano. Por esto, mi sistema Arch es mucho más liviano al bootear, que mi sistema Debian.
No es que Debian no pueda ser configurado para ser más liviano, pero ArchLinux nos obliga a hacerlo.
Otra aplicación importante a comparar es KDE. Cuando instalé ArchLinux, KDE se encontraba en la versión 4.3 si no recuerdo mal. KDE 4.3 llegó más o menos al poco tiempo a Debian Squeeze así que pude compararlos bien.
Debo decir que corría mucho mejor en ArchLinux. Además, muchos problemas que tenía en Debian no se repetían en Arch. Particularmente Amarok y Dolphin tenían un comportamiento bastante irritante en Debian, colgándose a cada rato, con funcionamientos inesperados, pero varios programas de KDE estaban así. En Arch funcionan de maravilla hasta el momento.
Además, a medida que KDE sigue avanzando y evolucionando, creo que ArchLinux es generalmente la primer distribución en incluir la versión más reciente de KDE.
Configuración y uso
En este punto se dividen un poco ambas distribuciones. Tienen una filosofía distinta. Para que se hagan una idea, algunos de los principios de ArchLinux:
- En lugar de arrancar paquetes innecesarios y no deseados Arch ofrece, al usuario, el poder y la capacidad para construir desde una base mínima sin ninguna opción por defecto. El usuario es quién decide que Archlinux instalará.
- Arch Linux define simplicidad como una ligera estructura base sin agregados innecesarios, modificaciones, o complicaciones, que permite a un usuario individual modelar el sistema de acuerdo a sus propias necesidades. En síntesis, una aproximación elegante, minimalista.
Debian sin embargo, te deja un sistema más armado tras la instalación. Tiene su entorno de escritorio por defecto (GNOME) y lo que vengo comentando de los servicios y demás. Con esos dos perfiles definidos, no dudaría un segundo en instalar Debian para cierta situación, y ArchLinux para otra.
Instalación
En este aspecto, ninguna presenta una dificultad durante la instalación. ArchLinux tiene más pasos a configurar, pero todo está perfectamente documentado en su wiki.
Respeto a la libertad del software
En este aspecto, Debian tiene un compromiso real con el software libre mientras que no es así con ArchLinux. Debian se describe como un sistema operativo libre, y cuenta con un contrato social con la comunidad del software libre y describe sus directrices de software libre en Debian. Por un tiempo, incluyeron blobs binarios en su distribución del kernel Linux pero – según tengo entendido - desde Squeeze un usuario de Debian que se mantenga en los repositorios main, tiene un sistema 100% libre.
ArchLinux hace hincapié en la libertad del usuario – ya que es el que elige todo lo que instala- y la abertura del sistema en sí, pero no en la libertad del software. Sin embargo, existe el proyecto Parabola GNU/Linux, el cual nos permite liberar nuestro sistema y mantener una versión completamente libre de ArchLinux.
Conclusión
Hasta acá mi primer comparación intensiva de Debian contra Arch. Como habrán apreciado, no se trata de una búsqueda de cuál es la mejor distro, sino meramente apreciaciones de sus diferencias, virtudes y deficiencias. No hay algo que no haya logrado “hacer andar” en una y sí en otra. Son excelentes distribuciones, con comunidades muy grandes que las fortalecen, y sistemas de alta calidad.
Éste análisis surgió en parte porque noté que muchos usuarios de Debian comenzaron a probar ArchLinux y a migrar completamente a este sistema. En mi caso, quería aprender más y Debian estaba funcionando un poco peor recientemente. Me atrajo mucho la idea de tener más control sobre mi sistema, y también de contar con software más actualizado.
Así que básicamente esas son las razones por las cuales migré de Debian a ArchLinux.
¿Cuáles son sus razones? ¿Será una “evolución” natural y justificada por la forma de hacer las cosas de cada distro?
Partes del texto de este artículo son citas de ArchWiki y Debian Wiki.
» Leer más, comentarios, etc...
Picando Código
Revista Linux+ julio 2010
Julio 4th, 2010 - [Enlace local]
Otro mes, otra edición de Linux+, la mayor revista online sobre GNU/Linux y el mundo del software libre.
Los temas de este número son:
- Metasploitable – Entorno de entrenamiento de Seguridad Informática
- Kernel Linux – Conócelo a fondo
- Linux SmartCheap – Construcción desde la nada
- XHTML, PHP y SQL – Generación de exámenes online autocorregidos
- Plataforma OSOR – Balanceo de máquinas virtuales en alta disponibilidad
Además las noticias más recientes del mundillo de las distribuciones y más. Destaco el artículo sobre el kernel de Linux, interesante introducción para quienes quieran conocerlo más a fondo.
Más información y descarga libre:
Linux+ 07/2010
» Leer más, comentarios, etc...
Bitácora de Javier Gutiérrez Chamorro (Guti)
Blinker
Julio 4th, 2010 - [Enlace local]
La necesidad de actualización, y los rápidos avances han hecho que Blinkinc haya dado finalmente sus últimos coletazos. Anteriormente conocidos como ASM Inc, fueron los creadores de Blinker, y los no tan populares Shrinker y DeltaPatch.
Blinker tuvo mucho éxito entre los desarrolladores Clipper, debido a ser un enlazador rapidísimo, y que era el complemento ideal a Clipper, en sustitución del vetusto RTLink, aportando grandes mejoras de productividad. Tanto es así, que al final, Blinker, aunque fuera una versión antigua, venía incluído en el paquete de Clipper.
Como es lógico, Blinker no estaba destinado solamente a Clipper, y permitía enlazar otros programas DOS, Win16 y Win32 escritos en otros lenguajes, y gracias al hecho de estar bien codificado, y escrito en ensamblador, ser más veloz de TLINK y por supuesto LINK.
Como caracerísticas diferenciales, contaba con soporte de overlays dinámicos, compresión muy superior a EXEPACK, soporte de modo real, y modo protegido de 16 bits. Era en ejecutables largos y complejos, donde Blinker marcaba la diferencia, por lo que se comprende que con Clipper fuera una gran ayuda. Sin embargo en proyectos C/C++ con multitud de archivos objeto y librerías, Blinker podía ser hasta 3 o 4 veces más veloz que Turbo Linker.
Desde la versión 1 de 1991 hasta 1995 con la versión 3, Blinker fue conquistando un mercado, que a partir de ahí, y los cambios tecnológicos, las siguientes versiones no pudieron mantener, llegando a la última versión 7 en 2002.















