Mostrando las entradas más recientes con la etiqueta articulos Mostrar las entradas más antiguas
Mostrando las entradas más recientes con la etiqueta articulos Mostrar las entradas más antiguas

viernes 9 de abril de 2010

Un modelo de ramas exitoso en Git

En días pasados Sergio me paso la liga a este excelente artículo, que creo que es una lectura obligada para todos aquellos que usamos DVCS's para llevar el control de versiones de nuestros proyectos.

En el artículo se describe como llevarlo con Git, sin embargo puede ser usado con cualquier DVCS, en mi caso con Mercurial.
A successful Git branching model: "In this post I present the development model that I’ve introduced for all of my projects (both at work and private) about a year ago, and which has turned out to be very successful. I’ve been meaning to write about it for a while now, but I’ve never really found the time to do so thoroughly, until now. I won’t talk about any of the projects’ details, merely about the branching strategy and release management."
El modelo que se describe se ajusta muy bien a mi visión de como llevar un modelo de ramas con un DVCS y creo que es muy fácil de implementar, claro está con disciplina y comunicación entre los miembros del equipo.

jueves 10 de septiembre de 2009

Comet

Actualmente estoy trabajando en un proyecto que entre muchos requerimientos tecnológicos está el de refrescar la pantalla del browser sin interacción del usuario, esto se puede obtener de manera mas o menos sencilla con una técnica llamada Comet, este termino lo acuño Alex Russell quién es creador del Dojo Toolkit, también es conocida como Reverse Ajax, HTTP Server Push, entre otros nombres.

Esta técnica se basa en una mezcla de tecnologías y estándares tales como JavaScript, JSON y Java Servlets. La idea general es abrir una sesión y suscribirse a un Servlet manteniendo de alguna manera suspendida esa conexión esperando que suceda algún evento en el servidor y avisar al browser de dicho evento, como se puede observar en el siguiente diagrama, el cuál es una versión minimalista del que se muestra en el artículo original de Alex Russell:

Comet hosted by Ember


Existen en la red diferentes implementaciones que soportan este modelo tales como CometD que es un proyecto de la Dojo Foundation, DWR, que es una de las implementaciones con mas tiempo en el mercado, los famosos continuations de Jetty y los Future Response Servlet y Abstract Asynchronous Servlet de Oracle Web Logic.

Mucha de estas son implementaciones que están acopladas a los servidores para los que fueron desarrolladas o a un a las librerías de JavaScript propias

También existe una implementación de Jean Francois Arcand, uno de los principales desarrolladores de Grizzly llamada Atmosphere, que pretende ser una implementación cross-application-server, la cual al parecer es bastante sencilla de aplicar a proyectos legacy como nuevos.

Cabe destacar que todos estos frameworks pueden ser parcial o totalmente reemplazados por el suspendable request que es parte de la especificación Servlet 3.0, ya que esta será la manera estándar de llevar a cabo el modelo Comet.

Sin embargo tomando en cuenta que falta algún tiempo para que esta especificación salga a la luz y se generalice su uso, mientras esto sucede podemos hacer uso de los frameworks mencionados anteriormente.

Una de las preguntas que viene de inmediato a nuestras cabezas es: ¿Cuál es el mejor framework?, la respuesta correcta no existe, todos tienen ventajas y desventajas, sin embargo tenemos que evaluar cual se adecua mejor a nuestras necesidades, por ahora para mi las implementaciones de Oracle y Atmosphere son las mas se ajustan al proyecto antes mencionado, por lo cual son en las que estaré profundizando un poco mas en artículos posteriores ;).

miércoles 6 de mayo de 2009

Adiós Bazaar, Bienvenido Mercurial

Uno de mis IM's favoritos es Adium y me gusta contar con la versión de desarrollo mas reciente para estudiarla y aprender ya que a mi parecer es uno de los proyectos que pone mayor énfasis en la calidad de su código, además me da la oportunidad de hacer uno que otro cambio para que se ajuste a mis necesidades o simplemente para experimentar.

