jueves, 27 de octubre de 2011

Añadir gitweb a nuestro servidor Git gestionado por Gitolite



Después de configurar nuestro servidor Git gestionado por Gitolite, tal y como comentaba en mi anterior post "Instalación de un Servidor Git gestionado con Gitolite", he decidido añadirle la posibilidad de ver los repositorios mediante el frontend gitweb.

Para esta configuración partiré de la máquina virtual que ya tenemos creada y  detallaré los pasos para configurar-la y dejar configurado el acceso mediante gitweb.

Configurar usuario git


Para que gitweb pueda funcionar correctamente es necesario que nuestro usuario git (que es el encargado de los repositorios) tenga los mismos permisos que www-data, para que este pueda leer y tratar los repositorios, para ello tendremos que hacer lo siguiente

root@gitserver:~# usermod -a -G git www-data

Configurar Gitolite


Hay que configurar una variable de gitolite para que funcione correctamente, para ello hemos de editar el fichero .gitolite.rc y modificar la variable $REPO_UMASK para que contenga el valor 0027.


vi /home/git/.gitolite.rc


También hay que cambiar los permisos del fichero projects.list y del directorio repositories, para que el servidor apache pueda leer el contenido y mostrarlo en la interfaz gitweb.


chmod -R g+rx /home/git/repositories
chmod g+r /home/git/projects.list


Instalación y configuración de gitweb

Como partimos de la distribución Debian, la forma más fácil de instalar gitweb es mediante el comando apt-get. De paso instalaremos el paquete que nos permitirá ver el código marcado según el lenguaje que utilicemos.

apt-get install hightlight gitweb

Ahora hay que configurar gitweb para que apunte a nuestros repositorios. Para ello modificar las variables del fichero /etc/gitweb.conf 

  • cambiar projectroot a "/home/git/repositories"

  • cambiar projects_list a "/home/git/projects.list"


Ahora podemos reiniciar el servidor web y conectarnos a nuestro gitweb apuntando en nuestro navegador a http://gitserver/gitweb  (donde gitserver es la ip de tu maquina)

apache2ctl restart.

Configurar git-daemon para acceso anónimo solo de lectura


Si lo deseamos,  podemos configurar un git de tal forma que existan proyectos que puedan ser clonados de forma anónima, sin necesidad de configurar claves RSA. Para ello tendremos que configurar el servicio que se encarga de ello. De forma sencilla instalaremos el git-daemon.

apt-get install git-daemon-run


Después hay que editar el fichero /etc/sv/git-daemon/run , añadir el -ugitdaemon:git y modificar el base path. El contenido del fichero ha de ser el siguiente.
root@gitserver:/home/git# cat /etc/sv/git-daemon/run
#!/bin/sh
exec 2>&1
echo 'git-daemon starting.'
exec chpst -ugitdaemon:git \
"$(git --exec-path)"/git-daemon --verbose --reuseaddr \
--base-path=/home/git/repositories/ /home/git/repositories/


Reiniciamos el git-daemon

root@gitserver:/home/git# sv restart git-daemon
ok: run: git-daemon: (pid 3707) 0s


Y ya tendremos listo nuestro servicio git-daemon funcionando correctamente, por lo que ya podremos clonar los repositorios de forma anonima utilizando como url
git://gitserver/testing.git

Modificar el aspecto visual de gitweb


El siguiente apartado es totalmente opcional, pero muy aconsejable si queremos que nuestra interfaz de gitweb tenga un aspecto más amigable y similar a github. (Popular gestor de repositorios, gratuito para proyectos opensource y de pago para privados)

Editar el fichero /etc/gitweb.conf y añadir estas lineas al final


$projects_list_description_width = 100;

# Enable blame, pickaxe search, snapshop, search, and grep
# support, but still allow individual projects to turn them off.
# These are features that users can use to interact with your Git trees. They
# consume some CPU whenever a user uses them, so you can turn them off if you
# need to. Note that the 'override' option means that you can override the
# setting on a per-repository basis.
$feature{'blame'}{'default'} = [1];
$feature{'blame'}{'override'} = 1;

$feature{'pickaxe'}{'default'} = [1];
$feature{'pickaxe'}{'override'} = 1;

