Eclipse, EGit, gitolite, git

•22 enero, 2012 • Deja un comentario

Sorry this post will be in english.

We have a server with some git repositories in, and these repositories are being managed with gitolite. Gitolite uses SSH2 public keys to authenticate users, so each time a new user want access to a repo, she has to tell to our system administrator (probably creating and/or sending her public SSH2 key to our sysadmin). Then, our sysadmin would tweak with gitolite, adding the user/key to gitolite or just grant the required access to a repo.

In the case that you use Eclipse with the EGit plugin, you’ll notice it’s not straightforward to configure it. Here i put the steps we followed to have it running:

0 – Assumptions

If our server is http://ourgreatserver.com, we usually type this command to clone a repository on a developer machine:

$ git clone gituser@ourgreatserver.com:myProject

Note that we have a user on the server, called gituser. With this user we have a regular account with SSH access, but we also use this user to manage gitolite. Also we have configured gitolite to place the git repositories under /home/gituser/repositories.

So the repo myProject is located at /home/gituser/repositories/myProject.git

That said, we followed the next steps:

1.Generate the SSH2 key pair on Windows

In the case we need to generate both public and private SSH2 keys from our windows development machine, we download puttygen.exe and run it:

http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html

1.1. We’re not using password, but we can specify one if we want to protect out keys. We do not use a password here because our gituser user has it’s own for SSH access and we don’t need the overhead of using another one.

1.2. Click on the «generate» button and move your mouse over the progression bar and the space below it (yes, this is strange but necessary).

1.3. Save both the public and the private key into a well known (and secure) folder. Don’t forget them! WE RECOMMEND TO SAVE THEM INSIDE C:/Users/fabi/.ssh (note that fabi is the username).

1.3.1. The private key should never be out of your control. If anyone/anything asks you about a key, you should only provide the public one (as a rule of thumb).

2. Configure gitolite on the server to accept this new user

For this step, you’ll probably want to send your public key to your gitolite server administrator.

3. Download and install Eclipse.

4. Configure SSH keys in Eclipse

In order to use the pair of SSH keys you’ve just created, we must configure Eclipse:

4.1. Open «Window->Preferences»

4.2. On the left side of the screen there’s a tree view of all the configuration options. Open the «General->Network Connections->SSH2»

4.3. Inside the SSH2 configuration options, select the «General» tab.

4.4. For the «SSH2 home» field, browse to the dir where you saved your keys pair.

4.5. The «Private keys» field should be showing something like «id_dsa, id_rsa».

5. Download and install EGit for Eclipse (you can do this from within Eclipse Marketplace).

6. Open the «EGit» perspective from Eclipse and click on «Clone a Repository». Then fill the following text fields:

Host: ourgreatserver.com

Repository path: myProject (or any other repo)

Protocol: ssh

User: gituser

Password: gituser_password

** This step is optional **

7. If we want to use git from the command-line in Windows, a good way to go is to download and install msysgit from here:

http://code.google.com/p/msysgit/

3.1. We prefer the full install. When installing, we select the «Just use git-bash» option. If you want to know more on this step, please refer to the documentation at the msysGit web page.

3.2. In our Start Menu we should have a git-bash execuable.

Hope all of this will be helpful.

Reducir el envío de email en Redmine

•27 septiembre, 2011 • Deja un comentario

Redmine es una herramienta estupenda para gestionar proyectos (yo la uso para proyectos informáticos), pero cuando hay varios usuarios, roles y demás, el envío de emails que genera llegan a rozar el spam.

Para evitar esto, hay un plugin llamado Redmine_Mail_Notification que ayuda un poco. El desarrollador original del plugin se llama Goyello, y puedes acceder a este proyecto en GitHub:

https://github.com/GOYELLO/Redmine_Mail_Configuration_plugin.

Probé a instalarlo sobre la versión de Redmine que tengo (no estoy seguro de la versión, pero es más moderna que la 1.0.0) y me daba algunos problemas. Principalmente porque hay que aplicar un patch a algunos ficheros de Redmine. Navegando por el proyecto, vi que hay otro desarrollador que ha mejorado el plugin para que no sea necesario aplicar ningún patch. Este segundo desarrollador es Friflaj, y el proyecto se puede descargar desde su GitHub:

