Arxiu de la categoria: consells

eina del dia (o de la nit)

watch

És una petita utilitat que seguint el principi de les ordres de terminal fa una cosa i la fa bé: executa una ordre cada x segons.

Mireu el seu manual (man watch) o la seva ajuda (watch –help) per veure’n totes les opcions.

Per exemple amb “watch -n 10 du -sh *” fareu que cada 10 segons s’executi l’ordre “du -sh *” (saber quan d’espai de disc ocupa tot el que hi ha en el directori des d’on s’executa l’ordre).

Ara ja us podeu imaginar què faig despert a aquestes hores :D

Publicat dins de General, consells, linux, terminal | Envia un comentari

Commits parcials amb git

No us ha passat alguna vegada que mentre esteu escrivint alguna funció nova us adoneu que en una altra funció li falla alguna cosa? Llavors què feu? Un git stash abans de fer cap canvi a l’altre mètode i un cop el teniu arreglat un git stash pop?

Ja no cal!

Sabia que es podia fer però mai m’havia aturat a mirar com es feia:

git add -p

Amb aquesta ordre (i si voleu el fitxer o fitxers) afegireu a l’índex les parts del fitxer que vulgueu. D’aquesta manera si teniu dues parts modificades del codi en un mateix fitxer (la funció que estàveu fent i les quatre línies per arreglar un altre funció) no us cal fer cap cosa estranya per afegir només una part del fitxer, res de fitxers temporals, ni branques, ni deixar coses al porta-retalls, etc etc, senzillament fer una addició de pedaços (d’aquí ve el -p) .

Senzill i MOLT útil. Més de dues, tres i quatre vegades m’hagués estalviat una bona estona d’anar creant fitxers, deixant coses sense desar, etc etc si hagués sabut aquesta opció del git add :)

Publicat dins de General, consells, git, programació | Envia un comentari

Millora el temps d’arrencada de l’Evolution

Si utilitzeu l’Evolution, el gestor de correu del GNOME i us sembla que tarda una mica massa en obrir-se proveu aquest consell que comenta en Pacho Ramos al seu bloc:

cd ~/.local/share/evolution

for i in `find . -name folders.db`; do echo “Rebuilding Table $i”; sqlite3 $i “vacuum;” ; done

Només he fet servir la segona part, no tenia ganes de fer un còpia de seguretat per si les mosques :)

Publicat dins de GNOME, General, consells, evolution | Envia un comentari

Referències amb el LibreOffice calc

No us heu trobat mai amb la situació de que teniu un llibre de càlcul amb un full amb moltes dades tabulades i que des d’un altre full hi voleu accedir-hi?

Eus aquí la sol·lució:

=INDIRECTE(ADREÇA(G12;G13;1;1;”Full4″))

La funció ADREÇA genera una adreça (estil A1 o fullX.$B$1) amb els paràmetres que li passem, de manera que els podem generar dinàmicament, en l’exemple heu d’emplenar els camps G12 i G13 amb els nombres de la fila (G12) i la columna (G13, també com a nombre!).

La funció INDIRECTE agafa una adreça, en aquest cas prèviament generada amb la funció ADREÇA, i ens retorna el seu valor, de manera que si a G12 i G13 i tenim els valors 2 i 3, el resultat d’aquesta fórmula serà el valor que hi ha a la fila 2 columna C (columna 3) del full “Full4″.

Molt útil si teniu un full ple de dades i hi voleu fer càlculs des d’altres fulls.

Publicat dins de General, consells, libreoffice | Envia un comentari

Aprendre a programar pel GNOME amb vídeos

Ja fa un temps l’Alberto Ruiz va fer un vídeo d’introducció a la programació amb GTK+ des de Vala: Vídeo

Ara és en Daniel G. Siegel el que n’ha fet un altre de semblant però aquest cop des de Python: Vídeo

Publicat dins de GNOME, General, consells, programació, python, vala | Envia un comentari

Micro servidor web amb Python

Tot i que el llenguatge més utilitzat (o en el que pensa gairebé tothom) quan parla de pàgines web és PHP, amb Python també es poden fer pàgines web :D