En días pasados me disponía como cada semana actualizar mi working copy de Adium para compilarla y actualizar mi versión, sin embargo me di cuenta que no bajaba ningún cambio del repositorio de Subversion, lo cual se me hizo extraño ya que este proyecto es uno de los que tienen mayor actividad en su desarrollo, entonces pensé: "Ha de ser uno de esos días en que ningún desarrollador tocó el código", entonces esperé al día siguiente.

Lo intenté como lo había previsto el siguiente día obteniendo el mismo resultado: Sin cambios, eso ya no se me hizo congruente y entré al sitio de Adium en la zona de desarrollo y cual va siendo mi sorpresa que el proyecto había migrado desde Subversion a Mercurial (Hg) :-O, por lo que el repositorio de Subversion ya no estaba actualizado.

Dado a esto bajé la última versión de Mercurial para poder descargar el código fuente de Adium, descargué la versión mas reciente de el código, con todo y su historia ya que Mercurial es un DVCS y cada branch es un repositorio completo en menos de 2 minutos en mi Mac, wow! ese performance me gustó ya que había ocasiones en que bajaba una actualización de código fuente desde el repositorio de Subversion y llegaba a tardar poco menos del tiempo antes mencionado.

Todo esto despertó mi curiosidad por probar de nuevo este DVCS, esto ya lo había hecho un par de años antes, pero la verdad no recuerdo porque me decidí por darcs en ese entonces, sin embargo me dije: "Creo que es un buen tiempo para darle una nueva oportunidad".

Así que entre de nuevo al sitio oficial de Mercurial y en las noticias mas recientes me entero de lo siguiente:
Me puse a investigar un poco mas y me entéro que Bruce Eckel uno de los mayores promotores de Python y autor de varios libros, también migró el repositorio del código fuente de su libro Python 3 Patterns & Idioms de Bazaar a Mercurial.

Después de haber visto estas noticias me di a la tarea de revisar la documentación, la cual esta bastante completa ademas de tener acceso al libro Mercurial: The Definitive Guide, de manera gratuita.

Comencé a leer el libro y poner en práctica los ejemplos y ejercicios que vienen descritos en el y me fue gustando un poco mas cada vez la filosofía pragmática y sencilla para el uso de Mercurial.

También comencé a experimentar por mi cuenta con Mercurial, transformando repositorios enteros de Subversion, Git y Bazaar sin ningún problema y conservando la historia de mis proyectos.

Por otro lado también encuentro Bitbucket que es un repositorio de código fuente basado en Mercurial, que te permite tener proyectos públicos como privados, este tiene diferentes planes desde un gratuito hasta algunos con rentas bastante aceptables, dependiendo el plan que se escoja se tendrá derecho a tener mas o menos repositorios privados.

Es decir Bitbucket es para Mercurial lo que GitHub es para Git, o Launchpad es para Bazaar, aunque en está ultima comparación no es tan certera ya que Launchpad hasta el día de hoy sólo puedes tener proyectos que cumplan con una licencia Open Source, esto es no existen repositorios privados.

Pues bien al final de una extenuante evaluación pienso que Mercurial es el equilibrio de performance y alta eficiencia de Git y la facilidad de aprendizaje, uso y extensibilidad de Bazaar, por lo que después de algunos meses de haber usado Bazaar como mi DVCS de preferencia he decidido cambiarme a Mercurial, aunque los dos tienen características similares como:
  • Extensibles
  • Excelente documentación
  • Pyhoneers
  • Facilidad de uso
Personalmente veo las siguientes ventajas en Mercurial:
  • Performance
  • Baterías incluidas (extensiones)
  • Soporte de glob y regex en la configuración del archivo .hgignore
  • Fácil conversión de repositorios
  • Bitbucket
  • Mercurial Queues
Sin embargo habrá algunas cosas que extrañaré de Bazaar:
  • Los comandos mas suggar-syntax
  • Los repositorios compartidos

jueves 26 de febrero de 2009

Presentación de Bazzar

Como había mencionado en el artículo "Charla en SpringHispano", les comparto la presentación que se di en esa ocasión.


