Blog personal d'en minterior amb gust a maduixa

Expandmenu Shrunk


  • Any nou IDE nou

    Avui acaba el mes de gener, durant el qual he estat provant el nou IDE PhpStorm per desenvolupar principalment en PHP. Recentment van publicar la versió 7 i és la que he estat provant. Ofereixen un mes de proves gratuït perquè puguem descobrir totes les seves funcionalitats, abans de pagar els 89€ que costa la llicència personal.

    M’havien parlat molt bé del programa, i no ha estat una sorpresa veure que realment funciona molt bé. Jo ja estava força content de l’Eclipse, amb el qual porto treballant uns vuit anys, tot i que certament era molt pesat (lent), a vegades es penjava o petava (crash) i de tant en tant calia esborrar les dades d’usuari perquè s’havien corromput i tornar a configurar-ho tot. Això era el més problemàtic i feixuc de fet, i en el meu cas succeïa una o dues vegades cada mig any. Ben mirat, és inadmissible; la pròpia aplicació hauria de protegir-se i d’alguna manera assegurar que no es perdi mai la configuració. Jo sóc un defensor actiu del programari lliure, i em sap greu dir-ho però de moment el canvi a PhpStorm val molt la pena. I per il·lustrar-ho una imatge val més que mil paraules:Phpstorm over Eclipse

    Perquè la transició sigui més còmode, té una opció per usar les mateixes dreceres de teclat que l’Eclipse. Jo en faig servir moltes, moltíssimes, i ha estat una sorpresa que el PhpStorm te’n faci descobrir de noves amb els consells que apareixen cada vegada que obres l’aplicació. A més a més són fàcilment configurables, i es poden cercar pel nom de l’acció o fins i tot fent la drecera! Té moltes funcionalitats semblants a l’Eclipse però sobretot es diferencia en la velocitat, es nota que va molt fluid en tot moment, i amb què porta de sèrie moltes eines lligades de la mà amb el desenvolupament de PHP, com detecció automàtica del repositori Git, edició de fitxers html, css, javascript, bash, yaml, etc., cerca ràpida per símbols (funcions, classes, mètodes…), comentaris en línia per identificar tipus de variables, i moltes coses més.

    Crec que serem companys de feina durant força temps :)

    GD Star Rating
    loading...


  • Caràcters unicode amb el teclat a GNU/Linux

    Avui [per fi] he descobert com escriure caràcters unicode directament amb el teclat a GNU/Linux!

    Fa molts anys que amb el sistema operatiu innombrable havia après una combinació de tecles clàssica: ALT+126 per escriure el símbol ~ , titlla o la marca gràfica de sobre de la lletra ñ. Amb Linux aquest caràcter pren  molta més importància perquè representa la home de l’usuari. Afortunadament, hi ha una manera molt més fàcil i accessible de teclejar la titlla i que no necessita recordar combinacions ni números: senzillament amb Alt Gr + 4 (no serveix el número 4 del teclat numèric).

    Doncs bé, amb els següents passos ara també podrem introduir qualsevol caràcter unicode només amb el teclat:

    1. Pressionar Ctrl+Shift+u de forma simultània, o bé primer Ctrl+Shift i sense deixar-les anar després la u.
    2. Deixar-les anar totes. Veurem que apareix una lletra u subratllada.
    3. Ara podem introduir el codi hexadecimal del caràcter que vulguem escriure.
      Per escriure la titlla ~ seria 007E o simplement 7E.
    4. Pressionar la tecla enter o espai.

    L’únic problema és que cal saber de memòria el codi hexadecimal del caràcter que desitgem escriure, però aquest ja el teníem també abans amb el 126.

    A fer sonar els símbols unicode ♪ ♫

    GD Star Rating
    loading...


  • Configuració de teclat per defecte a LXDE

    A continuació explicarem com configurar més d’una distribució o mapes de teclat a l’entorn d’escriptori LXDE (Lightweight X11 Desktop Environment). És possible que també es pugui fer mitjançant la interfície gràfica o GUI, però de la forma que ho explicaré és ben senzill.

    En el meu cas, la màquina està configurada per defecte amb la distribució de teclat espanyola ‘es’, de manera que és la usada per entrar a la sessió de cada usuari des del display manager (gdm, kdm, lightdm, mdm…). Però un cop fet el login i entrar a la meva sessió d’usuari, vull tenir per defecte el mapa de teclat ‘es dvorak’, però disposar alhora de la possibilitat de canviar al ‘es’ en qualsevol moment. Per aconseguir-ho, editem el següent fitxer:

    vi ~/.Xkbmap

    I hi posem la línia següent:

    -option grp:alt_shift_toggle,grp_led:scroll es(dvorak),es

    On alt_shift_toggle permet canviar entre els mapes de teclat pressionant simultàniament les tecles shift + alt, i grp_led mostrarà al LED scroll o de desplaçament quina de les dues distribucions està activa.

    Desem el fitxer i ja ho tenim llest. En sortir de la sessió d’usuari i tornar-hi a entrar ja tindrem es-dvorak per defecte. És important doncs, l’ordre amb què definim els diferents layouts; el primer serà sempre l’opció per defecte.

    A més a més, si volem canviar entre tots dos mapes de teclat amb un clic de ratolí en lloc de fer-ho amb la drecera de teclat, podem afegir un element a la barra de tasques, anomenada “quadre” a LXDE. Sobre qualsevol punt del quadre, cliquem amb el botó dret i triem l’opció “Afegeix / Elimina elements del quadre“. A la següent finestra fem clic sobre “Afegeix” i novament s’obrirà una altra finestra, on triem “Commutador de disposició de teclat“. Un cop afegit el podem ordenar amunt o avall, segons on el vulguem tenir posicionat de la barra. Jo l’he deixat a la dreta de tot.

    Ara, amb aquest nou botó del quadre, podrem canviar entre mapes de teclat amb un sol clic, i si deixem el ratolí al damunt durant un moment, ens dirà textualment quin estem utilitzant en aquest moment.

    A teclejar!

    GD Star Rating
    loading...


  • Barres de desplaçament a l’Eclipse amb Kubuntu 11.10

    A la versió Kubuntu 11.10, les barres de desplaçament (scrollbars) de l’Eclipse no funcionen correctament.

    Per aconseguir que funcionin les noves barres a KDE, cal editar el fitxer /usr/bin/eclipse i comentar la línia:

    #export GDK_NATIVE_WINDOWS=true

    Si a més a més volem que les barres tinguin el funcionament i aspecte de les tradicionals barres de desplaçament (old style), hem d’afegir:
    export LIBOVERLAY_SCROLLBAR=0

    Sort!

    GD Star Rating
    loading...


  • El quadre de diàleg “Executa” (Alt + F2) a LXDE/Openbox s’obre en segon pla

    Una altra cosa ha passat després de l’actualització a Ubuntu 11.10 Oneiric Ocelot: el quadre de diàleg per executar comandes o aplicacions s’obre en segon pla (per defecte s’executa amb la drecera de teclat Alt + F2). És a dir, que es troba sota de la finestra que tinguis en primer pla i no rep el focus. Amb una cerca ràpida he trobat aquest enllaç, on indica com es pot resoldre:

    https://bbs.archlinux.org/viewtopic.php?pid=992240#p992240

    Només cal editar el següent fitxer:

    nano ~/.config/openbox/lxde-rc.xml

    I afegir-hi aquestes línies cap al final del fitxer abans del tancament de l’etiqueta <application>:

    <application>
      <!-- ... -->
      <application name="lxpanel">
        <focus>yes</focus>
      </application>
      <application name="pcmanfm">
        <focus>yes</focus>
    </application>
    

    I aplicar els canvis amb la comanda:

    openbox --reconfigure

    Ara sí, en teclejar Alt + F2 tenim el quadre de diàleg en primer pla i amb el focus ;)

    GD Star Rating
    loading...


  • No arrenca el display manager lxdm en actualitzar a Ubuntu 11.10 Oneiric Ocelot

    A partir de la versió d’Ubuntu 11.10, Oneiric Ocelot, el gestor d’accés o display manager canvia. Fins ara s’havia usat per defecte GDM, o KDM a Kubuntu, i ha estat substituït per LightDM, que és molt més lleuger i permet nous temes per a la pantalla d’accés; que podrien ser compartits per totes les distribucions de la família d’Ubuntu: Kubuntu, Xubuntu, Lubuntu… Com bé es pot llegir aquí: https://blueprints.launchpad.net/ubuntu/+spec/desktop-o-lightdm

    El problema que jo he tingut és que ja tenia configurat un altre display manager: lxdm, i en actualitzar ja no arrencava. La configuració de quin volem utilitzar es troba al fitxer:

    cat /etc/X11/default-display-manager
    /usr/sbin/lightdm
    

    Així que només cal que l’editem i canviem la línia pel nostre gestor preferit (informació més detallada a https://wiki.ubuntu.com/LightDM):

    sudo nano /etc/X11/default-display-manager
    /usr/sbin/lxdm
    

    I ara sí, en reiniciar ja torno a tenir el gestor que tenia abans :)

    GD Star Rating
    loading...


  • Variables no inicialitzades “unitialized” depurant PHP amb Eclipse i xdebug

    Mentre depurava codi en una nova instal·lació d’Apache+PHP+xdebug m’he trobat amb el problema de no veure els valors de les variables a la vista “Variables” de l’Eclipse. Pràcticament totes apareixien com “unitialized” o no inicialitzades, però en canvi imprimint-les per pantalla sí que tenien valors.  Cercant una mica he trobat aquest bug de xdebug: http://bugs.xdebug.org/view.php?id=467.

    Se m’ha acudit que si mai abans he tingut problemes depurant qualsevol versió de PHP, potser l’error estigués relacionat amb què aquí tinc la 5.3.2. Per resoldre el problema podia instal·lar una versió superior de xdebug on sé que el problema ja està resolt, com a la 2.1, però com realment no necessitava aquesta versió de PHP, podia provar amb la 5.2. Així que he seguit el post de com usar paquets d’una versió anterior d’Ubuntu i he fet un downgrade de la versió de PHP+xdebug, a la 5.2.10 i 2.0.4 respectivament.

    Després de reiniciar l’Apache la depuració torna a funcionar bé!

    GD Star Rating
    loading...


  • Eliminació del BOM (Byte Order Mark) en un fitxer codificat amb UTF-8

    Mentre programava en PHP a la feina, una de les pàgines mostrava al principi això: ””

    Tal com diu en aquest article de la wikipedia: http://en.wikipedia.org/wiki/UTF-8#Byte_order_mark això passa quan el fitxer s’ha desat amb alguns programes de Windows amb codificació UTF-8 que incorporen al principi els bytes 0xEF, 0xBB i 0xBF. És la codificació UTF-8 del Unicode byte order mark (BOM), comunament referida com UTF-8 BOM.

    Per eliminar el UTF-8 BOM podem usar aquest script en perl que desem per exemple al fitxer eliminaBom.pl:

    #!/usr/bin/perl
    @file=<>;
    $file[0] =~ s/^\xEF\xBB\xBF//;
    print(@file);
    

    I l’executarem així:

    perl eliminaBom.pl < fitxerAmbBom.txt > fitxerSenseBom.txt

    Fet :)

    GD Star Rating
    loading...


  • Instal·lació de Kubuntu 10.10 Maverick Meerkat des d’USB

    L’altre dia vaig instal·lar la versió 10.10 de Kubuntu, Maverick Meerkat, al meu ordinador d’escriptori. Aquesta vegada però, ho volia fer mitjançant una memòria USB, i no com altres vegades que ho he fet des del típic CD, a través de la xarxa o fins i tot des d’una imatge ISO en el propi disc dur carregada amb un kernel especial.

    Vaig carregar el CD original de la versió de Kubuntu 10.04 Lucid Lynx i arrencar com a Live CD. Després amb l’aplicació USB creator que incorpora, vaig gravar la iso a una memòria d’1GB de capacitat. En reiniciar la màquina i indicar que volia iniciar des de l’USB, em vaig trobar amb aquest missatge:

    SYSLINUX 3.63 Debian-2008-07-15 EBIOS Copyright (c) 1994-2008 H. Peter Anvin
    Unknown keyword in configuration file
    boot:

    Després de cercar per internet, vaig trobar que existeix aquest bug:

    Maverick images burned to usb key on lucid fail to boot – different syslinux version
    https://bugs.launchpad.net/ubuntu/+source/usb-creator/+bug/608382

    Per poder crear correctament el USB d’arrencada, vaig tornar a carregar el Live CD, però abans d’usar el USB creator, vaig seguir aquests passos:

    1. Desinstal·lar el paquet syslinux, que alhora desinstal·la també usb-creator-common i usb-creator-kde. Es pot fer amb el gestor de paquets o amb la comanda:
      sudo apt-get remove syslinux
    2. Descarregar els fitxers .deb de la darrera versió de syslinux i syslinux-common d’aquí http://mirrors.kernel.org/ubuntu/pool/main/s/syslinux/ i instal·lar-los:
      sudo dpkg -i syslinux_4.02+dfsg-7ubuntu1_i386.deb syslinux-common_4.02+dfsg-7ubuntu1_all.deb
    3. Instal·lar el paquet usb-creator-kde:
      sudo apt-get install usb-creator-kde
    4. Tornar a generar de nou el Live USB amb l’USB creator.

    Llavors sí, en reiniciar des de l’USB ja es va carregar amb normalitat la ISO, i vaig poder instal·lar la nova Kubuntu 10.10 :)


    Font: http://www.khattam.info/solved-syslinux-unknown-keyword-in-configuration-file-2010-09-01.html

    GD Star Rating
    loading...


  • Eliminar espais, tabuladors i caràcters de final de línia d’un camp a MySQL

    Si sabem que un camp d’una taula a MySQL no ha de tenir caràcters especials, els podem corregir sense usar cap script o codi en un altre llenguatge de programació. Si per exemple volem eliminar el caràcter de nova línia (newline en anglès, representat per \n) de qualsevol posició de la cadena ho podem fer així:

    UPDATE taula SET camp = REPLACE(camp, '\n', '');
    

    Si només volem eliminar-lo del final de la cadena:

    UPDATE taula SET camp = TRIM(TRAILING '\t' FROM camp);
    

    Si volem eliminar-lo només del principi, canviarem TRAILING per LEADING, i si el volem eliminar del principi i del final usarem BOTH.

    El problema sorgeix quan volem eliminar varis caràcters especials alhora, com poden ser \n, \t (tabulador o TAB), \r (“retorn de carro”, carriage return o CR) o espais. Les funcions TRIM i REPLACE només accepten un caràcter o una cadena sencera, però no conjunts de caràcters. Per això, si volem eliminar \t i \n del final, no podem usar TRIM(TRAILING ‘\t\n’ FROM camp), sinó que haurem de cridar 3 vegades la funció TRIM:

    UPDATE taula SET camp = TRIM(TRAILING '\t' FROM camp);
    UPDATE taula SET camp = TRIM(TRAILING '\n' FROM camp);
    UPDATE taula SET camp = TRIM(TRAILING '\t' FROM camp);
    

    Contràriament al que podem pensar a priori, cal fer-ho 3 vegades per cobrir el cas en què la nostra cadena acabi amb ‘\t\n’. Si obviem l’última crida, en aquest cas no eliminaríem el \t.

    També es pot fer amb una única assignació:

    UPDATE taula SET camp = TRIM(TRAILING '\t' FROM
                                TRIM(TRAILING '\n' FROM
                                    TRIM(TRAILING '\t' FROM camp)
                                )
                            );
    

    Ràpidament ens adonem que si en lloc de dos elements en tenim més, el nombre de combinacions creix exponencialment. En aquests casos segurament sigui millor crear un script per facilitar la feina. Per exemple a PHP sí que existeix la funció str_replace() que accepta conjunts de caràcters per substituir, i trim() que substitueix ensems espais, \t, \n, \r, \0 (caràcter nul)  i \x0B (tabulador vertical).

    Per acabar, esmentar que també es pot usar la combinació simultània de substituir un caràcter i eliminar-ne un altre dels extrems:

    UPDATE taula SET camp = TRIM(BOTH '\r\n' FROM REPLACE(camp, '\t', ''));
    
    GD Star Rating
    loading...