Archive for the 'Arquitectura' Category
RubyCocoa, nuevo libro de The Pragmatic Programmers
Como asiduo lector de los libros y artículos de The Pragmatic Programmers y como un fan declarado de Ruby, hoy me emocionó la noticia de la publicación de su nuevo libro: RubyCocoa.
Aún está en beta, sin embargo bajo mi experiencia con otros e-books de ellos mismos, son útiles desde la primer release, así que ya adquirí mi copia ;).
No comments | Related postsScreensavers fuera de este mundo
En mi acostumbrado andar por la red hoy me encontré con un Skyrocket Software que es un sitio que se dedica a desarrollar screensavers para Mac.
Yo acabo de descargar e instalar UFOz y Lightning Bugz y están bastante buenos, échenles un vistazo… vale la pena.
La etapa final
En la mayoría de los proyectos en los que he participado la etapa final de estos es la mas difícil, pues el usuario pide todo lo que no pidió durante la etapa de desarrollo.
En el proyecto en el que estoy participando actualmente se encuentra en la recta final, y bueno ha sido bastante pesado y tedioso, surgen bugs de la nada :S, es difícil llegar a acuerdos…
En fin… Gracias a Dios esto ya está acabando, pues la verdad a ultimas fechas a sido bastante desgastante :(.
Y lo peor es que no he podido invertir el tiempo que hubiera querido a mis otros proyectos.
Ojalá y me pueda tomar un par de dias para descansar y reponer energías ;).
No comments | Related postsRegEx con RegExpress
En este tiempo que he estado desarrollando el mode de Markdown para SubEthaEdit, he usado mucho expresiones regulares, que de hecho es en lo que se soportan los modes.
Pues bien, para auxiliarme en el la validación de estas use RegExpress.
Este es un producto que desarrolle hace un tiempo y que nació precisamente mientras desarrollaba un mode para otro de mis editores favoritos: TextMate.
Después de usarlo intensivamente me di cuanta de algunas mejoras que incluiré en la siguiente versión de RegExpress.
No comments | Related postsExpresiones Regulares en VS2005
Hoy tuve que hacer una search & replace de cierta cadena en el proyecto en el que estoy trabajando actualmente.
La cadena en cuestión es la siguiente .RefreshDataSource(datasource); y la cadena por la que se reemplazaría, seria esta: .DataSource = datasource, el nombre del datasource podía cambiar, así que el search & replace no era tan directa, tendría que emplear una expresión regular :D.
A mi me gusta mucho jugar con expresiones regluares, así que me dije: “adelante”, pues me di a la tarea de escribir la regex y obtuve como resultado:
Cadena a buscar: \.RefreshDataSource\s*\((.*)\);
Reemplazar por: .DataSource = $1;
Cual fué mi sorpesa al ver que si encontraba la cadena, sin embargo al reemplazar fallaba:
Cadena encontrada: grdDatos.RefreshDataSource(datos);
Cadena reemplazada: grdDatos.DataSource = ;
Pensé tal vez me equivoqué y la sintaxis para obtener el grupo de reemplazo se representa así: \1, pues no… no era tampoco así…
Dudé de mi habilidad para trabajar con expresiones regulares :’(, y tuve que hacer una oración a San Yahoo y San Google, encontré las siguientes referencias:
En los cuales se explican las diferencias entre las expresiones regulares al usar .Net y en el cuadro de diálogo de search & replace de VS2005, y que existen algo llamado tags que al parecer es un tipo de grupo que se captura y se puede usar en dicho dialogo, sólo que se usan los caracteres: ‘{’ y ‘}’, rodeando la expresión.
Aún no entiendo dos cosas:
- Porqué no se usan las mismas expresiones regulares en .Net y VS2005?
- Porque usar un tipo de agrupamiento especial?
En el segundo caso tendré que estudiar más acerca del comportamiento y conveniencias de los tags.
Pues bien, se preguntarán como acaba la historia, y que cadenas usé para llevar a cabo el search & replace:
Cadena a buscar: \.RefreshDataSource\s*\({.*}\);
Reemplazar por: .DataSource = \1;
Cadena encontrada: grdDatos.RefreshDataSource(datos);
Cadena reemplazada: grdDatos.DataSource = datos;
Les recomiendo que si va a usar expresiones regulares en el dialogo search & replace de VS2005, consulten las referencias que menciono arriba, así evitaran alguna frustraciones ;).
No comments | Related postsEstándares de codificación
Hoy leyendo el blog de Dx me encontré con este artículo que tiene una excelente referecia a estándares de codificación para las personas que estamos trabajando en C#.
En base a esto me permito decir que después de haber leído el libro de Kernighan y Pike The Practice of Programming, aprendí que también hay que darle peso al estilo con el que cada uno de nosotros programa, ya que al ser consistentes en el se puede dar mantenimiento más rápido a nuestro código.
Parafraseando a Martin Fowler: “Cualquier tonto puede escribir código que entienden las computadoras. Los buenos programadores escriben código que entienden las personas.”
No comments | Related postsAprobación de OOXML como estándar
Wow!!!, Microsoft ganó la guerra de formatos y no tengo ni idea del porque, pues las cosas estaban así:
- Tenía varios votos en contra.
- Poca aceptación en diferentes comunidades y países.
- Existe ODF un formato con mayor madurez.
- … entre otras
En fin en el mundo de los negocios y los estándares es igual, no se trata de encontrar la solución tecnológica más viable, si no la más lucrativa.
Aquí les paso algunas ligas de interés acerca del tema:
Esta imagen fue tomada el día de hoy desde la última liga que es una encuesta de Kriptópolis.
No comments | Related postsPosting en Twitter desde teléfonos con Symbian
Como mencioné en un articulo anterior soy un usuario de Twitter, me gusta postear de manera regular, para lo cual uso el magnífico cliente Twiterrific.
Sin embargo me hacía falta un cliente para postear desde cualquiera de mis dispositivos móviles…
Y bingo!!! hoy descubrí Twitteresce, que es un cliente con el cual puedes postear desde los teléfonos móviles que usan Symbian como su sistema operativo.
Entonces, aprovechando mi nueva adquisición: un Nokia N81, lo instalé e hice mi primer post de prueba:

