Noticias Weblogs Foros Wiki Código
Sponsors:

Meta-Info

¿Que es?

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

rss subscripción

Sponsors

PlanetaCódigo en inglés

Puedes utilizar las siguientes imagenes para enlazar PlanetaCodigo:
planetacodigo

planetacodigo

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

Archivos

Idea: Juanjo Navarro

Diseño: Albin

Jorge Dieguez Blog

Rendimiento de SharePoint en entornos virtualizados con Hyper-V

Noviembre 21st, 2008

Interesante articulo en TechNet que expone unas pruebas de rendimiento con SharePoint en entornos virtualizados con Hyper-V.

Performance and capacity requirements for Hyper-V
image

Muy interesante.

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

Javier Pérez :: Blog

Buenos días Madrid, con todos mis respetos

Noviembre 21st, 2008

Hoy te quiero hablar de la educación y el respeto, dentro del ámbito madrileño. Porque para eso el blog es mío, y me lo... y escribo lo que quiero.

El madrileño es un ser especial, único en la península (pronto pedirán la independencia... tiempo al tiempo), que insluso tiene su propia cultura y lengua. Los vascos se creen los incomprendidos de la península, y también los gallegos, pero éstos más porque no se les entiende... pero realmente los más incomprendidos de todos son los madrileños, sencillamente porque no hay por dónde cogerlos...

Los conceptos de respeto y de educación son como el culo, cada uno tiene el suyo, y que nadie se los toque... Pero todos deberíamos al menos fiarnos de un concepto común, el que dicta la Real Academia de la Lengua. Es por ello que vamos a ir allí a obtener sabiduría (se omiten las acepciones que no tienen relación con el contexto):

respeto

1. m. Veneración, acatamiento que se hace a alguien.

2. m. Miramiento, consideración, deferencia.

Y la demostración de respeto es lo que se conoce como cortesía:

1. f. Demostración o acto con que se manifiesta la atención, respeto o afecto que tiene alguien a otra persona.

Y por último, acotemos educación:

4. f. Cortesía, urbanidad.

Bien, hemos conseguido entender 3 cosas:

  1. Cortesía y educación son casi sinónimos.
  2. Significan la acción o demostración de respeto hacia alguien.
  3. Tener respeto hacia alguien significa tener miramiento o consideración.

Queda claro por lo tanto que para ser cortés y educado, y por lo tanto, para tener respeto por los demás, hay que tener miramiento y consideración hacia los demás. ¿Fácil, no? Pues no. Veamos unos ejemplos de cómo actúa la fauna y flora madrileña (puntualizando que: madrileño = aquél que vive en Madrid...):

1. Los que no se saben el código de circulación

Circular por la derecha, no sólo es válido para los coches, camiones, motos, ciclomotores, bicicletas, burros, caballos, carrozas, etc., sino que también es válido para los seres humanos que van a pie... Aunque al parecer mucha gente lo desconoce. ¿Cómo actuamos cuando vamos andando por cualquier sitio y viene alguien de frente?

Ejemplares típicos: alelaos varios; gente del campo donde no había nadie más que ellos mismos; pijas que no pueden separarse del escaparate de Dolce & Gavanna; etc.


2. El portero del metro

Una vez estás en los andenes del metro esperando la llegada del metro, y éste llega, tienes dos opciones:

Ejemplares típicos: niñas en la edad del pavo, extranjeros que no se enteran, gente que no dormió mucho, etc.

3. El cazador de asientos

Una vez dentro del vagón, ves que hay un asiento libre, uno, pero hay una persona más cerca que se dispone a sentarse:

Ejemplares típicos: señoras con abrigos de pieles.

4. El juego del látigo

Sales del metro, con tus amistades, y tenéis que andar por la acera hasta el sitio donde habéis quedado todos para tomar unas cañas. Mientras andáis...

Ejemplares típicos: niñatos y niñatas, o un batiburrillo de ambos; señoras con un perrito no mayor que una rata y una correa extensible de 100 metros que normalmente se sitúa al lado opuesto del perro de los cojones; compañeros de oficina que deben permanecer siempre en paralelo para escuchar atentamente los chascarrillos de la ofi; etc.


5. Bajo la lluvia

Este es un tema muy apasionante que merecería libros y libros... ¿Qué hacer cuando un día con lluvia vas con un paraguas por la calle?

Ejemplares típicos: pijas, señoras, pijas, señoras, pijas, señoras...


6. Los DJ's frustrados

Hay personas que necesitan constantemente el reconocimiento y la veneración de los demás hacia él, y los peores de todos son los DJ's frustrados, esos engendros que se creen que la música que ellos escuchan ha de gustarles a todo el mundo. ¿Qué hacer cuando estás en un lugar público y quieres escuchar música?

Ejemplares típicos: latinoamericanos con el móvil a toda pastilla y el "dame más gasolina" como tema estrella; compañeros de trabajo con complejo de inferioridad manifiesta.


7. El sordo, ciego y mudo

Da igual lo que digas o hagas, ciertas personas ni te escuchan ni te ven. Cuando llegas a un sitio, ¿qué haces? Cuando alguien entra y saluda, ¿qué haces?

Ejemplares típicos: los madrileños.

8. El placer de comer tranquilo y en silencio

Uno va a comer a un restaurante con unas amistades, o simplemente a tomar unas cañas...

Ejemplares típicos: los españoles.

Resumen

En definitiva, que cuando uno sale de España echa de menos la comida y... la comida. Siempre nos quedamos embobadicos contemplando la excelente educación y respeto que suelen tener en otros países. Visitad el metro de Londres, intentad perderos en Manhattan si es que los amabilísimos ciudadanos neoyorkinos os lo permiten, o comed en un restaurante en París... Es entonces cuando uno se da cuenta de lo maleducado e irrespetuoso que es.

Ahora sí, ya podéis insultarme por antimadrileñista, snob, o cualquier cosa que se os ocurra...

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

Javier Pérez :: Blog

AJAX Libraries API: Google, he’s so lovely!

Noviembre 21st, 2008

Gracias Dios Google por el pan nuestro de cada día los regalos que haces a diario a nosotros pobres siervos nobles desarrolladores web. Te adoramos. Te amamos con locura.

Acabo de descubrir AJAX Libraries API, de Google, y aún ando recogiendo la mandíbula inferior del suelo y limpiando las babas que voy dejando. Alegrías como esta convierten el peor de los días en un día maravilloso.

