Blogs · Informàtica · Wordpress

WordPress 2.6 PATHINFO Permalinks

Els més observadors us haureu adonat que m’he actualitzat el blog a la versió 2.6 de WordPress, però no tot són flors i violes com se sol dir…

El cas és que utilitzo l’estructura PATHINFO per als enllaços permanents, concretament tinc la següent configuració personalitzada: /%postname%/ i a cada actualització se m’ha trencat alguna cosa fent que alguna part del blog fos inaccessible utilitzant els enllaços permanents.

En la versió 2.5 vàren ser les pàgines, i en la 2.6 han estat els posts, categories i pàgines d’arxius. Doncs bé, sortosament per solucionar-ho, si més no mentre no es publiqui alguna actualització, només ens cal afegir un nom base per les categories i els tags a la secció de configuració dels enllaços permanents tal com diu aquí i llestos.

A bloguejar de gust amants de wordpress !

Actualització: Ah! se m’oblidava, el plugin Top Posts By Category segueix sent compatible amb aquesta nova versió 😉

Informàtica

PHP 4 i PHP5 com a mòdul sobre el mateix Apache 2.2 (en linux, clar)

Fa uns dies va contactar amb mi un antic company de feina demanant-me ajuda per tal d’instal·lar sobre un mateix servidor amb Apache 2.2 l’interpret PHP 5 contra MySQL 5 i PHP 4 contra MySQL 4.

Estat del servidor:

  • Apache 2.2 + PHP 5 + MySQL 5 instal·lats i funcionant correctament
  • S.O.: CentOS 5

Requeriments:

  • Fer funcionar les aplicacions antigues en PHP 4 contra MySQL 4 en el mateix servidor.
  • No és viable fer canvis en els codis de les aplicacions per migrar-les a les versions 5, ni canviar les extensions, per motius de temps i de complexitat.

Solució d’emergència (Per si tot falla sempre va bé tenir un as a la màniga):

  • Instal·lar les versions 4 en un altre servidor Apache 2.2 compilat per nosaltres i arrencat en un port diferent al 80, i utilitzar el mod_proxy al primer Apache per redirigir les peticions als VirtualHosts o contextos de les aplicacions en PHP 4 cap a l’altre Apache que no és directament accessible des de l’exterior.

Solució aplicada:

Finalment s’aconsegueix tenir en un mateix Apache 2.2 les dues versions de PHP corrent com a mòduls i sense interferir entre elles de la següent manera:

MySQL 4:

  • Descarreguem el codi font de MySQL 4.1.22 de la web de MySQL (a baix de tot).
  • Descomprimim, entrem al directori i el configurem de la següent manera, posant atenció en els PATH’s i en el port:

    CFLAGS="-O3 -mpentiumpro" CXX=gcc CXXFLAGS="-O3 -mpentiumpro -felide-constructors -fno-exceptions -fno-rtti" ./configure --with-unix-socket-path=/usr/local/mysql4/tmp/mysql.sock --enable-assembler --with-mysqld-ldflags=-all-static --with-client-ldflags=-all-static --enable-thread-safe-client --with-mysqld-user=mysql4 --prefix=/usr/local/mysql4 --bindir=/usr/local/mysql4/bin --sbindir=/usr/local/mysql4/sbim --libexecdir=/usr/local/mysql4/libexec --datadir=/usr/local/mysql4/share --sysconfdir=/usr/local/mysql4/etc --sharedstatedir=/usr/local/mysql4/com --localstatedir=/usr/local/mysql4/var --libdir=/usr/local/mysql4/lib --includedir=/usr/local/mysql4/include --infodir=/usr/local/mysql4/info --mandir=/usr/local/mysql4/man --with-tcp-port=3304

  • Compilem i instal·lem:

    make && make install

  • Veure la documentació pels detalls de configuració post-instal·lació, i copiar l’script d’inici, el qual haurem de modificar una mica per tal de reflectir l’usuari, el port i els paths correctament.
  • Si tot ha anat correctament i teniu el MySQL 4 arrencat, hi podreu accedir de la següent manera:

    /usr/local/mysql4/bin/mysql -u root -P3304 -S/usr/local/mysql4/tmp/mysql.sock -p

