20060829

Ubuntu Christian Edition, paraula de Deu

Acaba d'apareixer la Ubuntu Christian Edition, en aquesta distribució s'inclouen bloquejadors de porno així com una compilació del millor software cristià (sic)

El seu lema es "Quin sistema operatiu utilitzaría Jesus ?"

No us perdeu el logo de "El pez de Jesús" !!!

via Boing Boing

Nuevas siglas, para una nueva era

1. PTMCCS
Perdón, tu mail cayo en la carpeta de spam

2. TPVG
Todavía puedo ver google (prueba que demuestra que internet funciona)

3. BAC
Bloggeando alto y claro

4. ES
Es Spam ? (normalmente respondido con EES: Esto es spam en los programas de correo)

5. CPEUP
Cuando Plutón era un planeta (nostálgico, por ejemplo, CPEUP, trabajaba para Microsoft)

6. DDP
Depende del precio (habitual respuesta a la pregunta, "Puedes programar este site web 2.0?")

7. YTCEBDTPM
Yo tampoco conozco el blog de tu *#@%&& Madre (Cuando alguien afirma que no conoce tu blog)

8. VUSE
Vender una start-up en Ebay (normalmente a los 3 o 6 meses)

9. HSM
He sido Meneado (variantes: He sido slashdoteado, he sido boingboingeado, he sido fresquiado ???)

10. EEW2
Es esto Web 2.0 ? (como en, ok, ok, pero ... Es web 2.0 ???)

Si se os ocurren más ...

Post original en google blogscoped

20060824

Creen el primer emulador de Commodore 64 sobre Flash


L'emulador de Commodore 64 sobre Flash9 en acció
friky foto

FC64 es el primer emulador del mític ordinador personal dels 80, el Commodore 64, aquest emulador està sota llicencia GPL.

Els desenvolupadors esperen que la família d'emuladors creixi amb altres incorporacions, ja que el sistema esta pensat per ser extensible.

S'inclouen ROMs d'alguns jocs, com el de la imatge, per poder veure "live demos" en funcionament.

Es necessita tenir Flash9 per poder executar l'emulador.

Web
via boing boing


20060822

Desinformació a la vaga dels treballadors d'Iberia al Prat

Normalment no faig posts sobre temes polítics, això és un blog de frikades vàries, no de política.

Però es que després de molt donar-li voltes al tema, discutir-ho amb amics amb una copa de més i amb la perspectiva que dòna el temps, començo a enterar-me realment del que va pasar al aeroport del Prat el dia 28 de juliol.

Com sempre, la desinformació va estar a l'ordre del día, i no precisament per la longitut de les notícies dels informatius, on la noticia va ser àmpliament coberta, sinó pel contingut dels videos que van crear aquests informatius.

Com a exemples, us poso els videos del youtube, on MAI i repeteixo MAI es parla del conflicte, amb la perdua (forçada per part de la companyia) del handling per part d'Iberia al aeroport del Prat, no s'entrevista MAI a cap representant dels treballadors, i nomes TV1, fa alguna referència a les negociacions entre la companyia i els treballadors.


Notícies TeleMadrid


Notícies Antena 3 (el més indignant)


Notícies TeleMadrid


Notícies TV1


Notícies TV1


Vergonyós !


Em recorda molt a la vaga general de C C O O, us enrecordeu ?


Urdazi Power !

Atenció! no vull justificar el fet en sí de deixar a terra a un munt de persones (a més de forma inesperada i en dates vacacionals), sinó que no m'explico com podem ser tant desinformats i de manera tant sistemàtica. Antena3 és el summum de la desinformació, no paren de repetir testimonis de gent indignada, i lo de que la Creu Roja va repartir bocates, NO DIUEN RES MÉS, només algunes referències a que la companyia no dòna informació als passatgers. Vale, però i a les televisions, tampoc no els hi en donen ? I si elles tenien informació, perque no la donaven? potser perquè és fàcil trobar culpables entre una gent que no té cap mitjà de comunicació per replicar ?