Google AJAX Libraries API es una API para cargar mediante AJAX cualquiera de las librerías/frameworks Javascript más populares, como jQuery, Prototype, Dojo, MooTools... y no sólo eso, sino que además estas librerías quedan alojadas en los servidores de Google, por lo que nos ahorramos unos 50-100kb de carga del servidor en cada petición de página. ¿No es lovely nuestro querido Google?

Se acabó estar constantemente descargando las últimas versiones de los frameworks y sus respectivas UI, ahora simplemente cambiamos la línea:

google.load('jquery', '1.2.5');

por esta otra:

google.load('jquery', '1.2.6');

Y a seguir trabajando como si nada hubiera pasado...

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

Yet Another Programming Weblog

Universos paralelos, cuerdas y divulgación científica

Noviembre 21st, 2008

Hay un debate, apasionante y por supuesto no resuelto acerca de como divulgar la ciencia, de cómo equilibrar la precisión de lo que se cuenta con lo entretenido de la forma.

Pues bueno, a mi me parece que esto en la divulgación de la ciencia más básica es especialmente importante. Suele uno leer en periódicos, revistas y últimamente en blogs artículos sobre la teoría de cuerdas y sobre universos paralelos sin hacer la menor mención acerca de lo especulativo del asunto. Por eso me ha gustado mucho un apunte de Clifford Johnson en el que lo explica estupendamente (vía Not Even Wrong de Peter Woit) Habla de su participación en un programa de divulgación sobre universos paralelos. Cito y "traduzco":

Para ser sincero estoy un poco preocupado porque es un tema que puede ser aprovechado muy fácilmente por chiflados por personas sensatas por igual, y es, de diversos modos, alimento para mucha charlatanería y sinsentido místico. Cualquier programa de ciencia sobre este tipo de material tiene que ser doblemente -triplemente- cuidadoso, para no dar a la gente una excusa para decir que "los científicos han comprobado esto".

¿Por qué estoy un poco preocupado? Bueno, yo no he visto un montaje final del espectáculo y y no me quiero exceder, pero un primer montaje en bruto que he podido ver sufre de un problema que estos programas pueden tener a veces: un conjunto de científicos en activo muy cuidadosos al hacer comentarios acerca de lo que se conoce, de lo desconocido, de lo que es probable y de lo que es poco probable, y así sucesivamente, y después mucha de esa cautela puede ser socavada por la intercalación de sus observaciones con fragmentos del favorito de cualquier cineasta de la física documental, del tipo que puede ser invocado para decir cosas salvajes y maravillosas - Michio Kaku.

Por favor, no me malinterpreten. No tengo nada en contra de Kaku, me parece un muy buen tipo, y creo que ha realizado un excelente y divertido trabajo para este tipo de programas (tales como el documental sobre Einstein de la otra noche ), pero hay momentos en que sus observaciones más, ermmm, emocionadas e imprudentes pueden ser colocadas en un lugar en el programa que no ayuda en nada a ser prudente con la ciencia. A menudo (quizás siempre?) no es su culpa, un director que no se da cuenta de cómo un detalle puede ser crucial llega a un punto en el que debe elegir entre la inserción de:

* (a) un fragmento de alguno de nosotros que tratamos de ser cuidadosos y no hacer declaraciones equivocadas y/o sensacionalistas, y
* (b) un fragmento un distinguido caballero con un entusiasmo contagioso, agitando sus brazos y diciendo cosas que suenan maravillosas

...Y 99 veces de cada 100 va a elegir la opción (b) si ninguna de las personas de (a) están ahí para orientarle. Esta es, por supuesto, la razón por la que siempre espero [...] que estos espectáculos se realicen de un modo colaborativo entre científicos y cineastas[...]


Hace ya unos días, bastante relacionado con esto, rvr en un par de entradas, El nivel de la divulgación científica (I) y El nivel de la divulgación científica (II) repasaba el mismo problema a la inversa, con la tesis de que debe haber sitio también para la divulgación más superficial.

Sin estar en desacuerdo con esta tesis si debo reconocer que me gustaría que hubiese menos confusión entre ciencia aceptada y especulación. Creo que la diferencia debería ser subrayada por todo el mundo y que conceptos como Método Científico, Reproducibilidad y Falsabilidad tuviesen mayor eco. Cuestión de educación, supongo.

Y bueno, por acabar y por ser algo constructivo recomendar una entrada sobre el tema en Ecos del futuro (que he conocido hace poco, muy bueno): La interpretación de los universos múltiples, el la que sí queda claro lo que es especulativo y lo que no, y porqué.

La misma entrada y más comentarios en Universos paralelos, cuerdas y divulgación científica en barrapunto

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

Picando Código

El foro de Picando Código está de vuelta, ¡y con RSS!

Noviembre 21st, 2008

RSS

Foro con RSS

Bueno, por fin me tomé el tiempo de arreglar los problemas en el foro, ocasionados por mi intento de tener sindicación RSS.

Repito, ¡es algo que considero imprescindible en un foro! ¿Quién no usa un lector de feeds hoy en día? Nada más cómodo que tener el feed de un foro en el que participamos ahí con el resto de noticias, blogs, etc.

Así que ya pueden pasar por el foro, ver los temas recientes, hacerse miembros, y suscribirse al feed.

El nuevo plugin incluye un feed personalizado, donde pueden elegir suscribirse a todos los foros, o algunos foros específicos.

Lo estoy probando en mi lector de feeds, y anda bastante bien. Todavía me falta traducir algunas cosas de la interfaz del plugin, que pueden estar en inglés, o sin idioma. Pero aparentemente todo funciona por el momento.

La migración a otro sistema de foros sigue en mente. Ya tendré tiempo de investigar eso también…

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

Picando Código

Nuevos diseños para GMail - Terminal

Noviembre 21st, 2008

Como ya lo anunció Marcelo Ramos en su blog, cambié la apariencia de mi GMail a Terminal:

Gmail Terminal

Gmail Terminal

A pedido de Dark Musician, posteo al respecto :P

Obviamente se siente muy a gusto, bien liviano y bastante sobrio. Aunque como comenta JFunez, aparentemente el diseño está inspirado en el blog de fcr.