$feature{'snapshot'}{'default'} = [1];
$feature{'snapshot'}{'override'} = 1;

$feature{'search'}{'default'} = [1];

$feature{'grep'}{'default'} = [1];
$feature{'grep'}{'override'} = 1;

$feature{'show-sizes'}{'default'} = [1];
$feature{'show-sizes'}{'override'} = 1;

$feature{'avatar'}{'default'} = ['gravatar'];
$feature{'avatar'}{'override'} = 1;

$feature{'highlight'}{'default'} = [1];
$feature{'highlight'}{'override'} = 1;


Modificar el aspecto visual mediante el tema gitweb-theme.  Descargamos el zip y lo descomprimimos en el directorio temporal.


root@gitserver:/tmp/kogakure-gitweb-theme-ccb4b48# mv /usr/share/gitweb/gitweb.js /usr/share/gitweb/gitweb.js.orig
root@gitserver:/tmp/kogakure-gitweb-theme-ccb4b48# mv /usr/share/gitweb/gitweb.css /usr/share/gitweb/gitweb.css.orig
root@gitserver:/tmp/kogakure-gitweb-theme-ccb4b48# cp gitweb.css /usr/share/gitweb/
root@gitserver:/tmp/kogakure-gitweb-theme-ccb4b48# cp gitweb.js /usr/share/gitweb/


Por último, comentaros que aquí tenéis la imagen para VirtualBox.


http://www.megaupload.com/?d=41QOJL6W
http://www.megaupload.com/?d=UDH6Z22N
http://www.megaupload.com/?d=KZJ0B116
http://www.megaupload.com/?d=YK10YPYT
http://www.megaupload.com/?d=4R5FHN57
http://www.megaupload.com/?d=K3WHU28B

lunes, 24 de octubre de 2011

Instalación de un servidor Git gestionado con Gitolite



Por motivos de trabajo, tengo la posibilidad de realizar un cambio en el repositorio de control de versiones para el departamento. Por lo que voy a plantear la posibilidad de migrar todo el código desde StarTeam (un SCM desfasado que nadie conoce) a Git (sin duda uno de los mejores SCM que hay actualmente).

Para ello voy a montar una maquina virtual con una distribución linux debian, a la que voy a instalar los siguientes componentes.

  • git. Sistema de control de versiones.

  • gitolite. Sistema para gestionar los repositorios mediante una única cuenta.


Al final del tutorial dispondréis de una imagen preparada y lista para funcionar con todos los pasos ya realizados. Esta imagen será realizada con VirtualBox un sistema de virtualización gratuito disponible para todos los sistemas (Linux/Mac/Windows)

Lo primero que necesitamos es disponer de un linux funcionando. Para este servidor utilizaré un cd de instalación de debian netinst versión 6.0.3  e instalaré solo lo indispensable para que podamos disponer de un servidor mínimo y funcional. Queda fuera de este tutorial la instalación de debian desde una imagen, por lo que procederé a detallar los pasos una vez disponemos de un sistema linux funcionando correctamente.

Instalación de Git


 Primero instalamos las herramientas de git

apt-get install git

Creación de usuario git


Crearemos un usuario con username "git" , que será el encargado de gestionar los repositorios.

sudo adduser --system --shell /bin/bash --gecos 'git version control' --group --disabled-password --home /home/git git

Generación de Clave RSA del Administrador del repositorio

Antes de instalar gitolite, es necesario que creemos una clave RSA para el usuario que administrará los repositorios GIT. En mi caso, voy a administrarlo mediante una máquina windows, por lo que utilizaré PuTTY. (Queda fuera de este tutorial la instalación y configuración de PuTTY, pero es tan fácil como descargar el fichero putty-installer y ejecutarlo).

A continuación generaremos una clave SSH-2 RSA mediante PuTTY Key Generator. Le daremos a Generate y guardaremos las claves, public key y private key. Tendremos que guardar estas claves.



A continuación subiremos el fichero public key a nuestro servidor (al directorio temporal por ejemplo). El fichero gitserver.pub corresponde a lo que hay dentro del cuadrado (ssh-rsa AAA....)

 Instalación de gitolite