https://github.com/friflaj/redmine_mail_configurator.

Para descargarlo, he ido al directorio en el que tengo Redmine, y he seguido los pasos que se indican en la Guía de instalación de plugins de Redmine, concretamente hice:

$ cd /var/www/redmine/vendor/plugins
$ git clone https://github.com/friflaj/redmine_mail_configurator.git
$ rake db:migrate_plugins RAILS_ENV=production
$ sudo /etc/init.d/apache2 restart

Tras realizar estos pasos, el plugin funciona, pero parece que hay algunas frases sin traducción. Para traducirlas, he añadido las siguientes líneas…:

es:
  label_user_mail_assigned_only_mail_notification: Envía email sólo si estoy asignado/a a la petición
  label_user_mail_block_mail_notification: No quiero ser avisado/a por email. Gracias
  label_mail_if: Enviar email si
  label_new_issue_created: Se ha creado una nueva petición
  label_issue_assigned_to: "Petición asignada a:"
  label_no_assignation: Ninguno
  label_use_custom_mail: Especificar una dirección de mail diferente

…en los siguientes ficheros (tuve que crear los ficheros):

/var/www/redmine/vendor/plugins/redmine_mail_configuration/config/locales/es.yml
/var/www/redmine/vendor/plugins/redmine_mail_configuration/lang/es.yml
/var/www/redmine/vendor/plugins/redmine_mail_configuration/locales/es.yml

Cabe decir que antes de hacer todo esto, y por precaución frente a mis manazas, hice una copia de la base de datos de Redmine y de los ficheros subidos, siguiendo este esquema:

Base de datos:

mysqldump -u <username> -p <password> <redmine_database> | gzip > /path/to/backup/db/redmine_`date +%y_%m_%d`.gz

Attachments:

rsync -a /path/to/redmine/files /path/to/backup/files

Todo esto lo he sacado tirando del hilo, que empezó en el blog de Goyello en:

http://blog.goyello.com/2009/07/16/how-to-manage-email-notifications-within-redmine/

Una vez realizados los pasos anteriores, en la configuración de mi cuenta se puede ver:

Redmine con el plugin de notificación por email

Sólo un comentario final, la última opción (No quiero emails) es la más restrictiva y se aplica al margen de las opciones anteriores. Esto es, que si marco la última no recibo ni un correo aunque marque alguna de las anteriores.

Muchos saludos, después de muchos meses :)

EDICIÓN:

Al poner en marcha el sistema, tuve un problema al acceder a la configuración de cada proyecto (tab de ‘Settings’ o ‘Configuración’ para un proyecto). Me daba un ‘Internal Error’ de Redmine, y mirando el log me salía un error en el fichero:

vendor/plugins/redmine_mail_configurator/_mail_if.rhtml

Venía a decir que «undefined local variable or method ‘members'». No sé mucho de Ruby (ego-code alert: no sé nada de Ruby) pero estaba claro que la variable ‘members’ no la encontraba. Buscando por ahí encuentro que se puede pillar esa variable, así que edito el fichero _mail_if.rhtml y añado la siguiente línea:

<% members = @project.member_principals.find(:all, :include => [:roles, :principal]).sort %>

justo antes de que se use(  <% members.each do |assigned_member| %> )

Y… tachán!

También he aprovechado para cambiar un poco una frase de la traducción inglesa, que sugería que uno es asignado a una petición, cuando en realidad es la petición la que es asignada a uno. La frase que he cambiado es:

label_user_mail_assigned_only_mail_notification: Mail me only if an issue is assigned to me

en los siguientes ficheros:

/var/www/redmine/vendor/plugins/redmine_mail_configuration/config/locales/en.yml
/var/www/redmine/vendor/plugins/redmine_mail_configuration/lang/en.yml
/var/www/redmine/vendor/plugins/redmine_mail_configuration/locales/en.yml

Electricidad y Biomasa

•10 julio, 2011 • Deja un comentario

Sólo un pequeño apunte para no olvidarla: la ciudad sajona de Juhnde, dónde se autoabastecen con biomasa para obtener electricidad y agua caliente. Una bonita solución para pequeñas comunidades (se puede buscar más en google):