Aquellos que usen GMail revisen en Settings - Themes (o el equivalente en español) que si no tienen ya, en estos días se le estarán habilitando nuevas apariencias para su casilla de correo. Hay para todos los gustos, y de muy buen gusto. Tienen un muy buen trabajo de diseño.

De todas formas, a mi me va a durar poco. Estoy considerando dejar de usar GMail para instalar un servidor local de correo y empezar a hostear personalmente mis correos. Ya contaré cómo va.

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

Programación, Literatura y otras artes menores » Programación

Carta a un rebelde

Noviembre 20th, 2008

Lo que sigue es un correo que le escribí a un argentino que participa con nsotros en la lista linux-l. Este señor en cada correo nos intenta adoctrinar con discursos que ya hemos oído muchas veces, y que sabemos que son falsos, aunque estoy totalmente seguro que este “rebelde” los dice convencido de que son ciertos. Mayormente sus criticas y discursos van orientados a lo malo  que es que las empresas comercien con Software Libre(SL), y lo ventajoso de que un gobierno como el cubano lleve la voz cantante en lo que a producción y distribución de SL se refiere.

No le ha importado las múltiples críticas que informáticos cubanos, que viven en la isla, le han hecho a este modelo, por ser aun mas oscuro que el software privativo de una empresa.

Escribo aquí el correo a causa de que no he tenido respuesta de su parte, aunque no pierdo la esperanza.

Asunto: Diferencias ideológicas
Hola, quisiera sacar la discusión de la lista, pues no es el ámbito correcto:

Resulta que lo que le aplicas a las empresas, de que a la larga quieren todo el poder para sí y absorben a quien les haga sombra, no es característica endémica de las empresas, sino de nosotros los humanos y nuestras organizaciones, entre las que se encuentran los estados, como por ejemplo el estado cubano.

Nuestro actual gobierno surgió hace 50 años con la mejor de las intenciones, hacer justicia social; pero los cubanos cometimos un grave error, confiamos en su discurso que con el tiempo se pervirtió hasta convertirse en una copia menor, aunque bastante fiel, del gobierno totalitario de la novela “1984″.

No creo que debamos demonizar ningún sistema político, sino que en todo momento debemos recordar que somos humanos, todos, y por tanto somos falibles, la crisis financiera actual es prueba de que “los que saben” son tan tontos como tu y como yo. Tratemos de ser pragmáticos, en Cuba ya llevamos 50 años de discursos como los que tu haces, y 50 años de ver que quienes dan esos discursos tienen la barriga llena mientras los demás pasamos hambre, evidentemente no me refiero a ti(aunque sí te toca la crítica un poco) sino a nuestros dirigentes. Cuba ahora necesita acciones, y que estén más allá de la propaganda política de un bando u otro, de hecho lo que necesitamos en Cuba es que no haya bandos, sino hermanos, y nos guste o nos pese, la única manera de salir adelante es generar
riqueza y comerciar con esa riqueza.

Y para que veas que no solo aparento imparcialidad, sino que de veras intento ser imparcial, yo vivo en México desde hace un año, y aquí he visto cosas que en Cuba jamás vería:
* He visto niños trabajando en horario de escuela, en Cuba no los hay a ningún horario.
* He visto como médicos mantienen enfermos a sus pacientes para seguirlos tratando, y cobrándoles, en Cuba eso es inimaginable.
* He visto que una señora tendría que pagar 300 usd diarios por una pastilla para el cáncer, en Cuba, de estar la medicina, se la darían hasta gratis.

Osea no soy un iluso que cree que el capitalismo es un lugar lleno de abundancia donde todos son felices como en las películas americanas, pero al mismo tiempo veo que aquí hay oportunidades de llevar a cabo proyectos, ya no hacerse rico, simplemente llevar adelante un proyecto de SL, que en Cuba a causa de trabas legales absurdas es imposible hacer. Aquí me dí cuenta de que la revolución arregló muchas cosas que estaban mal, pero, por desgracia, destruyó lo que estaba bien, destruyó el estado de derecho y las libertades individuales.

Quizás te cueste trabajo entenderlo, definitivamente debes ir a Cuba, pues mi país es demasiado diferente al resto del mundo. suerte

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

Picando Código

Problemas con el foro

Noviembre 20th, 2008

Varios usuarios reportaron por correo y comentarios sobre el mal funcionamiento del Foro de Picando Código. Intenté instalar un plugin para sindicación RSS y terminé rompiendo todo :S

De todas formas la decisión ya está tomada, y voy a migrar el foro a un nuevo sistema. phpBB está muy lindo y lo que quieran, pero las complicaciones en su mantenimiento me han frustrado demasiadas veces ya. Así que opté por pasar a un sistema más mantenible.

Todavía estoy mirando distintos sistemas de foros, y ya tengo uno medio en mente, pero se aceptan sugerencias. La condición principal y excluyente, es que se puedan migrar los datos (usuarios, posts, foros y subforos) desde phpbb3 al nuevo sistema.

Disculpen las molestias, estamos trabajando por mejorar el servicio :P

Por cierto, ¿alguien más encuentra ilógico que un sistema para foros no traiga sindicación RSS de fábrica?

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

programania

Mucho cuidado al apoyarte en software libre

Noviembre 20th, 2008

Estoy totalmente de acuerdo con el el post de Joserra sobre los frameworks. Además creo que esto no es sólo sirve para los frameworks sino que hay que extenderlo a todo. La máxima debería ser: “antes de programar cualquier cosa mirar si ya existe hecha”. Lo que si me gustaría matizar es que tampoco hay que lanzarse a adoptar cualquier tipo de solución de software libre sin antes mirar qué comunidad hay detrás y qué documentación tiene.

En el caso de PHP para mí hay dos ejemplos claros:

Tanto en Java como en PHP existen multitud de proyectos de software libre de los cuales nos podemos beneficiar a la hora de programar. Pero a la hora de elegir un proyecto, no sólo hay que mirar en qué estado está el desarrollo, sino quién está detrás y hasta dónde se puede prever que continúe el desarrollo.

En mi opinión, Zend Framework sí, Xajax no.

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

.: El Blog de Inwe :. » Programación

Netbeans 6.5 ya disponible

Noviembre 19th, 2008

