domingo, 22 de marzo de 2015

Git(III)

Hoy quiero continuar la breve introducción de que hice sobre el funcionamiento de esta herramienta de control de versiones, en este caso centrarme en los comandos que nos van a servir para construir un repositorio Git, para ello vamos a utilizar Git Bash. Para ello vamos a ver como podemos empezar un repositorio:

  • $git init: se utiliza para inicializar un repositorio en un directorio en un directorio ya existente. Decir que cuando se ejecuta en el directorio creado , nos crea un archivo oculto .git, este nos provee de una serie de archivos que nos ayudan con el Sistema de control de versiones. Además, debemos tener en cuenta que si no utilizamos git init, el archivo o directorio no se convierte en un repositorio.
  • $git add *.c o $git add NombreArchivo: si queremos añadir archivos que hemos creado aparte en Git atendiendo a su extensión o en el otro caso añadir un archivo por su nombre. Debemos tener en cuenta que estos archivos estarían en el staged.
  • $git commit -m 'primera versión del proyecto': esta orden la utilizamos para poner un mensaje que nos indica cuando hemos hecho el commit.
  • $git clone git://github.com/ o $git clone git://github.com/ migrit: para clonar archivos que hemos creado, u otros códigos de otros proyectos distintos. Con la orden migrit lo que indicamos es que clone el repositorio en otro indicando el nombre. También, para clonar se pueden utilizar diferentes protocolos: git, http(s), ssh.

En referente a los archivos que tenemos en nuestro directorio pueden estar en 2 estados: untracked o tracked.

  • untracked (no rastreado): son todos los demás archivos, los que fueran después de haber realizado el commit.
  • tracked (rastrado): son los archivos que fueron en el último commit. Estos archivos pueden estar en tres estados: unmodified, modified y staged.

Por ejemplo, si clonamos un repositorio los archivos serían tracked y unmodified, dado que, no hemos hecho ningún cambio. Para que un archivo no sea un archivo tracked, habría que eliminar ese archivo del repositorio. Pero bueno, lo más importante es que para ver el estado de los archivos vamos a utilizar $git status.

Es muy importante saber que guardar un archivo no tiene nada que ver con el control de versiones. Cuando modificamos un archivo, y después lo añadimos, su estado sería modified en el stage (color verde), pero si ahora al modificar ese mismo archivo y lo guardamos. El archivo tendría el estado modified pero no en el stage (color rojo).

Una vez en este punto, voy a intentar exponer un caso que me surgió cuando yo lo probé por mi mismo. Bien partimos desde la posición donde ya hemos realizado el commit, ahora para que podamos tener el archivo en el que trabajamos en GitHub debemos utilizar el siguiente código $git remote add origin git@github.com:tunombre/AprendiendoGit.git, después, $git push -u origin master. Al ejecutar por primera vez esta orden me daba un error a grosso modo, es el siguiente:

Este error indica que la punta de tu rama está detrás de la rama remota, es decir, que hay modificaciones posteriores a tu última sincronización. Rechaza por lo tanto el push, pero ahora bien, vamos a hacer un pull para ver qué es lo que ha fallado, para ello utilizamos $git pull -u origin master. Al hacer esto podemos ver que sale:

Este git pull indica algo así como que el conflicto de fusión no tiene forma de combinar los dos ficheros porque hay cambios en la misma línea. Lo que yo puedo entender, es que hay un problema con los dos master, el que creemos en Git y el de GitHub; por tanto si ejecutamos ahora otra vez $git push -u origin master, lo tendríamos bien. Ahora si miramos el repositorio en GitHub ya lo tendríamos.

lunes, 9 de marzo de 2015

Conocimientos Básicos sobre el Color.

Ahora me encuentro enfrascado en un problema sobre el estudio del espacio del color. ¿Cuál es el mejor? ¿Ventajas de unos sobre otros? ¿Para qué se utiliza cada espacio? Muchas preguntas sobre un campo del tratamiento digital de imagen que muchas veces evitamos o no nos preocupamos lo suficiente. Lo que quiero plasmar es parte de un estudio que llevo bastante tiempo haciendo, sobre un vista general de lo que son y nos ofrecen los distintos espacios de color.

En un primer lugar, debemos conocer a que nos referimos con espacio de color, este no es más de un rango de colores definido. El sistema visual humano no es un sensor RGB simple pero se puede aproximar cómo responde el ojo humano al diagrama de cromaticidad CIE 1931 que muestra la respuesta visual humana con una forma de herradura.

Bien es sabido que esta forma sólo es una aproximación el sistema de visión humano, este puede detectar muchos más tonos de verde que de azul y rojo. Esto se debe a como son los responsables de la detección del color en nuestro ojo. Estos son los llamados conos, los cuales se encuentran en la parte de la retina central llamada fóvea. Dentro de los conos hay 3 tipos, un tipo son detectores del rojo, otros del verde y otros del azul. Cada detector no sólo es sensible a su color, sino que tiene una pequeña detección alrededor de ese color. Por ejemplo el detector de verde se estimula principalmente con la luz verde, y conforme nos alejamos del verde (hacia el azul o rojo) va perdiendo capacidad de detección rápidamente.

Así pues si en una luz verde provoca un estímulo del 100% sobre el detector verde, una luz amarilla o naranja provoca un estímulo de un 30% y la luz roja o azul provoca un estímulo de un 5%. Sobre el cono del rojo ocurre lo mismo, si se recibe una luz roja, provocará un estímulo del 100%, una luz naranja lo hace del 30%, una luz verde de un 5%, y una luz azul del 0% pues el azul está muy alejado.

Con esto lo que quiero decir es que para el verde están enviando señales todos los conos, mientras que para el resto de los colores no todos envían señales. Por eso puedo decir que el ojo es más sensible al verde, que a los otros colores. Visualmente podemos verlo en la imagen de abajo.

Para profundizar un poco más en esto y dejar una referencia muy básica sobre la mezcla de colores, aquí aparecen, dos tipos de mezclas:

  • Mezcla aditiva: mezclamos los colores primarios RGB. Este sistema lo utilizan los gráficos por ordenador, o diversos sistemas de representación por pantalla.
  • Mezcla sustractiva: mezclamos los colores secundarios CMY. Este por ejemplo es el sistema que utilizan las impresoras.