Archive

You are currently browsing the archives for the Programación category.

Nov

30

Montando Gitlab en Debian Wheezy

By Jose Antonio Cely Saidiza

El presente artículo explica paso a paso como montar un servidor de repositorios de código fuente con Git (SCV). Hace años escribí sobre los sistemas de control de versiones, aunque ese artículo hablaba sobre el difunto subversion los conceptos de versionamiento son los mismos. Vale la pena aclarar que Git es mucho más avanzado en funcionalidades respecto a Subversion, una de las principales ventajas de Git, es que este es descentralizado, es decir que cada copia o checkout de código fuente puede ser un repositorio independiente. En este caso el servidor es simplemente el oficial para un proyecto, por decirlo así.

Ahora bien, si estamos hablando de un proyecto de desarrollo en el que hay múltiples desarrolladores, ejemplo en un entorno corporativo; tenemos que poder controlar usuarios, grupos, proyectos, ramas, forks, etc. y en este caso es donde la aplicación Gitlab facilita toda esta administración con una fácil interfaz web. Además esta interfaz es muy similar a el práctico (y no tan económico) GitHub Enterprise.

Instalando el servidor

Para la instalación solo necesitamos un sistema debian Wheezy recién instalado lo más limpio posible.

Actualizamos paquetes

# apt-get update -y
# apt-get upgrade -y

Instalamos dependencias

# apt-get install -y build-essential zlib1g-dev libyaml-dev libssl-dev libgdbm-dev libreadline-dev libncurses5-dev libffi-dev curl openssh-server redis-server checkinstall libxml2-dev libxslt-dev libcurl4-openssl-dev libicu-dev logrotate mysql-server mysql-client libmysqlclient-dev sudo python-docutils

Mysql pedirá password de administrador, poner algo seguro y no olvidarlo!

Instalamos el core git

# apt-get install -y git-core

Instalamos Ruby

Removemos viejas versiones de Ruby 1.8 en caso de tenerlo instalado

# apt-get remove ruby1.8

Bajamos Ruby y lo compilamos:

# mkdir /tmp/ruby && cd /tmp/ruby
# curl –progress ftp://ftp.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p353.tar.gz | tar xz
# cd ruby-2.0.0-p353
# ./configure –disable-install-rdoc
# make
# make install
# gem install bundler –no-ri –no-rdoc

Creamos el usuario necesario

# adduser –disabled-login –gecos ‘GitLab’ git

Instalamos GitLab shell

# cd /home/git # su git
# git clone https://gitlab.com/gitlab-org/gitlab-shell.git -b v1.9.1
# cd gitlab-shell
# cp config.yml.example config.yml

Editamos el archivo de configuración con el dominio de nuestro servidor (Ej. suservidordecodigo.com)

# vi config.yml

Después instalamos

# ./bin/install
# exit

Base de datos

Aseguaramos MySQL con el siguiente comando (responder si a todo)

# mysql_secure_installation

Luego nos logueamos como administrador de MySQL

# mysql -u root -p

Creamos el usuario para gitlab (No olvidar cambiar el password por algo más seguro)

mysql> CREATE USER ‘git’@’localhost’ IDENTIFIED BY ‘$password’;
mysql> SET storage_engine=INNODB;
mysql> CREATE DATABASE IF NOT EXISTS `gitlabhq_production` DEFAULT CHARACTER SET `utf8` COLLATE `utf8_unicode_ci`;
mysql> GRANT SELECT, LOCK TABLES, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER ON `gitlabhq_production`.* TO ‘git’@’localhost’;
mysql> exit;

Comprobamos que podamos ingresar como el usuario git de mysql

# mysql -u git -p -D gitlabhq_production

Si todo es correcto obtendremos el prompot de Mysql después de ingresar el password

mysql>

Salimos

mysql> exit;

GitLab

Nos ubicamos en el directorio de gitlab

# cd /home/git

Hacemos un clone del código fuente

# su git
# git clone https://gitlab.com/gitlab-org/gitlab-ce.git -b 6-7-stable gitlab

Nos ubicamos en el directorio de git

# cd /home/git/gitlab

Copiamos el archivo de configuración de ejemplo

# cp config/gitlab.yml.example config/gitlab.yml