Acaba de salir la última versión de Netbeans, el cual trae muchas novedades y mejoras. Tras haber estado usando las versiones beta y release candidate de esta nueva versión, la verdad es que he relegado a Eclipse como entorno de desarrollo. Se ha mejorado mucho la estabilidad y la fluidez de la aplicación, aunque eso no quita que consuma más memoria de la deseada.

A continuación un extracto de las notas de la versión sobre las nuevas características:

Características

PHP

  • PHP Editor (Code completion, syntactic and semantic code highlighting)
  • Support for heredoc notation and PHTML
  • Debugging using Xdebug
  • Generators for MySQL database code snippets
PHP Code Completion
JavaScript and Ajax

  • JavaScript Debugging on FireFox & Internet Explorer
  • HTTP transaction monitoring
  • Improved JavaScript and CSS Editor
  • JavaScript Library Manager incl Yahoo UI, Woodstock, jQuery, Dojo, Scriptaculous, Prototype libraries
JavaScript quickfixes popup in the editor
Java EE & Web Development

  • Enhanced support for Spring, Hibernate, JSF, JSF CRUD generator, JPA (Java Persistence API)
  • Create RESTful web services from database tables or from JPA entities
  • Drag and drop SaaS services into PHP files
  • SQL Editor Improvements (code completion, save/recall queries, and more)
  • Improved Eclipse project import and synchronization for Java Web projects
  • Automatic Deploy on Save
web application persistence
JavaFX

  • Create, test, debug, profile, and deploy JavaFX projects
  • JavaFX editor with syntax highlighting, source navigation, code completion, code folding, javadoc pop-ups, and error detection.
  • Live preview of visual elements
  • Code snippet palette for transformations, effects and animations
javafx video cube
Groovy and Grails

  • Develop pure Groovy apps or use Groovy in Java SE projects
  • Groovy editor with code completion, highlighting, and more
  • Grails web application framework
  • Open existing Grails applications without adding metadata
Groovy code editor
Ruby and Rails

  • New Test Runner interface for displaying test results
  • Rake improvements: Rake Runner and a pre-generated Rake file
  • Debugger: Conditional breakpoints and catchpoints
  • Ruby projects accept JVM options from command line
Ruby code editor
GlassFish v3 Prelude for Web Development

  • Modular, OSGi based architecture
  • Small footprint, fast startup and deployment
  • Support for scripting, including JRuby
glassfish app server
C/C++

  • Improved code completion, error highlighting, and semantic highlighting
  • Call graph, Memory window
  • Remote development
  • Packaging of application as tar files, zip files, or SVR4 packages
Call graph
Java ME

  • New project wizard for adding custom components to the Visual Designer Palette
  • New SVG UI components in the enhanced SVG Composer enable rich UI design
  • New Data Binding Custom Components in the Visual Designer Palette
  • Upgraded obfuscation tool to ProGuard 4.2 and test framework to JMUnit 1.1.0
Java ME SVG palette
Java Debugger

  • New multi-threaded debugging with improved UI and work-flow
  • Smart Step Into with method selection right inside expression
  • Deadlock detection with visual indication
swing treemodel view editor
Java SE

  • Automatic Compile on Save
  • Improved Eclipse project import and synchronization
  • Java Call Hierarchy
  • Analyze Javadoc
  • Swing GUI Builder can generate simple or fully qualified class names
swing treemodel view editor
IDE Tools and Usability

  • CamelCase code completion
  • Customize formatting settings per project
  • One IDE-wide QuickSearch shortcut for files/symbols/types, IDE actions, options, and docs
  • Support for Windows UNC paths (shared network folders)

Enlace: Netbeans IDE 6.5 Release notes

Descarga: Netbeans IDE 6.5

Entradas relacionadas

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

PHP Senior

Taller POO/PHP5: Lunes pasado finalizó el Grupo 2

Noviembre 19th, 2008


Lamentablemente vengo un poco desbordado de trabajo y este post debería haber salido el lunes 17/11, sepan disculpar ;-)

El lunes pasado cerramos el Grupo 2, donde participaron 22 alumnos y fueron 9 alumnos los que sobrevivieron a todas las instancias del taller. Quiero destacar los que sacaron más puntos en el último y más complicado ejercicio: Pedro Del Moral, Federico Grochal y Alejandro Bovino.




Nuevamente, gracias a todos por participar y felicitaciones por el esfuerzo :-)

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

Picando Código

Disponible NetBeans IDE 6.5

Noviembre 19th, 2008

NetBeans IDE 6.5

Ya está disponible para su descarga NetBeans IDE 6.5 en los sistemas operativos Windows, Mac, GNU/Linux, y Solaris. En esta nueva versión enfocada al desarrollo de aplicaciones web, de escritorio, empresariales y móviles con soporte para los lenguajes PHP, JavaScript, Java, C/C++, Ruby y Groovy.

Entre las mejoras para Java se encuentra soporte a varios frameworks: Hibernate, Spring, JSF y JPA. Una versión bastante esperada para los usuarios  de NetBeans, ya que prometió muchas mejoras, y parece que cumplió.

PHP

* Editor PHP (Code completion [completado de código], destacado de código sintáxis y semántica)
* Soporte para notación heredoc y PHTML
* Debugging usando Xdebug
* Generadores para snippets de código MySQL

JavaScript y Ajax

* Debugging de JavaScript en FireFox & Internet Explorer
* Monitoreo de transacciones HTTP
* Editor mejorado de JavaScript y CSS
* Gestor de bibliotecas JavaScript incluyendo Yahoo UI, Woodstock, jQuery, Dojo, Scriptaculous, Prototype.

Desarrollo Java EE & Web

* Soporte mejorado para Spring, Hibernate, JSF, generador CRUD JSF, JPA (Java Persistence API)
* Crear servicios web RESTful desde tablas de base de datos o entidades JPA
* Servicios SaaS drag and drop en archivos PHP
* Mejoras en el editor SQL (completado de código, guardar/recordar consultas, y mas)
* Importar proyectos de Eclipse y sincronización para proyectos Java Web mejoradas
* Deploy automático al guardar

JavaFX

* Crear, test, debug, profile, y hacer deploy de proyectos JavaFX
* Editor JavaFX con destacado de sintaxis, navegación de código, code completion, code folding, javadoc pop-ups, y detección de errores.
* Vista previa en tiempo real de elementos visuales
* Paleta de snippets de código para transformaciones, efectos y animaciones

Debugger Java

