Mostrando las entradas con la etiqueta Reflexiones de programación. Mostrar todas las entradas
Mostrando las entradas con la etiqueta Reflexiones de programación. Mostrar todas las entradas

septiembre 21, 2010

Mas humor de ingeniería de software =:-)

Con motivo de la clase de hoy de mi maestría sobre métricas de calidad ahora aquí van estas tiras

estas son brillantes;

Cuando las métricas se mal-versan:

21164.strip

Lo que realmente sucede en una reunión de RTF (Revisión Técnica Formal)

1623.strip

En la misma reunión, al determinar las metas del proyecto:

58812.strip

Y cuando las estadísticas están cuchareadas (para recordar que correlación no indica causalidad):

40066.strip

octubre 04, 2009

Esquema de colores para PsPad


PsPad es un editor de texto gratuito para programadores que por lo menos para mi se ha convertido en herramenta indispensable para el trabajo día a día.

Ahora les quiero compartir un esquema de colores que he hecho para este editor, los colores están inspirados en el de el editor para mac TextMate.

El esquema se puede descargar de aquí, espero lo disfruten tanto como yo =:-)

You can download it here, enjoy =:-)

julio 31, 2008

¿Sabes lo que es un hashmap?

Para los programadores de Java este concepto tal vez no sea tan extraño pues el uso de hashmaps es común, pero para los programadores de Delphi puede sonarles a nuevo.
Un hashmap es una estructura de datos que permite crear un mapa en memoria para la rápida identificación de elementos a partir de un dato usado como llave. Puedes decir: ok si conozco muchas estructuras de datos que permiten hacer eso, ¿cual es la diferencia con los hashmaps?; bien, la principal es que los hashmaps son verdaderamente rápidos.
La librería JCL incluye varias clases para la implementación de diferentes tipos de hashmaps, aquí mostraré una de estas para poder encontrar una cadena a partir de el valor de otra:

Y una vez hecho esto, encontrar una aguja dentro de ese gran pajar se reduce a una simple instrucción:
ShowMessage (Map.GetValue ('Llave5670'));
En este caso hemos ejemplificado usando cadenas (que incluso usando hashmaps se gana mucha velocidad respecto a utilizar los clásicos derivados de TStrings, TStringList), pero las posibilidades se multiplican si te das cuenta de que puedes mapear grandes cantidades de objetos usando esta técnica. Estos pequeños grandes tips hacen la diferencia entre lo que puede parecer un lento cacharro, o un veloz jet a la hora de trabajar con cantidades de datos muy considerables.

julio 11, 2008

¿Y tu que tan Espartano eres?

No, no se trata de un concurso para ver quien grita mas fuerte "This is Spartaaa!",  Se trata de un estilo de programación de hecho. Me he enterado hace poco de este estilo, y como ven en el enlace tiene que ver con la austeridad en todos los sentidos.

Particularmente yo no soy tan espartano, me gusta anteponer la reutilización de código y la mantenibilidad por encima de la austeridad, por ejemplo siempre prefiero llamar a una variable: MediaAritmeticadelaMuestra, que simplemente M, lo mismo para las funciones y procedimientos. Aunque si dedico muy buena parte de mi tiempo de trabajo a optimizar y simplificar procesos ya hechos; no me preocupa demasiado el aprovechar hasta el más infimo bit de memoria; prefiero aprovechar las jerarquías de la VCL, y usar patrones de diseño a diestra y siniestra.

¿A cuantos aquí el estilo de programación se les parecería a esto si fuera uno de los 300?:

mayo 26, 2008

¿Buscas un buen hosting gratuito que soporte PHP/MySQL?

Dale una oportunidad a http://www.000webhost.com/ es gratis, sin publicidad, servidor FTP, transferencia de hasta 100GB, con los servicios de un hosting profesional y un desempeño bastante aceptable.

Si el HTML no es tu fuerte, o no se te da muy bien el PHP, este sitio cuenta con un instalador automático de una gran variedad de sistemas manejadores de contenidos (CMS) como Joomla, Drupal, PHPNuke, etc; o si quieres montar tu propio foro puedes hacerlo con PHPBB con un solo click, o montar tu propio Blog o Tienda en línea, lo que se te ocurra.

Lo he estado probando y me ha parecido muy bueno, y ahora lo comparto con ustedes. Que lo disfruten y aprovechen al máximo!

Update:

Me han borrado mi cuenta de 000webhost sin decir agua va, y no tengo ni idea de porque haya sido, el caso es que se perdieron los sitios de prueba que tenía alojados ahí y no tengo modo de recuperar ni un solo bit de información. Lo bueno es que solo eran algunas cosillas de poca importancia que solo usaba para probar como funcionaban en linea, pero eso da una buena idea de que no se deben usar estos hostings gratuitos para cosas serias, sino que hay que tomarlos mas bien a la ligera.

Para mi hosteo en serio estoy usando el servicio del cloud de RackSpace, con este servicio te olvidas de cualquier inconveniente con la escalabilidad de tu página o servicio en linea, lo puedo recomendar porque me ha funcionado excelentemente bien con aplicaciones verdaderamente grandes, si te interesa te puedo ofrecer una opción para que el primer mes solo pagues la mitad, solo preguntame como, y te hago llegar un cupon de descuento especial.

