Tag Archive: personal


A estas alturas del partido, podemos encontrar por la red numerosos artículos y opiniones contándonos las bondades de utilizar control de versiones, especialmente Git. Así que he decidido aportar mi granito de arena dando mi opinión de porqué hay que utilizar este fabuloso sistema de control de versiones. Voy a resumirlo en 10 puntos, que creo que cubre  la mayoría de ventajas, por supuesto no son todas, pero en mi opinión creo que sí las más importantes.

  1. Nos proporciona organización: esto es común a cualquier sistema de control de versiones, eso de tener 30 carpetas para diferenciar las versiones sólo nos suele traer dolores de cabeza, pérdida de tiempo y problemas a la hora de entregar un trabajo o ponerlo en producción.
  2. Podemos probar nuestro código de forma más ordenada sin necesidad de crear copias de los ficheros o el proyecto. Codeamos, probamos, que funciona, bien, que no funciona, hacemos un revert y no ha pasado nada.
  3. Nuestro código estará más limpio, ya que con Git no es necesario ir comentando código “por si luego lo uso”. Esto, aparte de ser una mala práctica, luego nos costará más mantener el código, mientras con git siempre podremos ver las versiones antiguas de nuestros archivos y rescatar código eliminado.
  4. Más sencillo controlar los cambios, proyectos y ver el historia. Si instalamos un visor web en nuestro servidor de repositorios, cómo GitLab, o utilizamos GitHub, podremos ver todos nuestros proyectos y navegar de forma sencilla por todas las versiones, ramas, etc.
  5. Las puestas en producción son más sencillas y rápidas, sobre todo hablando de entornos web. Hay gente que todavía utiliza el FTP cómo medio de subir los proyectos, y muchas veces sin comprimir, tardando bastante en subir un proyecto. Aparte de que si has cambiados varios ficheros y se te olvida subir alguno, puedes ocasionar errores en el funcionamiento de la aplicación. Con Git, basta con hacer un pull del proyecto para que suba los cambios casi de forma instantánea y sin dolores de cabeza.
  6. Sirve cómo sistema de copia de seguridad, siempre que lo tengamos en un servidor. Git trabaja de forma no destructiva, así que salvo que utilicemos uno o dos comandos especiales. Nuestra información siempre estará ahí. También donde tengamos un repositorio (servidor y diferentes máquinas), tendremos la historia completa del repositorio. Hay quien piensa que guardandolo en Dropbox o similares tenemos una copia de seguridad. Pero cómo accidentalmente borremos el proyecto de la carpeta, se borarrá entodos los equipos sincronizados. Esto me ha pasado y no fué agradable.
  7. Nos permite fiscalizar mejor nuestro trabajo. Hay veces que necesitamos un historial de los cambios de una aplicación para facturarlos o por otras necesidades. Esto, normalmente conlleva un tiempo buscando correos y papeles con las especificaciones o a veces ni eso ya que las peticiones se hicieron telefónicamente. Si usamos Git podremos ver de un vistazo todos los cambios y cuando se hicieron. Si a esto le añadimos una buena metodología en los mensajes de los commits, aparte del cuándo, podremos saber el qué se cambió.
  8. Compartir nuestro código, Git es ideal para hacer trabajo colaborativo, permitiendo desarrollos en paralelos y si utilizamos GitHub, podemos publicar nuestro código para que la comunidad lo aproveche y nos ayude a mejorarlo.
  9. Trabaja desde cualquier sitio, teniendo un servidor de Git (propio o GitHub) es tremendamente sencillo poder descargarte una versión de tu proyecto en cualquier sitio y trabajar fuera de tu ámbito normal. Esto viene genial para arreglar errores críticos que te pillen fuera de la oficina o por si pierdes o rompes tu equipo.
  10. Estaréis mejor visto laboralmente, actualmente en la gran mayoría de las ofertas de trabajo de programador, están pidiendo que se sepa utilizar un sistema de control de versiones, especialmente Git. Así que dedicándole un par de mañanas, podréis añadir a vuestro curriculum una nueva habilidad que os facilitará encontrar un empleo.

Espero haberos convencido, a aquellos que aún no lo utilicen, para probar este sistema y ver cómo vuestra calidad de vida de programadores.

Después del parón de los exámenes volvemos a la carga. En este caso, voy a publicar la práctica de una asignatura de la carrera. El enunciado de la práctica consiste en resolver el problema del Trimino, que se trata de un tablero de X*X tamaño, siendo X una potencia de 2, y teniendo una casilla marcada. Entonces debemos recubrir el tablero utilizando triminos (un angulo de tres casillas). Una descripción más detallada del problema con su solución teórica la podemos encontrar en el siguiente enlace : http://www.dma.fi.upm.es/docencia/primerciclo/matrecreativa/juegos/poliominos/triminos/triminos.htm