* Nuevo debugging multi-hilos con UI y work-flow mejorados
* Step Into inteligente con selección de métodos dentro de la expresión
* Detección de Deadlock con indicador visual.

Java SE

* Compila automáticamente al guardar
* Mejorada la importación y sincronización con Eclipse
* Jerarquía de Java Call
* Analizar Javadoc
* Swing GUI Builder puede generar nombres de clase simple o fully qualified

Muchas características más para Groovy y Grails, Ruby y Rails, Glassfish, Java ME, C/C++ y el IDE en general.

¡Ya lo estoy descargando para probar las nuevas características!

Enlaces:

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

Arragonán

Por la Conferencia Rails 2008

Noviembre 19th, 2008

Los días 13 y 14 estuve en Madrid para asistir a la Conferencia Rails, os recomiendo leer el resumen que ha hecho Jesús Navarrete de algunas de las charlas viendo que coincido mucho con él y que últimamente ando un poco vago para escribir ;) , de todas formas sí quiero comentar que por lo general me parecieron más interesantes las que giraban alrededor de cómo trabaja la gente y algunos casos de éxito que las de tecnología pura y dura.

También me pareció curioso el speed dating entre gente que busca programadores y quienes buscamos proyectos interesantes en los que trabajar o para quien busca empleo, aunque la mayoría buscaban contratar empleados y no colaboradores freelance.

Otras cosas que quisiera destacar son por un lado los premios de personaje de año y proyecto del año, el primero fue para Xavier Noria y el segundo para Tog, aunque como ya se dijo en la lista de ror-es, hubiera estado bien dar un par de minutos para conocer a los ganadores; y por el otro lado la keynote de Obie Fernandez, que nos habló mucho de su empresa y de cómo trabajan, lo que resultó realmente interesante.

Como siempre, de lo mejor del evento son los pasillos: hablar con gente que no conocías, poner cara a muchos de los que participan en ror-es, encontrarte con algunos que conoces de forma online, juntarte con la gente con la que colaboras a diario e incluso encontrarte a un ex-compañero de trabajo :) .

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

Ideas + Ingeniería del Software

Manifestación Informática 19N

Noviembre 19th, 2008


Manifestación Informática 19N
Cargado originalmente por alberto.ipollo
Hoy era el día.

Mi opinión sobre la huelga era que había que hacerla, todos. Sobre todo, para curarnos en salud de lo que pueda pasar. Por mí, le quitaba las atribuciones a todo el mundo. Lo que no quiero es que al final le acaben dando las mías a otro. Y todo apunta a que el ninguneo que sufre nuestra carrera puede llevar a eso.

El balance ha sido mediocre. Me he encontrado con mucha gente que no veía desde la facultad, y eso es bueno porque quiere decir que desde las empresas nos hemos movilizado bastante. Pero, por otro lado, me han faltado estudiantes. Al no ser una huelga oficial ha habido gente que trabaja que no la ha podido secundar, así que mi esperanza era que se movilizase el colectivo de estudiantes.

De todas formas, es bueno ver que nos empezamos a mover, y que esto se ha repetido en toda España (basta con buscar en Flickr).

Es un pequeño paso para nosotros, a ver si es el comienzo de un buen camino.

Pondría una foto de las mías, pero ésta de Alberto es mucho mejor.

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

Picando Código

Jornadas Estudiantiles y Académicas CEI Edición 2008

Noviembre 19th, 2008

El próximo viernes voy a estar participando de las Jornadas Estudiantiles y Académicas de CEI. Junto al profesor Luis Dentone y otros estudiantes y egresados vamos a participar de la charla “La vida de un Analista”. Aparentemente vamos a comentar nuestras experiencias en el curso y en lo laboral.

CEI Jornadas Estudiantiles 2008

Miren atentamente la foto. El de la izquierda, ¡es Pablo! :D

La conferencia al final de las jornadas trata de arquitectura del software, por alguien que sabe mucho. Así que puede ser bastante interesante. Dejo los datos:

Fecha: Viernes 21 de noviembre
Lugar: Arturo Santana 594 y San Carlos - Maldonado
Sala de Conferencias

19:00 Presentación de trabajos de los alumnos del Curso de Relaciones Públicas y Protocolo sobre los temas:
“Bob Marley. El artista más influyente de la segunda mitad del siglo XX”
“Turismo Social. Turismo para todos”
“Conciencia animal. ¿La tenemos todos?”
“San Carlos. Un recorrido histórico”

20:00 “La vida de un Analista”
Participan: Luis Dentone (docente y tutor de la Carrera Analista Programador), egresados y alumnos de la Carrera.

20:30 “Curriculum… Tu presentación”
Presentación de la docente de Gestión de Personal Claudia Bustamante y sus alumnos de la Carrera Técnico en Gerencia (2º Semestre).

21:00 Conferencia “Elementos y conceptos sobre Arquitecturas de software”
a cargo de Gastón Mousqués.

Gastón Mousqués
Master en Computación, University of North Texas
Director Laboratorio de Investigación y Desarrollo en Ingeniería de Software, Facultad de Ingeniería, Universidad ORT Uruguay
Catedrático de Ingeniería de Software, Universidad ORT Uruguay
Premio a la Excelencia Docente 1995 Facultad de Ingeniería, Universidad ORT Uruguay
Sala de Exposiciones

18:30 a 20:30 Exhibición de trabajos de alumnos de Cursos Técnicos

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

Fetishcode...Thinking in objects

Herramientas de búsqueda y edición de imagenes on-line

Noviembre 19th, 2008

A

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

Navegapolis

Ejercicio de gestión de proyectos predictiva

Noviembre 19th, 2008

ejercicioA ver si me da tiempo, y poco a poco les doy look presentable a los ejercicios que usé el año pasado en las clases de Ingeniería del Software de Ceste, para los que os puedan servir.
Este fin de semana "peiné" como primero este, que sirve para explicar de forma práctica los puntos básicos de la gestión de proyectos predictiva: requisitos - plan - seguimiento del plan.

Es un ejercicio diseñado para combinar con el que será el siguiente, y que lleva a cabo el mismo desarrollo de juego, pero con principios ágiles. La combinación de los dos en un mismo curso presenta de forma práctica el contraste y las razones de ambas formas de gestión.

Si lo queréis emplear en una sesión de formación, en el área de publicaciones de Scrum Manager están también las diapositivas y el guión de formación.

 

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