PHP 4:

  • Ara comença lo divertit, i aquest és un dels motius pels quals adoro l’Open Source 😉
  • Descarreguem les fonts de PHP 4.4.8 de la web de PHP.
  • Abans de configurar i compilar cal modificar tots els fitxers de codi font que continguin l’String application/x-httpd-php i canviar-lo per l’String application/x-httpd-php4 (també els application/x-httpd-php-source per application/x-httpd-php4-source si voleu).
    Per buscar els fitxers podem fer-ho de la següent manera:

    egrep -R "application" /path/fonts-descomprimides/php4/*

  • Compilem amb les següents opcions. De nou cal tenir en compte els PATH’s, fixar-nos en el PATH on previament hem instal·lat el MySQL 4 i el PATH al binari apxs de l’Apache 2.2:

    ./configure --prefix=/usr/local/php4 --enable-module=so --with-calendar=shared --enable-magic-quotes --enable-wddx --enable-ftp --enable-sockets --enable-inline-optimization --enable-memory-limit --with-gd --with-zlib --enable-gd-native-tt --with-ttf --with-gettext --with-freetype-dir=/usr/lib/ --with-jpeg-dir=shared,/usr --with-png-dir=shared,/usr --with-zlib-dir=shared,/usr --with-mysql=/usr/local/mysql4 --with-apxs2=/usr/sbin/apxs

  • Compilem i instal·lem:

    make && make install

Configuració de l’Apache 2.2:

  • Editem el fitxer /etc/httpd/conf/httpd.conf i comentem o eliminem la línia que ens ha creat el make install:

    #LoadModule php4_module /usr/lib64/httpd/modules/libphp4.so

  • Creem el fitxer /etc/httpd/conf.d/php4.conf amb el següent contingut

    :#
    # PHP is an HTML-embedded scripting language which attempts to make it
    # easy for developers to write dynamically generated webpages.
    #
    LoadModule php4_module modules/libphp4.so
    AddType application/x-httpd-php4 .php4
    #
    # Add index.php to the list of files that will be served as directory
    # indexes.
    # (Opcional en en nostre cas)
    DirectoryIndex index.php4

    #
    # Uncomment the following line to allow PHP to pretty-print .phps
    # files as PHP source code:
    #
    #AddType application/x-httpd-php4-source .phps4

  • Abans de continuar s’han creat dues bases de dades, una a cada MySQL amb nom test4 i test4, i dos contextos, /test4 i /test5 respectivament amb un únic fitxer index.php amb el següent contingut, per tal de poder testejar la instal·lació:

    <?php
    function Conectar()
    {
    if (!($link=mysql_connect("localhost","test4","test4")))
    {
    echo "Error conectant a la base de dades mysql 4.";
    exit();
    }
    if (!mysql_select_db("test4",$link))
    {
    echo "Error seleccionant la base de dades test4.";
    exit();
    }
    return $link;
    }$link=Conectar();
    echo "Conexió amb la base de dades test4 en mysql 4 aconseguida !!!<br>";

    mysql_close($link);
    ?>

    <?php
    phpinfo();
    ?>

    (El mateix pel 5 canviant 4 per 5)

  • Directives de configuració de l’Apache necessàries. En aquest cas configurem contextos, però el mateix és aplicable als VirtualHosts. De manera que per cada context o VirtualHost que contingui una aplicació en PHP ens cal fer el següent:
    • PHP5:

      <Directory /web/test5>
         AddHandler application/x-httpd-php .php

      </Directory>

    • PHP 4:

      <Directory /web/test4>
         RewriteRule ^/$ /index.php [T=application/x-httpd-php4]
         AddHandler application/x-httpd-php4 .php
      </Directory>

Res més per avui, espero que hàgiu gaudit de l’experiència, igual que ho vaig fer jo, i que si mai en teniu la necessitat no us trenqueu massa la closca provant coses inútils. Aquesta configuració funciona perfectament i ja porta un temps en producció sense donar cap mena problema.

Informàtica · Internet

YouTube al teu PC

L’altre dia volia recopilar uns quants vídeos del YouTube per portar-los al garatge d’un col·lega on ens acostumem a reunir tota la troupe, però allí no tenim internet així que vaig haver de buscar la manera de poder baixar-me’ls al disc dur del portàtil.

Després de passar per varies webs de descàrregues per sms i coses guarres d’aquestes (que mai envio) i de provar-ne algun que altre sense massa èxit, vaig trobar un programet que es diu save2pc en la versió light que és gratuita és clar.

Així que, donat que treballo en linux i el soft és per windows, doncs wine save2pc_light_setup.exe i turulurulin ja tenim el programa corrent en linux.

Com a coses interessants tenim que permet descarregar els vídeos dels següents llocs:

  • YouTube
  • Google Video
  • MySpace Video
  • Break.com
  • DailyMotion
  • Porno Tube
  • YouPorn
  • RedTube
  • Megarotic
  • yuvutu

I d’altra banda, permet guardar els vídeos en els següents formats:

  • flv (Web)
  • avi (PC)
  • mpeg (PC)
  • wmv (PC)
  • mp4 (iPod)
  • mov (iPod)
  • mp4 (PSP)
  • 3gp (Mobile)
  • mp3 (Audio)
  • wav (Audio)

No les tenia totes que la conversió em funcionés sobre el wine, però sense fer res d’especial, li dic avi (PC) i taxàn em baixa el vídeo i me’l converteix a avi en background, o sigui que no apagueu el programa fins que l’avi no estigui fet, ja que la barra de progrés només mostra la descàrrega però no la conversió, tot i això podem anar descarregant vídeos mentre estant, que ell en background ja va convertint els anteriors.

Informàtica · Wordpress

Actualitzant a WordPress 2.3.3

WordPress ha anunciat una actualització de seguretat urgent en la seva implementació XML-RPC que permetria que amb una petició manipulada previament, un usuari vàlid pogués editar qualsevol post d’un altre usuari del blog.

Com sempre, podem veure els detalls d’aquesta release a la web de WordPress, des d’on ens podem baixar directament el fitxer xmlrpc.php que resol el bug de seguretat, o bé tota la release que també resol altres petits bugs i seria el més recomanable.

També podem actualitzar únicament aquells fitxers que han canviat. Per fer-ho hem de fer un cop d’ull al repositori de la versió, li donem al botó “View Changes” que hi ha a baix de tot, un cop allà canviem el From perquè indicar la versió de la que venim, en aquest cas tags/2.3.2 i ens assegurem que al To hi posi el nou tags/2.3.3, i ja podem prémer “View Changes” altre cop, amb el que ens apareix la llista de fitxers modificats, de manera que sobreescrivint únicament aquests fitxers ja tindrem el WordPress actualitzat, i donat que aquesta actualització no modifica la base de dades ja no ens cal fer res més.

Així doncs, primer és recomanable que us feu un backup per si de cas, i després:

  1. Descarreguem l’últim WordPress de la secció downloads.
  2. Mirem els fitxers modificats tal com explico a l’anterior paràgraf i hi trobem els següents:
    1. wp-includes/gettext.php
    2. wp-includes/version.php
    3. wp-includes/pluggable.php
    4. xmlrpc.php
    5. wp-admin/install-helper.php
  3. Substituïm els fitxers de la llista anterior a la nostra instal·lació i llestos.

Apa, ara ja podem estar tranquils uns quants dies més.

Informàtica

TCS: Cisco CCNA – 2001-2002

Durant l’any 2000 les estadístiques apuntaven que en els propers anys hi hauria una creixent demanda de tècnics de xarxes a l’Estat Espanyol.

En aquella època, la UOC va saber veure el nínxol, va integrar el CCNA en un curs de postgrau i va organitzar el programa per tal de poder fer-lo en només un any en comptes dels dos anys per als quals està pensat. Finalment i de forma excepcional va ofertar aquest postgrau als que en aquell moment encara estàvem estudiant la carrera, i a més donat que era el primer any ens va costar quasi a meitat de preu.

Un cop acabat, a més, ens van donar uns Voucher amb un descompte important pels interessats a fer l’examen oficial de Cisco un cop aprovat el Postgrau.

El TCS és el treball final del CCNA i es tracta de dissenyar la xarxa per una de les seus amb varis edificis d’una escola en base a certes especificacions. La presentació la vaig fer en HTML i avui l’he trobat, aquí us la deixo per qui li vulgui fer un cop d’ull.

Heu de tenir en compte que jo era el primer cop que feia un disseny d’aquest estil i a més no disposava de cap exemple previ per fer-me una idea de com hauria de ser.

També us adonareu que s’hi utilitzen tecnologies que a dia d’avui estan una mica obsoletes com Frame Relay, PPP o l’RDSI però formaven part de l’especificació. També estava emergint Gigabit Ethernet sobre parell trenat així com el 10 Gigabit sobre fibra, però si agafeu els esquemes i multipliqueu les velocitats dels segments de la LAN per 10, la cosa ja s’acostaria més als temps actuals.

Informàtica

Actualitzant a Kubuntu Gutsy Gibbon

El passat 18 d’Octubre apareixia la versió 7.10 d’Ubuntu de nom en clau Gutsy Gibbon així com la del seu principal fork Kubuntu que és la distribució de Linux que porto utilitzant els darrers anys i amb la que m’hi trobo realment còmode.

Després de provar i utilitzar multitud de distribucions durant la meva època universitària vaig acabar per enamorar-me de Debian i el seu fantàstic sistema de paquets. Tot i així, aprofitar el hardware nou amb Debian era una veritable odissea en alguns casos, lo que ja m’anava bé ja que em va permetre endinsar-me fins les entranyes del sistema i aprendre configurar pràcticament tots els dispositius des de la shell, i ara ja no puc viure sense varies consoles obertes entre les que sempre hi tinc una o varies sessions de root.

L’experiència m’ha ensenyat a esperar un temps prudencial abans de fer una actualització de la versió, de manera que qualsevol problema amb el que em pugui trobar quasi segur que ja li ha passat a algú altre de manera que als fòrums de la comunitat hi pots trobar una o varies solucions i adaptar-les al teu cas concret o aplicar-les directament. Cal mirar sempre els bugs coneguts de l’actualització, veure si afecten a la nostra configuració concreta, i comprovar si hi ha alguna solució.

Com ja he dit abans estic acostumat a fer aquestes operacions des d’una shell així que no m’enrotllo més i anem per feina.

  1. Obrir una shell i logar-se com a root.
  2. Editar el fitxer /etc/apt/sources.list i substituir feisty per gutsy.
  3. apt-get update o aptitude update.
  4. aptitude dist-upgrade. M’agrada utilitzar l’aptitude perquè en el cas de conflicte de dependències entre paquets sempre t’ofereix solucions, a diferència de l’apt-get que et resol els conflictes automàticament però potser no ho fa de la manera més adequada a cada cas.
  5. Unes hores més tard, quan s’han acabat de descarregar tots els paquets de la nova versió i comencen a instal·lar-se, per cada paquet que porta un fitxer de configuració nou i prèviament n’havíem canviat els paràmetres de la versió antiga el procés et pregunta si vols instal·lar la nova o conservar l’antiga. Així que primer de tot mirem les diferències i decidim en cada cas.
  6. Quan ha acabat tornem al pas 4, ja que sovint, per l’ordre en que passen les coses i per satisfer les dependències el més probable és que es quedi alguna cosa per configurar o per instal·lar. Així que repetim l’aptitude dist-upgrade tantes vegades com calgui fins que “ja no tingui res a fer”.
  7. Reiniciem.

Mentre arrenca comencen a sortir els següents missatges per la consola:

device-mapper: table: 254:6: linear: dm-linear: Device lookup failed
device-mapper: ioctl: error adding target to table

Sorprenentment el sistema va arrencant mica en mica, però quan acaba, veig que hi ha una activitat constant del disc dur i que continuen apareixent aquests missatges. Tot sembla indicar que se m’ha cascat algun dels disc durs però per sort no sembla ser el del sistema, ara bé, quan hi accedeixo sembla que tots estan bé. Busco una mica d’informació i em trobo amb el següent bug relacionat amb l’evms que per sort per mi a casa no l’utilitzo per res (de fet mai l’he utilitzat), de manera que primer n’aturo el servei i ja no apareixen més missatges, el disc per fi descansa i sembla que tot rutlla bé, així que desinstal·lo l’evms i fora.

Una última cosa, és editar el fitxer /etc/kernel-img.conf i canviar (o verificar):

postinst_hook = /sbin/update-grub
postrm_hook = /sbin/update-grub

per
postinst_hook = /usr/sbin/update-grub
postrm_hook = /usr/sbin/update-grub

Ja que de moment es mantenen les dues ubicacions per compatibilitat però és probable que s’elimini de /sbin en futures versions.

Informàtica

Crear un servidor web

Recentment he trobat el meu TFC sobre la creació del nucli d’un servidor web. Algunes de les coses que hi podeu trobar són:

  • Una mica d’història dels servidors web
  • Descripció detallada del protocol HTTP
  • L’anàlisis…
  • Exemples interessants de programació amb C sobre Linux:
    • Fitxers
    • Sockets
    • Pthreads
    • Subprocessos
    • Canviar l’id d’usuari efectiu al obrir ports per sota del 1024
    • Convertir un programa en daemon.
  • Provés de rendiment (stress).

Només puc dir que m’ho vaig passar d’allò més bé durant tot el procés, així que abans que es quedi arraconat en un calaix (en l’HD del Pentium 100 per ser exactes) us el deixo aquí per si en voleu consultar alguna cosa ja sigui per curiositat o per “necessitat” 😉