La instalación de gitolite puede llevarse a cabo desde debian de la siguiente forma.
apt-get install gitolite
Pero para esta instalación prefiero instalar la última versión de gitolite, descargandola desde la página web https://github.com/sitaramc/gitolite

Para ello entraremos como usuario root, y nos cambiaremos al usuario git (recordar que el usuario git no tiene password a menos que se lo hayamos dado).

root@gitserver:~# su - git

Añadimos al PATH el directorio $HOME/bin mediante la modificación del .bash_profile con nuestro editor favorito, el contenido ha de contener la siguiente línea.

export PATH=/home/git/bin:$PATH
git@gitserver:~$ cd sitaramc-gitolite/src/
git@gitserver:~/sitaramc-gitolite/src$ ./gl-system-install
using default values for EUID=105:
/home/git/bin /home/git/share/gitolite/conf /home/git/share/gitolite/hooks


Después ejecutaremos el gl-setup desde el path (no desde el directorio src)

git@gitserver:~$ gl-setup /tmp/
gitserver.pub
.ICE-unix/
sitaramc-gitolite-v2.1-31-gf0cedeb.zip
.X11-unix/
git@gitserver:~$ gl-setup /tmp/gitserver.pub
The default settings in the rc file (/home/git/.gitolite.rc) are fine for most
people but if you wish to make any changes, you can do so now.

hit enter...
creating gitolite-admin...
Initialized empty Git repository in /home/git/repositories/gitolite-admin.git/
creating testing...
Initialized empty Git repository in /home/git/repositories/testing.git/
[master (root-commit) ce2e627] start
2 files changed, 6 insertions(+), 0 deletions(-)
create mode 100644 conf/gitolite.conf
create mode 100644 keydir/gitserver.pub


A partir de ahora ya tenemos disponible un servidor GIT con autentificación, para gestionarlo hemos de clonar el siguiente repositorio con la clave privada generada anteriormente (como usuario administrador)
git clone git@server:gitolite-admin
En mi caso, como utilizo una máquina virtual, he de clonar la IP 10.16.77.96, por lo que el cuadro de dialogo del TortoiseGit (el client GIT que utilizo para windows) queda de la siguiente forma.



Si quieres saber como se gestionan los usuarios/grupos en gitolite, puedes consultar mi post "PROXIMAMENTE" donde detallo como se gestionan los repositorios, usuarios y grupos.

Por último, aquí os dejo la imagen VirtualBox con un servidor GIT funcionando con Gitolite. (La imagen se ha subido a MegaUpload para ahorrarme mucho ancho de banda)


http://www.megaupload.com/?d=8ZL5QOOU
http://www.megaupload.com/?d=L4OW5CVC
http://www.megaupload.com/?d=UM14HWG9
http://www.megaupload.com/?d=TSWJK2F8
http://www.megaupload.com/?d=5ZU9ARKY
http://www.megaupload.com/?d=Q7SUT2TZ


Recuerda dejar un comentario y compartir el artículo si te ha sido útil.

 

Por último, os recomiendo visitar mi último post donde añado gitweb al servidor. Añadir gitweb a nuestro servidor Git gestionado por Gitolite

martes, 18 de octubre de 2011

Kobold2D, un nuevo Framework para iOs



Hoy voy a presentaros un nuevo framework de desarrollo de juegos para iOs, pero antes voy a introduciros un poco por que he optado por elegir este framework.

Para mi primer juego desarrollado para iOs y Mac  opté por utilizar Cocos2D, debido a su enorme popularidad, su facilidad de uso y su madurez. Gracias a esto pude lanzar mi primera aplicación para iPad y Mac "Adivina el personaje", que podeis ojear en su pagina oficial. www.jandusoft.com

Para mi próximo juego también voy a utilizar Cocos2D debido a que ya estoy acostumbrado a utilizarlo y no tengo mucho tiempo libre para dedicar a aprender otro framework, como CoronaSDK, que me llama bastante, sobre todo por la posibilidad de portar aplicaciones a Android.

Pero hace poco, descubrí que hay otro framework que está siendo desarrollado por un conocido en el mundo de cocos2d, Kobold2D es el nombre de este nuevo framework, desarrollado por Steffen Itterheim , autor del libro "Learn Cocos2D and iOS game developer".