niko's mini factory

Links for 2008-11-18 [del.icio.us]

Noviembre 19th, 2008

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

jenaiz.com - RubyOnRails

Reflexión tras la Conferencia Rails

Noviembre 19th, 2008

A finales de la semana pasada, se celebró en Madrid la Conferencia Rails 2008, tal como os comenté, estuve allí conociendo gente, intercambiando opiniones y descubriendo lo que se está haciendo con Rails.

Este año he podido disfrutar asistiendo ambos días, además he disfrutado como más me hubiese gustado hacerlo siempre. Dado que desde hace un tiempo he estado trabajando más intensamente con Rails, y este ha sido el primer evento relacionado con el tema al que he podido asistir, eso si no contamos el evento de Tog en octubre ;-).

Como es habitual, aporto mi pequeña gota de feedback y como también es normal, no lo haré de todas las charlas, sino de aquellas que más me impactaron o que por una causa u otra más recuerdos han dejado en mi. Para los que se queden con ganas de más, les recuerdo que la organización grabó las charlas y que seguramente pronto estarán disponibles los vídeos como en otras ocasiones.

Apertura y keynote por fxn. Una manera de abrir la conferencia singular, con referencias a hechos que originaron cambios. Personas que fueron contra corriente, con formas de pensar y/o hacer diferentes... Somos reacios al cambio, somos animales de costumbres y nos cuesta aceptar algo nuevo, pero cuando el cambio es llevado a cabo, cuando nos dejamos embaucar por lo extraño, sin duda disfrutamos como niños. Rails sin dudarlo es una pequeña cosa que ha hecho una gran diferencia. Frameworks hay muchos, intentos de hacerlo de otra forma también, pero corrientes como la que vivimos no han habido tantas. Lo que más me maravilla de esta comunidad es que muchos hemos llegado a ella con experiencia sobre otras, con lecciones aprendidas a fuego y veo cosas que me gustan bastante.

Caso de éxito: "Tog: Open Web, Social Networks y cintas de video". Una explicación de la visión sobre los objetos sociales y sobre lo que una red social debería crearse. Intentando mostrar el aporte que Tog podría hacer con respecto a crear una red social. No sé si fue la charla, si oir a Aitor en estado catarroso o si definitivamente Tog tiene el tirón que parece. El caso es que el último día las votaciones de mejor proyecto del año 2008 recayó sobre el XD, y eso que fue liberado a ¡finales de septiembre! La verdad es que el trabajo detrás de esta primera inflexión que supuso la liberación del código se remonta a bastantes meses atrás. Antes hubo pruebas, proyectos, afinamiento de ideas y tras todo eso la creación de lo que ahora mismo es. Todo ello entorno a la idea que nos mueve de los objetos sociales y su valor.

Rails HOT or NOT. Os recomiendo verla en video :-). No había utilizado todos los plugins que se comentaron, en ocasiones no podía decir nada malo por uno de ellos, pero sin duda descubrí opciones, opiniones en base a experiencias y espero pronto leer las conclusiones en la lista de ror-es; además de invertir algo de tiempo en cacharrear con alguno de ellos.

Speed dating. Un experimento que pudo hacer que nos relacionásemos gente con proyectos en busca de gente y gente en busca de proyectos, aunque tubo un mayor aporte de empresas que buscaban personal para contratar que lo yo personalmente hubiese querido encontrar. Aún así, una grata experiencia.

Caso de éxito: "b5map: Maps on Rails". La verdad es que ya conocía la web desde hacía tiempo, conozco Aitor por sus post en jaiku, pero desconocía las tiranteces que parece haber entre los ayuntamientos. Algo que me llamó mucho la atención, fue descubrir que el proyecto se había llevado a cabo aunando a freelances y pequeñas empresas, algo loable viniendo de una administración pública.

Keynote por Obie. Una forma de ver el mundo laboral y empresarial diferente a lo que se ve en este país. Sin duda oír hablar a Obie diciendo que son buenos desarrollando, que les gusta y que eso es a lo que se dedican y es lo que le transmiten a sus clientes; lo cual despertó algún comentario en los asistentes, dada la comparación con lo que vivimos aquí en España. Aplicación de Pair Programming todo el tiempo, un ambiente laboral agradable, invitaciones a personas destacadas dentro del mundo de la programación para que interaccionen con la gente que trabaja en Hashrocket, etc etc. Fue agradable de escuchar y creo que sería increíble trabajar en esos ambientes (al lado de la playa :-) ) y de con esas premisas. Aunque sin duda mi conclusión actual es que no estamos tan lejos de conseguirlo, y que la nueva cultura de empresas pequeñas haciendo software creada entorno a Rails, podría llevarnos a eso.

Por comentar, me queda por ver a fondo la charla de Emili Parreño sobre ActiveRecord, echarle un vistazo a Typus, probar EC2 de Amazon, hacerse con uno de los aparatos que vimos en: Hardware Hacking en Ruby y casi en Rails para iluminar los deploys y definitivamente: hacer TAFT :-).

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

Nuevos Programadores

Patrón Decorador - Definición, diagramas e implementación

Noviembre 19th, 2008

El patrón decorador, (decorator pattern), añade nuevas responsabilidades a un objeto dinamicamente, ofreciendo una alternativa flexible a la herencia.

En otras palabras, es una forma de agregar funcionalidades a una clase, extendiéndola pero sin recurrir a la herencia. ¿Por qué no heredar? Bueno, tal vez no desees dar acceso a toda la clase primaria y entonces sólo se daría acceso a lo necesario.

Veamos un ejemplo simple, tenemos las siguientes clases:

Cómo vemos todos tienen campos comunes a Persona, pero no tienen todos los campos de la clase Persona, por eso no podemos heredar, así es que podremos implementar decoradores para la clase Persona, tendremos los decoradores Usuario, Cliente y Cliente VIP. (Ver figura 1).

Pero si analizamos lo que hemos diseñado hasta el momento podremos observar que Cliente VIP podría llegar a convertirse en un decorador de Cliente, que como recordamos es un decorador de Persona, de esa manera no tendremos que reescribir la lógica detrás de los atributos Teléfono e Email. (Ver figura 2).

