submòduls a git

Sempre hi ha aquells casos en que tot i tenir un sol codi font s’utilitzen diversos altres codis font que tenen la seva existència per separat però que són necessaris dintre del projecte.

A subversion existeixen els externals i a git hi ha els submòduls. Treballen de forma diferent i per tant no es poden comparar exactament (tot i que el concepte és el mateix), ja que per exemple a subversion assumeixen que sempre vols actualitzar el codi de tots els submòduls i en canvi a git ho has de forçar tu manualment, si això és un avantatge o un inconvenient ja depèn de cada projecte en concret.

Per si hi heu de treballar des de git el capítol sobre submòduls del llibre del Git és perfecte (de fet l’he seguit punt per punt per fer-ho al projecte que tinc ara entre mans).

etiquetes a git

Això del git està molt bé, però com tot té la seva corba d’aprenentatge :)

Avui ha tocat indagar en les etiquetes (tags). N’hi ha de tres tipus:

  • Senzilles
  • Anotades
  • Signades

Primer la versió ràpida i fàcil:

$ git tag NOM_ETIQUETA

$ git tag NOM_ETIQUETA SHA1

Creem una etiqueta amb el nom NOM_ETIQUETA i si es dóna el cas que no la volem fer en el commit en que està ara mateix el repositori local on estem treballant hi afegim el SHA1 del commit (amb un git log, o interfície web el trobem de seguida).

Per saber les etiquetes hi ha:

$ git tag -l -n1

Amb això mostrem totes les etiquetes, l’opció -l, i de pas també mostra el missatge del commit (en el cas de les etiquetes anotades també mostra l’anotació), l’opció -n1.

Un cop hem etiquetat tots els commits que ens sembli ja podem enviar els canvis (en cas que s’hagin d’enviar a algun lloc, estil git.gnome.org):

$ git push –tags

Fàcil eh :)

Si us equivoqueu també les podeu suprimir:

$ git tag -d NOM_ETIQUETA

I si ja l’havíeu enviat l’heu de suprimir en remot:

$ git push origin :refs/tags/NOM_ETIQUETA

Les etiquetes anotades tenen la particularitat que a més del nom que li donem a l’etiqueta també li afegim un comentari (l’anotació vaja).

Per crear-la:

$ git tag -a -m”ANOTACIÓ DE L’ETIQUETA” NOM_ETIQUETA

La resta funciona igual (enviar, llistar, suprimir, etc).

L’última opció de crear una etiqueta és la que en certs projectes té molt sentit. Les etiquetes signades permeten no només etiquetar un commit en concret de l’historial del repositori sinó que a més a més les pots signar amb una clau OpenPG, d’aquesta manera, si t’has de baixar el codi font del nucli de Linux i en vols estar 100% segur que ningú l’ha tocat ho pots saber comprovant que la signatura del commit de l’etiqueta signada correspon a en Linus Tolvards :)

Python 2.4 i 2.6 al mateix temps

Degut a la feina haig de fer servir un programa1 que necessita la versió 2.4 de Python i diverses biblioteques (la PIL per exemple).

El problema està en que per defecte Gentoo compila els paquets de Python per a la versió de Python activa del sistema. Com que el sistema de paquets de Gentoo depèn de la versió 2.5 de python tenim un problema: no puc compilar per a la versió 2.4 ja que el programa que s’utilitza per a gestionar els paquets no es pot executar amb aquesta versió!

Si compilo els paquets per a la versió 2.4 de Python llavors no em funcionen per a la versió 2.6, o el que és pitjor (i que em va passar ahir mateix) que si per descuit actualitzes algun paquet de python te’l compila per a 2.6 i t’esborra la versió de 2.4.

Per sort hi ha una solució molt fàcil: al fitxer de configuració de l’emerge (el famós /etc/make.conf) hi pots establir una variable nova:

USE_PYTHON=”2.4 2.6″

Amb aquesta única línia ja li estàs dient a l’emerge que cada vegada que instal·li un programa de python el compili tant per a la versió 2.4 i la 2.6 :)

  1. El Zope, que és el servidor d’aplicacions que fa servir el Plone []

RRR

De petit em van ensenyar que les 3 R eren: Reduir, Reutilitzar i Reciclar.

Enteses com que per a millor el medi ambient el que s’ha de fer és començar per reduir el consum de recursos naturals i de contaminació generada. En segon terme s’ha de reutilitzar/reaprofitar els sobrants del nostre consum (aprofitar les ampolles d’aigua per emmagatzemmar altres líquids, etc etc) i en última instància reciclar els materials que ja no tenim manera de reutilitzar per tal que en les plantes de reciclatge i deixalleries puguin separar-ne els components per a poder-ne fer el millor ús (crear compostatge a partir de la matèria orgànica, triturar les fustes per a crear serradures que podran ser emprades per a nous materials …)

Ara bé, si mirem com és la societat en general, tot i que sembla que hi ha un clamor força unànim de preocupació vers el medi ambient s’agafen les tres R al revés: força gent1 recicla, que reutilizin ja és força menys comú, però el que ja és flagrant i que a més ningú sembla que se’n recordi és de reduir, quan precisament només pel fet de reduir ja t’estàs estalviant de reutilitzar i reciclar.