lunes 26 de enero de 2009

Manifesto Peresozo: Hacer Menos. Entonces, Hacer Mucho Menos

Un excelente artículo de Leo Babauta, acerca de porque no es malo, incluso es bueno ser peresozo.

Yo estoy muy de acuerdo con él acerca de que entre mas peresozos seamos buscaremos y encontraremos la forma de hacer menos, sin embargo lo que hagamos tendrá mayor valor.

The Lazy Manifesto: Do Less. Then, Do Even Less. | Zen Habits:
"How many of us don’t get lazy every now and then? Of course, some of us get lazy more than others — my mom (always a hard worker) once told me she gets lazy, but then she just does the work anyway. I replied, ‘Mom, that’s not lazy! That’s the opposite of lazy!’
Lazy is often seen as a bad thing, but I disagree. Lazy is an amazing thing."
(Via Zen Habits.)

domingo 25 de enero de 2009

Charla en SpringHispano

Ayer tuve la oportunidad de dar una charla acerca de Bazaar con la comunidad de SpringHispano y JavaMexico.

Fue una experiencia muy agradable por muchas razones:
  • La gente que asistió era bastante participativa y agradable.
  • Me tocó exponer con Sergio que es uno de mis colegas que merece todos mis respetos.
  • Fui invitado por Domix, otro de mis colegas que realmente admiro por su impulso al movimiento Open Source en México.
La reunión duró aproximadamente 5 hrs. sin embargo pareció que había pasado poco tiempo pues la gente seguía participando, preguntando, debatiendo, en fin me gustó mucho.

Espero al inicio de la siguiente semana publicar la presentación que di, si tienen comentarios acera de esta, por favor ponganse en contacto conmigo.

domingo 18 de enero de 2009

Como incrementar la popularidad de tu blog escribiendo menos

Hoy encontré este excelente artículo que muy al contrario de muchos otros que hablan acerca de como incrementar el numero de suscriptores a tu blog, este te invita a escribir articulos con menos frecuencia pero con mayor calidad.

Concuerdo con las razones que da el autor, sin embargo personalmente creo que puedes postear, de manera frecuente artículos de calidad.

7 Reasons Posting Less Frequently can Increase Your Blog’s Popularity:
"I’ve been exposed to many theories on what makes optimal posting frequency. The problem with the approaches I’ve seen, however, is they fail to address the most fundamental question: How good is the content?"
(Via Write to Done.)

jueves 18 de diciembre de 2008

Why Bad Software Exists

Hoy en en mi habitual lectura de noticias encontré este post, el cual es un tanto viejo, sin embargo me pareció bastante interesante, por lo que quiero compartirlo con ustedes.

Why Bad Software Exists:
"I have a new theory. It’s not about why there are no toilets on the Enterprise (hint: transporters). This one’s about why bad software exists."
(Via The Third Bit.)

miércoles 10 de diciembre de 2008

Reunión CocoaHeads México

Ayer se llevó a cabo una reunión extraordinaria de la comunidad de CocoaHeads México, pues con las fiestas decembrinas se complicaba hacerla alrededor del 20 de este mes, como es tradicional.

En esta ocasión me toco a mi exponer un tema que si realmente no tiene que ver directamente con Cocoa, si es muy importante para cualquier comunidad de desarrollo de software: Control de Versiones.

En la reunión se explicó que significa llevar un control de versiones, se comentó acerca de las herramientas de control de versiones que conocemos y/o usamos en algún momento de nuestras carreras.

También se discutió acerca de las distintas posibilidades para llevar dicho control, y porque son importantes las herramientas que nos facilitan parte de esta tarea.

Se mostraron las diferencias entre las herramientas que usan un modelo centralizado tales como CVS o Subversion y las que usan un modelo distribuido.

Se expusieron algunas de las ventajas del modelo distribuido y se enfatizó en dos de las herramientas más usadas actualmente:
A mi me tocó exponer la parte de Bazaar y Sergio la de Git.

En los siguientes días estaré trabajando en enriquecer la presentación y el screencast que presenté, los cuales espero publicar ambos antes del siguiente lunes.

