blami tec

Alguns apunts de tecnologia

Fusionar un grapat d’imatges en un pdf

leave a comment »

Suposem que tenim una llista d’imatges, per exemple, com a resultat de l’escanejat d’un document, i les volem totes en un sol document pdf.

Alguns detalls que estic tenint present per simplificar aquestes instruccions:

    • totes les imatges es llisten en l’ordre desitjat amb
      $ ls img*.jpg
    • no hi ha cap altre pdf a la carpeta que es mostri amb
      $ ls img*.pdf

Si ho tenim així, es pot fer en dues passes:

  1. converteix les imatges a pdf individualment
    $ find -iname 'img*.jpg' | xargs -I'{}' convert {} {}.pdf
  2. fusiona els pdf resultants en un sol
    $ pdfunite img*.pdf conjunt.pdf

Ara, potser voldràs eliminar els pdf individuals, per exemple amb:
$ rm img*.pdf
Fet!

Anuncis

Written by blami

30 Desembre 2017 at 20:56

Arxivat a General

Tagged with

Git: llistar els fitxers modificats en un commit

leave a comment »

Per llistar els fitxers que van ser modificats en un commit concret de git:

Pas 1. Localitza el hash del commit. Per exemple:

$ git log -2
commit 058bba155c9ea952012a6819f382e33907f0b481
Author: Marc Garcia Sau <marcgarciasau@example.com>
Date: Tue Dec 12 09:29:04 2017 +0100

    dt des 12 09:28:55 CET 2017

commit ff5b49c8b312ae4de3ce4badb7e01c5b5b64c7bd
Author: Teresa Ribes González <teresaribes@example.com>
Date: Mon Dec 11 14:15:50 2017 +0100

    dl des 11 14:15:50 CET 2017

Suposem que ens interessa el primer d’ells (remarcat en vermell)

Pas 2. Demana els fitxers modificats

$ git diff-tree --no-commit-id --name-only -r 058bba155
fitxer_modificat_1.txt
fitxer_modificat_2.txt
fitxer_modificat_3.txt
fitxer_modificat_4.txt

 

Written by blami

12 Desembre 2017 at 10:00

Arxivat a git

Assignació de tecles després de suspensió en Debian

leave a comment »

En cas que tinguis mapejades algunes tecles en Debian (al menys fins a Jessie), és probable que t’hagis trobat que, en tornar de la suspensió (pm-suspend) la teva redefinició s’ha perdut.

Una manera que m’ha funcionat és afegir un guió a /etc/pm/sleep.d/ que serà executat quan el teu equip torni de la suspensió.

En el meu cas, el guió l’he anomenat 20_xmodmap i conté el següent:

case "${1}" in
   resume|thaw)
      su -c "sleep 3; /usr/bin/xmodmap /root/.Xmodmap" &
      ;;
esac

Cal que facis executable el guió, per exemple amb:

$ sudo chmod +x /etc/pm/sleep.d/20_xmodmap

També caldrà que copiïs a /root el teu fitxer .Xmodmap, per exemple, amb la comanda:

$ sudo cp -i ~/.Xmodmap /root/

I, si tot ha anat bé, ja pots fer sudo pm-suspend. En tornar, les teves tecles quedaran definides com indiqui .Xmodmap.

Fixa’t que el guió que hem creat inclou una crida a sleep. Això és un requeriment donat que altrament podria haver estat executat abans de carregar la definició original del teclat. L’inconvenient és que, de vegades pots haver començat a teclejar i encara no s’ha produït el canvi.

Encara tinc coses per millorar en aquesta solució:

  • Voldria que la redefinició fos respecte a com estava mapejat la vegada anterior. Probablement puc fer un script similar que, abans d’anar a suspensió guardi la configuració del teclat.
  • Voldria que això depengués de l’usuari. Ara remapeja per a tots els usuaris del sistema.
  • Voldria que també fos automàtic el mapeig en arrencar el sistema. Em cal trobar algun servei que es carregui en l’arrencada on col·locar un script similar.
  • Voldria que també funcionés quan el sistema queda suspès per tancar la tapa del portàtil. Sembla que no és el mateix tipus de suspensió.

De moment, però, és la millor solució que he trobat per no haver d’estar remapejant constantment.

Written by blami

7 Abril 2017 at 10:19

Arxivat a General

Tagged with ,

Millora la navegabilitat de la línia de comandes

leave a comment »

Per alguna raó, la línia de comandes al gnome-terminal m’ha deixat de funcionar com era habitual.

El més incòmode per mi és la pèrdua de les combinacions ctrl-esquerra i ctrl-dreta, amb les que podia saltar per paraules. Em resulten tan còmodes, que fins i tot tinc el behave mswin al meu .vimrc per poder fer-les servir al vim.