Sense entrar en debats de política, globalització, consum, etc etc està clar que la societat de consum amb molts bons ulls el fet de reciclar (ja que implica un consum previ), tolera mínimament el fet de reutilitzar, però el que ja sí que està pràcticament prohibit de facto és el fet de reduir, però ai las si a algú se li acudeix reduir el seu consum!

Visca la societat de consum!2

  1. tot i que tampoc ho tinc molt clar []
  2. Amb accent sarcàstic evidentment []

Treu la unitat de forma segura

La majoria de llapis USB tenen el típic LED que va fent pampalluges quan el tens connectat a l’ordinador i quan el desmuntes en principi ha de parar.

Tot i així, fins ara, quan els desconnectava del sistema operatiu continuaven fent pampalluges intermitents i sempre m’esperava a que no estigués encès el LED per a treure’l.

Doncs bé, això ja és història, gràcies a un dels programes nous del GNOME 2.28, el gnome-disk-utility en el menú del botó secundari hi ha l’opció que hi ha al títol d’aquesta entrada «Treu la unitat de forma segura» el qual fa la feina que ha de fer (desmuntar la unitat) però que la fa del tot, i es que si hi tens un llapis USB veus que ja no fa més pampalluges i si hi tens connectat un disc dur pots sentir com els discs redueixen la velocitat de gir fins a aturar-se :)

Com crear fons de pantalla ràpids amb el GIMP

Una entrada ràpida per una entrada molt interessant que he trobat al wiki de Gentoo:

Com crear fons de pantalla fractals amb el GIMP

L’interessant d’aquest tutorial és que jo mateix amb 5 minuts (3 dels quals esperant que el GIMP renderitzés) n’he pogut crear un, amb lo qual amb poca més de mitja hora segur que n’heu de poder tenir algun que us agradi.

llenguatge de gràfics

Llegint la documentació del JHBuild1 he vist que pots mirar les dependències que tenen cada programa des del propi terminal o generar un gràfic que ho mostri, per exemple les dependències de l’Epiphany són:

Resulta que aquest gràfic tant ben fet es fa amb un llenguatge de programació anomenat DOT. La sintaxi és ben senzilla i la facilitat de creació de gràfics és impresionant (només cal mirar els exemples de la Wikipedia).

La genialitat de la implementació que en fa el Graphviz és que no només et treu .jpg o .png sinó que a més a més et pot treure .svg de manera que amb dos minuts pot definir el gràfic amb llenguatge DOT i després et pots estar l’estona que faci falta retocant-lo amb l’Inkscape.

Em sembla que a partir d’ara quan hagi de fer gràfics obriré el terminal en comptes d’un editor d’imatges o de vectors :D

  1. Programa per a compilar el GNOME des dels dipòsits de codi font []

obrir ports a un Virtualbox

Long time no blogging … anyway!

Ja fa temps1 que feia servir unes opcions no tant conegudes del Virtualbox i que permeten interactuar molt més fàcilment amb la màquina virtual, aquí va l’explicació:

Problema: Tinc una màquina virtual amb Virtualbox i vull accedir a algun dels serveis que hi ha en algun port en concret d’aquesta màquina virtual.

Sol·lució: Són tres senzilles línies que només has d’anar copiant i enganxant en un terminal cada vegada que facis una màquina virtual nova.

# VBoxManage setextradata NOM_MAQUINA_VIRTUAL “VBoxInternal/Devices/pcnet/0/LUN#0/Config/guesthttpd/HostPort” 8000
# VBoxManage setextradata NOM_MAQUINA_VIRTUAL “VBoxInternal/Devices/pcnet/0/LUN#0/Config/guesthttpd/GuestPort” 80
# VBoxManage setextradata NOM_MAQUINA_VIRTUAL “VBoxInternal/Devices/pcnet/0/LUN#0/Config/guesthttpd/Protocol” TCP

Canvieu el “NOM_MAQUINA_VIRTUAL” pel nom que li hagueu posat a la màquina virtual. Recordeu que després d’executar aquestes tres ordres haureu d’apagar i tornar a engegar la màquina virtual (no n’hi ha prou en reiniciar-la).

Un cop fet això i amb la màquina engegada de nou només cal que aneu al vostre navegador de l’ordinador amfitrió i poseu la direcció http://localhost:8000 i estareu veient l’Apache de la màquina virtual!

El mateix podeu fer amb l’ssh:

# VBoxManage setextradata NOM_MAQUINA_VIRTUAL “VBoxInternal/Devices/pcnet/0/LUN#0/Config/ssh/HostPort” 2222
# VBoxManage setextradata NOM_MAQUINA_VIRTUAL “VBoxInternal/Devices/pcnet/0/LUN#0/Config/ssh/GuestPort” 22
# VBoxManage setextradata NOM_MAQUINA_VIRTUAL “VBoxInternal/Devices/pcnet/0/LUN#0/Config/ssh/Protocol” TCP

Després de apagar i tornar a engegar ja podreu fer un ssh2 a la màquina virtual.

Entenc que es pot fer amb qualsevol port i que en la cadena “VBoxInternal/Devices/pcnet/0/LUN#0/Config/ssh/*” només cal canviar l’ssh per ftp o per qualsevol nom arbitrari no repetit, no he trobat cap guia que ho expliqui amb detall (tampoc he buscat molt :D)

Espero que sigui útil!

  1. De fet ho vaig descobrir a Openbravo quan utilitzava les màquines virtuals per fer coses de la feina []
  2. ssh -l USUARI -p 2222 localhost []