http://discovermagazine.com/photos/14-has-the-future-of-energy-arrived-in-tiny-german-village

(otro enlace que viene del anterior: http://www.in.gov/oed/2348.htm)

Autocompletado en git

•5 May, 2011 • Deja un comentario

Buscando «git bash completion» en google ofrece mil soluciones, pero esta es la receta :)

Hay que bajar el fichero git-completion.bash de algún repositorio de git:

http://repo.or.cz/w/git.git/blob/HEAD:/contrib/completion/git-completion.bash

y después copiarlo a /etc/bash_completion.d/

La siguiente vez que se ejecute bash se puede probar tecleando en una consola:

$ git <tab><tab>

(donde <tab> es pulsar la tecla de tabulador).

Hay otros truquillos en los comentarios de este fichero que muestran otras opciones que pueden ser interesantes, como que en nuestro prompt se muestre la «branch» activa en git. Para más información consultar los comentarios del fichero, para un ajuste rápido, copiar (o adaptar) estas líneas en $HOME/.bashrc

PS1='[\u@\h \W$(__git_ps1 » (%s)»)]\$ ‘

GIT_PS1_SHOWDIRTYSTATE=1

GIT_PS1_SHOWSTASHSTATE=1

GIT_PS1_SHOWUNTRACKEDFILES=1

Y esto es todo. No he olvidado el blog, pero no tengo tiempo, que ya me gustaría … :)

Nota: en Ubuntu 10.04 me quedó esta variable