Un dels grans què del PHP és que engegues el servidor (Apache normalment), poses un fitxer php en algun lloc accessible i boom! ja tens la pàgina funcionant al navegador.
No se si existeix alguna cosa semblant, però amb Python encara ho pots fer més senzill (a mode de test i MAI en producció quedi clar):

from wsgiref.simple_server import make_server

def simple_app(environ, start_response):
    status = '200 OK'
    response_headers = [('Content-type','text/plain')]
    start_response(status, response_headers)
    return ['Hello world!\n']

# run the server
port = 8000
httpd = make_server('', port, simple_app)
print "Serving on port %i..." % port
httpd.serve_forever()

 

Amb el codi d’aquí sobre en teniu prou d’anar canviant el que hi ha dintre la funció per tenir ja alguna cosa que es mostri en el navegador :)

Publicat dins de General, consells, php, programació web, python | Envia un comentari

Ara és el millor moment per construir el GNOME 3.0

Si sou impacients, o senzillament us agrada provar novetats, ja estareu al cas que d’aquí poc sortirà el GNOME 3 amb el GNOME Shell i tot el que això implica.

Mentre les distribucions no empaqueten tots els mòduls que fan falta pel GNOME 3 sempre ens queda l’opció d’utilitzar el JHBuild, un sistema d’automatització de seguiment de dependències, de la compilació dels paquets i de la instal·lació d’aquests.

Teniu una secció específica a la pàgina del GNOME Shell on s’explica tots els pocs passos que cal seguir perquè tingueu l’entorn del JHBuild .

I per què ara és el millor moment? Molt senzill, el GTK+3 ja ha sortit i des de fa ja uns dies/setmanes que tot el codi que s’envia als components principals del GNOME 3 només es permet que siguin pedaços que arreglin coses, no es permet afegir funcions noves, de manera que cada dia que passa la plataforma és més i més estable. Resultat: compilar a partir del codi font és molt més factible i no has de ser cap gurú per poder deixar l’ordinador compilant tots els mòduls necessaris. De fet és tant senzill que el fitxer de configuració del JHBuild que faig servir jo és tant simple com això:

# Directory where to check sources out
checkoutroot = '/opt/gnome-gil/source'

# Directory where to install
prefix = '/opt/gnome-gil/install'

skip = [ ]
skip.extend ([ 'mozilla', 'firefox', 'dbus', 'hal',
 'NetworkManager', 'PolicyKit', 'PolicyKit-gnome',
 'libgdiplus', 'mono', 'monodoc', 'nss', 'nspr',
 'sqlite3', 'pulseaudio', 'pysqlite2', 'mono-addins',
 'polkit', 'DeviceKit', 'DeviceKit-disks',
 'DeviceKit-power', 'libxml2', 'libxslt', 'libgpg-error',
 'libgcrypt', 'expat', 'libtasn1', 'gnutls',
 'libvolume_id', 'udisks', 'UPower', 'upower', 'evolution-exchange', 'evolution-mapi'
])

Amb això al fitxer ~/.jhbuildrc ja en tindreu prou per començar a compilar el GNOME 3.0.

Aquí us deixo una captura de pantalla1 a mode de fer-vos dentetes a veure si us animeu a compilar-lo:

  1. Sí tinc un usuari que es diu jou per fer-lo servir per fer proves
Publicat dins de GNOME, GNOME Shell, General, consells, jhbuild, programari lliure | Envia un comentari

Assegura les pàgines web amb SSL

Cada vegada que envies dades per Internet, l’URL d’una pàgina web, un comentari, l’autenticació a una pàgina web… aquestes dades s’estan enviant sense encriptar, de manera que tothom que estigui entre el servidor on et connectes i el teu ordinador amb molt poc esforç pot veure què fas o quin usuari i contrasenya tens.

Per això es van inventar ja fa anys l’SSL, un protocol que funciona sobre HTTP que permet fer comunicacions xifrades d’exterm a extrem de manera que per moltes persones que estiguin pel mig de la comunicació entre el servidor i el vostre ordinador, no podran saber què es comunica.

