2006.01.05 01:44:03
Publicitat!
2005.07.10 12:02:39
UTF-8 versus ISO-8859-15
Au, va, no ho faré més. Perdonau els embolics d'encoding que he armat darrerament al meu bloc. Tenia els locales d'una màquina amb ISO-8859-15 (occidental amb euro) i els de l'altre amb UTF-8. I he fet posts amb un i amb l'altre, sense convertir. De moment agafaré ISO-8859-15 com a estàndard, vos va bé? O:-)
Actualització: he trobat una eina anomenada uconv (paquet icu a Debian) i he convertit els articles que sortien malament d'UTF-8 a ISO-8859-15 ;-)
2005.07.10 11:56:15
Latència
Ja som a Can Picafort. He passat dels més de 450KB/s del cablemodem d'Ono als 5KB/s escassos de Telefónica Net amb tarifa plana 24h via modem. I sabeu què? Per baixar una ISO supòs jo que se notarà :-P però per a les sessions SSH i per a la navegació la diferència no és tanta com podria semblar. Per a aquestes coses fa MOLT més mal la latència, que és un ordre de magnitud pitjor via modem. Els quasi dos ordres de magnitud de diferència en l'amplada de banda són bastant mes bons de dur.
Volia posar-me una tarja dual GPRS/UMTS, perquè les tarifes comencen a esser decents, però encara no. En primer lloc, la "tarifa plana" costa uns 60 euros, tens 384Kbps de baixada i 64Kbps de pujada a zones de cobertura UMTS... però no és plana-plana perquè té un limit d'un gigabyte i mig al més i a partir d'aquí comences a pagar els bits a preu d'or. I amb aquestes condicions i tot els de MoviStar han passat molt de jo, està clar que no els interessa donar-me el servei. Total, que un estiu més amb modem. Però bé, tal com van les coses esper que l'any que vé o el següent com a molt ja pugui donar de baixa les dues linies (Sta. Margalida i Can Picafort) que tenc només per connectar-me a Internet quan venc per aquí (per xerrar, el mòbil va massa bé). Si sumau els minims mantenir dues linies costa una pasta cada més, més de 400 euros l'any!
Ei, de totes formes no he vengut aquí per la connexió! ;-D
2005.07.03 23:59:01
Inducció poc intuïtiva - Genètica
No vos diverteix quan un raonament vos du a unes conclusions que vos pareixen contràries a la intuïció? Després queda veure si el que està malament és el raonament (o qualque premissa) o la intuïció. Ara vos plantejaré un problema que fa un parell d'hores m'ha entretingut bastant ;-)
Genealogia. Situats? Tota persona té un pare i una mare biològics, en general, pel que jo sé. Anem a pintar un arbre binari (més o manco) a veure si serveix. Els nodes són persones, i la relació pare-fill és més anàloga que mai, només és que al revés, l'arrel no té fills i si els té no els consideram, però és el descendent de tot l'arbre. Cada node (excepte les fulles, que en aquest arbre al revés seria on comença tot, un misteri semblant al big-bang ;-) té dos progenitors, és el seu fill, i els podem distingir com a pare i mare.
Considerem una persona, per exemple jo, i les altres persones de les quals jo som descendent, aquestes i només aquestes. Els meus pares i jo ja formam un arbre de tres nodes, jo som l'arrel i som el seu descendent. Si afegim el nivell dels meus padrins, tenim una generació més i es conserva l'estructura d'arbre. Ho veieu? Ara no explicaré què és un arbre binari, però no sembla mala analogia dir que un nivell representa molt bé una generació. Si només consideram estrictament el pare i la mare (res de germans, germanastres, múltiples parelles, o similars: només ascendents biològics directes) de cada persona tenim una cosa molt semblant a un arbre binari.
Ara bé, tots sabeu que un arbre binari complet (un home tot sol o una dona tota sola no poden tenir fills, amb excepcions bíbliques, d'acord? O:-) amb N nivells té 2 ^ N - 1 nodes. Els meus pares i jo som 2 generacions, 2 nivells 2 ^ 2 - 1 = 3 nodes, 3 persones. Incloent els meus padrins, una generació més, quatre persones més ja que serien pare i mare del meu pare i pare i mare de la meva mare, som 7 que també quadra amb el 2 ^ 3 - 1 = 7 d'un arbre binari de 3 nivells. Per inducció sobre el nombre de generacions N generacions implicarien 2 ^ N - 1 nodes, o altres tantes persones, que serien tots els avantpassats directes de l'arrel a través del temps passat fins a la N-èssima generació, no?
Una altra propietat interessantissima dels arbres binaris és aquesta: cada nivell (en direcció contrària a la de l'arrel, cap a les fulles) té el doble de nodes que el nivell anterior. A més el darrer nivell, el més "ample", té tants de nodes com a la resta de l'arbre més un. Per això els meus quatre padrins i padrines són quatre, i els meus pares i jo som tres.
Ara considerau el concepte de generació. Si ho pensau bé, és la edat mitja a la qual es tenen fills. Els experts estan més o manco d'acord en que fins a la edat mitjana era d'uns 25 anys, i que ara és al voltant dels 25-30 anys. A èpoques anteriors pot arribar a baixar fins als 15 anys o això.
Agafem un període de temps gran però durant el qual sabem que han existit els nostres avantpassats, per exemple 2000 anys, des de l'any 1. I agafem una durada de generació de 30 anys, com a aproximació pessimista del nombre de generacions (segurament en calcularem menys de les que realment han passat). No vos preocupeu dels detalls de si s'hauria de comptar l'any zero o de si la durada real de generació mesurada per les intel.ligències superiors que estan estudiant la nostra espècie amb total precisió ja que el nostre món no és més que una simulació ha estat de 22.756323 anys en lloc de 30. El problema plantejat al final és en termes d'ordres de magnitud i això no l'afecta per res. Amb aquest exemple, en 2000 anys hauriem tengut unes 66.666 generacions de 30 anys, i per donar-li un aspecte menys diabòlic i encara més pessimista pel que fa al nombre de generacions diguem que surt 64.
No pareixen moltes, fins que proves de calcular 2 ^ 64 - 1, i crec que me permetreu ignorar completament el menys u del final perquè no pinta gaire. Jo mateix, descendent de gent que sense cap dubte existia fa dos mil.lenis i que ha existit (també sense cap dubte) de forma continuada durant aquests dos mil.lenis, tenc dos elevat a seixanta-quatre ascendents directes? Perdonau-me, però... collons que de gent!
Tenim una població mundial estimada de sis mil milions (6.000.000.000) de persones. Hi ha més població que mai, abans n'hi havia molta menys, si mirau gràfiques de població veureu que el creixement és brutal. Concretament fa dos mil anys la població estimada era d'entre cent i quatre-cents milions de persones (és a dir fins a 400.000.000, però varia molt segons els autors).
El problema que tenc és... segons el meu fantàstic arbre binari, en només 2.000 anys han fet falta 2 ^ 64 = 18.446.744.073.709.551.616 persones per arribar a mi! Certament és contra-intuïtiu. Quin és el problema? El càlcul està bé i realment ha nascut i mort tanta gent? O està malament? El model de l'arbre binari està molt simplificat, sí, però en principi a base de descartar gent, com ara germans, germanastres o múltiples parelles. O sigui, que si fos per aquestes simplificacions realment hauria d'haver-hi més gent.
L'altre problema és el de les fulles de l'arbre. Si vos pareix que 2 ^ 64 és un nombre gran, vos assegur que 2 ^ 63 també ho és, i molt, perquè és "només" la meitat, i se suposa que això és el que hi ha a les fulles de l'arbre, al darrer nivell, al més antic, al més llunyà de l'arrel. És centenars de milers de milions de vegades (li falta un ordre de magnitud o dos per poder dir senzillament "bilions") més gran que el nombre de persones que sabem que hi havia fa dos mil anys.
Tal vegada s'havien de tenir en compte possibles "repeticions" en els nodes de l'arbre, ja sabeu, parents que tenen fills junts. Però... tantes repeticions!? I el model dels nivells i les generacions no és perfecte, la gent no va sincronitzada per generacions. A més, hi pot haver persones de generacions distintes que tenguin fills juntes. De totes formes l'edat a la qual es poden tenir fills està relativament limitada a les primeres dècades, sobre tot si retrocedim mil.lenis.
Au, va, donau-me solucions. Què falla? ;-)
Per cert, volia provar els Google Groups de manera que n'he creat un anomenat lliure.info per discussions relatives a aquest bloc. No són els típics comentaris associats a articles, que no m'interessen massa. És més com una llista de correu, amb els seus threads i tot. En general no pensava organitzar un sistema de comentaris per al bloc, però en casos com aquest la cosa no té tanta gràcia sense feedback...
2005.06.22 22:17:20
Cosmos 1 - Humanitat 0
Ei... ja sabeu que el que compta no és quantes vegades caus, sino quantes vegades t'aixeques! Això té molt mala pinta, me pareix que hem perdut la Cosmos 1. Me sap greu perquè era una bona causa, i perquè una minúscula part de la missió la vaig pagar jo. Pareix que l'antic missil balistic intercontinental ex-soviètic Volna (amb base a un submarí) ha fallat i la càrrega útil no ha arribat a la òrbita prevista.
A la llarga (molt a la llarga) si volem sobreviure com a espècie ens haurem de moure. Els llocs no són eternament segurs, en general. Ja sé que falta molt, però és un objectiu prou important i impossible d'ignorar mentre continui la nostra existència i quedi qualque possibilitat de supervivència. Per tant... a aprendre dels errors i a intentar-ho fins que surti. Potser d'aquí molts milers d'anys ens recordaran amb afecte, o se'n riuran dels nostres intents primitius, o ens ignoraran completament, o no quedarà ningú per fer res de tot això. Però ara mateix la nostra responsabilitat és fer tot el que poguem tan bé com poguem per donar les primeres passes.
Res, a llegir una mica de Carl Sagan, que anima molt, i a seguir treballant :-)
2005.06.19 17:54:43
Desenvolupament Divertit
Aquests dies (ja en fa uns 10) estic dedicat "full time" al projecte de fi de carrera. I d'aquesta manera fins que l'acabi. S'han acabat totes les bromes ;-)
El faig com m'agrada a mi fer les coses de sistema i de xarxa, en C pelat, vim, make... Això té avantatges i inconvenients. En general resulta divertit. Aprenc coses noves, i millor les que ja conec. Au, vos pas una petita llista de "trucs" i eines (ben documentats i des de fa temps O:-) que m'han alegrat aquests dies:
Definitivament SubVersion s'ha de provar. Dóna mil voltes al CVS. Els avantatges no es poden comptar. El coneixia damunt el paper, pero mantenia tots els meus projectes en CVS per costum. Ricardo, gràcies per recomanar-me el pas a SVN!
Quan programes en llenguatges d'alt nivell, o en C sense baixar gaire, no passa res. Però quan programes a un nivell relativament baix, i te poses a gestionar memòria i punters tu mateix, el C és propens a deixar-te passar errors que provoquen problemes en temps d'execució en general mals de detectar. Ni vos imaginau de quina manera ajuda a destapar errors d'aquest tipus el fet de desenvolupar i provar els programes damunt un parell de plataformes (i guanyes portabilitat entre quasi tots els UNIX si programes una cosa que funciona damunt dos o tres). Jo ara mateix ho faig funcionar tot damunt GNU/Linux sobre PPC i x86, i damunt Darwin sobre PPC. Per tres ó quatre vegades m'he pensat que un programa estava bé i quan l'he provat damunt una arquitectura distinta ha petat miserablement, i ha resultat esser un error genèric que no es manifestava habitualment a altres arquitectures. Per exemple, un malloc d'un byte de menys que feia que el programa escrivís a una posició que se suposava que no havia de tocar. Als PowerPC (per temes d'alineament de paraules) no petava quasi mai, i als x86 petava quasi sempre.
Parlant d'errors d'aquests, he "descubert" una feature bonissima de la glibc actual, que permet activar un mode de depuració de la gestió de memòria: basta donar-li valor a la variable d'entorn MALLOC_CHECK_. Si no val res, comportament per defecte, com sempre. Si val zero, ignora tants d'errors com sigui possible a veure què passa. Si val u, imprimeix un missatge per a cada error. Si val dos, atura el programa (abort) al primer error. Tot això resulta molt útil perquè aquests tipus d'errors sòn molt fotuts. Moltes vegades no els veus quan es produeixen, no saps ni que existeixen. El programa peta després, a un lloc que pareix que no té res a veure, que toca memòria corrompuda per algun altre tros. Però no sempre. Ningú hauria de programar sense aquesta punyetera variable activada durant les proves, per anar trobant i eliminant els bugs des del principi (un que fot moltissim és el d'una cridada a free() que fa un Segmentation Fault, i resulta que la causa és a l'altre punta del programa, que fa qualque desastre amb la memòria que t'havia donat un malloc() -relacionat o no- amb el tamany mal calculat). Si l'activau habitualment, veureu com hi ha molts de programes que feu servir cada dia que estan plens d'errors de gestió de memòria ;-)
Sobre la depuració en general... ja ho sabeu, però gdb rulez. No he vist un depurador millor, mai. Compilau els vostres programes amb -ggdb i disfrutau la depuració ;-)
I sobre el rendiment... he fet una petita llibreria de recorregut recursiu de subdirectoris. Partint de zero. I no m'he aturat fins que he aconseguit un rendiment comparable al de la comanda find. Com he detectat el codi més lent per decidir on havia d'optimitzar primer? Molt fàcil, he compilat amb -pg. Això fa que el programa quan s'executa generi informació de "profiling" dins un fitxer anomenat gmon.out, que es pot interpretar executant "gprof programa gmon.out". Això produeix una sortida amb estadistiques del temps que es passa el programa a cada funció, amb percentatges i tal i qual, tot desglosat d'una manera molt clara.
Més coses, però ja està bé per avui, me'n torn a programar que aquests dies estic a tope i he d'aprofitar ;-)
2005.05.27 09:09:25
http://lliure.info/
Au, m'he comprat un domini nou. Els punt info són barats. Ara aquest bloc estarà com sempre a http://guillem.cantallops.net/nanoblogger/ però també a http://lliure.info/ que esper que resulti més fàcil de recordar, o com a minim de teclejar. I a mi m'agrada O:-)
2005.05.26 22:14:21
Ono limita P2P?
Bé, en teoria Ono no limita res més que l'amplada de banda contractada, per exemple en el meu cas 4000Kbps de baixada i 150Kbps de pujada, independentment del tipus de tràfic.
El problema és que pareix que el tràfic P2P es limita "automàgicament" a uns 600Kbps, i ningú troba una explicació raonable per a aquest fenòmen. A la Bulmailing hem començat a sospitar que aquesta limitació és intencionada i d'amagat. Jo personalment voldria equivocar-me. En tot cas esper que si la limitació existeix, i és dificil d'assegurar categòricament però les mesures pareix que indiquen que existeix, sigui una situació temporal que s'arregli aviat.
Jo personalment estic content del servei d'Ono perquè en general la baixada és molt estable i igual o lleugerament superior a la contractada, i la latència és molt bona. Les meves Debians s'actualitzen a una velocitat espectacular, des del canvi a 4Mbps de baixada. Però tenc dues crítiques constructives, hi ha dues coses que voldria que millorassin. La primera és la pujada ridícula de 150Kbps, que a més és pràcticament un secret perquè és dificilissim trobar-ne referències explícites a la web, no l'anuncien gens. I la segona és aquest filtrat, que pràcticament sabem que existeix perquè la poca pujada no justifica tan poca baixada a les xarxes P2P, com hem pogut comprovar (mirau els missatges del fil que he enllaçat abans).
Jo no som un gran usuari de les xarxes P2P, però el tràfic d'aquest tipus, per se, el trob d'allò més legítim i de vegades fa falta fins i tot als que utilitzam programari lliure. Per exemple per baixar les darreres imatges de DVD de Kubuntu, no queda més remei que tirar de BitTorrent. I realment baixar a 70KB/s quan el servei que estàs pagant hauria d'anar alegrement per damunt dels 450KB/s és frustrant.
Bé, quan la situació millori (que segur que millorarà) vos avisaré a aquest mateix bloc :-)
2005.05.26 21:30:47
Nota mental: NTP!
Bé, el servidor nou venia malament d'hora. Per això hi ha hagut un petit embolic amb el post anterior. Perdonau. Sortia amb data de demà dematí. Després he posat el servidor en hora amb ntpdate i he corregit el post. Com que els enllaços permanents que fa el NanoBlogger estan basats en la data i l'hora del post, segur que ara hi ha més d'una copia incorrecta del feed que apunta a un post que no existeix. Bé, aviat s'arreglarà, en tornar a refrescar, i aquí no ha passat res O:-)
Sobra dir-ho, però... si teniu una màquina encesa les 24 hores pensau a posar-li ntp, i si no com a minim instal.lau-vos ntpdate que vos posarà el rellotge en hora cada vegada que arranqueu. Ja que la màquina té rellotge, que vagi bé, o no?
Una cosa que sempre m'ha fet gràcia, no sé de qui és la frase: "una persona amb un rellotge sempre sap quina hora és; una persona amb dos rellotges mai està segura". Jo afegiria que una persona amb un rellotge que va malament té més tendència a equivocar-se que una persona sense rellotge X'-D
Actualització: meeeerd...! Ara resulta que he posat el servidor en hora UTC (m'agrada tenir-los tots així) però l'hora corregida del post com que l'he posada a mà és hora local, i el post anterior segueix surtint el primer. Bé, és igual, pas de tocar-ho. A partir d'ara tot anirà bé. Com a minim, les hores dels posts aniran bé...
Actualització2: au, ja està, ja ho he fet, feia mal als ulls veure-ho tot desordenat. Me sap greu pels que s'hagin trobat un error 404 degut al procés de canvi de noms dels arxius. No ho faré més O:-)
2005.05.26 20:22:07
NanoBlogger Reloaded
Bé, això del NanoBlogger va de simplificar, de manera que he simplificat, esper que per millorar. Aquests són els canvis, esper que no resultin traumatics...
- Maquinari nou: en lloc d'estar a un servidor virtual de $19 mensuals, ara això està damunt un servidor dedicat de $29 mensuals. Un AMD Sempron 2400+. Veurem si aguanta. Com a minim és barat i molt, molt més potent que un petit percentatge d'un Pentium 4. En lloc de tardar un parell de minuts en regenerar tot el bloc, ara tarda un parell de segons. Només per això val la pena! :-D
- Programari nou: Un kernel 2.6.11.10 afinat, que és una gran millora si el comparam amb el 2.4.x genèric que havia de tenir a la màquina virtual per nassos. Apache2, que és molt més fàcil d'administrar i configurar. I NanoBlogger de CVS pur, sense cap personalització ni una. A partir d'ara si trob qualque cosa millorable li enviaré un patch a l'autor. No vaig de mantenir forks sense motiu :-P
- Configuracions noves: El NanoBlogger està pelat al màxim. Full d'estils per defecte. Sense categories, perquè total no sabia mai com classificar els posts, i no estic segur de que sigui útil fer-ho. I sense motor de comentaris, perquè la gent en posa pocs i suposa un risc de seguretat innecessari. Els que me vulguin dir coses importants sabran trobar-me ;-)
Un detall important és aquest: ara un post nou és quasi instantani, abans tardava de l'ordre dels minuts al servidor virtual. Esper que això m'animi a escriure més i millor.








