Q

Non si prosegua l'azione secondo un piano.

Categoria: codi i programes

22tracks

22tracks

22tracks és una pàgina amb 4 vegades 22 llistes de 22 cançons cada una. Cada llista està escollida per un DJ d’Amsterdam, Brussel·les, Londres o París. No cal registrar-se, simplement entrar a la pàgina, escollir ciutat i llista i començar a escoltar una bona selecció. Això sí, si et registres pots enviar les dades del que escoles a last.fm.

Una bona manera d’escoltar i descobrir música sense complicacions. Per exemple, Snatch – Black Market, The Jones Girls – You Gonna Make Me Love Somebody Else, o Ahmed Abdul-Malik – La Ibkey.

vpnc en OS X 10.8 (Mountain Lion)

Després d’unes quantes proves i seguir passos de diverses webs (1 + 2 + 3), he aconseguit configurar el programa vpnc, per a poder-me connectar a la VPN de la universitat des de la línia de comandes en un mac amb el Mountain Lion (OS X 10.8). Aquí van els passos necessaris per a fer-ho, sense gaire explicació (utilitza’ls a risc teu!). Un d’ells (*) no m’ha quedat clar si és necessari, però el deixo per si a algú li cal.

Cal tenir un gestor de paquets. Jo faig servir Homebrew, després d’haver provat MacPorts en l’anterior mac que tenia. El recomano, és molt útil. Així que:

  1. Instal·la Homebrew si encara no el tens: http://mxcl.github.com/homebrew/
  2. Corre brew install vpnc --hybrid (així compila el vpnc amb el mode hybrid, necessari en alguns casos)
  3. Si des de consola no t’accedeix a la comanda vpnc (-bash: vpncc: command not found), obre el teu .bashrc i afegeix-hi la línia: export PATH=${PATH}:/usr/local/sbin
  4. Ves a /usr/local/etc/vpnc. Copia l’arxiu default.conf a un altre (per exemple, cp default.conf uni.conf)
  5. Edita aquest arxiu (uni.conf) amb la informació de la teva VPN. El meu, per exemple, ha quedat així (és bona idea eliminar la línia de la contrasenya, per a que te la demani sempre):
    IPSec gateway vpn1.uibk.ac.at
    IPSec ID nom_del_grup
    IPSec secret nom_del_secret
    IKE Authmode psk
    Xauth username nom_usuari
    local port 0
  6. Corre vpnc uni.conf i entra la contrasenya.
  7. Per desconnectar-te, corre vpnc-disconnect.

(*) Si al córrer vpnc uni.conf retorna l’error can't initialise tunnel interface: No such file or directory, cal instal·lar Tun Tap OSX:

  1. Descarrega i instal·la Tun Tap OSX: http://tuntaposx.sourceforge.net/
  2. Corre sudo kextload /Library/Extensions/tap.kext && sudo kextload /Library/Extensions/tun.kext
  3. Potser cal reiniciar l’ordinador…
  4. Si després d’instal·lar-ho, continua sense funcionar, prova si amb permisos de root funciona: sudo vpnc uni.conf. Si així sí que funciona, doncs ja ho saps, a utilitzar sudo.

sandwich

Utilitzant sudo és una mica engorrós. Pots evitar que et demani la contrasenya configurant sudo per a que et permeti corre el vpnc sense contrassenya d’aquesta manera:

  1. Corre sudo visudo
  2. Afegeix les següents línies a la secció que els toqui:
    User_Alias ME = marti
    Cmnd_Alias VPNC = /usr/local/sbin/vpnc, /usr/local/sbin/vpnc-disconnect
    ME ALL = NOPASSWD: VPNC

Si, a més, vols no haver d’utilitzar sudo vpnc i sudo vpnc-disconnect, pots fer-te un script que cridi aquestes comandes, per exemple:

#!/bin/bash
sudo /usr/local/sbin/vpnc /usr/local/etc/vpnc/uni.conf

Dibuixar hipergrafs amb Mathematica

Últimament estic treballant amb hipergrafs, i necessitava una eina per visualtizar-los fàcilment (preferentment, en Mathematica). No n’he trobat cap, així que he adaptat la funció GraphPlotHighlight, de simonjtyler. Al final del post copio les funcions necessàries, però comencem per algunes definicions matemàtiques i algun exemple.

Un hipergraph g_{\le n} és una parella de conjunts g_{\le n} = \{V,E\}, on V és el conjunt de n nodes (n=|V|) i E és el conjunt d’hiperarestes (subconjunts de V diferents del conjunt buit): E=\{e_k=\{v_1,\dots,v_k\}:v_i\in V \land 1\le k\le n\}. Un hipergraph és k-uniforme (i escrivim g_k) si totes les seves hiperarestes tenen exactament k elements. És a dir, E=E_k=\{e_k=\{v_1,\dots,v_k\}:v_i\in V\}. Amb aquestes definicions un graf normal i corrent és un hipergraf 2-uniforme.

El problema a l’hora de visualitzar un hipergraf és com dibuixar les hieprarestes. Una opció és dibuixar una àrea que inclogui els nodes continguts en l’hiperaresta. Una altra opció és dibuixar una aresta simple (és a dir, connectant només dos nodes) per cada parella de nodes dins d’una hiperaresta. En aquest cas, però, és fàcil confondre l’hipergraf amb un graf estàndard, o confondre arestes simples que corresponen a hiperarestes diferents. El que he fet amb la funció HypergraphPlotHighlight és combinar les dues opcions (dibuixant àrees i arestes simples), i a més diferenciar hiperarestes diferents amb colors diferents. El resultat encara no és òptim, però poc a poc s’hi acosta.

El següent exemple representa l’hipergraph amb E={{1, 2, 3}, {2, 3, 4}, {4, 5, 6, 9, 10}, {3, 5, 7, 8}, {1, 3, 8}, {7,  9}}:

HypergraphPlotHighlight

Llegeix la resta d’aquesta entrada »

De PNG a EPS a l’Ubuntu

Des de fa poc utilitzo Ubuntu a la feina, i m’ha sorprès que no vingués directament amb un programet per transformar imatges del format PNG a l’EPS. Doncs bé, per a qui li pugui interessar, el sam2p ho fa de manera ben fàcil i eficient. N’hi ha prou amb instal·lar-lo:

$ sudo apt-get install sam2p

I cridar-lo:

$ sam2p exemple.png EPS: exemple.eps

I fet! A punt per utilitzar-la, per exemple, amb el LaTeX.

Vectors linealment independents

Ecco una petita funció del Mathematica per obtenir ràpidament una llista dels primers vectors linealment independents d’una certa llista de vectors, per si a algú li pot ser útil (si ja existia alguna cosa similar, digueu-m’ho als comentaris!).

Un conjunt de n vectors \{v_1,\ldots,v_n\} és linealment independent si i només si el rang de la matriu M=(v_1\dots v_n) és n. La següent funció, doncs, retorna la llista dels primers vectors linealment independents a partir d’una llista qualsevol de vectors:

FirstLinearlyIndependent[vec_List] := Module[
  {a = {}, i = 1, n = Length[vec]},

  While[i <= n,
   If[
    MatrixRank[Append[a, vec[[i]]]] == Length[a] + 1,
    a = Append[a, vec[[i]]]
    ];
   i++;
   ];
  a
  ]
Follow

Get every new post delivered to your Inbox.

Join 158 other followers