dilluns, 7 de maig del 2012

There's no tomorrow, vídeo explicatiu sobre el consum energètic

Via Gizmodo he descobert el vídeo There's no Tomorrow, un vídeo molt recomanable sobre els consum energètic.

M'ha agradat molt perquè no es basa en un "què dolents que som" sinó que aprofundeix en els com s'obté actualment energia i si aquest model és sostenible. Basant-se en explicar el procés d'una forma entenedora, sense caure en la demagògia.

Potser és una mica llarg però és molt interessant i, en el fons, inspirador. Realment recomanable si teniu un moment. El vídeo està en anglès, però podeu activar els subtítols amb la icona d'engranatge.

There's no tomorrow (34')


Molts dels conceptes que explica segurament ja us sonaran, però, personalment, mai me'ls havien explicat tant bé i, sobretot, sense caure en els tòpics de "som la pitjor espècie", "som la sisena extinció massiva"...

No sabem com serà el futur, però decididament no serà com és ara.

dimarts, 10 d’abril del 2012

Com simular altres dispositius des del navegador

NOTA: Pel que sembla el març negre també ha afectat al bloc. Suposo que estic ficat en masses fronts i les prioritats estan clares. En tot cas el bloc no està mort, però si que està en un recés.

Últimament m'he posat una mica amb les adaptacions mòbils de pàgines web i, per bé que és un tema interessant, el primer problema que s'ha de resoldre és com provar-ho.

Òbviament, la meva primera opció ha sigut fer-ho amb el meu mòbil, però això és francament lent i només et permet provar-ho en un únic dispositiu. Encara que la prova última sempre s'ha de fer en dispositius físics, si que he trobat una manera per fer que Firefox enganyi la pàgina i li faci creure que s'està mostrant en un dispositiu o navegador diferent.

Selector de perfils del User Agent Switcher

Per fer-ho existeix l'extensió User Agent Switcher. Aquesta extensió permet carregar un arxiu de perfils de diversos dispositius. Un cop carregats els perfils, ja disposareu d'un botó que us permetrà indicar quin navegador/dispositiu voleu simular.

Gestor de perfils del User Agent Switcher

Us deixo aquest tutorial on s'explica com carregar manualment perfils i un enllaç a una pàgina on hi ha un arxiu de perfils per importar. El llistat de perfils és molt àmplia. La meva recomanació és que busqueu el perfil dels navegadors Safari Mobile Android i iPhone i els poseu al cap damunt de la llista perquè són els bàsics.

dijous, 9 de febrer del 2012

Class upload, llibreria per gestiona pujades amb PHP

AVÍS: aquest article parla sobre un tema molt específic de programació així que no és per tots els públics.

Vaja, fa temps que no publico. Encara que ho sembli, el bloc no està mort, simplement és que he estat molt enfeinat preparant alguna petita novetat per Arcaron.

Justament, pel que estem preparant, he descobert una llibreria en PHP que crec que val la pena conèixer si ets programador perquè facilita la pujada i tractament d'imatges com ara avatars o icones.

És força comú que les aplicacions web demanin la pujada d'un avatar d'usuari per tal que sigui fàcilment identificable. Com a norma general, tots els frameworks donen suport natiu a aquesta funcionalitat, però a vegades és necessari programar-la. Aquí és on entra en joc la classe "Upload", una classe que pot ser descarregada de la pàgina de l'autor

La llibreria té una documentació força clara i és realment senzilla de fer servir. Algunes de les característiques que m'han portat a provar-la són:

  • Afegir marques d'aigua a les imatges només indicant l'origen de la imatge de marca d'aigua.
  • Re-escalat d'imatges tant mantenint proporcions com no mantenint-les
  • Control sobre quins fitxers poden pujar-se al servidor
  • Permet reprocessar més d'un cop les imatges per aconseguir més d'un format a partir d'una única pujada de l'usuari (per exemple, avatar gran i avatar petit)
  • Els missatges d'error són molt clars (estan a l'atribut "error")
  • Compatible amb els principals tipus d'imatge (jpg, png i gif)
A continuació poso un exemple de com es fa servir:

//agafem el camp del formulari anomenat 'imgfile'
if (isset($_FILES['imgfile'])) {
   //creem l'objecte
   $file = new Upload($_FILES['imgfile']);
   if ($file->uploaded) {
      $file->file_new_name_body = 'nom_arxiu_final'; //posar nom a l'arxiu final
      $file->allowed = array('image/*'); //format valid tot tipus d'imatge
      $file->image_resize = true; //volem reescalarla
      $file->image_x = 200; //mida horitzontal
      $file->$handle->image_ratio_y = true; //mantenir proporcio
      $file->image_watermark = 'marca.png'; //imatge de la marca d'aigua
      
      $file->process('..//imag/directori_desti/'); //processar l'enviament

      if ($file->processed) {
         $filename = $file->file_dst_name; //nom de l'arxiu final
         $file->clean(); //buidat
         echo "La imatge $filename ja s'ha processat"; 
      } else {
         echo "Error al processar l'enviament. $file->error";
      }
   } else {
      echo "La imatge no és vàlida. $file->error");
   }
}