La pregunta es cómo decorar una clase, pues a grandes rasgos podríamos decir que se trata de tener una variable privada de la clase a decorar, escribir los métodos o atributos que se deseen publicar de la clase a decorar y luego agregar las decoraciones en nuestra nueva clase, entendiendo por decoraciones los nuevos métodos y/o atributos.

Por último veamos el código correspondiente a nuestras clases.

class Persona
{
	private int ID;
	private String Nombre;
	private String Apellido;
	private Date FechaNac;
 
	public int getID()
	{
		return ID;
	}
 
	public String getNombre()
	{
		return Nombre;
	}
 
	public String getApellido()
	{
		return Apellido;
	}
 
	public Date getFechaNac()
	{
		return FechaNac;
	}
}
 
class Usuario
{
	private Persona mPersona;
 
	private String Usuario;
	private String Passwd;
 
	public int getID()
	{
		return mPersona.getID();
	}
 
	public String getNombre()
	{
		return mPersona.getNombre();
	}
 
	public String getApellido()
	{
		return mPersona.getApellido();
	}
 
	public String getUsuario()
	{
		return Usuario;
	}
 
	public String getPasswd()
	{
		return Passwd;
	}
}
 
class Cliente
{
	private Persona mPersona;
 
	private String Telefono;
	private String Email;
 
	public int getID()
	{
		return mPersona.getID();
	}
 
	public String getNombre()
	{
		return mPersona.getNombre();
	}
 
	public String getApellido()
	{
		return mPersona.getApellido();
	}
 
	public String getTelefono()
	{
		return Telefono;
	}
 
	public String getEmail()
	{
		return Email;
	}
}
 
class Cliente_VIP
{
	private Cliente mCliente;
 
	private String NroCuenta;
	private Double LimiteCredito;
 
	public int getID()
	{
		return mCliente.getID();
	}
 
	public String getNombre()
	{
		return mCliente.getNombre();
	}
 
	public String getApellido()
	{
		return mCliente.getApellido();
	}
 
	public String getTelefono()
	{
		return mCliente.getTelefono();
	}
 
	public String getEmail()
	{
		return mCliente.getEmail();
	}
 
	public String getNroCuenta()
	{
		return NroCuenta;
	}
 
	public Double getLimiteCredito()
	{
		return LimiteCredito;
	}
}

También te puede interesar:

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

Picando Código

Instalar Gnash en GNU IceCat

Noviembre 19th, 2008

GNU IceCatPongo esto aca para no olvidarme:

Cómo instalar Gnash en GNU IceCat:

apt-get install gnash mozilla-plugin-gnash

Y el enlace simbólico… EL ENLACE SIMBÓLICO!!!

ln -s /usr/lib/gnash/libgnashplugin.so /ruta_hacia_directorio_icecat/plugins/

Si usas GNU IceCat, o en su defecto alguno de los forks de Firefox, te puede interesar:

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

Una sinfonía en C#

Charla sobre mocking en el MUG, Done!!

Noviembre 19th, 2008

Hoy tuve la suerte de poder dar una charla sobre mocking en el Grupo de Usuarios de Microsoft de Argentina, hablamos de los objetivos del mocking, de Rhino Mocks y Moq sin olvidar hacer referencia de NMock y TypeMock.

Agradezco a los asistentes, al MUG, y a Daniel Laco por todo.

Dejo los ejemplos para descargar

Leonardo Micheloni

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

Variable not found

Métodos genéricos en C#

Noviembre 18th, 2008

Código fuenteLos métodos genéricos son interesantes herramientas que están con nosotros desde los tiempos del .NET Framework 2.0 y pueden resultarnos muy útiles de cara a la construcción de frameworks o librerías reutilizables.

Podríamos considerar que un método genérico es a un método tradicional lo que una clase genérica a una tradicional; por tanto, se trata de un mecanismo de definición de métodos con tipos parametrizados, que nos ofrece la potencia del tipado fuerte en sus parámetros y devoluciones aun sin conocer los tipos concretos que utilizaremos al invocarlos.

Vamos a profundizar en el tema desarrollando un ejemplo, a través del cual podremos comprender por qué los métodos genéricos pueden sernos muy útiles para solucionar determinado tipo de problemas, y describiremos ciertos aspectos, como las restricciones o la inferencia, que nos ayudarán a sacarles mucho jugo.

Escenario de partida

Como sabemos, los métodos tradicionales trabajan con parámetros y retornos fuertemente tipados, es decir, en todo momento conocemos los tipos concretos de los argumentos que recibimos y de los valores que devolvemos. Por ejemplo, en el siguiente código, vemos que el método Maximo, cuya misión es obvia, recibe dos valores integer y retorna un valor del mismo tipo:
  public int Maximo(int uno, int otro)
{
if (uno > otro) return uno;
return otro;
}
 
Hasta ahí, todo correcto. Sin embargo, está claro que retornar el máximo de dos valores es una operación que podría ser aplicada a más tipos, prácticamente a todos los que pudieran ser comparados. Si quisiéramos generalizar este método y hacerlo accesible para otros tipos, se nos podrían ocurrir al menos dos formas de hacerlo.

La primera sería realizar un buen puñado de sobrecargas del método para intentar cubrir todos los casos que se nos puedan dar:
  public int Maximo(int uno, int otro) { ... }
public long Maximo(long uno, long otro) { ... }
public string Maximo(string uno, string otro) { ... }
public float Maximo(float uno, float otro) { ... }
// Hasta que te aburras...
 
Obviamente, sería un trabajo demasiado duro para nosotros, desarrolladores perezosos como somos. Además, según Murphy, por más sobrecargas que creáramos seguro que siempre nos faltaría al menos una: justo la que vamos a necesitar ;-).

Otra posibilidad sería intentar generalizar utilizando las propiedades de la herencia. Es decir, si asumimos que tanto los valores de entrada del método como su retorno son del tipo base object, aparentemente tendríamos el tema resuelto. Lamentablemente, al finalizar nuestra implementación nos daríamos cuenta de que no es posible hacer comparaciones entre dos object's, por lo que, o bien incluimos en el cuerpo del método código para comprobar que ambos sean comparables (consultando si implementan IComparable), o bien elevamos el listón de entrada a nuestro método, así:
  public object Maximo(IComparable uno, object otro)
{
if (uno.CompareTo(otro) > 0) return uno;
return otro;
}
 