Les alternatives alt-b i alt-f, em presenten un problema ja que la darrera activa el menú.

He aconseguit solucionar-ho afegint una línia a ~/.inputrc (amb el $ inclòs)

$include /etc/inputrc

En cas que la variable INPUTRC no estigui definida, caldrà afegir la següent línia a ~/.bashrc:

export INPUTRC=~/.inputrc

Written by blami

18 Mai 2016 at 12:07

Arxivat a General

Posar entre cometes totes les paraules d’una línia amb Vim

leave a comment »

Imagina que tens una llista de paraules (potser obtingudes d’un full de càlcul) que et cal posar en forma de llista separada per comes i entre cometes.

Per exemple:
un
dos
tres

i el que vols és tenir:
"un", "dos", "tres"

Per poder-ho fer amb Vim simplement,

  1. col·loca el cursor en la primera paraula i en mode normal selecciona (amb comanda V) fins la darrera
  2. ajunta les línies (comanda J)
  3. escriu la substitució: s/\>/,/g
  4. opcionalment, elimina la darrera coma ($x)
  5. escriu la substitució :s/\<.\{-\}\>/”&”/g

Ja està!

Written by blami

18 Setembre 2014 at 17:13

Arxivat a vim

Tagged with

Convertir en escapament una altra tecla

leave a comment »

Trobo que l’ús que em requereix l’editor Vim de la tecla d’escapament (<Esc>) és excessiu tenint en compte la distància a la que es troba aquest tecla a la majoria dels teclats que faig servir.

No sóc l’únic. He trobat des de qui canvia la tecla de bloqueig de majúscules per la d’escapament fins a qui es programa un pedal per fer Esc amb el peu!

Bé, jo sí faig servir la tecla de bloqueig de majúscules i no em veig (de moment) amb cor de posar un pedal. Així que m’he decidit per trobar una altra tecla que faci servir poquet.

La meva elecció ha estat la d’ordre (º) que faig servir tan poc que fins i tot no em molestaria gaire haver d’introduir el seu codi a ma.

Seguint aquesta entrada d’askubuntu, he trobat aquesta solució:

~ $ xmodmap -pke > .Xmodmap
~ $ cp .Xmodmap .Xmodmap.original
~ $ echo 'xmodmap .Xmodmap' >> .xinitrc

De fet, la segona línia no és imprescindible. Ho faig per guardar-me la configuració original i poder consultar-la si faig alguna destrossa. En el pitjor dels casos, però, simplement haig d’eliminar la línia afegida a la tercera comanda per deixar les coses tal i com estaven.

Ara edito la línia que m’interessa. En aquest cas la de la tecla amb codi 49, que originalment conté:

keycode  49 = masculine ordfeminine masculine ordfeminine backslash backslash backslash

La passo a que contingui:

keycode  49 = Escape ordfeminine masculine ordfeminine backslash masculine backslash

La propera vegada que inicii el sistema em funcionarà la meva nova tecla d’escapament. Si no vull reiniciar encara, simplement haig d’executar a la shell la comanda que he posat a .xinitrc, per exemple amb (atenció al primer punt!):

 ~ $ . .xinitrc

D’aquesta manera, en el cas remot que necessiti escriure º, simplement hauré de fer <altgr>+<shift>+º. Més que suficientment accessible.

Written by blami

19 Mai 2013 at 01:10

Arxivat a General

Desactivar el touchpad a l’Awesome WM mentre teclejes

leave a comment »

Si fas servir Awesome WM al teu portàtil, és possible que estiguis patint el mateix problema que jo: estàs escrivint una línia i de sobte te n’adones que el cursor ha passat a una altra part del document o, fins i tot, a una altra finestra.

Una possibilitat està en fer servir el programa syndaemon. La comanda és simplement

$ syndaemon -i 0.8 -k -R -d

Aquesta comanda fa que s’esperi 0,8 segons després del darrer cop que premis una tecla (no de funció com el ctrl) i s’executa en background.

Si vols que s’executi a l’inici, una manera senzilla és afegir el següent al teu rc.lua (per exemple, al final)

function run_once(prg, opt)
    awful.util.spawn_with_shell("pgrep -u $USER -x " .. prg .. " || (" .. prg .. " " .. opt .. ")")
end

run_once("syndaemon", "-i 0.8 -k -R -d")

La funció run_once() assegura que només s’executi un cop.

Si no fas servir Awesome WM (cosa que et recomano) potser podràs trobar més informació a:

Written by blami

31 gener 2013 at 20:50

Arxivat a General