julio 26, 2007

G Framework y CapableObjects

Hoy estuve presente en la "Hora Delphi" que regularmente organiza CodeGear, y esto porque hablarían de un tema que particularmente me interesa y es el de los Frameworks de Desarrollo.

Le hicieron una entrevista a Steve Kramer, quien desarrolló un framework para aplicaciones basadas en web llamado G. Este es un framework OpenSource, muy práctico, en el que solo se definen las clases del modelo con las reglas de validación y el framework se encarga del resto. Pueden ver de que va viendo las dos presentaciones que se encuentran disponibles y que muestran lo sencillo que resulta su uso.

Si, es un poco como Ruby on Rails; solo que en Rails hay que definir un controlador para cada clase, mientras que en G la aplicación es el controlador, y solo se ocupa uno del modelo y la vista. Se ha tratado de simplificar las reglas más comunes de validación, así como las formas más comunes de búsquedas en las entidades para dejar que lo simple siga siendo simple. También maneja un esquema de plantillas para poder presentar los datos a nuestro propio gusto, y se ve muy flexible.

Me parecio muy curioso que cuando le preguntan a Steve que cosas le gustaría que tuviera el lenguaje que le facilitarían el desarrollo de este framework, entre otras cosas mencionó las Variables de Clase y que objetos que fueran variables locales en los procedimientos se liberaran automáticamente cuando el procedimiento terminara, como lo hace algunas implementaciones de C++.  Buenas observaciones aunque tal vez yo hubiera agregado muchas cosas más.

Por si fuera poco, G usa Firebird como motor de Base de Datos, y tiene una muy particular manera de manejar la persistencia de los objetos, y la concurrencia en las operaciones de actualización, lo cual lo hace una muy buena opción a considerar. Sin lugar a dudas un excelente framework que esperemos crezca mucho, mucho mas. A mi me parecería fantástico poder ver en este framework un editor de clases como el que integra InstantObjects, estaría de lujo y entonces si sería un SuperWebRad!!

Y a proposito de Frameworks, tambien se dió a conocer la noticia de que el equipo que desarrollaba ECO, se ha separado de CodeGear para formar una nueva empresa llamada CapableObjects. Particularmente me parece una muy buena noticia, se abren las puertas para que la tecnología de ECO se pueda integrar en ambientes como Visual Studio donde auguro que podría tener una mejor acogida, siendo este ambiente el mas apropiado para el desarrollo en .Net; ECO es un gran framework, pero el estar atado a Delphi .Net era un lastre que no le permitia salir a donde realmente se le apreciara.

Y quien sabe tal vez en un futuro no muy lejano pudieran liberar una versión para Win32. Difícil, tal vez, pero uno nunca sabe.

octubre 24, 2006

EasyMVC

Es muy común en algunos entornos de programación como Java por ejemplo el uso de Frameworks o Plataformas de desarrollo, en Delphi no es tan común, los programadores de Delphi estamos muy viciados con todas las bondades que ofrece la VCL y en sí el ambiente RAD del IDE que permite crear muy rápidamente ventanas, modulos de datos, Objetos enlazados a Datos, etc...

Pero en realidad muchas veces desarrollar así de rápido trae como consecuencia de que si se hace sin orden el mantenimiento de una aplicación medianamente compleja muchas veces es insostenible, terminas haciendo lo mismo muchas veces, corregir errores es una tarea titánica que generalmente nunca terminas por hacer bien, y de pensar en dedicar un tiempo a optimizar código mejor ni hablamos.

EasyMVC es un framework de desarrollo para Delphi que pretende traer algo de orden a ese caos, está basado en el conocido modelo MVC Modelo-Vista-Controlador en el que el chiste es separar la forma en como se presentan los datos, de la manera en como se administran y de la manera en como se almacenan, este modelo ha probado su efectividad en diversos proyectos en otros lenguajes como PHP, Ruby, Java, Python, etc. En el ambiente de Delphi existen algunos Frameworks disponibles en sourceforge para su descarga, de entre estos EMvc destaca por la documentación que lo acompaña y la integración completa que tiene con el IDE.

Aún si no eres un asiduo a trabajar con Frameworks te recomiendo que le heches un ojo al código fuente de este proyecto, tiene buenos trucos que le puedes aprender, como el pesado uso que hace de las interfaces y la manera en como se integra con las diferentes versiones de Delphi.

marzo 07, 2006

¿cuestion de inspiración??

Hay quienes tienen la idea de que esto de la programación es muchas veces cuestión de "momentos", que existen esas horas en que algún ser divino toca tu conciencia y es cuando vienen los más grandes portentos de creatividad en la resolución de un problema o del diseño de alguna aplicación que traia dando tantas vueltas en la cabeza; vaya que es crear un arte...