Pero efectivamente, como ya habréis notado, esto tampoco sería una solución válida para nuestro caso. En primer lugar, el hecho de que ambos parámetros sean object o IComparable no asegura en ningún momento que sean del mismo tipo, por lo que podría invocar el método enviándole, por ejemplo, un string y un int, lo que provocaría un error en tiempo de ejecución. Y aunque es cierto que podríamos incluir código que comprobara que ambos tipos son compatibles, ¿no tendríais la sensación de estar llevando a tiempo de ejecución problemática de tipado que bien podría solucionarse en compilación?

El método genérico

Fijaos que lo que andamos buscando es simplemente alguna forma de representar en el código una idea conceptualmente tan sencilla como: "mi método va a recibir dos objetos de un tipo cualquiera T, que implemente IComparable, y va a retornar el que sea mayor de ellos". En este momento es cuando los métodos genéricos acuden en nuestro auxilio, permitiendo definir ese concepto como sigue:
  public T Maximo<T>(T uno, T otro) where T: IComparable
{
if (uno.CompareTo(otro) > 0) return uno;
return otro;
}
 
En el código anterior, podemos distinguir el parámetro genérico T encerrado entre ángulos "<" y ">", justo después del nombre del método y antes de comenzar a describir los parámetros. Es la forma de indicar que Maximo es genérico y operará sobre un tipo cualquiera al que llamaremos T; lo de usar esta letra es pura convención, podríamos llamarlo de cualquier forma (por ejemplo MiTipo Maximo<MiTipo>(MiTipo uno, MiTipo otro)), aunque ceñirse a las convenciones de codificación es normalmente una buena idea.

A continuación, podemos observar que los dos parámetros de entrada son del tipo T, así como el retorno de la función. Si no lo ves claro, sustituye mentalmente la letra T por int (por ejemplo) y seguro que mejora la cosa.

Lógicamente, estos métodos pueden presentar un número indeterminado de parámetros genéricos, como en el siguiente ejemplo:
  public TResult MiMetodo<T1, T2, TResult>(T1 param1, T2 param2)
{
// ... cuerpo del método
}
 

Restricciones en parámetros genéricos

Retomemos un momento el código de nuestro método genérico Maximo:
  public T Maximo<T>(T uno, T otro) where T: IComparable
{
if (uno.CompareTo(otro) > 0) return uno;
return otro;
}
 
Vamos a centrarnos ahora en la porción final de la firma del método anterior, donde encontramos el código where T: IComparable. Se trata de una restricción mediante la cual estamos indicando al compilador que el tipo T podrá ser cualquiera, siempre que implementente el interfaz IComparable, lo que nos permitirá realizar la comparación.

Existen varios tipos de restricciones que podemos utilizar para limitar los tipos permitidos para nuestros métodos parametrizables:Un último detalle relativo a esto: a un mismo parámetro se pueden aplicar varias restricciones, en cuyo caso se separarán por comas, como aparece en el siguiente ejemplo:
  public TResult MiMetodo<T1, T2, TResult>(T1 param1, T2 param2)
where TResult: IEnumerable
where T1: new(), IComparable
where T2: IComparable, ICloneable
{
// ... cuerpo del método
}
 
En cualquier caso, las restricciones no son obligatorias. De hecho, sólo debemos utilizarlas cuando necesitemos restringir los tipos permitidos como parámetros genéricos, como en el ejemplo del método Maximo<T>, donde es la única forma que tenemos de asegurarnos que las instancias que nos lleguen en los parámetros puedan ser comparables.

Uso de métodos genéricos

A estas alturas ya sabemos, más o menos, cómo se define un método genérico, pero nos falta aún conocer cómo podemos consumirlos, es decir, invocarlos desde nuestras aplicaciones. Aunque puede intuirse, la llamada a los métodos genéricos debe incluir tanto la tradicional lista de parámetros del método como los tipos que lo concretan. Vemos unos ejemplos:
  string mazinger = Maximo<string>("Mazinger", "Afrodita");  
int i99 = Maximo<int>(2, 99);
 
Una interesantísima característica de la invocación de estos métodos es la capacidad del compilador para inferir, en muchos casos, los tipos que debe utilizar como parámetros genéricos, evitándonos tener que indicarlos de forma expresa. El siguiente código, totalmente equivalente al anterior, aprovecha esta característica:
  string mazinger = Maximo("Mazinger", "Afrodita");  
int i99 = Maximo(2, 99);
 
El compilador deduce el tipo del método genérico a partir de los que estamos utilizando en la lista de parámetros. Por ejemplo, en el primer caso, dado que los dos parámetros son string, puede llegar a la conclusión de que el método tiene una signatura equivalente a string Maximo(string, string), que coincide con la definición del genérico.

Otro ejemplo de método genérico

Veamos un ejemplo un poco más complejo. El método CreaLista, aplicable a cualquier clase, retorna una lista genérica (List<T>) del tipo parametrizado del método, que rellena inicialmente con los argumentos (variables) que se le suministra:
  public List<T> CreaLista<T>(params T[] pars)
{
List<T> list = new List<T>();
foreach (T elem in pars)
{
list.Add(elem);
}
return list;
}

// ...
// Uso:

List<int> nums = CreaLista<int>(1, 2, 3, 4, 6, 7);
List<string> noms = CreaLista<string>("Pepe", "Juan", "Luis");
 
Otros ejemplos de uso, ahora beneficiándonos de la inferencia de tipos:
  List<int> nums = CreaLista(1, 2, 3, 4, 6, 7);
List<string> noms = CreaLista("Pepe", "Juan", "Luis");

// Incluso con tipos anónimos de C# 3.0:
var p = CreaLista(
new { X = 1, Y = 2 },
new { X = 3, Y = 4 }
);
Console.WriteLine(p[1].Y); // Pinta "4"
 
En resumen, se trata de una característica de la plataforma .NET, reflejada en lenguajes como C# y VB.Net, que está siendo ampliamiente utilizada en las últimas incorporaciones al framework, y a la que hay que habituarse para poder trabajar eficientemente con ellas.

Publicado en: www.variablenotfound.com.

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

Pensamientos ágiles

Cuando los premios son al trabajo bien hecho

Noviembre 18th, 2008


El post de hoy no va sobre la Web 2.0, ni sobre lo último del Cloud Computing, ni sobre la última inversión de algún serial entrepeneur, ni de na