PS1=’${debian_chroot:+($debian_chroot)}\[33[01;32m\]\u@\h\[33[00m\]:\[33[01;34m\]\w\[33[01;33m\]$(__git_ps1 » (%s)»)\[33[00m\]\$ ‘

Medio ambiente

•21 septiembre, 2008 • 1 comentario

Es común que me quede en casa algún sábado viendo La Noche Temática, programa documental de La2 en el que he visto algunas ideas grandes.

Hoy están emitiendo tres documentales acerca del cambio climático, el medio ambiente y algunas de las fórmulas que existen para frenar nuestra contribución al desastre, esa que estamos generando los humanos. El primero de ellos me ha llamado la atención, y quiero hacer un pequeño apunte aquí de varias de las ideas y soluciones planteadas (voy a ser algo crítico). El nombre de este primer documental es «Reciclar para sobrevivir».

En el documental, se habla de las revolucionarias ideas del arquitecto William McDonough y del químico Michael Braungart. Hay información acerca de ellos en internet, y además de haber ayudado a diversas multinacionales a reducir su impacto ambiental y sostenibilizar sus modos de producción, son famosos por la publicación de su libro «De la cuna a la cuna» (Cradle to cradle). No voy a entrar en detalles acerca de los autores o del libro, simplemente quiero destacar y agrupar algunas afirmaciones que me han llamado la atención. Por hacer un resumen básico de las ideas de los dos autores, entienden que «la basura es comida». Dicen que conviertiendo los desechos contaminantes en biodegradables, o en completa y fácilmente reutulizables, se puede ayudar a la sostenibilidad del planeta, además de rentabilizar las inversiones en temas de medioambiente que han adoptado algunas multinacionales. Las ideas me parecen geniales, y voy a tratar de leer el libro, a ver qué proponen.

A mi me han llamado la atención especialmente dos compañías que han adoptado (parcialmente) las ideas que se reflejan en su libro: Unilever y Nike.

En el documental se ha hablado de cómo estas compañías se han preocupado por reducir residuos y convertir estos residuos en algo útil para el medioambiente. Sin embargo, dudo de la veracidad de algunas afirmaciones, y aunque el documental parece plantear soluciones factibles, hay algo que huele a marketing rancio. Por un lado Unilever trata de reducir su impacto ambiental según el documental, pero Unilever es conocida por arruinar el medioambiente en determinados escenarios. El caso de Nike es el que más me ha llamado la atención acerca de este marketing rancio. Por un lado, el tipo al que han entrevistado mostraba unas zapatillas construidas con la idea de que su impacto ambiental una vez consumidas sea muy bajo. Las llevaba puestas para la entrevista pero, estaban completamente nuevas. Casualidades del marketing. Dicen que Nike tiene un programa de recogida de zapatillas usadas para fabricar otras nuevas, y que en el 2020 todas sus zapatillas serán construidas siguiendo el modelo de las que mostraba tan nuevas. Nike, como otras multinacionales del calzado o textiles, han sido vergonzosamente famosas por prácticas de explotación obrera en los países en los que producen, y más aún en el caso de explotación infantil en dichos países. Ví un documental de la BBC hace unos años en el que mostraban las factorías de Nike y otras compañías en Asia, donde había niños fabricando zapatillas y balones. Basta con buscar la frase «sweatshop nike» en Google. Los propios directivos de Nike se han visto obligados a rescindir contratos con determinadas empresas en Asia dado que usaban mano de obra infantil. Se excusan diciendo que es difícil controlar las situaciones laborales en determinados países. Mi pregunta es, ¿y por qué no trasladan esas factorías a otros países en los que haya unas mínimas garantías y derechos humanos?

Me parece que al menos estas dos compañías aparecen en el documental como benévolas, pero tengo mis dudas. Cierto es que cualquier paso como los que dan son importantes, pero me parece igualmente importante recordar que dan aún muchos pasos en direcciones .

Otro aspecto que me ha llamado la atención acerca del documental es que han hablado de cómo se están fabricando en China casas respetuosas con el medioambiente y con la forma de vida de la China rural. Aunque China y su régimen tienden a ofrecer caras mediáticas.

Cambiando un poco de tema, el documental me ha recordado las Máquinas Vivientes (Living Machines) de las que oí hablar hace unos años. Incluso siendo una gran idea, es una idea patentada desarrollada en exclusiva por una empresa. Sé que el modelo mercantil y de patentes global actual favorece este tipo de situaciones, pero me parecería una acción enormemente magnánima abrir a comunidades locales esa patente, esa gran idea. Han surgido iniciativas en otros países, no bajo el nombre de Living Machines, pero sería un gran avance poner en común toda la información que las diferentes investigaciones han aportado.

Al ver el caso de China y sus construcciones «verdes», he recordado que hay iniciativas para construir casas con materiales alternativos diferentes a los empleados, como por ejemplo el cáñamo. El cáñamo es muy útil en construcción ya que con él se puede elaborar una pasta muy aislante térmicamente y muy resistente al fuego. Además es muy ligera. El cáñamo podría además ser muy útil para sustituir la forma actual de fabricar papel, ya que su tratamiento es más limpio, requiere de menos blanqueantes, y lo mejor de todo, es una plantación que cada año se renueva, sin necesidad de talar árboles centenarios, que tardadarán decenas de años en ser repuestos.

Encontré información acerca del cáñamo en la construcción en varios enlaces:

http://www.construnario.es/notiweb/titulares_resultado.asp?regi=16076

http://www.consumer.es/web/es/economia_domestica/servicios-y-hogar/2007/05/18/162804.php

http://es.wikipedia.org/wiki/C%C3%A1%C3%B1amo

http://www.galeon.com/casa-ecologica/aficiones111938.html

Sin duda esta entrada tengo que ampliarla en algún momento, que llevo un rato cayendo de sueño.

EDITO: Agrego algunos enlaces sobre cáñamo y construcción:

 

http://www.construmatica.com/construpedia/C%C3%A1%C3%B1amo

http://www.amiclor.org/index.php?option=com_content&view=article&id=176:canamo-y-pvc&catid=37:curiosidades-pvc&Itemid=165

Haz clic para acceder a I_Introduccion_al_Cannabis_Industrial_Cultivo_de%20fibras_lignocelulosicas.pdf

http://www.cannabric.com/

http://www.internationalhempbuilding.org/index.html

Haz clic para acceder a 00339.pdf

Grupo RedVerde.es

http://19bis.com/objectbis/

http://www.ecogaia.com/canamo-un-material-reconocido-para-la-construccion-verde.html

http://es.made-in-china.com/co_qd-fab/product_Hemp-Hurds-Board_hunugnroy.html

http://www.jovenesconmadera.com/jovenes-con-madera/padres/innovacion-tecnologica-y-modernizacion-del-sector/i/716/325/modernizacion-en-el-sector

http://www.ratical.org/renewables/plywood.html

No paro, no parooo

•16 septiembre, 2008 • 1 comentario

Bueno, llevo sin escribir mucho tiempo. No me ha pasado nada, estoy bien, pero muy liado. Por resumir ligeramente:

– dejo mi actual trabajo. Entré con una ilusión enorme, rechacé otros para ir allí, incluso entré cobrando menos que lo que me pagaban antes. Pero me he topado con una persona lamentable, rodeada de un equipo técnicamente bueno, pero humanamente deplorable. Definitivamente un nido de víboras no es lugar para un polluelo. Y aunque bien es cierto que hay sólidas ramas en las que reposar, no veo el árbol tupido :)

– he seguido haciendo algunos diseños: una publicidad/imagen empresarial para una clínica de fisioterapia; también un par de tarjetas de visita y una web.

– he seguido con el diseño de los gráficos de algunos plugins de LMMS (que envié a Paul y a Toby hace tiempo; ahora que veo, llevo bastante sin escribir aquí :) ).

– he seguido componiendo alguna canción, pero sin tiempo para grabarlas :(

– ayudo a una amiga a hacer una obra interactiva con openFrameworks, básicamente interactuando con una cámara web. Si todo sale bien, podría viajar lejos :)

– hemos presentado una obra para La Noche en Blanco, llamada Plazanimada. No hubo mucha gente durante la presentación, porque La Caixa y su Forum nos eclipsaron bastante, pero estoy contento con el resultado. Se puede ver más en www.plazanimada.es.

– y quizá lo más importante… entre tres locos (pero locos) estamos por empezar nuestra primera empresa. Ya hay nombre y varias ideas para logos… que a su debido tiempo subiré aquí :)

Tengo que coger un día para poder subir todas las cosas que he ido haciendo, o fotos o algo. Que estoy de un soso…

Saludos desde mí mismo, en un día en el que por horrible sinergia acabó bello.

mi .vimrc

•22 julio, 2008 • Deja un comentario

Para que no se me pire, aquí va el contenido que me mola en el .vimrc:

syntax on
set tabstop=2
set hlsearch
set ruler
set mouse=nc
set pastetoggle=<F2>
set foldmethod=marker

ping

•14 junio, 2008 • 2 comentarios

El recetario está en la nevera, pero no he parado, la verdad. Empecé en un trabajo nuevo, me he mudado de casa y tengo internet desde hace pocas semanas :)

Sigo liado con proyectos:

– Hemos presentado entre Mónica, Kike y yo una propuesta para Interactivos-Mexico, en Agosto. Es muy algo improvisada pero veremos si nos cogen qué sale.

– He seguido colaborando con LMMS y he diseñado una carátula más.

– He empezado a retomar un lejano proyecto con dsPICs.

¡A ver si saco más tiempo! :)