Esto que algunos llaman suerte creo que esta más bien orientado a la inspiración... pero tambien esa inspiración pudiera estar conllevada con el ambiente, la situación social, economico, familiar que el susodicho programador haya tenido en su momento. Porque es bien sabido que por mas brillante que suela uno ser, en un momento de aflicción o sobrecogimiento no se rinde igual, ni fluyen las ideas con tanta facilidad como cuando todo en la vida es miel sobre hojuelas.

Seria bueno que se comentara aqui que tanto piensan que influye realmente el entorno en el desempeño de un programador, que tanto influye el tener un buen sueldo, una buena esposa (porque no?), minimos problemas en general para tener un destacable desempeño creativo.

Ahora que si a inspiraciones vamos, yo debo declararme como un fan de la música de trova y en mi opinión es una música de inspiración sublime. Para muestra un botón, aqui está un fragmento de una canción de "El Mago" Abel Velasquez, ya me dirán si esto no es inspiración; son palabras que muchas veces no sabe uno a ciencia cierta como decir, descritas de la manera mas sublime, asi que tomen nota... con dedicación especial para mi chaparra...

enero 18, 2006

De vacaciones pero trabajando...

Quiero agradecer a todos y cada uno de los que han hecho el favor de dejar algún comentario en los artículos que he ido publicando en este espacio, es muy reconfortante saber que no se predica en el desierto y que a mas de uno le pueden llegar a interesar las cosas que a veces traigo en la cabeza.

De momento me encuentro de vacaciones, disfrutando del jarochismo en mi estado natal de Veracru' señores, ya extrañaba las arpas, jaranas y marimbas tipicas de esta región, ciertamente no hay lugar como el hogar.

Pero pues hasta en vacaciones no puedo dejar de programar, he aprovechado este viaje para saludar a viejos amigos de la Maestría de Inteligencia Artificial y a la vez pedirles consejo y asesoría para algunos proyectos que traigo entre manos, espero que el tiempo que me quede por aca me alcance para poder despejar el mar de dudas que tengo sobre algunos escabrozos temas como Redes Bayesianas para la minería de datos y Redes Neuronales para un proyecto de reconocimiento de patrones.

También estoy aprovechando estos dias de desasosiego para terminar de estudiar algunas conferencias de la última DevCon son muchas conferencias y con lo agitados que suelen ser los dias de trabajo no hay mucho tiempo para estudiar los videos y presentaciones que estan disponibles para su descarga. Hasta ahora me han parecido muy interesantes las conferencias de Marco Cantú entre otras.

Tambien cuando deja uno de estar en linea por un tiempo quedan muchas cosas por revisar en foros y blog's para ponerse al día, por eso me pareció muy interesante este plugin de búsqueda para Firefox que permite buscar en los grupos de noticias de Borland, uno de los mas grandes y mejores repositorios de respuestas a miles de preguntas sobre el ambiente de la programación.

Bueno por el momento así estan las cosas, ahora permitanme que tengo un asunto pendiente que arreglar con el XBox de mi hermano y el Halo 2

diciembre 04, 2005

Todo mundo tiene su estilo

Es muy sabido que en esta vida todo mundo tiene su propio estilo para programar, cada quien se entiende con sus propios garabatos. Hay a quienes les gusta hacer miles y miles de funciones(y luego de tantas que tienen ni se acuerdan que las tienen cuando necesitan una en particular), otros que son muy metódicos en cuanto al número de lineas que ha de contener un proceso, otros que cuidan que en tal o cual paso la pila del procesador no tenga mas de X retornos acumulados de procedimientos o funciones, O que les gusta ahorrar hasta el mas ínfimo bit de memoria y otros a quienes les vale un soberano grano de café molido ese asunto y prefieren sacrificar mucha memoria para darle mayor enfasis a alguna otra funcionalidad de la aplicación.

Mas de una vez me ha tocado descifrar marañas entretejidas de cosas que parecen no tener mucho sentido pero como diría Galileo
"Sin embargo funcionan..."


Mas tambien sin embargo es un verdadero martirio darle seguimiento y mantenimiento a aplicaciones escritas así, la mayoría de las veces que eso me sucede y mientras pueda hacerlo prefiero reescribir el módulo o aplicación a mi manera

Y es que realmente uno se acostumbra a trabajar con su propio estilo, a identar de tal o cual manera su código, a seguir ciertas normas, a ignorar algunas otras, etc...Y no solo en cuanto a Código en Object Pascal, sino tambien en el caso de las consultas en SQL, las politicas de mantenimiento y desarrollo sobre la estructura y código en la Base de Datos, en fin.

Pero a todo esto, existen ciertos estandares que fincan por ejemplo las empresas de desarrollo para que el trabajo de su personal sea lo mas colaborativo y transparente posible. Por eso llamó mi atención la publicación que encontré de los estandares que usan en Indy con los que comparto mucha afinidad y de los que debería tomar algunas notas en cuenta y agregarlas en mi propio estilo. Otros muy buenos estandares son los propuestos por Marco Cantu en sus 20 reglas para la OOP en Delphi, las cuales se publicaron en la Delphi Magazine, que andan por ahi volando en algunos sitios, pero desconozco si esta permitida su distribución abierta