Gentoo trick: USE flags amb que s’ha instal·lat un paquet
La tonteria tan gran que posa el títol sovint em fa tornar tonto perquè mai recordo la comanda així que me la guardo aquí:
# equery uses gnumeric [ Colour Code : set unset ] [ Legend : (U) Col 1 - Current USE flags ] [ : (I) Col 2 - Installed With USE flags ] U I [ Found these USE variables in : app-office/gnumeric-1.2.0 ] - - libgda : Adds GNU Data Access (CORBA wrapper) support for gnumeric - - gnomedb : unknown + + python : Adds support/bindings for the Python language + + bonobo : Adds support for gnome-base/bonobo (Gnome CORBA interfaces)
L’exemple esta extret del handbook de gentoo, on no només es dona aquest solució a través d’un paquet del gentoolkit sinó que també hi ha una altre solució amb l’emerge.
emerge --pretend --verbose mozilla These are the packages that I would merge, in order: Calculating dependencies ...done! [ebuild R ] www-client/mozilla-1.7.12-r2 USE="crypt gnome java mozsvg ssl truetype xprint -debug -ipv6 -ldap -mozcalendar -mozdevelop -moznocompose -moznoirc -moznomail -moznoxft -postgres -xinerama" 0 kB
PHP4 vs PHP5
Tot llegint el PHP|Architect’s Guide to PHP Design Patterns (isbn: 0973589825) vaig trobar fa un parell de dies un petit llistat de quines eres les diferencies fonamentals entre PHP4 i PHP5, a part del tòpic que amb el motor de Zend 2.1 ara tenim suport de OOP i de que tothom em digui que el model d’objectes que usa PHP5 encara és molt dolent doncs bé amb això podrem saber fins a quin punt ho és.
- Object handles
- Better constructors (uniform name, changing $this not allowed)
- Destructors now exist
- Visibility (public, protected, private for methods and attributes)
- Exceptions (an alternative to triggering errors using the new try{} catch{} syntax)
- Classconstants (defines using the class for a name space)
- Reflection (dynamic examination of classes, methods and arguments)
- Type hinting (specifying expected classes or interfaces for method arguments)
També hi podem trobar altres novetats una mica menys conegudes:
- New magic methods (__get() and __set() allow you to control attribute access; __call() lets you dynamically intercept all method calls to the object; __sleep() and __wakeup() let you override serialization behavior; and __toString() lets you control how an object represents itself when cast as a string)
- Autoloading (allows the end user to try to automatically load the class the first time a reference to it is made)
- Final (do not allow a method or a class to be overridden by subclasses)
A més hi ha coses com la part d’object handles que donen molt de si:
- Create an object by reference, as in $obj =& new Class;
- Pass an object by reference, like function funct(&$obj_param) {}
- Catch an object by reference function &some_funct() {} $returned_obj =&
some_funct()
En escència el que més m’ha agradat ho teniu resumit aquí, ja sé que esta en anglès però em feia una mandra brutal traduir-ho. Si m’animo un dia d’aquests donaré més detalls de com aprofitar aquestes avantatges per implementar design patterns amb PHP5. Realment ja comences a sentir-te com un programador de veritat quan veus que el PHP5 no té cap problema en suportar estructures que fins ara li quedaben tan lluny.
UML – Procés de desenvolupmanet OO de Craig Larman
Dels molts documents que he estat llegint les últimes setmanes especialment n’hi ha un de només 38 pàgines que l’he trobat ideal per fer-ne una guia de passos de com modelar un sistema OO amb UML. Aquest document bàsicament explica un mètodes anomenat de Craig Larman (wikipedia).
Doncs basant-me en aquest document amb el “tallar” i “engaxar” contra el meu wiki m’he fet un petit document resum ideal per usar com a eina de consulta durant el desenvolupament d’un projecte. És curiós perquè tret d’algunes frases per unir conceptes la resta l’he extret directament del document inicial i m’ha quedat força bé, almenys això em sembla a mi. Per altre banda, li vull agraïr a l’autor del document original Juan de Dios Bátíz Paredes la seva feina ja que m’ha estat molt útil, si voleu ampliar conceptes o veure exemples del que explica el meu resum obviament els trobareu al document d’aquest senyor.
Editant menú de GNOME
El Benja em va preguntar el divendres, com edito el menú del GNOME i jo vaig pensar ostres fa temps que ho vaig fer i no recordo com. De fet, el paquet base de GNOME 2.12 porta un editor força simple dels menús. Es tracta del gmenu-simple-editor, bàsicament només pensat per mostrar o ocultar opcions del menú. Però jo concretament avui m’he preguntat com podia fer apareixer als meus menús algunes aplicacions que no són natives de GNOME de fet són dues aplicacions que funcionen amb el motor JRE de Java i que volia poder cridar sense haver de sortir a la CLI.
Bé doncs, als fòrums de gentoo he trobat aquest thread Gnome 2.12.1 menu editor fails to launch. La solució ha vingut en forma d’una aplicació que ara mateix no esta al portage de gentoo però que té un ebuild al bugzilla de gentoo, concretament estic parlant de alacarte (bug 111376). Es tracta d’un editor molt senzill d’usar i molt semblant d’aspecte a l’editor que porta GNOME de serie.
Resumeixo els passos a seguir per instal·lar-lo:
# mkdir -p /usr/local/portage/x11-misc/alacarte/files # cd /usr/local/portage/x11-misc/alacarte/ # wget http://bugs.gentoo.org/attachment.cgi?id=72041 # PORTDIR_OVERLAY="/usr/local/portage" # export PORTDIR_OVERLAY # ebuild /usr/local/portage/x11-misc/alacarte/alacarte-0.8.ebuild digest # echo dev-python/pyxdg ~x86 >> /etc/portage/package.keywords # echo x11-misc/alacarte ~x86 >> /etc/portage/package.keywords # emerge x11-misc/alacarte
Amb això ja tenim l’aplicació llesta, si voleu veure l’aspecte que té:
Fa uns dies va sortir la versió 2.14 de GNOME tot i que encara no la tinc instal·lada i jo diria que ja porta un editor com deu mana de serie. El que no sé segur és si és el propi alacarte o un altre.
bookr – llegint llibres amb la PSP
Com ja vaig comentar quan em van regalar la PSP per l’última cosa que la penso fer servir és per jugar. Així que com que ja quasi he acabat el llibre que tenia entre mans i tinc un munt d’ebooks esperant-me avui m’he instal·lat el bookr un lector de .txt’s i .pdf’s per la PSP. Realment esta molt bé, malgrat li trobo un petit desfecte i és que quan les pàgines tenen imatges van una mica lentes. Però suposo que és perquè s’ha d’optimitzar una mica el codi de l’alicatiu, ja que jo diria que la PSP té prou memòria i CPU per fer-ho més ràpid. Fa un temps vaig provar el PSPPDF però la veritat és que era molt més cutre que el bookr tot i que jo diria que anava una mica més ràpid al processar les imatges.
El bookr jo diria que només funciona amb el firmware 1.5 que és el que jo tinc instal·lat, de totes formes amb els avanços que fan amb els loaders en les versions 2.0 i 2.5 del firmwar jo diria que algún loader deu ser capaç de llençar-lo. El meu problema és que només tinc una MMC de 32Mb la que venia de serie i no la penso canviar de moment. Així que tampoc hi puc posar tantes coses. Actualment però, m’hi caben 4 llibres d’entre 300 i 500 pàgines cada un a dintre. Així que ja em va bé.
E-Egine – 80 MHz Ethernet controller
El meu últim descobriment confessable sobre hardware enquestat, aquí el teniu tot un prodigi de la tecnologia. Un processador de 40/80MHz, 64KB de RAM, 2x RS232, 256KB de flash i moltíssimes cosetes més. Obviament podem disposar d’opcions impressionants com targetes de xarxa, compact flash de fins a 2GB, i moltes altres cosetes pròpies d’aquests equips com 20 I/O per controlar DAQ’s, etc.
A més el consum fa riure 200 mA aa 5V (amb totes les opcions). Perquè us feu una idea amb una bateria d’aquelles de 10x5x7cm que valen uns 6 a botigues d’electrònica en teniu per més d’una setmana sense haver de connectar-vos a llum, xulo,eh?!
A més a la web podem veure un escalat de preus molt llaminer. El cost és de $99/$84/$69/$49 per 1/50/100/+1000, atractiu,eh! si voleu una informació més datallada i ben estructurada doneu un cop d’ull al datasheet