Editamos el dominio cambiando «localhost» por el que corresponda

# vi config/gitlab.yml

Salimos del usuario git

# exit 
# cd /home/git/gitlab

Aseguramos permisos en log/ y tmp/

# chown -R git log/
# chown -R git tmp/
# chmod -R u+rwX log/
# chmod -R u+rwX tmp/
# su git
# mkdir /home/git/gitlab-satellites
# exit
# chmod u+rwx,g+rx,o-rwx /home/git/gitlab-satellites
# cd /home/git/gitlab
# chmod -R u+rwX tmp/pids/
# chmod -R u+rwX tmp/sockets/
# chmod -R u+rwX public/uploads

Copiamos el archivo de configuración de Unicorn

# su git
# cp config/unicorn.rb.example config/unicorn.rb
# cp config/initializers/rack_attack.rb.example config/initializers/rack_attack.rb
Configuramos las variables para el usuario git y editamos user.email tal cual como este en gitlab.yml
# git config –global user.name «GitLab»
# git config –global user.email «alfuncorreo@algundominio»
# git config –global core.autocrlf input

Editamos para que el email de gitlab coincida con el usuario git (## Email settings)

# vi config/gitlab.yml

Copiamos archivo de configuración de git

# cp config/database.yml.mysql config/database.yml
# chmod o-rwx config/database.yml

Editamos el archivo de configuración con las credenciales establecidas de mysql

# vi config/database.yml

Instalamos

# cd /home/git/gitlab
# bundle install –deployment –without development test postgres aws
# bundle exec rake gitlab:setup RAILS_ENV=production
# exit

Script de inicio

# cp lib/support/init.d/gitlab /etc/init.d/gitlab
# cp lib/support/logrotate/gitlab /etc/logrotate.d/gitlab

Comprobamos que funciona la aplicación

# su git
# bundle exec rake gitlab:env:info RAILS_ENV=production

Si todo está bien

# bundle exec rake assets:precompile RAILS_ENV=production
# exit

Reiniciamos gitlab

# /etc/init.d/gitlab restart

Servidor web Nginx

# apt-get install -y nginx
# cp lib/support/nginx/gitlab /etc/nginx/sites-available/gitlab
# ln -s /etc/nginx/sites-available/gitlab /etc/nginx/sites-enabled/gitlab

Editamos el archivo de configuración para que coincida con la configuración (server_name)

# vi /etc/nginx/sites-available/gitlab

Reiniciamos Nginx para que tome los cambios

# service nginx restart

Primer login

En un navegaor accedemos a la URL de nuestro servidor

Primer login en gitlab

El usuario y contraseña por defecto son:
root
5iveL!fe
La primera página nos envía a un formulario para actualizar el password. Obviamente se debe editar por algo seguro.
Después de esto ya podremos acceder a gitlab, crear proyectos, usuarios, etc.

Dashboard de Gitlab

———————————————–

Dudas, comentarios, sugerencias? Sigueme en twitter @josecely

Links
https://www.gitlab.com/
https://github.com/gitlabhq/gitlabhq/blob/master/doc/install/installation.md

Ago

10

Chicharrón (Crackling?) # ezSql fails Insert «randomly» #

By Jose Antonio Cely Saidiza

 

This entry talk about ezSql,
http://www.woyano.com/jv/ezsql
Before, thanks for that great library, i work whith ezsql for 3 years!
I found small bug, where you have multiple database conections and/or classes. I write an small module for Drupal.
In my module, $db->query($sql) returns false «randomly» where INSERT, however the insert works fine, after hours of debug my work ( days :$ ), found the «bug» in the line 212 of ez_sql_mysql.php .

$this->rows_affected = @mysql_affected_rows();

lack link identifier!, change the line to:

$this->rows_affected = @mysql_affected_rows($this->dbh);

And works fine.

Hope that it helps.
Cheers,
Jose A. Cely

http://www.woyano.com/view/213/Download-ezSQL-Database-Class-205#14556

Ago

5

Chicharrón # Moodle no deja embeber videos de Youtube #

By Jose Antonio Cely Saidiza

Aunque este no es un chicharrón tan complejo, como siempre perdí horas por atacarlo de la forma equivocada.
Resulta que la plataforma de e-learning, moodle (de la cual no tengo experiencia) trae una serie de filtros para el contenido, muy prácticos, eso si. Sin embargo, ese fue mi error, cuando me dijeron «tenemos que colgar un vídeo», entonces pensé «solo es embeberlo y ya», con los tags de youtube, como dice por ejemplo este tutorial.
Sin embargo no funciono, viendo el código vi que Moodle corta los tags ««, por lo tanto no se veía el vídeo en cuestión, entonces me enrede más instalando este plugin lo cual es practico, pero pidió compilar soporte pecl, entre otras virgerias, frustado por perder dos horas, me fui a descansar.

Entonces hoy en la mañana con mente fresca, di otro googlazo, y encontre la opción «allowobjectembed»!, que viene deshabilitado por defecto, impidiendo embeber cualquier tipo de contenido swf, y no hay plugin que valga si esta no se habilita primero, esta opción se encuentra en:
# ? Administración ? Seguridad ? Políticas del sitio ? Permitir marcas EMBED y OBJECT
Una vez habilitada, la inserción funciona de fábula, a la muestra:
capturamoodlevideo
Tal vez si antes de ponerme a investigar cosas enredadas y me hubiese puesto a la tarea de recorrer la interfaz de administración de moodle, lo hubiera visto, checkeado y listo! pero no, siempre me voy a lo más complicado :S !
Saludos.

Jun

25

Java 4-ever

By Jose Antonio Cely Saidiza

Aunque Java no es que me mate, exagerada orientación a objetos! Pero este trailer me mato! … Java 4-ever :D


Very funny!

Nov

12

Open Handset Alliance – Android

By Jose Antonio Cely Saidiza


Android
Hace unos días leí en barrapunto la noticia sobre el lanzamiento público de la estrategia de Google en cuanto a dispositivos móviles. Antes esperábamos que gPhone sería un teléfono, pero de unos días acá nos enteramos que ya no se llama gPhone, se llama Android, y más que hardware, es un sistema operativo (usando Kernel Linux :D ), con código fuente abierto, y con un entorno listo para desarrollar aplicaciones para móviles.
Pero la motivación para escribir este post, la recibí hoy cuando publicaron el código fuente, el IDE, tutoriales, etc.
http://www.openhandsetalliance.com
http://code.google.com/android/

Los vídeos hablan por si mismos.
Android Demo:

Joder!, hay vídeo tutoriales, bastante documentación y código de ejemplo. En definitiva estos tipos me pusieron a APRENDER JAVA y a instalar Eclipse :D… siempre le habia hecho el quite por haber sido software cerrado, y come maquinas, pero, parece que esto esta cambiando, o así JAVA no cambiase y siga siendo una porquería, me motivan los 10 millones de dolares que hay para los desarrolladores que hagan aplicaciones para la plataforma.. aun así, si de esos 10 Millones no veo un dolar, al menos tendré la tranquilidad que la aplicación/es que se desarrolle tendrá un potencial de 3 billones de usuarios.
Veo en mi bola de cristal un rotundo éxito de google, como la mayoría de los productos que saca, además no es solo google, están fabricantes de hardware y empresas de telecomunicaciones. El lanzamiento oficial para el público en general el para el segundo semestre del 2008.
http://www.openhandsetalliance.com/oha_members.html
Señores, a estudiar JAVA :P …
Saludos

Actualización 13 Nov
Por fin pude instalar Eclipse en mi Debian Etch con el SDK de Android ( Quien lo iba a creer, ahora hablo de SDKs :D ), probé con los paquetes oficiales de Debian para Eclipse, pero no se por que no me funciono el plugin de Android, entonces me baje el Java y Eclipse y los instale a mano y vola! funciono el SDK de Android, os dejo unas capturas. (Con todo y el emulador funcionando :'( … creo que debería escribir un tutorial de instalación )

Captura Android 2

Otra captura navegando…

Saludos de nuevo

Mar

31

El enfoque del programador…

By Jose Antonio Cely Saidiza

Un día como este, navegando por la red, me encontré con este excelente articulo en frikipedia:
http://frikipedia.es/friki/Programador, en el cual estaba esta imagen.
Cruda realidad
Esta imagen muestra la cruda realidad de los proyectos de software, pero no solo eso, creo que también sirve para la política :D …