Els únics llocs on pots estar informat d'aquesta qüestió, des del punt de vista dels treballadors son indymedia:
Huelga Aeropuerto del Prat

i kaos en la red:
La huelga de los trabajadores de tierra de IBERIA: el capitalismo salvaje. Historia de un conflicto
Roma puede esperar. Los trabajadores del aeropuerto de Barcelona en lucha
Huelga en el Prat

On queden els dies on la solidaritat entre treballadors, era present ?
Com per exemple, veieu la història de la vaga de tranvies del 51

Avui en dia en lloc de buscar els culpables reals del caos (Iberia; no els treballadors de handling putejats) i fer un boicot com Deu mana, només es discuteix si l'aeroport hauría de ser competència de la Generalitat o de l'Estat i "es lincha" als treballadors, que simplement no van aguantar més la situació i l'engany de Iberia.

No veieu que poc a poc, ens estan arraconant a TOTS cap a ETTs, contractes "basura" i a pagar hipoteques a 50 anys. Perquè ? Potser perquè quan tens por i inseguretat ets molt més manipulable i dòcil ?

Els anglessos anomenen FUD (Fear Uncertainty and Doubt) en el món de la informàtica a crear una especie de resentiment contra un producte o servei competidor El que vinc a dir, és que ens estan envolcallant amb FUD sobre el nostre propi futur, baixant les nostres expectatives de ingresos (ETTs, etc) i incrementant les de despeses (hipoteques, IPC, etc.)

Jo ho anomeno FUD sociològic, o sociological FUD (alguna frikada havia d'inventar-me, no?)

Agustí

20060815

Be Brave Benjamin and Ghost to Falco in the Heliogabal




Ready to sing !

friky foto



MORITZ, nothing better to be brave :)

friky foto



Last gig before departure, at the Heliogabal

friky foto



Be brave Benjamin, don't hide behind the mic !

friky foto







Ghost to Falco RULES !
friky foto



Eric, he's a very good songwriter, the only person I know that have ever heard about Hayden (apart of Otto)
friky foto



Ghost to falco, from Portland Oregon, we describe his style as "Alternative Country without shoes"
friky foto

20060814

Com fer un url rewrite per fer les URLs més "googlejables"

En teoria diuen que per fer que google t'indexi millor el text de la URL importa molt (no estic segur si es una llegenda urbana o no).

Algunes de les normes que corren sobre aquesta llegenda urbana son:

1. Fer que les urls tinguin cert sentit, cada vegada més google aposta per interpretar llenguatge natural, i no nomes keywords (es suposa que això de moment s'aplica més al angles que d'altres idiomes)
2. Evitar URLs de més de 250 caràcters, podrien ser considerades spamm per google
3. A les frases que posem a la url substituir els espais per guions "-" i no per underscores "_" ja que sembla que el google no pilla bé els underscores

Per fer això, he implementat un url rewrite (mod_rewrite) al Apache de producció, això em permetrà modificar la URL que m'arriba de manera flexible i molt potent.

El problema del mod_rewrite, es que es molt complexe, però amb alguns tutorials "per tontos" he aconseguit fer el que necessitava.


troç del mod_rewrite cheatsheet
friky foto


La meva idea es:

1. Basar-me nomes en un directori (en el meu cas /gen/) que actualment no té contingut
2. Faré servir dos "variables" a la expressió regular, una pel dia en format yyyymmdd i l'altre per l'identificador del recurs dins del CMS (Content Management System)
3. De moment només mapejaré un tipus de contingut del CMS, noticies, que es el més indexable, així simplifico la gestió.

Primer s'han d'incloure les directives genèriques del mod_rewrite:


RewriteEngine On
RewriteLog /xxx/yyy/apache2.0.55/logs/rewrite.log
RewriteLogLevel 1


Això activa el mod_rewrite (a nivell del virtual host que vulguem) i indica on deixar els logs de rewrite, atenció, es convenient baixar el LogLevel a 0 de seguida que pugem perquè genera molta merda.


