diumenge, 30 de gener del 2011

Ja ha arribat LibreOffice 3.3

El que diu el títol del post. Des de fa uns quants dies, que ja està disponible el LibreOffice 3.3 i en català. Recordem que es tracta d'un fork creat per a mantenir-se com programari lliure pur i, d'aquesta forma, evitar que possibles canvis de política d'Oracle, els principals patrocinadors de l'OpenOffice.org , poguessin acabar amb la independència de la suite ofimàtica de referència en el món del programari lliure.


 En tot cas, estem parlant de l'OpenOffice.org de tota la vida, amb les millores i correccions que caldria esperar d'una nova versió, però sense grans canvis (potser el canvi més evident és que ja no apareix el logo d'Oracle en la pantalla d'inici).

LibreOffice 3.3, nova versió, nou nom, nova etapa. Però sempre Programari Lliure!

Des d'aquí el podeu descarregar.

diumenge, 23 de gener del 2011

Stored Procedures amb PostgreSQL

A l'hora de desenvolupar aplicacions web, una aproximació possible és la de mantenir la lògica de negoci implementada al servidor de base de dades en forma de procediments emmagatzemats, o stored procedures, o dit d'una altre forma:  hi ha vida més enllà d'Hibernate.

La utilització de procediments emmagatzemats pot aportar beneficis evidents: per exemple, ens podem estalviar un munt de transport d'informació entre el servidor de base de dades i el servidor d'aplicacions. També té problemes. Potser el més evident és que la base de dades es carrega amb el cost de processar la lògica, ara bé, per a una quantitat molt gran de processos de negoci, no hi han grans càlculs a realitzar i el cost es redueix, precisament a moure dades entre taules i càlculs simples.

En tot cas, és una opció a tenir en compte.

Els servidors de bases de dades MySQL, PostgreSQL o FireBird, potser els  més populars a Linux, permeten implementar  procediments emmagatzemats.

En aquest post faré un exercici senzill amb procediments emmagatzemats a PostgreSQL.

El cas de PostgreSQL és una mica especial: El llenguatge de procediments, el PL/PGSQL, no està disponible d'entrada. Cal "Crear-lo". O bé amb una instrucció CREATE LANGUAGE, o bé amb la utilitat createlang. Aquesta és l'opció que he triat.


albert@atenea:~$ createlang --dbname=proves --host=localhost --username=postgres --password PLPGSQL
Password: elmeupassword

La instrucció anterior "activa" el PL/PGSQL a la base de dades 'proves' que tinc al meu localhost. l'opció --password força que es demani el password de l'usuari.


Aleshores faig servir el pgAdmin III com a entorn d'administració  i obro una finestra de SQL

 Ala finestra hi escric una funció simple que suma dos números

-- Function: provasuma(integer, integer)
-- DROP FUNCTION provasuma(integer, integer);

CREATE OR REPLACE FUNCTION provasuma(val1 integer, val2 integer)
  RETURNS integer AS
$$
BEGIN
    /*
    Això és un comentari de més d'una línia
    */
    RAISE NOTICE 'suma %  i  %', Val1, Val2;
    RETURN Val1 + Val2;
END; 
$$
LANGUAGE 'plpgsql'

Coses interessants:
Només podem crear funcions.
Comentaris d'una línia amb --
Comentaris de més d'una línia amb /* ... */
El cos de la funció queda determinat per les marques $$
La depuració és un punt fluix i, en principi, fent servir el pgAdmin, o el psql, no ens en queda altre que depurar al vell estil amb printf, en aquest cas amb raise.
La sintaxi és molt similar a la de PL/SQL.

Cal indicar el llenguatge. Per defecte, PostgreSQL admet també les opcions plpgsql, internal,  C i SQL per al llenguatges. Ara bé, "internal" només serveix per a fer alies nous de les funcions ja disponibles, "C" és per enllaçar dinàmicament llibreries de funcions escrites i compilades en aquest llenguatge, "SQL" sí que permet fer funcions però només d'instruccions SQL separades per ";", finalment, "plpgsql" ens permet fer funcions amb estructures de control, llaços, iteracions...

Com a mostra, la senzilla funció que he escrit abans , també l'hauria pogut escriure com una funció del tipus "SQL":


-- Function: provasuma2(integer, integer)
-- DROP FUNCTION provasuma2(integer, integer);
CREATE OR REPLACE FUNCTION provasuma2(integer, integer)
  RETURNS integer ASemès per  'select $1 + $2'
  LANGUAGE 'SQL'


Les funcions  anteriors les puc invocar des de psql o pgAdmin


proves=# select provasuma(23,546);
NOTICE:  suma 23  i  546
 provasuma 
-----------
       569
(1 row)

O la segona d'elles:

proves=# select provasuma2(23,546);
 provasuma2 
------------
        569
(1 row)


on no apareix el missatge del RAISE.

Finalment, el llenguatge es descriu en aquest enllaç. El més destacable és que, sintàcticament, el PL/pgSQL i el PL/SQL d'Oracle són força similars, de forma que els programadors d'aquest  llenguatge del gegant de les bases de dades en tindran molt de guanyat. Més encara quan el PL/pgSQL vindria a ser un subconjunt del PL/SQL.

Per tal de facilitar la migració de codi de PL/SQL d'Oracle a PL/pgSQL de PostgreSQL en aquest altre enllaç trobem diferències entre tots dos i consells per a la  migració.

diumenge, 9 de gener del 2011

Després de Live Spaces… WordPress o Blogspot?

Fa cosa d’uns mesos vaig decidir que el servei de bloc que oferia Live Spaces de MS no era suficient ni competitiu. Jo estava acostumat a Blogspot i, realment, no hi havia color. El bloc de Live Spaces quedava molt per darrera de Blogspot.

La decisió d’impulsar el bloc tecnològic per a fer-lo l’embrió d’una comunitat i un projecte d’autoocupació  en tecnologia em va dur a la decisió de tancar el, malgrat tot, estimat bloc del Live Spaces i migrar-lo a Blogspot.

Aquella migració va haver de ser manual. Un cop realitzada, va portar una mica de feina però no tenia complicacions, vaig penjar el cartell de tancat, és dir, un post on redirigia al bloc de blogspot.

I la vida va continuar a Blogspot. Des del dia del tancament m’hi havia deixat caure al Live Spaces alguns cops. Poc més que per confirmar que havia pres la decisió correcta. I així ho veia.

Però en la darrera visita em vaig trobar amb la notícia bomba: Live Spaces tancava els blocs i oferia la migració dels mateixos a, atenció, la plataforma WordPress.

WordPress és una plataforma més que competitiva per a creació de llocs web, en general, i per a la creació de blocs en particular.

La cosa és que WordPress és un sistema de codi obert (Open Source), basat en PHP i MySQL  i que es distribueix sota llicència GPL. Es tracta doncs, de programari lliure.

No podia deixar d’escapar aquesta oportunitat i, per tant, vaig migrar el bloc de Live Spaces a WordPress sense dubtar-ho.

Ara, doncs, Serveis TIC i Programari Lliure disposa de dos plataformes pel bloc: Blogspot i WordPress. Ho trobo interessant perquè em permetrà agafar experiència en una  plataforma “nova” per a mi.  De moment el que faré serà posar els mateixos posts a totes dues i potser, més endavant, les acabaré especialitzant.

Reobrim la paradeta de Live Spaces (ara a WordPress!).