Para la solución del problema se puede utilizar uno de los esquemas algorítmicos básicos, en este caso el esquema de Divide y Venceras. Que comentado por encima, consiste en coger un problema y dividirlo en partes iguales y más sencillas, hasta llegar a una solución trivial. Una vez llegada a esta solución, se va juntando las soluciones parciales para llegar a una solución completa.
La adaptación de mi esquema para este problema es el siguiente:


public static void divide(Rectangulo r){
boolean b=buscarLleno(r);
if(b) // comprobacion de si es el caso trivial
return;
// Division en subproblemas
ArrayList<Rectangulo> rects = r.dividirEnCuatro();
for(Rectangulo r1  : rects){
divide(r1); // Llamada recursiva para resolver el subproblema
}
 }

Gracias a la mayoría de las funciones auxiliares, el algoritmo  resultante es muy reducido. Pinchando aquí os podeis descargar la práctica resuelta. Podesi descargarlo de github: https://github.com/smaug1985/Trimino

Por fin, pasó el periodo de exámenes, ahora toca afrontar una nueva etapa en el siguiente cuatrimestre, con nuevas asignaturas y bastantes más motivadoras que las anteriores, todo hay que decirlo.

Como podeis ver, estreno tema, me parefce que va más o menos acorde con el contenido del blog, aunque poco a poco iré haciendole modificaciones, como por ejemplo, la imagen de background que ya podeis admirar (aunque quizas le haga algunos retoques más).  Le doy un premio, a quien me adivine lo que hace el código de aqui a mi izquierda, ese tan raro de ++ y > . En otro orden de cosas, el otro día hice esta función tontorrona en para formatear arrays de fechas con el formato que le pasemos, vamos una tontería pero que seguro en algún momento,  es de utilidad para alguien.

function formatFecha($timestampArray,$format=null){
 if($format==null){
 $format="d-m-Y";
 }
 $i=0;
 foreach($timestampArray as $key=>$val){
 $timestampArray[$i++]=date($format,$val);
 $timestampArray[$key]=date($format,$val);
 }
 return $timestampArray;
 }

Y aun sigo de exámenes, ya he hecho dos y solo me quedan otros dos en una semana y media. Así que no tengo más remedio que ponerme las pilas y estar en casi todo mi tiempo libre disponible, estudiando.
En la búsqueda de alguna guia y ejercicios para complementar mi formación, que no siempre es suficiente con el material de la UNED, me he encontrado con la página Matemáticas bachiller y la verdad que me está resultando de muchisima ayuda, ya  que hay un monton de videos explicando álgebra, de una forma bastante sencilla de comprender y con una gran cantidad  y tipos de ejercicios.
Ahora a seguir estudiando y que la suerte esté de mi favor!

Sé que esto lleva casi un mes sin actividad,  no esque haya abandonado el blog, es solo que estamos en época de exámenes, con lo cual mi tiempo actualmente está ocupado al completo con los estudios y el trabajo, con lo cual, no puedo dedicarle el esfuerzo necesario a este blog y otras ideas que tengo en mente.

Aun así, voy a  hacer un pequeño aporte. Si teneis algún servidor gestionado mediante la herramienta DirectAdmin, vereis que el acceso directo a base de datos está capado, con lo que si queremos crear una base de datos, siempre tendremos que hacerlo mediante esta herramienta y poniendo el prefijo del dominio.  Ahora, si somos el administrador del servidor, lo lógico esque tuvieramos acceso completo a todos nuestros servicios, incluido el gestor de bases de datos por consola, para poder crear/modificar/borrar ciertas cosas que a través de direct admin no pudieramos. En ese caso, si buscamos el directorio de instalación del DA y dentro de su directorio de configuraciones, tendremos un fichero mysql.conf , donde está el usuario y la contraseña que utiliza DA para acceder al gestor de base de datos y este usuario tiene permisos de administrador. También hay otro fichero, el directadmin.conf, donde encontraremos bastante información y podremos tocar parámetros de la aplicación.

En mi servidor, el directorio de la configuración del DA es el siguiente:  /usr/local/directadmin/conf

Espero que esta información os resulte de ayuda en algún momento de vuestra vida como administradores.

Y paso a presentar este blog. El proyecto Longinus es una idea que parte de mi necesidad por estar realizando cosas continuamente, o al menos pensar en hacerlas.

Esta idea consiste en ir publicando poco a poco, consejos, tutoriales, articulos, etc, sobre varios temas en informática, como programación, desarrollo de videojuegos,  seguridad informática, etc.

De todo en general, y poder intercambiar información sobre estos temas.

Ahora solo queda, poder tener continuidad en el blog y el proyecto, a ver que tal resulta.