Ir al contenido principal

Presentación

Como programador, en más de una oportunidad he tenido que escribir módulos o librerías de funciones que he podido utilizar en más de un programa o proyecto diferente, en tanto que otras se han perdido entre tantos archivos acumulados en el computador y los he escrito de nuevo cuando los he vuelto a necesitar. Muchas de estas librerías seguro han tenido correcciones y mejoras de comportamiento con el paso del tiempo y las mejoras en los lenguajes usados (mayormente PHP), mejoras que se ven reflejadas en proyectos nuevos en tanto que los viejos quedan como estaban. Vale mencionar también esos programas pequeños escritos para resolver alguna necesidad puntual que luego quedan en desuso ya sea por obsoletos o porque simplemente no recordaba que los tenía y (en este último escenario) termino escribiéndolos otra vez cuando la necesidad se presenta de nuevo. Así las cosas, busqué un organizador de código personal, que pudiera tener en mi computador y me ayudara con este caos programático. Como no encontré uno que supliera mis expectativas, me propuse crear uno en mi “tiempo libre”. Fue así como se gestó esta que he llamado (a falta de un mejor nombre) mi Code Manager, del pseudo-ingles: Mi Organizador de Código o simplemente, miCode.

Algunas fuentes de inspiración vienen de aplicaciones populares como composer o npm, organizadores de código PHP y Javascript (node.js y similares) respectivamente. También influyeron otras aplicaciones algo más específicas como strapi.io para implementación de APIs tipo REST. Con todo esto en la cabeza, comencé a plasmar objetivos claros (al menos para una primera versión), teniendo al final los siguientes hitos por cumplir:

  • Reusar los archivos de código para prevenir la proliferación de múltiples copias de un mismo archivo, lo que a su vez permite que las mejoras en ese mismo archivo beneficien a todos los proyectos que lo usan.
  • Generar paquetes de distribución que contengan copias solamente de los archivos necesarios.
  • Facilitar la generación de documentación, mediante la documentación en código con el modelo Javadoc.
  • Proveer una interfaz de administración web amigable para su uso en un computador de escritorio principalmente (en serio, ¿alguien programa desde un móvil?).

Y unos cuantos deseables que podrían tenerse en una primer versión pero que de no ser así, podrían ser hitos para las siguientes:

  • Administrar archivos de licencia.
  • Control de versiones aplicado a los alcances de esta aplicación.
  • Interfaz para entornos corporativos o equipos de progarmación (recuerden, esta propuesta es para uso personal originalmente).

Como mencioné antes, PHP es mi lenguaje de mayor uso y naturalmente esta aplicación iba orientada a ser usada para programas de este lenguaje, sin embargo, surgió la cuestión de “que tal si…” y con unos cuantos ajustes y nuevos objetivos, amplié su concepción para permitir la inclusión de otros tipos de lenguajes, de características similares, como Javascript, Python y de ser necesario, incluso programas en C, por citar algunos. Aunque debo aclarar que no está dentro de mi alcance original proveer la implementación para la inclusión de estos lenguajes, pero al menos queda abierta la puerta para poderlo hacer cuando la situación (o la necesidad) lo requiera.

Finalmente, es mi deseo compartir esta propuesta y la aplicación resultante con el “resto del mundo”, de la misma forma y como una especie de retribución, a todos aquellos fragmentos o incluso códigos completos, que el "resto del mundo" me ha compartido en el pasado y espero sigan compartiendo a futuro, filosofía que ha permitido que el mundo de la programación crezca libre de fronteras, prejuicios y barreras creativas. Recuerden, esta propuesta se realiza considerando que un desarrollador (particularmente aquellos freelance) puedan organizar los diferentes bloques de código funcionales (librerías con funciones y/o clases) que realizan en su trabajo, de forma que puedan reusarlos en sus diferentes proyectos sin estar copiando los archivos una y otra vez. Así mismo, las mejoras que realicen a futuro podrán beneficiar proyectos pasados. 

La aplicación podrá ser consultada via github a través del siguiente enlace:

https://github.com/jjmejia/micode-manager

Espero sus comentarios, sugerencias y más que nada, los testimonios de aquellos a quienes esta aplicación pueda resultar de utilidad, sea como un todo o en alguno de sus librerías funcionales.

Quedo atento, felicidades para todos.

Comentarios

Entradas populares de este blog

Manejo de recursos HTML para tus páginas web con PHP

Déjame saber si te resulta familiar esta situación: páginas web que descargan el mismo recurso (sean estilos CSS o código Javascript) más de una vez o incluyen recursos remotos que tardan una eternidad en cada descarga. Yo lo he visto en más de una ocasión y no es difícil imaginar el porqué ocurre. Un desarrollador incluye el recurso de estilos que necesita su segmento de código y otro hace lo mismo, sin reparar (o sin que siquiera importe) que comparten el mismo recurso. En otro escenario muy común, acostumbran incluir muchos recursos remotos, con lo que el rendimiento de la página depende de lo rápido que responda dicho recurso. ¿Puede hacerse algo al respecto? Claro que si. Vamos a crear una clase en PHP que se encargue de administrar estos recursos y que nos facilite su despliegue en la página sin repeticiones . ¿Y respecto a la demora en la carga de recursos remotos? Atendamos una cosa por vez, porque como dicen por ahí: «Vísteme despacio, que tengo prisa». Administrando ...

Manejo de clases globales únicas en PHP

¿Cómo acceder desde cualquier script en tu proyecto a Clases y/o funciones de uso común? Este puede ser una de las primeras directrices a establecer para cualquier proyecto porque siempre, siempre , sea en  PHP  u otro lenguaje, será necesario usar recursos comunes. En PHP existen diferentes alternativas para su manejo, ya sea por medio de variables globales o de clases/objetos estáticos. A continuación consideraremos una propuesta para este manejo. Creación de recursos globales Para ilustrar esta solución, partimos de la necesidad de implementar una librería para manejo de servicios relacionados con el servidor Web, que de forma amigable nos permita disponer de información como: Valores almacenados de la variable superglobal $_SERVER de PHP. Valores asociados a la consulta realizada por el usuario, por Ej. la dirección IP del usuario o la URL ingresada. Valores asociados al servidor web usado, por Ej. la dirección IP del servidor o la ubicación del script que ej...

¿Qué tan bueno es realmente el “foreach” en PHP?

Como toda buena historia, esta comienza hace algún tiempo. El que fuera mi jefe por allá en la primera década del 2000, realmente odiaba (y mucho) el uso del foreach en el código PHP . Prefería que usáramos alguna alternativa diferente, alguna combinación del  for o del while . ¿Por qué? Ve tú a saber, nunca fue abierto respecto a las razones de su aprensión hacia ese constructor propio del lenguaje. Pero antes de continuar, veamos qué es y para qué nos puede servir. Arreglos, tenían que ser arreglos ¿Qué es foreach ? De acuerdo al manual de PHP , su definición es la siguiente: El constructor foreach proporciona un modo sencillo de iterar sobre arrays . foreach funciona sólo sobre arrays y objetos , y emitirá un error al intentar usarlo con una variable de un tipo diferente de datos o una variable no inicializada. Para su uso correcto existen dos sintaxis validas, a saber: foreach (expresión_array as $value) { ... } foreach (expresión_array as $key => $value) { ....