Per tal de configurar un servidor web perquè enviï les pàgines amb SSL ens fa falta un certificat. Hi ha dues maneres d’aconseguir-lo, o bé pagant a una entitat certificadora perquè ens doni un certificat que tots els navegadors reconeixeran com a segur, o bé, fer-los nosaltres mateixos. Els navegadors no el reconeixeran directament com a segur, però si nosaltres sabem on ens connectem no hi ha problema.

Aquí va la recepta per al segon mètode: fer-ho nosaltres mateixos1.

  • Instal·lem l’OpenSSL a la nostra màquina (ha de ser al propi servidor per facilitar-ho tot)
  • Creem la clau del servidor: openssl genrsa 2048 > server.key2
  • Creem el certificat: openssl req -new -x509 -nodes -sha1 -days 365 -key server.key > server.crt
    • Responem totes les preguntes que ens fa l’auxiliar (són força fàcils Smile )
  • Activem el mòdul d’SSL de l’Apache3
  • Ja podem editar la màquina virtual de l’Apache per afegir-li la configuració per SSL. Vindria a ser una cosa a l’estil:
<VirtualHost *:443>
ServerName servidor.guifi.net
ServerAdmin admin@guifi.net
SSLEngine on
# Change the next two lines according to where you've actually
# stored the certificate and key files.
SSLCertificateFile /etc/ssl/apache2/server.crt
SSLCertificateKeyFile /etc/ssl/apache2/server.key

ServerName domain.tld
SSLOptions StrictRequire
SSLProtocol all -SSLv2

DocumentRoot /path/to/ssl/enabled/site
<Directory /path/to/ssl/enabled/site/>
SSLRequireSSL
Order Deny,Allow
Allow from All
</Directory>

Aquí sí que ja serà cada màquina virtual i cada domini que s’haurà de configurar com a un millor li sembli, i sobretot les necessitats que tingui. Els paràmetres clau són els del certificat i clau (SSLCertificateFile i SSLCertificateKeyFile).

Ara ja només us queda fer proves al servidor abans de donar-lo per definitiu. En aquesta fase de proves, i també en producció, us pot ser molt útil tenir fitxers de registres (els famosos logs) diferents si es per SSL o per text pla.

Si voleu per exemple que tot el trànsit sigui per SSL podeu fer un redireccionament de tot el trànsit per text pla a SSL amb:

<VirtualHost *:80>
ServerName servidor.guifi.net
ServerAdmin admin@guifi.net

RewriteEngine On
Redirect permanent / https://servidor.guifi.net
</VirtualHost>
  1. L’única diferència amb fer-ho amb un de pagament és que en comptes de generar el certificat nosaltres ens el dóna l’entitat certificadora
  2. Com sempre hi ha mil i un paràmetre per jugar-hi si us hi voleu entretenir
  3. ada distribució és diferent però normalment instal·lant el mòdul mod_ssl des del gestor de paquets ja l’habilita
Publicat dins de General, consells, servidors, ssl | Envia un comentari

git show -3

L’opció show del git serveix per, tal com indica el nom, mostrar diverses coses, entre elles, i en el 99% dels casos, serà veure els commits ja fets.

Per exemple amb “git show” es mostrarà el diff de l’últim commit.

Per sort, com totes les ordres de git tenen moltíssimes variants, de manera que per exemple amb el títol de l’entrada “git show -3” el que farem es veure els tres últims commits per ordre cronològic invers (l’últim primer).

També podem afegir-hi el paràmetre –stat que permet mostrar un llistat de quins fitxers s’han canviat, de manera que es te una visió molt més ràpida del que s’ha fet en el canvi sense entrar en els detalls del diff com a tal.

Amb git show –help teniu tota la resta d’informació per si necessiteu fer altres coses Smile

Publicat dins de General, consells, git, terminal | Envia un comentari

proveu el GNOME3 avui mateix!

Ja fa molt temps que es parla del GNOME Shell i del GNOME3 però encara no han arribat a les distribucions … no us voleu esperar més?

Doncs res millor que baixar-vos una imatge de CD que ha creat en Frederic Crozat i a provar-lo!