Kobold2D es un cocos2d hypervitaminado, con muchísimos utilidades para poder desarrollar juegos para plataformas iOs y Mac. Entre ellas cabe destacar las siguientes.

  • Una misma "Template" para desarrollar para iOs como para Mac. Olvídate de como se ha de configurar Xcode para tener más de un target. (Cosa que no es nada facil si estas empezando en este mundillo)

  • Proyectos de ejemplo con diferentes funcionalidades con los que poder empezar a aprender y trabajar. Podrás compilar y ver el código de un pinball, de un juego completo, de un ejemplo en cocos3d, etc...

  • Posibilidad de actualizar la versión de Kobold2D de forma automática. Kobold2D tiene un instalador y un migrador de proyectos a nuevas versiones, por lo que actualizar a la última versión ya no será nunca más un suplicio y perdida de tiempo. Y nos permitirá estar siempre a la última.

  • Incluir librerias muy utilizadas en el desarrollo de juegos. Como pueden ser, cocos2d, cocos3d, Box2d, chipmunk, cocosdenshion, sneakyinput, cocos2d-extensions

  • Poder configurar el proyecto mediante Lua y ahorrarnos el tener que picar mucho código para configurar el entorno.


Aquí tenéis algunas imagenes de dos utilidades incluidas en kobold2d.



Por otra parte, Kobold2D se encuentra constantemente mejorando gracias al gran trabajo de Steffen, y estoy seguro que con el tiempo será uno de los frameworks más utilizados para programar juegos para iOs.

Estos son algunos de los ejemplos de utilidades que kobold2d tiene a disposición de sus usuarios.

  • Posibilidad de configurar varias plataformas de publicidad. (admob y iAd de momento), con solo modificar un fichero de configuración.

  • KKInput, aunque el nombre parezca rídiculo para los hispanoparlantes, esta clase nos ayudará muchísimo a gestionar los eventos de input del sistema, y sobretodo no tener que andar configurando diferentes formas de gestionar los inputs en caso de ser Mac o iOs, ya que esta clase se encarga de encapsular el tratamiento de los mismos.


Por otra parte, Steffen está abierto a cualquier sugerencia, y es posible contactar con él para dejar nuestro feedback, yo por ejemplo he contactado con el varias veces mediante su pagina de "feedback" y en todas las ocasiones mis sugerencias se han tomado en cuenta. La página para sugerir mejoras es la siguiente :http://kobold2d.uservoice.com/forums/134154-general

Y estas son algunas de las mejoras que he solicitado y se han llevado a cavo.

Espero sinceramente que este proyecto siga adelante, y no me estrañaría que algún día de estos, steffen fichara para Zinga u otra compañia como ya hizo en su día Enrique Quesada (Project leader the cocos2d-iphone). Yo por mi parte, ya he optado por utilizar Kobold2D para mi próximo proyecto, y si quereis empezar en el mundo de desarrollo de juegos para iOs os recomiendo que también lo utiliceis.

lunes, 17 de octubre de 2011

Rediseño del Blog



Como podeis observar, he optado por rediseñar la página por segunda vez.

El objectivo de este segundo diseño es el facilitarme la tarea de publicar posts en el blog, por lo que intentaré ser mas regular en la publicación de los mismos.

Entre las novedades que encontrareis, vereis que ahora todos los post son más fáciles de "compartir", así que os animo a que compartais este post y los que vengan en vuestra red social favorita.

Si detectais algún problema en la web, o tenéis alguna sugerencia, podeis poneros en contacto conmigo mediante el formulario de contacto.

Por último, os quiero recomendar que os creéis una cuenta en http://www.gravatar.com . Para el que no lo sepa, gravatar es portal que se encarga de almacenar un "avatar" (imagen de usuario) y lo asocia a una dirección de correo (o varias), de esta forma al añadir un comentario en el blog (y otros blogs) con solo la dirección de correo podemos mostrar vuestro "avatar", sin tener que daros de alta en el portal ni dar ningún tipo de información/permiso.

Y por último, me gustaría saber que os parece el nuevo diseño. Estaré atento a vuestros comentarios.