Instalando ubuntu en un Compaq F500

•12 abril, 2008 • 2 comentarios

Estos días estamos Dani y yo ayudando a Patri a instalarse una Kubuntu en este portátil, y nos hemos encontrado con problemillas. Voy a escribir aquí todos los trucos que hemos tenido que seguir para conseguirlo.

1. Instalar Kubuntu 7.10. Al principio no arrancaba el live-cd, y buscando un poco por google vimos que hay que pasarle algunos parámetros al kernel antes de arrancar. Cuando sale la pantalla de bienvenida del instalador de Kubuntu, elegimos el idioma castellano, y después pulsamos F6, que nos permite ver los diferentes parámetros que se le pasan al kernel para que arranque. Concretamente, al final de la línea que aparece, introdujimos las siguientes órdenes (justo después del «……..splash –«:

acpi=off nolapic noapic

Con esto ya se ejecuta el live-cd, e instalamos kubuntu al estilo «siguiente, siguiente». La única cosa «rara» que hemos hecho ha sido reparticionar el disco duro con QtParted, de tal modo que hemos creado las siguientes particiones:

/dev/sda2 — /boot — 200 MB — ext2

/dev/sda4 — swap — 1 GB — el sistema de ficheros es el swap de linux (área de intercambio)

/dev/sda5 — / –17 GB — reiserfs (también podíamos haber elegido ext3)

/dev/sda5 — /home — 26 GB — xfs

2. Actualizamos la lista de paquetes disponibles para el sistema. Para ello editamos el fichero /etc/apt/sources.list y descomentamos (quitamos los símbolos «#») de las líneas que empiezan por «deb». Como editor podemos usar nano. Después de haber editado el fichero, actualizamos la lista de paquetes disponibles:

sudo apt-get update (también ejecutamos un apt-get upgrade que nos actualice el sistema, y no sólo la lista de paquetes disponibles, que era el «update»). NOTA: conviene señalar que casi todas las operaciones las realizamos con «sudo», ya que necesitan de permisos de administrador.

2. Bajamos algunos paquetes básicos. De momento no funciona la wireless y no hemos probado la tarjeta de sonido, así que vamos con la wireless, aunque antes instalamos algo de software:

(recuerda que para buscar un paquete en debian y derivadas usamos apt-cache search)

sudo apt-get install linux-source-2.6.22 libqt3-mt-dev libncurses-dev

Lo que hemos hecho ha sido básicamente descargar las fuentes del kernel, que vamos a recompilar en un rato (paquete linux-source-2.6.22). Cuando bajan las fuentes del kernel, lo hacen comprimidas, así que tendremos que descomprimirlas. Estas fuentes se descargan en /usr/src/linux-source-2.6.22.tar.bz2. Para descomprimirlas hacemos:

cd /usr/src

sudo tar xvjf linux-source-2.6.22.tar.bz2

Y se crea el directorio /usr/src/linux-source-2.6.22. Bien, queremos compilar el kernel, y cuando lo hagamos, se creará un fichero de configuración con todas las opciones que usaremos durante la compilación. Ese fichero se suele llamar «config». En sistemas ubuntu (y debian) este fichero suele guardarse junto con el ejecutable del kernel (el kernel en sí) en el directorio /boot. Kubuntu trae uno por defecto, que copiaremos al directorio de nuestras fuentes del kernel:

cp /boot/config-2.6.22-14-generic /usr/src/linux-source-2.6.22/.config

(le hemos cambiado el nombre de config-2.6.22-14-generic por el de .config).

Ahora toca compilar, para lo que entramos en el directorio de las fuentes del kernel y ejecutamos:

sudo make xconfig.

Lo más importante es elegir bien nuestro tipo de procesador, ya que el resto de opciones las podemos dejar como están (de que seamos unos linux-jedi, podremos meternos más con las fuentes del kernel :) )

Llega el momento de compilar, y lo hacemos «a la debian»:

sudo make-kpkg –append-to-version=.pati1 –initrd kernel_image

Cuando acabe, nos habra dejado un fichero .deb en el directorio /usr/src. Lo instalamos haciendo:

sudo dpkg -i kernel-image-blahblahblah.deb

3. Ahora vamos a instalar los drivers para la tarjeta de red inalámbirca. Tenemos la BCM94311MCG wifi wlan. El kernel 2.6.22 no dispone de drivers para esta tarjeta, y no existen en linux como tal, así que la solución más sencilla es instalar los de windows y usarlos desde la aplicación ndiswrapper. Nos bajamos ndsiwrapper desde:

http://ndiswrapper.sourceforge.net

Mobility of a Landmark en Inclusiva-net

•2 abril, 2008 • Deja un comentario

He asistido como colaborador al taller de Inclusiva-net 2.0 en el Medialab durante el pasado mes de Marzo. Han sido unos días emocionantes en los que he aprendido mucho, y rodeado de gente muy maja. He colaborado en varios proyectos, pero en el que más he aportado ha sido en La movilidad de un punto de referencia, de Sandra Nakamura.

Se trata de una aplicación (applet Java) hecha en Processing conectada a una base de datos, atacada con PHP. La obra pretende ser una reflexión acerca del verdadero centro de las ciudades, teniendo en cuenta los lugares realmente importantes para sus habitantes. Se muestra un mapa del centro de Madrid, en el que los usuarios y usuarias pueden rellenarlo con puntos que les resulten de importancia. Se va generando así un centro de carácter individual, estipulado según el uso e importancia que cada habitante de la ciudad le confiere a esta. Las coordenadas de dichos puntos se almacenan en una base de datos, conformándose un centro de la ciudad a partir de todos. Se puede ver en www.donde-esta-usted.com.

Espero en breve poder alojar todo el código en la cuenta que abrí en google code.