Creo que la reunión fue bastante productiva y sólo me resta agradecer a cada uno de los asistentes su participación y espero que la hayan disfrutado :).

viernes 5 de diciembre de 2008

Followup: Twitterfeed (2da. parte)

Pues bien Twitterfeed ya esta funcionando correctamente, sólo cambié la siguiente opción de Post new items based on pubDate a GUID.




Ahora si, todos mis followers en Twitter serán avisados cuando publique un nuevo artículo.

viernes 10 de octubre de 2008

BBEdit

Ya había escuchado muchas cosas buenas acerca de este editor, sin embargo la mayoría de las personas eran super-fan de él, por lo que no podía confiar ciegamente en ellos.

Así que me dispuse a evaluarlo por mi mismo, una evaluación que me llevo casi 15 días :O, y cada día descubría una característica nueva.

Mi primera impresión fue muy buena pues el el tiempo que tomó en cargar fue sorprendentemente rápido y la interfaz de usuario me pareció bastante limpia y clara.


Después estuve siguiendo cada uno de los capítulos del manual mientras descubría características muy interesantes como las que listo a continuación:
  • Habilidad para asignar teclas rápidas a cualquier opción del menú.
  • Ventana spliteable.
  • Soporte de Syntax Coloring.
  • Soporte Codeless Languajes Modules.
  • Amplio soporte para AppleScript.
  • Soporte para Unix Scripting.
  • Clippings.
  • Text Factories.
  • Aplicación de consola para su uso en unix scripting.
  • Excelente herramienta de comparación de archivos.
  • Integración con CVS, Perforfe y Subversion.
  • Carga archivos de gran tamaño (50 MB) sin esfuerzo.
  • Excelente soporte para edición de HTML.
  • Diversas funciones para procesamiento de texto.
  • ... y muchas más.
Probablemente no sea el mejor editor del mundo sin embargo, desde que comencé a usarlo me sentí muy cómodo él.

Anteriormente había estado usando TextMate y SubEthaEdit, sin embargo desde que comencé a usar BBEdit, se convirtió en mi editor de texto favorito.

Mi conclusión es la siguiente:

miércoles 3 de septiembre de 2008

Acid3

Ayer todos los sitios hablaban de lo bueno o malo que tenía Chrome, y me enconté este artículo:

"¿Primer borrón?: Google Chrome no supera el Acid3"

Y me dío curiosidad de que puntuación tendrían los demás navegadores en mi sistema (Mac OS X Leopard 10.5.4) pasandoles el Acid3.

Pues puse manos a la obra y estos fueron los resultados:

Browser
Resultado
Opera 9.5.2 80/100
Shiira 2.2 74/100
Flock 2.0b2 70/100
Safari 3.1.2 71/100
Camino 1.6.3 53/100
Omniweb 5.7 41/100

El mejor rankeado es Opera el el peor (uno de mis favoritos :() es OmniWeb.

Bueno, pues les dejo esas cifras para su consideración ;).

domingo 31 de agosto de 2008

BBEdit 9.0

En estas semanas he estado preparando un artículo acerca de BBEdit, en mis comienzos en el mundo Mac había escuchado que era un editor muy poderoso, extensible, amigable, ...

Pero no hay nada como comprobarlo por propía cuenta, así que comencé una intensa evaluación de aproximadamente 15 días en los cuales cada vez me descubría características nuevas, por lo que se ha convertido en mi editor de texto de elección (De hecho este artículo lo estoy escribiendo con BBEdit ;)).

La versión con la que estuve haciendo la evaluación fué la 8.7.2 que hasta hece menos de una semana era la más reciente.

Pues bien lo que estaba preparando quedo out-of-date antes de ser publicado :D, ya que esta semana los chicos de Bare Bones Software acaban de publicar la versión 9.0 que tiene muchas características nuevas y correción de defectos, por los cual tendré que actualizar el artículo que espero publicar a finales de esta semana (Ojalá que no saquen una nueva vesión antes de que acabe :P).

jueves 17 de julio de 2008