Técnicas de descubrimiento de clases
De las partes más importantes cuándo diseñamos un sistema haciendo uso del paradigma de Orientación a Objetos es el descubrimiento de clases. El uso de técnica de descubrimiento de clases nos ayuda a mitigar riesgos como: tener clases que no representan nada relevante para el sistema, omisión de clases, tener clases con muchas responsabilidades, o clases irresponsables :D, etc.
Existen diferentes técnicas para esta actividad, en este artículo describiré dos de ellas, haciendo hincapié en que no son las únicas, pero si las más usadas. Es importante tratar de usar sólo una técnica durante el desarrollo del sistema para no incurrir en conflictos de clasificación.
Para llevar a cabo el descubrimiento se hace a partir de nuestros documentos de dominio tales como: user stories, use cases, feature list, glosarios, material publicitario, etc. Esta lista de documentos puede diferir dependiendo de la metodología que usemos para el desarrollo del sistema.
Manos a la obra…
Una de las mejores maneras de aprender algo es a través de ejemplos, por lo que para la demostración del uso de ambas técnicas tomaremos como base el siguiente fragmento de un caso de uso en el que resaltaremos los sustantivos en negritas y los verbos en itálicas:
- El cliente llama por teléfono
- El operador ofrece al cliente los productos del catálogo.
- El cliente selecciona uno o varios productos
- El operador genera la factura con los productos seleccionados
- El operador le ofrece al cliente opciones de pago
-
Sustantivos, Verbos e inspección gramátical
En esta técnica se listan los sustantivos descubiertos en los documentos antes mencionados, los verbos que los afectan a estos sustantivos y las relaciones de entre ellos.
Como podemos observar tenemos las siguientes clases identificadas a partir de los sustantivos
- Cliente
- Telefono
- Operador
- Producto
- Catalogo
- Factura
- OpcionesPago
Las siguientes acciones, que son los verbos en infinitivo.
- llamar
- ofrecerProductos
- seleccionarProductos
- ofrecerOpcionesPago
y por último las relaciones entre ellos
- Por cada cliente hay un operador
- El catálogo consta de varios productos
- El cliente puede seleccionar uno o mas productos
- La factura consta de uno a mas productos
- Existen diferentes formas de pago
-
Clasificación por tipo
En está técnica se utilizan tablas de tipos con los que clasificaremos los sustantivos, verbos e interacciones encontrados en los documentos de dominio.
Las siguiente tabla de clasificación es de las más populares:
Tipo Clase o acción descubierta Cosas tangibles Teléfono, Producto, Factura Roles Cliente, Operador Eventos Ofrecer productos, Ofrecer formas de pago, … Interacciones Llamar, Seleccionar, … Lugares Oficina matriz, sucursal, … Conceptos Facturar, … Sistemas Externos Sistema de pagos con TDC
Para el modelado de nuestra solución lo podemos hacer con un modelo UML o en su defecto con tarjetas CRC (Class-Responsibility-collaborator), con el apoyo en la información obtenida con cualquiera de las dos técnicas arriba mencionadas.
El modelo se irá refinando mientras se van descubriendo más clases, acciones o interacciones de los documentos de dominio.
![]() |
| Primera versión de la solución en notación UML. |




Suscribete por correo