Esperando el fin de semana

2 comentarios
¿Aun no has comentado el resultado del acertijo de esta semana? ¿Qué esperas?
Charley Slowpop estaba a punto de proponerle matrimonio a su novia cuando el hermanito de ésta y su perro irrumpieron en la sala. "No se puede determinar la edad de un perro por las arrugas que tiene en el lomo", dijo l’enfant terrible, "pero hace cinco años mi hermana era cinco veces mayor que Fido... ¡y ahora es sólo tres veces mayor!"
Charley Slowpop está muy ansioso por saber la edad de Fido. ¿Alguien puede ayudarlo?

Esperando el fin de semana

0 comentarios
Otra semana que se acaba. Comienza a disfrutar el fin de semana con un buen acertijo.
Mientras disfrutaba de una embriagadora vuelta en la calesita, Sammy planteó este problema:
"Un tercio de los niños que van delante de mí, sumado a los tres cuartos de aquellos que van detrás de mí da la respuesta correcta a la pregunta acerca del número de chicos que hay en esta calesita."
¿Cuántos niños había?

MVC: Arrays de View a Controller

0 comentarios
Un tema que me he encontrado al desarrollar una aplicación MVC y que las búsquedas en Google han sido infructuosas, es cómo pasar desde la vista al Controller un objeto que posea una Array como una de sus propiedades.
Tomemos un sencillo ejemplo. Un alumno desea registrase para poder rendir exámenes. Para ello, ingresa su número de documento, su nombre y selecciona las materias a las que se desea inscribir.
Presentaremos en la vista dos textbox para el ingreso de los datos del Alumno y un listbox para la selección de las materias a las que se puede inscribir.
Una vez completado el formulario, se enviará esta información al Controller.
Expuesto de esta manera no se diferencia mucho de otros formularios con un modelo que se envía al Controller, pero la gran diferencia radica en que las materias seleccionadas son un Array de strings. Si quisiéramos pasar este modelo al Controller de manera tradicional, es decir, mediante POST, el array de materias seleccionadas llegará null.
Para poder pasar los datos completos, debemos utilizar ajax, quien permite poder pasar objetos más complejos de lo habitual. Para ello nos valdremos de jQuery.

Esperando el fin de semana

0 comentarios
Último día de la semana. Mediodía en Argentina... un buen momento para relajarse y romperse la cabeza.
¿Quién es el que deja su comentario con la respuesta correcta?
Una caritativa dama se encontró con un pobre hombre al que dio un centavo más que la mitad del dinero que llevaba en su bolso. El pobre hombre, que era miembro de la Asociación de Mendicantes Unidos, se las arregló, mientras agradecía a la dama, para marcar con tiza en las ropas de su benefactora, el signo de la organización que la distinguiría como "buena cliente".

La sección del invitado: Buddy class

0 comentarios
-Escrito por Víctor Paredes.
Hace poco tiempo tuve que desarrollar un proyecto muy pequeño, era tan solo un par de ABMs y dos listados que mostraban la información ordenada de una forma particular. Para realizar el trabajo utilicé ASP.NET MVC 3 y Linq2Sql. Ambas herramientas eran mas que suficientes para cumplir con los requisitos que solicitados y funcionan en casi cualquier VPS ( Virtual Private Server ).
A medida que el proyecto avanzó, me di cuenta que la entidad que generaba Linq2Sql era la misma que iba a necesitar para mostrar la información al usuario. Entonces, tuve tres opciones: 


  • Utilizar la entidad generada y perder todas las ventajas de los DataAnnotations que me ofrecía ASP.NET MVC. No parecía tan mal pero escribir todas las validaciones a mano era algo que no tenia pensado hacer. 
  • Escribir una entidad nueva. Agregarle los DataAnnotations que necesitaba y crear un mapper para ir/venir entre la entidad web y la entidad de Linq. Esto básicamente significaba poner una pistola en la cabeza del principio DRY y acabar con su miserable y patética vida. 
  • Buscar en Google una tercer mejor opción. 

Antipatrones de arquitectura: Autogenerated Stovepipe

0 comentarios
Este antipatrón ocurre cuando se migra un sistema existente a una infraestructura distribuida. Un Autogenerated Stovepipe surge cuando se convierte las interfaces existentes en interfaces distribuidas. Si el mismo diseño se aplica para cómputo distribuido, un número de problemas emergen.
Por ejemplo, las interfaces actuales pueden usar operaciones de grano fino para transferir información que puede ser ineficiente en un ambiente distribuido. Las interfaces preexistentes suelen ser implementaciones específicas y causarán interdependencias de subsistemas cuando se usan en sistemas distribuidos de gran escala.
Las operaciones locales a menudo poseen varias asunciones al respecto de la locación, incluyendo direcciones y accesos al file system local. Puede surgir un exceso de complejidad cuando múltiples interfaces existentes son expuestas a lo largo de un gran sistema distribuido.

Solución

Cuando se diseñan interfaces distribuidas para sistema existentes, las interfaces deberían ser rediseñadas. Por separado, debería ser considerado un modelo de objeto menos detallado para las interfaces distribuidas.
La funcionalidad de interoperabilidad usada por múltiples sistemas debería ser el centro de diseño de las nuevas interfaces. Un diseño independiente de un subsitema en particular puede ser logrado a través de una arquitectura mínima. La estabilidad de las nuevas interfaces es muy importante, dado que el software compilado por separado será dependiente de estos nuevos diseños.

Esperando el fin de semana

2 comentarios
Un nuevo viernes y un nuevo fin de semana se acerca. A tomarse un minuto y pensar en este nuevo acertijo.

Un taxista recogió a una señora que no paraba de hablar.
Como no tenía ganas de entrar en conversación, simuló ser sordo y mudo señalando su boca y oídos para indicar que no podía hablar ni oír.
Cuando llego al destino apunto al taxímetro para indicar cuánto debía pagarle.
La pasajera lo hizo y se bajó. En ese momento se dio cuenta de que el taxista no podía ser sordomudo.
¿Cómo llego a esa conclusión?

Antipatrones de desarrollo de software: Cut and paste

0 comentarios
La programación mediante cortar y pegar es muy común, pero es una forma de degenerada de reutilización de software la cual crea pesadillas a la hora del mantenimiento. Proviene de la idea de que es más fácil modificar código existente que hacerlo desde cero. Esto es generalmente cierto y representa un buen instinto de software. Sin embargo, la técnica puede ser usada de manera excesiva.

Generalidades

Este antipatrón se identifica por la presencia de una gran cantidad de código desperdigados a lo largo del proyecto. Usualmente, un proyecto posee programadores que están aprendiendo cómo desarrollar software  siguiendo ejemplos de desarrolladores más experimentados.
Sin embargo, ellos están aprendiendo mediante la modificación de código que se ha demostrado que funciona en situaciones similares y, potencialmente, la personalización permite soportar nuevos tipos de datos o un comportamiento ligeramente modificado. Esto crea código duplicado, el cuál puede tener consecuencias positivas a corto plazo, como una aceleración de las métricas de código, las cuales pueden ser usadas en evaluaciones de rendimiento.

Esperando el fin de semana

2 comentarios
Llegó nuestra hora de relax. Vamos que falta poco para el fin de semana!

Un agente de seguridad le relataba a su jefe, que había soñado que asaltaban el lugar que estaba vigilando, que se llevaban todo el dinero y que luego lo asesinaban.
Felizmente, dijo, sólo fue un sueño. Su jefe lo despidió en el acto.
¿Cuál fue la razón?
 
Copyright 2009 Programación SOLIDa
BloggerTheme by BloggerThemes | Design by 9thsphere