Publicat dins de GNOME, GNOME Shell, GNOME3, General, consells, programari lliure | Envia un comentari

Menys és més

I mai millor dit!

Avui he actualitzat el nucli i després de reiniciar per arrencar amb el nucli nou em trobo que la pantalla es mostra a 800×600 en comptes de 1280×800.

Començo a remenar opcions i veig que sí que puc tornar als 1280×800 amb l’xrandr1, però després de reiniciar sempre tornava als 800×600.

Després d’examinar el /var/log/Xorg.0.log semblava que era algun tema de configuració… “Doncs res” m’he dit, a tocar el /etc/X11/xorg.conf a veure què hi passa.

El primer que se m’ha acudit es esborrar el fitxer (fent una còpia abans!) i reiniciar, i voilà! Ja funciona a1280x800 i a més a més, quan connecto la pantalla externa de casa ja me la detecta bé i a més a més a la resolució que toca i tot2!

  1. M’ha anat molt bé una meva entrada al bloc
  2. M’havia fet un script per la pantalla de casa i de la feina Grin
Publicat dins de General, consells, programari lliure, xorg, xrandr | Envia un comentari

git per a tothom

Ja és de sobres sabut que el git és el millor gestor de control de versions que existeix, i tant és així, que fins i tot hi ha explicacions de com utilitzar el git per a editors i escriptors!

Publicat dins de General, consells, git | Envia un comentari

Com facilitar l’arribada de nous col·laboradors

La majoria de projectes de programari lliure no tenen una o diverses empreses a darrere que els permeti desenvolupar el programari tant ràpid com vulguin i afegir totes les funcions que voldrien.

És més, per molt que en tinguin fins i tot llavors els interessa desenvolupar una comunitat de desenvolupadors, dissenyadors, traductors, grafistes, administradors, etc etc per tal que el projecte per si sol tingui molta més força, independentment dels recursos que la empresa hi pugui destinar.

Ara bé, com ho fas per aconseguir atreure nous col·laboradors?

Cadascú et dirà una resposta diferent, però el que estan fent al LibreOffice, és, almenys per mi, una de les millors maneres que hi ha: documentar tasques de diferents nivells de dificultat que permetin solucionar la primera pregunta que es fa tot col·laborador: què puc fer?

Com més facilitats es posen a que nous col·laboradors puguin contribuir al codi d’un programa, més fàcil serà que al cap d’un temps de tots els col·laboradors que han fet tasques, alguns d’ells passin a ser col·laboradors habituals i fins i tot, perquè no, col·laboradors claus del projecte.

Publicat dins de General, consells, libreoffice, programari lliure | Envia un comentari

Llibre sobre git: Pro Git

Ahir mirant com fer el rebase del que vaig parlar em vaig trobar amb una web fantàstica: Pro Git.

Resulta que és la web del llibre homònim, on a més a més del llibre sencer també hi van publicant actualitzacions, consells i demés.

Sens dubte una pàgina de referència per a qualsevol que treballi a diari amb aquest fantàstic control de versions distribuït!

Com a mostra en el capítol 7 secció 2 ens ensenyen com combinar dos programes imprescindibles per mi: el git i el Meld.

Publicat dins de General, consells, git, meld | Envia un comentari

git rebase: la història sencera

Introducció

Si treballeu amb git ja haureu sentit a parlar de l’ordre rebase. Per intentar-ho resumir1:

Suposem que has començat una branca de desenvolupament paral·lela a la branca principal, has fet uns quants commits i al mateix temps la branca principal també evoluciona amb uns quants commits.

En aquell moment les dues branques han divergit (tenen commits diferents) de manera que no pots enviar els canvis d’un  a l’altre de manera automàtica que sinó es perdrien els canvis que ja hi ha fets en l’altre branca.