# /gen///noticias/titol.html --> /lv24h//.html
# $1 es la data (yyyymmdd)
# $2 es el compid
RewriteRule ^/gen/([0-9]+)/([0-9]+)/noticias/.*\.html$ /lv24h/$1/$2.html


Aquest es el meollo del rewrite, com indiquen els comentaris la variable $1 es la data en format yyyymmdd i la variable $2 es el id únic del recurs dins del CMS

També cal notar que per seguretat forço els directoris, tant d'entrada /gen/ com de sortida /lv24h/ així no em poden fer la pirula per intentar accedir a altres directoris.

Explicació caràcter a caràcter:

^ --> indica inici d'string
/gen/ --> directori del que farem rewrite, si la url no conte /gen/ no farem res
([0-9]+) --> Els parentesis son per definir una variable ($1 i $2) i el [0-9] vol dir que acceptem caracters de tipus numeric (del 0 al 9) amb el + fem un tancament de kleene (indica que com a mínim ha d'haver un dígit i que pot haver-hi n) si volem un tancament de kleene opcional (una kleene star, que indica que pot no haver cap dígit o 1 o n) hem de fer servir * en lloc de +
/noticias/ --> un altre cop a pinyon, esperem el directori noticias
.* --> Amb un . sense escapar, estem indicant un caràcter especial de les expressions regulars, es tracta de dir qualsevol caràcter excepte el enter (\n), així doncs, si fem .* estem fent un tancament de kleene sobre qualsevol cosa, per tant "EL QUE SIGUI n-vegades"
\.html --> Esperem a pinyon l'string .html (ATENCIÓ, aquest punt s'ha d'escapar, sinó estaríem dient qualsevol cosa (com hem vist anteriorment))
$ --> Final d'string

La part dreta del rewrite es molt més simple:
/lv24h/ --> A pinyon redireccionem a /lv24h/
$1/$2 --> agafarem el valor de les dues variables que em vist abans data i compid
.html --> A pinyon esperem que el destí es digui .html

Evidentment, el fitxer destí ha d'existir, sinó el rewrite fotrà un pet com un aglà !

Exemples:
http://localhost/gen/20060814/51279679687/noticias/hola-tete-com-estas.html
http://localhost/gen/20060812/51279679687/noticias/ajdfjsdfo.html
http://localhost/gen/20060811/5127967/noticias/ajd-fj-s-dfo.html

Es traduirien per:
http://localhost/lv24h/20060814/51279679687.html
http://localhost/lv24h/20060812/51279679687.html
http://localhost/lv24h/20060811/5127967.html

Noteu que en cap cas afecta el que posem darrera de noticias, però evidentment si es algo amb sentit i que no canvia, molt millor per ser indexats al google

També noteu que es poden fer paranoies del estil, accepto una url amb dos variables i les giro, per confondre a un possible atacant, nomes caldria fer:
RewriteRule ^/gen/([0-9]+)/([0-9]+)/noticias/.*\.html$ /lv24h/$2/$1.html

Per mi no es útil, però es podria fer.

També el mod_rewrite es molt utilitzat per homogeneïtzar les url i fer-les "independents de la plataforma", per exemple si servim contingut dinàmic, avui podem estar fent servir url del estil *.jsp i demà del estil *.php, per homogeneïtzar i fer una especie de "urls lògiques", podem fer servir el mod_rewrite del Apache.

Tanco amb una frase del manual, que il·lustra molt bé la complexitat del mod_rewrite:



Despite the tons of examples and docs, mod_rewrite is voodoo. Damned cool voodoo, but still voodoo.


-- Brian Moore
bem@news.cmc.net


Més informació:
Manual mod_rewrite

Tutorial molt explicatiu

mod_rewrite cheat sheet
Optimizing your MovableType blog for Google

20060811

Configuració de l'Oracle EPG



Fa anys que Oracle va treure la meravellosa funcionalitat d'accedir als packages de PL/SQL directament des d'un browser, via HTTP va ser quan va inventar el package htp que et permetia generar html dinàmic, això va ser a la versió 7 d'Oracle, quan el servei es deia
WOW (Web Oracle Web) i tot funcionava amb CGIs etc.

Estem parlant de l'any 1996 aproximadament, sinó us en recordeu com pintava la web en aquests anys, mireu aquest enllaç on explica el funcionament del WOW.

El món del desenvolupament web ha donat moltes voltes, però si alguna funcionalitat de la base de dades Oracle va revolucionar la generació de contingut dinàmic via web, aquest va ser el PL/SQL Gateway, també conegut com DAD (Database Access Descriptor) o directament HTP.P (per el package/procedure més utilitzat per escopir contingut al browser)

Recordo les primeres proves que vàrem realitzar a la nostre època de becaris a Oracle, estic parlant del 1996 (Toni, te'n recordes?), la meravellosa demo per vendre un MALL Virtual al Banc de Sabadell, tot directament amb HTML generat des de la Base de Dades (nens, no proveu de fer això a casa !). Evidentment no es va vendre :)

Actualment, com a mínim jo, el PL/SQL Gateway es fa servir per escopir XML d'una manera simple a partir de la informació de la Base de Dades, posteriorment es transformarà aquest XML fent servir un XSLT en un Servlet o en un PHP.

Bé, al que anava, el PL/SQL Gateway ha anat canviant de tecnologia i de nom, tant ràpid com les versions d'Oracle, ha passat de ser un CGI, a córrer sobre el
WAS, el OIAS, el IAS, fins i tot he instal·lat un modul de Apache que feia el mateix que l'oficial d'Oracle però que havia creat un paio pel seu conte.

Finalment, en les ultimes versions (a partir de la 10g), hi ha dues opcions, o t'instal·les a partir del "companion CD" un servidor "tipus apache" amb el seu modul
de plsql integrat (que es el que es venia fent a la versió 9, encara que amb aquesta el webserver ja s'instal·lava sense el companion) o aprofites la nova funcionalitat
del "Embedded PL/SQL Gateway" que corre directament dins la Base de Dades, una historia més propera al Listener d'Oracle de tota la vida que a un Apache.

Per exemple, la nova versió gratuïta de la base de dades Oracle, l'Oracle Express Edition (Oracle XE) ja porta l'EPG integrat i s'instal·la automàticament amb la Base de Dades.

El EPG (Embedded PL/SQL Gateway), per defecte, corre pel port 8080, atenció als usuaris de tomcat, que l'Oracle us ha virlat el port per defecte :)

Doncs això, que ara és més fàcil que mai aprofitar la generació dinàmica de contingut a partir de la Base de Dades Oracle amb PL/SQL,
l'únic problema es com configurar els DAD (Database Access Descriptors) amb aquesta nova versió de Gateway ?

La resposta es, des d'el propi PL/SQL, us poso un exemple de com crear un DAD totalment desprotegit, si-us-plau no pengeu això d'Internet, ja que us poden fer el que vulguin, protegiu
sempre el port 8080 perquè sigui accessible des de màquines internes via firewall, sinó no em faig responsable...

Suposem que tenim un usuari que es diu "ngastos", aquest tros de PL/SQL crearia un DAD que permetria accedir a tots els packages/procedures d'aquest schema (l'script dropeja el dad abans de regenerar-lo).


-- Creation, recreation of a DAD, launch from the user ngastos (the user must have the XDBADMIN role)
begin
begin
dbms_epg.drop_dad('ngastos');
dbms_output.put_line('ngastos dropped');
commit;
exception when others then
dbms_output.put_line('Error: '||sqlerrm);
end;

dbms_epg.create_dad('ngastos', '/ngastos/*');
dbms_epg.set_dad_attribute('ngastos', 'database-username', 'NGASTOS');
dbms_epg.authorize_dad('ngastos');
commit;
end;


Aneu amb conta amb les majúscules, el set_dad_attribute del database-username, necessita tenir el nom d'usuari en majúscules.

A partir d'aquest moment, ja es pot accedir, per exemple a http://localhost:8080/ngastos/hola.html
(Evidentment estic suposant que teniu un package al usuari ngastos que es diu hola, un procedure dintre que es diu html i que esta a la specification i que dintre aquest
teniu un htp.p('hola') per exemple)

La creació d'aquest DAD es totalment compatible (fins que no es demostri el contrari) amb crides a Microcalls que en una aplicació que estem migrant abans es feien contra un Apache amb el mod_plsql d'Oracle 9iR2 i també en el entorn de producció contra un Apache d'Oracle instal.lat a partir del "Companion CD" en una 10gR2, així que ja no hi ha excusa per no fer servir microcalls des d'un EPG :)

També us pot ser útil per debuggar si alguna cosa no us funciona, aquest scriptillo, que mostra tots els atributs de un DAD en concret.


-- Show all the attributes in a DAD
declare
-- Local variables here
i integer;
l_attr_name VARCHAR2(30);
l_attr_value VARCHAR2(30);

PROCEDURE my_get_dad_attribute (p_dad_name IN VARCHAR2,
p_attr_name IN VARCHAR2) AS
l_attr_value VARCHAR2(3000);
BEGIN
l_attr_value := DBMS_EPG.get_dad_attribute (
dad_name => p_dad_name,
attr_name => p_attr_name);

DBMS_OUTPUT.put_line(p_attr_name || '=' || l_attr_value);
END;
BEGIN
DBMS_OUTPUT.put_line('Attributes');
DBMS_OUTPUT.put_line('=========');

my_get_dad_attribute('ngastos', 'after-procedure');
my_get_dad_attribute('ngastos', 'always-describe-procedure');
my_get_dad_attribute('ngastos', 'authentication-mode');
my_get_dad_attribute('ngastos', 'before-procedure');
my_get_dad_attribute('ngastos', 'bind-bucket-lengths');
my_get_dad_attribute('ngastos', 'bind-bucket-widths');
my_get_dad_attribute('ngastos', 'cgi-environment-list');
my_get_dad_attribute('ngastos', 'compatibility-mode');
my_get_dad_attribute('ngastos', 'database-username');
my_get_dad_attribute('ngastos', 'default-page');
my_get_dad_attribute('ngastos', 'document-path');
my_get_dad_attribute('ngastos', 'document-procedure');
my_get_dad_attribute('ngastos', 'document-table-name');
my_get_dad_attribute('ngastos', 'error-style');
my_get_dad_attribute('ngastos', 'exclusion-list');
my_get_dad_attribute('ngastos', 'fetch-buffer-size');
my_get_dad_attribute('ngastos', 'input-filter-enable');
my_get_dad_attribute('ngastos', 'info-logging');
my_get_dad_attribute('ngastos', 'owa-debug-enable');
my_get_dad_attribute('ngastos', 'max-requests-per-session');
my_get_dad_attribute('ngastos', 'nls-language');
my_get_dad_attribute('ngastos', 'path-alias');
my_get_dad_attribute('ngastos', 'path-alias-procedure');
my_get_dad_attribute('ngastos', 'request-validation-function');
my_get_dad_attribute('ngastos', 'session-cookie-name');
my_get_dad_attribute('ngastos', 'session-state-management');
my_get_dad_attribute('ngastos', 'transfer-mode');
my_get_dad_attribute('ngastos', 'upload-as-long-raw');
end;


Més informació sobre el EPG

20060808

Reencarnació del servei MYLO de Sony en un gadget

Sony reaprofita la marca mylo, el que abans era un servei on-line per PDAs, ara es reconverteix en un gadget amb wi-fi, mp3 etc.


Antiga encarnació de MYLO com a servei on-line
friky foto


Nova encarnació, ups, ara es un gadget
friky foto

L'interface del nou MYLO recorda molt al de la PSP, vegeu el vídeo.