Herramientas de compresion

Hoy tuve la necesidad de comprimir una carpeta a modo de respaldo, y claro que la opción más lógica bajo Mac es el StuffIt Deluxe que funciona perfectamente y tiene un nivel de compresión excelente en el formato stix.

Sin embargo existe una desventaja en dicho formato...

Compatibilidad con Windows?...

No, ya que existe un StuffIt Expander gratuito para esta plataforma.

Entonces cuál es?

Pues bien la principal desventaja es: La falta de popularidad!!!!! :S.

Así es, la mayoría de nosotros tenemos manera de comprimir y descomprimir archivos en formato zip e incluso rar, pero... stix?

Bueno, pues a partir de este inconveniente, pues el archivo que generaría lo compartiría con usuarios de Windows me di a la tarea de hacer una comparativa bajo diferentes formatos y algunos resultados fueron los esperados, sin embargo otros me sorprendieron, tal es el caso del archivo "sólido" generado con el rar... Sólo 8 Megas!!!!!.

El objetivo era comprimir lo mas posible un directorio de 86.7Mb, se uso StuffIt Deluxe, rar y tar usando gzip y bzip2 para comprimirlo.

En la siguiente gráfica se pueden observar los resultados:



Los que mejor comprimieron sin contar el archivo "sólido" de rar, fueron StuffIt Deluxe y tar comprimiendolo con bzip2, sin embargo el primero como ya lo mencioné no es tan popular como las otras opciones.

Cabe destacar que personalmente uso StuffIt Deluxe en Mac y rar cuando necesito compartir el archivo con usuarios de windows, WinRAR en Windows y tar/gzip en unix, todos con muy buenos resultados y con ciertas ventajas bajo estas plataformas.

Y ustedes que herramienta de compresion usan en cada plataforma en la que trabajan?

sábado 24 de mayo de 2008

Malware en tu sitio? Google te puede ayudar a comprobarlo

Comprobado por mi mismo, en este blog y en Tearlach Software, pude ver que ninguno de mis dos sitios estaba infectado con malware.

Simplemente siguiendo las instrucciones de este artículo publicado por Kriptópolis.

¿Tiene un sitio malware? Pregunta a Google:
"Google ha puesto a disposición de los internautas Safe Browsing, un nuevo servicio que permite saber si cualquier sitio web está o ha estado infectado con malware en los últimos 90 días."
(Via Kriptópolis.)

martes 20 de mayo de 2008

Como obtener la forma padre de un control en C#

En WinForms no existe una forma directa, o que por lo menos yo conozca de traer todos los controles de algún tipo específico para un pre o post procesamiento.

Así que se tienen que recorrer todos los controles para ir procesando el tipo de control que se necesita.

Para esto se pueden encontrar en la red varios artículos.

Sin embargo, en el proyecto en el que me encuentro colaborando actualmente necesitaba hacer algo similar: Descubrir la Forma a la que pertenece un control.

Estuve buscando algo en la red que me pudiera asistir, pero no encontré nada que me fuera útil.

Así que me dispuse a escribir un método que me ayudara en mi tarea, y este es el resultado:

private Form DiscoverParentForm(Control control)
{
    Control parent = control.Parent;
    Type controlType = parent.GetType();
    
    if (!controlType.IsSubclassOf(typeof(Form)))
    {
        parent = DiscoverParentForm(parent);
    }
    
    return (Form)parent;
}


Si tiene que llevar a cabo esta tarea, pueden usar este método libremente, buena suerte!!!!!.

jueves 15 de mayo de 2008

Markdown un lenguaje de marcado para humanos

En las pasadas noches de desvelo me encontré con un excelente artículo que hace una comparación de los lenguajes de Markup más usados en el ciber-espacio.

Y concluyen que Markdown es el más claro de los lenguajes de marcado.

Como saben yo soy fan de Markdown y estoy muy de acuerdo con dicho artículo.

De hecho, yo hice una comparación muy similar cuando estuve evaluando que lenguaje de marcado usar y... pues ya saben cual quedo como ganador ;) .