Si vols integrar els canvis d’una branca a l’altre tens dues sol·lucions:

  • merge: combinar en un sol commit tots els canvis d’una branca per integrar-los en l’altra.
    • problema: s’ajunta en un sol commit tots els canvis de la branca, de manera que si els canvis són molt invasius és perjudicial a la llarga ja que no tens l’historial real dels commits que van portar a aquest super-commit.
  • rebase: actualitzar tots els commits de la teva branca perquè utilitzin la nova base de l’altra branca de manera que llavors sí que es puguin aplicar els canvis de forma directe
    • problema: es reescriu la història dels commits, ja que si els canvis que comporten la nova base a partir de la qual aplicar els commits toca els mateixos fitxers que els que un ha canviat en la seva branca es modifiquen els commits automàticament.

Una mica enrevessat oi? Mireu la documentació oficial del git sobre el rebase amb tots els dibuixets.

L’important, el codi

Ara bé, m’he trobat moltíssima documentació explicant el què, però no el com, així que aquí va una guia ràpida de les ordres per tal de fer un rebase:

git checkout BRANCH # anem a la branca que volem passar a master
git rebase MASTER # fem el rebase (si trobem conflictes els anem sol·lucionant)
git push -f # envies els canvis al servidor (el -f és degut a que forces el push)
git checkout MASTER # tornem a la branca master
git pull origin BRANCH # ara ja podem agafar els canvis de la branca BRANCH sense cap problema
git push # enviem al servidor la branca master amb tots els canvis de la branc BRANCH aplicats

I amb això ja teniu tot el necessari per poder treballar amb branques i fer-ne després rebase d’aquestes.

Tingueu en compte el fet aquest de la reescriptura de la història. De per si no és dolent, el principal problema és que si la branca en la que estàs treballant també l’utilitza algú altre, aquest altre tindrà problemes quan torni a fer una actualització del codi.

Si pel contrari treballeu amb aquesta branca únicament vosaltres no tindreu absolutament cap problema i, sens dubte, serà la millor manera de preservar tot els commits i per tant molt més senzill de navegar per l’historial.

  1. Hi ha moltíssima lectura
Publicat dins de General, consells, git | Envia un comentari

sistema de plantilles TAL

