Thursday, May 27, 2010

Compilar PL/SQL des de l'Eclipse

Ara que tinc una aplicació que fa us intensiu d'Oracle PL/SQL i que també té Java haig d'anar canviant entre l'Eclipse i el que fan servir aquí per l'Oracle, el PL/SQL Developer. Com a més ara hem posat tot al Subversion (fins i tot el PL/SQL) i el PL/SQL Developer s'integra "d'aquella manera" fent servir el Tortoise SVN he vist la clara necessitat de fer-ho tot amb l'Eclipse.

Per poder-ho fer necessitava que Eclipse pogués compilar el PL/SQL. Les darreres versions (la 3.5 Galileo amb l'opció Eclipse IDE for Java EE Developers, per exemple) ja porten el Data Tools Platform per accedir a bases de dades, però Oracle ha fet un plugin propi que dóna millor suport per accedir a Oracle (a banda de fer altres coses amb el WebLogic). El plugin d'Oracle es pot instal·lar des del seu update-site: http://download.oracle.com/otn_software/oepe/galileo.

Tenim un altre problema afegit: la base de dades fa servir UTF-8. A l'hora d'exportar el PL/SQL de la BD el PL/SQL developer ens ha afegit uns caràcters estranys (EF BB BF) al començament del fitxer. Resulta que això és el Byte-Order Mark (BOM), una marca que indica l'ordre en el que van els Bytes (primer el petit o primer el gran, little-endian o big-endian) i que té mol sentit a UTF-16. No sé per què el PL/SQL Developer ha posat això. El cas és que en compilar has de treure aquests caràcters.

Ara que semblava que ja estava tot endreçat ens hem trobat que, en alguna ocasió, en compilar un package amb el caràcter interrogant ("?") l'havia substituït per dos punts i un número (com a :1), com si fos un placeholder per a variables. El text:
buf:= '< ?xml version="1.0" encoding="UTF-8"?>';
El convertia en:
buf:= '<:1xml version="1.0" encoding="UTF-8":2>';

I això ho feia només de vegades. No sabem si és el plugin o el driver JDBC.

M'he hagut de fer un muntatge per compilar el PL/SQL des de Eclipse, cridant al SQL*Plus com una External Tool. He definit una nova configuració d'eina externa apuntant a un BAT propi (tinc Windows XP), indicant-li el Working Directory el mateix on està el BAT i els paràmetres següents:
username/password@database ${selected_resource_loc}
Al BAT tinc el següent:
copy %2 _aux_.sql
call utf8bom -strip -file _aux_.sql
copy c:\atassani\sqlplus_bom\ini.txt+_aux_.sql+c:\atassani\sqlplus_bom\fin.txt _aux.sql
sqlplus %1 @_aux.sql
Al ini.txt tinc:
set define off
Al fin.txt tinc:
quit

Tots els meus fitxers de PL/SQL acaben en "/", tal i com els exporta el PL/SQL Developer.

La línea call utf8bom -strip -file _aux_.sql és l'encarregada d'eliminar el BOM, per què el sqlplus tampoc no sap manegar-lo. No he trobat cap manera fàcil d'eliminar el BOM de forma elegant i buscant per la xarxa tothom proposava que et fessis un programa. En un Linux es podria fer fàcilment amb un sed o un awk, però no al Windows. Per tenir una solució més portable m'he instal·lat el Perl i després el mòdul UTF8BOM tan fàcil com sempre al Perl:
perl -MCPAN -e "install UTF8BOM"

D'aquesta manera li treu el BOM només en el moment de compilar amb sqlplus.

Ara estic treballant en un altre script per que em pugui compilar un conjunt de fitxers PL/SQL, per exemple els que detecta subversion que he modificat.

Tuesday, May 25, 2010

Estic llegint: Choque de reyes

Choque de reyesDe George R. R. Martin. 1998 Publicat per Gigamesh. 924 pàgines.

La continuació de Juego de tronos., dintre de la sèrie de La canción de hielo y fuego. El més impressionant de tot és que després de tantíssimes pàgines l'autor continua sorprenent-te, aportant nous personatges i noves intrigues. La tècnica que fa servir de presentar-te cada captítol des del punt de vista d'un personatge diferent i el fet de que els personatges van evolucionant al llarg de l'obra et manté enganxat des de la primera pàgina.
Per les 350 pàgines que porto, fantàstic.

Dia de l'orgull friki

Avui, 25 de maig, es celebra el dia de l'orgull friki. La data va ser
triada per que coincideix amb l'aniversari de l'estrena de Star Wars.
Felicitats a tots i totes.

Thursday, May 20, 2010

Són quatre empreses

Amb la competència que hi ha ara sembla que l'única manera de sobreviure per a les grans companyies es fer-se més i més grans. Com a mínim és el que anem veient al sector informàtic.

Anem veient anuncis que les grans (Microsoft, Google, Oracle, HP, IBM, etc) van comprant companyies més petites (i no tan petites). L'altre dia HP anunciava que es quedava amb Palm. Però molt sovint se'ns queda la cara de tonto : "què la companyia X ara és de Y?".

I la que darrerament es portava la palma era Oracle. Es va menjar PeopleSoft (just quan s'havien menjat JDEdwards), Siebel, BEA (que era líder en servidors d'aplicacions), innobase (els que estaven darrera del component transaccional de MySQL) i la bomba va ser quan van comprar Sun (que just acabaven de comprar MySQL).

Sun són els pares de moltes tecnologies que han estat fonamentals pel desenvolupament informàtic. Amb l'adquisió de Sun Oracle posava un peu en el mon del hardware i dels sistemes operatius, però també es ficava a la butxaca el Java. I això sí que fa molta por.

I és que els moviments d'Oracle també són importants en la banda del OpenSource. Estan ficats de ple amb Eclipse, tot i que ara tenen dos IDE Java: JDeveloper i NetBeans. I també van comprar Berkeley DB, la base de dades que està darrera del Subversion.

I cal anar amb compte quan vas pensant en OpenSource, per què has de veure quines companyies hi ha darrera. JBoss i Hibernate, per exemple, són de RedHat. I el Spring Framework és de VMWare.

Tanta concentració fa por. De vegades penso en aquelles fantasies cyberpunk en les que no existien països ni fronteres, sinó que només hi havia grans corporacions. Més d'un portaria la senyera de Google, d'Oracle o de Microsoft. De tota manera crec que anirem veient més concentració encara. Qui serà comprat demà?

Sunday, May 16, 2010

Wubi: Ubuntu sense particionar

Ubuntu Wubi
Ja vaig explicar com he instal·lat Linux a un portàtil particionant el disc. En aquell mateix post vaig comentar que en una altra ocasió em vaig veure en la necessitat d'instal·lar Ubuntu en una màquina que no podia particionar i que tampoc volia tenir el linux Virtualitzat. Al rescat va venir Wubi.

El vaig conèixer de casualitat al campus de la UOC. Es tracta d'un instal·lador per Windows que instal·la Ubuntu com si fos una aplicació més, però el que fa és modificar el menú d'arrencada de Windows i instal·la tot el nou sistema operatiu en un fitxer. I el rendiment la veritat és que és sorprenentment bo.

El vaig instal·lar en dos portàtils, un amb Vista i un altre amb XP i va resultar fantàstic... d'entrada. En una actualització del sistema operatiu de Vista el Ubuntu em va deixar d'arrencar. Segur que si li dedico unes quantes hores el puc rescatar però no em ve de gust.

Resultat: sembla una molt bona idea però, per la meva experiència, pot resultar fràgil. He vist que ha evolucionat molt (es troba en la versió 10) i potser ja no té els problemes que vaig trobar. En qualsevol cas és una possibilitat més per fer conviure Windows amb Linux.

Friday, May 14, 2010

Estic llegint: El hombre sonriente

De Henning Mankell, 1994. Publicat per Tusquets. 399 pàgines.

Fa uns anys vaig llegir La falsa pista i em va captivar. Des d'aquell moment he volgut llegir tot el que ha escrit Henning Mankell, sobretot les del detectiu Kurt Wallander, i he anat agafant les seves obres una darrera d'altra:
Asesinos sin rostro, Los perros de Riga, La leona blanca i ara m'han deixat aquest.

I és que aquest inspector de policia Suec d'uns cinquanta anys és tan humà i tan entranyable que els errors o exageracions que de vegades deixa caure l'autor se li perdonen. I tots els personatges de recolzament, la família, els altres policies, l'amic dels cavalls o la pròpia ciutat d'Ystad resulten apassionants.

Els problemes familiars amb el seu pare, la relació amb la seva filla (que en aquesta novel·la encara no ha sortit), el caràcter solitari del protagonista, el record del seu amic Rydberg, el comisari Björk, el fiscal Per Ǻkeson, els companys Martinsson, Svedverg i Anne-Brit Holgrund, el tècnic Nyberg, ...

No em va acabar d'agradar Los perros de Riga però amb aquest he recuperat al Wallander que més m'agrada.

Sé que existeixen unes pel·lícules sueques (o una sèrie) que han estat donant per la tele, però no he vist cap. No vull que em passi com amb Millenium. El que sí que he llegit és que han fet una sèrie de televisió britànica de Wallander protagonitzada per Kenneth Branagh i que ha rebut molts premis. Sembla que l'han donada en castellà per TNT. Caldrà fer-li un cop d'ull.

Thursday, May 13, 2010

Tuneladora

Ahir van passar a revisar les esquerdes de l'edifici on treballo. I és que ha de passar la tuneladora per aquí a prop i cal saber si espatllaran alguna cosa.
Ara em pregunto si la fantàstica vista que tinc de de la finestra de l'oficina me l'espatllaran. Seria una llàstima no acabar aquest etern under construction...
La Sagrada Familia

Tuesday, May 11, 2010

Estic llegint: Version control with Subversion

Subversion bookDe Ben Collins-Sussman, Brian W. Fitzpatrick & Michael Pilato, 2004 . Publicat per O'Reilly. 275 pàgines.

Directament de la biblioteca d'Omatech m'he agafat aquest llibre per sobreviure en el mon de Subversion en el projecte que estic ara i amb la meva experiència amb CVS.
Porto més de la meitat i la veritat és que està força bé i va molt pas per pas.

Per tractar-se d'un projecte Open Source, que acostumen a tenir una documentació pobre, aquest llibre està molt, però que molt bé. A més a més és un llibre lliure. O'Reilly l'ha publicat en paper, però te'l pots descarregar o el pots llegir on-line de manera gratuïta a http://svnbook.red-bean.com/.

Espero arribar a que m'expliquin com resoldre els pollastres quan et lies fent copy sense svn copy, o quan fas un reanomenat on només canvies majúscules per minúscules. En aquests casos la còpia local se'm queda en un estat inconsistent i l'únic que puc fer es tornar-me a baixar de nou tot el codi del repositori en una nova carpeta i canviar els fitxers que havia tocat.

Formació d'arquitectura Java

He tingut la gran sort d'assistir a una formació d'una setmana que han impartit uns consultors de Brasil. El curs era d'un seguit de tecnologies, arquitectures i infraestructures de desenvolupament.

Està molt bé veure que els mecanismes de desenvolupament i els frameworks pels que ara s'aposta son 100% Open Source i les metodologies àgils.

Algunes de les lliçons apreses:
  • L'IDE java a fer servir es Eclipse, el sistema de control de versions Subversion i el servidor d'aplicacions JBoss.
  • L'eina per a construir es Maven 2, tot i que em pogut experimentar que l'integració amb Eclipse encara dóna molts mal de caps.
  • S'aposta per proves unitàries (amb TestNG més que amb JUnit) i integració contínua amb Hudson.
  • PL/SQL, el just. S'ha de fer tot el possible a la banda del Java i la base de dades ha de ser nomes per guardar les dades. Encara s'aposta per Oracle (és de les poques coses no Open Source que entren).
  • On sigui possible fer servir estàndards i guarda-se molt de les extensions propietàries.
  • Fer servir JMS per tot el que siguin integracions. Apache Camel és una passada.
  • Tot es fa al voltant de Spring 3, que comparat amb Spring 1 és d'un altre planeta. El que està molt bé és que algunes parts de la configuració les pots fer amb annotations.
  • Els EJB amb annotations són molt senzills d'implementar.
  • La persistència amb JPA és molt fàcil i cal pensar en objectes i treure's el vici de pensar en taules.
  • CXF per a Web Services, fins i tot RESTful és molt senzill.
Un dels formadors feia servir Windows 7 i l'altre Mac OS, i el de Windows va haver de reiniciar la màquina més d'un cop per problemes amb els ports i ActiveMQ. El del Mac es passava tota l'estona a la línia de comandes.

Poder fer un curs, tan extens i amb contingut pràctic ha estat tota una sort. De vegades a les empreses no es valora prou l'inversió en formació.

Monday, May 10, 2010

Reflexions al voltant de Snow Crash

Quan vaig fer el comentari després d'acabar la novel·la Snow Crash de Neal Stephenson, se'm va oblidar de comentar un parell de coses.

Noms dels personatges
Els protagonistes es diuen Hiro Protagoinst i Y.T., que en castellà és T.A., com comenta el propi traductor en aquest enllaç que ja vam comentar. Hi ha un altre personatge amb un nom que em va fer molta gràcia: un filipí que es diu Transubstanciación però li diuen Trani.

memes?
Al llibre es fa referència a una cultura Mesopotàmica en la que els coneixements eren emmagatzemats i gestionats per uns sacerdots. Cada coneixement (que pot ser, per exemple, com fer pa) al llibre li diuen em. Aquests em i altres referències a la transmissió de coneixement em va recordar al concepte de meme que va crear en Richard Dawkins a El gen egoísta.

Llibres digitals i història
Un element important al llibre és un antic document de Mesopotàmia, una planxa d'argila amb escriptura cuneiforme. A banda de jugar amb la idea de que aquesta escriptura podria recordar una successió d'uns i zeros, el que em va impactar va ser un comentari entre els protagonistes. Parlaven que ens ha arribat molta més escriptura de les cultures mesopotàmiques que no pas dels egipcis, per què l'argila s'ha conservat molt millor que el papir. Dels egipcis només ens ha quedat la seva arquitectura.
Clar, pensant en la volatilitat dels sistemes d'emmagatzemament d'informació de cara als arqueòlegs del futur. El paper potser no és un material tan resistent al pas del temps com l'argila, però els llibres digitals ho posaran molt més difícil.

Saturday, May 8, 2010

Estic llegint: Snow Crash (acabat)

Snow Crash (cover)M'ha resultat interessant, però tampoc no mata (llegit ara, és clar). Té moltes coses que en el seu moment havien de ser totalment trencadores i té coses molt divertides.

M'ha fet gràcia una cosa. En el post que vaig fer quan començava a llegir-lo vaig comentar que la traducció no era bona. Se'm va acudir buscar algunes paraules que surten al llibre, per què no sabia el significat en castellà. Fent la cerca vaig descobrir que eren paraules inventades per l'autor i ho vaig llegir a un comentari del propi traductor.

En aquest comentari el traductor, Juanma Barranquero, comenta les dificultats que té la traducció, l'ús que es fa de l'anglès, el tractament que fa a les paraules inventades i algunes justificacions de les seves decisions. Buscant més, he trobat una crítica de Snow Crash on justament s'elogia la tasca del traductor. I el que més gràcia m'ha fet ha estat trobar un post d'una blogger criticant l'ús incorrecte (segons ella) que es fa al llibre del terme "americans" per ciutadans dels Estats Units. I aquest post té una resposta del propi traductor. I al mateix blog, a una rèplica del post anterior, també participa l'autor i la correctora.

Un cop llegits els comentaris de la traducció m'haig de desdir. Segur que va ser una feina molt complexa i el traductor ha fet una bona feina per apropar-nos l'esperit de la obra. El que em mantinc és en la dificultat de la lectura per l'edició super petita i moltes errates que no sé si són d'edició, d'impremta o de qui sigui.

Un bon llibre, però em quedo amb el Criptonomicón.

Tuesday, May 4, 2010

De CVS a Subversion

Des de que vaig conèixer els sistemes de control de versions els faig servir sempre que haig d'editar codi, encara que siguin els enunciats de les pràctiques de la UOC.

Des de fa molts anys he fet servir CVS (Concurrent Versions System) i estava encantadíssim. L'he instal·lat i configurat amb Windows i Linux, i he tingut estones molt "entretingudes" resolent problemes de branques, arxius ignorats, monitorització de canvis, publicació a través de firewalls, etc. Una cosa que m'agradava molt era que totes les dades del repositori eren text pla, així que resoldre alguns problemes era tema de grep i res més. Sentia parlar de subversion, però el fet de tenir el repositori en binari i que la integració amb Eclipse encara no era molt bona, feia que no em decidís.

Al projecte on sóc ara s'ha decidit fer servir Subversion (també conegut com svn), així que toca aprendre. Sembla que els conceptes de CVS s'apliquen directament i, de fet, era una cosa que van tenir en compte els creadors de Subversion: posar-li les coses fàcils als que venien de CVS.

M'ha sorprès que sigui tan fàcil d'instal·lar al Windows. Hi ha diferents maneres d'accedir al repositori. La més habitual és fer servir el protocol http, però requereix configurar un Apache. Jo, de moment, estic atacant amb el protocol svn i aleshores sí que és fàcil d'instal·lar. Jo he seguit aquest tutorial d'instal·lació de subversion. Per arrencar el servidor només s'ha de fer:
C:/> svnserve -d -r c:\svn-repo
Per instal·lar-lo com a servei he fet el següent:

C:/> sc create svn.local binPath= "\"C:\Program Files\Subversion\bin\svnserve.exe\" --service --root c:\svn-repo" DisplayName= "Subversion Repository"

Per fer-me més fàcil l'adaptació he llegit el The Top Ten Subversion Tips for CVS Users.
D'entrada el més diferent és el mecanisme de etiquetes (tags) i branques (branches). En comptes d'etiquetes sobre el codi el que es fa és una còpia de tot el projecte. El que passa és que a subversion manega aquestes còpies de manera que són molt eficients. Per aquesta raó, la configuració de les carpetes de projecte s'acostuma a fer de la següent manera:
  • projecte
    • tags
    • branches
    • trunk
Una vegada un company va confondre trunk amb el HEAD del CVS, però el subversion també té el concepte de HEAD. A trunk és on està el codi més actual del projecte i que es va evolucionant. A trunk hi ha una història, i pots recuperar el trunk de fa N dies. La darrera revisió del trunk és el HEAD. Fer una etiqueta (un tag) és fer una còpia del codi a la carpeta tags. El codi dintre de tags no s'hauria de canviar.

Una altra cosa diferent és com gestiona el números de les revisions. A CVS cada fitxer té un número de revisió diferent. El número té un format diferent si estàs a una branca. A Subversion, cada vegada que fas un commit el número de revisió de tot el projecte s'incrementa. Si faig un commit del fitxer A i em retorna el número de revisió 16. Quan faci un commit del fitxer B, em retornarà el número de revisió 17.

Una funcionalitat que em semblava fantàstica de CVS: el keyword expansion. Si en un fitxer poses el text $Id$ (per exemple) el CVS quan treguis el fitxer del repositori et substiturià l'etiqueta per tota la informació del fitxer (nom, autor, versió, data de darrera modificació). Això va molt bé per tenir identificades les versions de cada fitxer quan el projecte surt de l'entorn de desenvolupament. Sembla que aquesta característica no està habilitat per defecte a subversion, però he trobat un document que explica com es pot activar le keyword expansion a subversion. Espero dominar més el tema, però de moment tinc aquesta xuleta:
  • A l'Eclipse fer clic amb el botó dret a la carpeta del projecte, triar Team=>Set Property
  • Posar el nom de la propietatsvn:keywords
  • Posar el text de la propietat: Author Date Id Revision HeadURL
  • Marcar "Set property recursively"

He estat fent servir el subversion des d'Eclipse (integració excel·lent), amb línia de comandes Linux i amb el TortoiseSVN i es veu molt madur tot plegat i cada cop veig més els avantatges davant CVS.

Hi ha més coses que xoquen d'entrada, però cada cop em sento més còmode. També m'estic llegint un llibre de Subversion que m'està ajudant força (i que ja comentaré al Estic llegint).

Ara toca adoctrinar en l'ús de subversion, resoldre incidències dels desenvolupadors i, el més difícil, convèncer a desenvolupadors de PL/SQL a que és millor que no codifiquin directament sobre la base de dades.

Saturday, May 1, 2010

Disponible Ubuntu 10.04 LTS

Ahir el meu ubuntu 9.10 "Karmic Koala" em va avisar que hi havia una nova versió disponible i em vaig llençar a instal·lar-la. Es tracta d'Ubuntu 10.04 LTS "Lucid Lynx" (Long Term Support, suport per tres anys en desktop).

Sembla ser que pels usuaris de la 8.10 "Hardy Heron" (el que tinc al meu sobretaula) ens haurem d'esperar a la versió 10.04.01 del juliol.

La instal·lació ha estat indolora, però em fa molta ràbia que vagi demanant coses a mig procés. M'ha trigat entre dues i tres hores, entre descarregar i instal·lar, però entre mig m'ha demanat coses, així que realment m'ha trigat més.

Han canviat algunes coses en apariència. Fa gràcia que, en la configuració per defecte, els botons de control de cada finestra (minimitzar, maximitzar i tancar) surten a l'esquerra de la finestra i no a la dreta. Una localització més Mac que la clàssica Windows. Pels que no vulguin adaptar-se encara poden recuperar la forma de sempre des del menú "Sistema>Apariència".

He notat altres petits canvis, però encara no són significatius.

Sí que m'ha fet gràcia el nou OpenOffice.org, que deixa patent l'adquisició de Sun per part d'Oracle. Recordem que el codi d'OpenOffice surt del del StarOffice de Sun, ara Oracle OpenOffice.
El logotip d'Oracle surt al splash screen d'inici de l'aplicació.
Splash Screen d'OpenOffice amb el logo d'Oracle