L’immensa majoria de llenguatges de programació per web (PHP, Python, JavaScript,Wink tenen un sistema de plantilles de manera que permet fer una cosa semblant a l’XHTML i el CSS, per una banda preparar les dades (amb el llenguatge de programació) i per altre presentar-los (amb el sistema de plantilles).

A diferència del CSS però, els sistemes de plantilles sí que tenen part de programació, iterar, condicionals i coses per l’estil.

Si treballeu amb Plone ja haureu descobert que utilitzeu TAL, un sistema de plantilles que utilitza una sintaxi molt semblant a l’HTML de manera que el propi codi de TAL queda integrat en tot el que és l’HTML que es vol mostrar.

Avui he trobat una referència del llenguatge i per això he fet l’entrada, per recordar-me que existeix Smile

Publicat dins de General, TAL, consells, plantilles, plone | Envia un comentari

Libreoffice i la Document Foundation

A hores d’ara ja deveu haver llegit/sentit la notícia: s’ha fet un fork del codi de l’OpenOffice.org.

Des de que he llegit la notícia que tenia ganes de fer alguna cosa per poder expressar els meus millors desitjos al projecte, i quina millor manera pot ser que ajudar en el projecte?

Animat per la pàgina de Easy Hacks m’he decidit a fer alguna cosa simbòlica i he enviat un pedaç que ja ha estat confirmat al repositori!

I tu? Ja has col·laborat a millorar la Libreoffice?

Publicat dins de General, consells, libreoffice, programari lliure | Envia un comentari

com tradueixo actualment

Avui((Aprofitant que és festa major a Barcelona)) m’he posat a traduir els mòduls del GNOME en els quals estic com a últim traductor.

Després de fer ja uns quants mòduls he trobat que el cicle de treball que utilitzava m’era molt còmode i de nou((Ja vaig parlar-ne fa un temps de com posar-se a traduir)) el documento a veure si algú en pot treure alguna cosa útil i aprofitar-ho i de pas a veure si algú també s’anima a publicar el seu cicle.

Disposició de treball

Com em van dir fa un temps: això de treballar amb dues pantalles enganxa,  després de provar-ho ja no podràs tornar a treballar amb una sola!

Així que amb la pantalla del portàtil i l’externa tinc:

  • Dos terminals (un per la traducció activa i l’altre per fer consultes a fitxers po d’altres mòduls o traduccions d’altres idiomes del mateix mòdul)
  • Navegador amb diverses pestanyes obertes (el Damned-Lies, el recull de Softcatalà, Termcat, la Wikipedia, l’Open-Tran i l’Optimot)
  • Nota del Tomboy amb un resum de les traduccions a fer i llistat de terminologia que vaig descobrint i establint

D’aquesta manera només haig de moure una mica al ratolí i ja tinc el focus en la finestra que vull utilitzar, en tot el matí no he fet servir l’Alt+Tab Smile

Forma de treball

  • Des del terminal actualitzo el git del mòdul que traduiré (canviar de branca si fa falta i tota la pesca)
  • Actualitzo la traducció amb un script (“msgstatus caWink
  • Faig la traducció (pas obvi Smile
  • Reviso els canvis amb el Meld (entre el fitxer ca.git.po que em crea el msgstatus i el fitxer de la traducció acabada ca.po)
  • Extrec totes les cadenes del català (amb un altre script)
  • Amb el fitxer (ca.po.tmp) que em crea l’script anterior li passo el  el verificador ortogràfic (Hunspell)
  • Finalment després de traduir, revisar i passar la verificació ortogràfica pujo el fitxer al Damned-Lies

Espero que us sigui útil!

Publicat dins de GNOME traduccions, General, Softcatalà, consells, traduccions | Envia un comentari

introducció al sed

De nou avui havia de modificar una bona colla d’HTML per afegir-los unes quantes coses a la secció <head> de manera que què més fàcil que fer-ho directament amb un script de sed.

Com de que nou no recordava massa com fer-ho deixo aquí un bon enllaç d’una introducció a sed (anglès).

Publicat dins de General, consells, sed, terminal | Envia un comentari

rebre notificacions del cron al teu client de correu preferit

Logo del projecte DebianA la feina1 tenim un parell de servidors2 que corren amb Debian on entre moltes altres coses hi tinc alguns processos amb cron i tal.

Com que des que vaig configurar un servidor de correu al servidor de casa estic rebent la sortida de l’execució dels processos que tinc en el cron per correu electrònic i trobo que és molt útil avui he fet el mateix a la feina, i la veritat és que ha sigut la cosa més senzilla del món!

Nota: amb aquesta configuració només rebreu els correus interns del propi servidor, no tindreu un servidor de correu completament funcional ni molt menys!

Passos per fer-ho:

  1. Configurar un registre MX d’un domini que tingueu al vostre abast per poder adreçar-vos-hi per recollir el correu.
  2. Deixar tal qual està l’exim4 tal com ve per defecte a Debian (o sigui no fer res Grin).
  3. Instal·lar el dovecot-imap (apt-get install dovecot-imapd)3.
  4. Llestos!

Ara l’únic que heu de fer és configurar el vostre client de correu perquè vagi a recollir a través d’IMAP els correus en el vostre servidor i d’aquesta manera tindreu puntualment la sortida de les execuccions dels processos del cron al vostre client de correu Grin

Punts extra

  • Per si no us n’adoneu quan instal·leu el dovecot-imapd: el propi dovecot crea un certificat auto-generat de manera que només fent els 4 passos de sobre4 teniu xifratge de la connexió gratuïtament Grin
  • Per no haver de tenir 40.000 comptes en el client de correu que utilitzeu podeu afegir la següent línia al crontab de tots els usuaris que tinguin cron:

MAILTO=jordi@localhost

D’aquesta manera tots els usuaris que en el seu crontab tinguin aquesta línia enviaran el correu a l’usuari jordi, de manera que l’únic compte que haureu de tenir en el vostre client de correu és el de l’usuari jordi.

  1. Perdó per l’SPAM Grin
  2. El típic escenari de producció i desenvolupament/test
  3. Si voleu també podeu instal·lar el dovecot-pop3d per accedir a través de POP
  4. Realment dos: el primer i el tercer,  i un només en el propi servidor.
Publicat dins de General, consells, debian, dovecot, programari lliure | Desactiva els comentaris