keul.fr - du web et du code

Aller au contenu | Aller au menu | Aller à la recherche

A chaque bug suffit sa peine.

lundi, 31 janvier 2011

Les standards

mp3, Internet, web, DVD, USB, Divx ou document word font parti de standards tellement répandu que même les personnes qui touchent peu à la technologie connaissent. On en a beaucoup parlé et ils sont énormément utilisés.

Ils sont devenus des standards massivement adoptés suite à des avantages importants :

  • La simplicité (à moins de le rendre obligatoire comme l'administratif français)
  • Le faible coût (ou étalé comme dans un abonnement mobile ou MMORPG)
  • La compatibilité et fonctionnalité
  • Les ajouts/innovations
  • La concurrence
Les standards qui tentent de s'imposer :
  • Ogg Vorbis : tente de luter vaillamment face au mp3 super connu et implanté partout et à l'aac (DRMisé)
  • OpenDocument : La prise de conscience aide les gens à se tourner vers l'open document face aux documents de la suite office de Microsoft
  • WebP : le nouveau format d'image développé par Google, en lute face au JPEG
  • WebM : Dans une bataille qui fait rage face à h264 et Theora

Et qu'en est-il de ces formats?

Bien qu'ogg Vorbis commence à être de plus en plus utilisé dans les jeux, les lecteurs mp3 freinent son déploiement et les constructeurs s'amusent à implémenter de l'aac qui s'oriente vers la haute définition, mais se voit plombé de brevets. A croire que les entreprises préfèrent perdre de l'argent dans les brevets plutôt que d'en dépenser dans la recherche. Au moins, Vorbis et FLAC existent et permettent aux indépendants et débutants de partir sur de bonnes bases.

Le format OpenDocument commence à prendre de l'ampleur : Avec l'arrivé de LibreOffice (fork d'OpenOffice), son utilisation par l'administration française, son format exploitable par les webmaster et disponible dans GoogleDocuments, l'avenir des standards est positif de ce coté. Pourvu que ça continues dans ce sens.

Google s'amuse lui aussi avec les formats, et à donc sorti "WebP" pour une meilleur qualité que le JPEG.
Manque de bol, même si la qualités est meilleur, les appareils photos numériques, les télévisions et énormément d'appareils gèrent nativement le JPEG. Il lui faudra énormément de temps pour s'imposer mais Google pourrait y arriver avec un grand coup de marketing (faire comprendre aux gens l’intérêt de passer à ce format) pour que es gens puissent facilement l'utiliser tous les jours.
Personnellement, et à part son nom à la con "WebP"??? Ils auraient pu l'appeler PicturePro ou PictureHQ, il leur faudra énormément de temps pour arriver à un succès, mais ce n'est pas impossible vu le manque de concurrents.

Pour WebM, et à la vue des récents évènements, il est indéniable qu'il sortira grand gagnant :
h264 est plombé par les brevets, ne sera plus disponible sous Google chrome, n'est pas compatible avec la GPL et ne peux donc être integré dans Firefox
WebM est lisible en natif par Firefox, Chrome et Opera, et sera lisible sous IE et Safari grâce à des plugins, de plus, des puces de décodages matérielles sont en cours d'élaboration/déploiement. Google aura été exemplaire sur ce coup.

Et je leurs tire mon chapeau quand je vois les services qu'ils proposent : leurs moteur de recherche, Gmail, GoogleDocuments, Google maps et passe pour un ange face à Facebook et Apple.
Certes, on peut les accuser d'ogre absorbant toutes nos informations en se nourrissant de publicité mais il s'agit d'une entreprise qui fonctionne dans une société de capitalisme et qui ne peut pas être exempte de défauts.
Je me demande par contre s'il ne serait pas intéressant d'avoir un site de présentation du libre connu et complet montrant les projets intéressants, avec non seulement Wikipédia ou Firefox, mais aussi des projets moins connus tels qu'OpenStreetMap, DMoz, DocumentFoundation...

En tout cas, n'oubliez pas de rester libre

vendredi, 31 décembre 2010

Astuces PHP

Quelques astuces PHP pour :

  • Traitemer des dates
  • Obtenir le résumé d'un texte UTF-8 (sans couper les mots)
  • Envoyer un mail en texte HTML en UTF-8
  • Connexions à une base de donnée
Le tout dans un unique fichier

Lire la suite...

jeudi, 18 novembre 2010

Bug du <select> d'IE

Un des bugs d'IE qui n'a pas été corrigé dans sa version 8 est le fait de ne pouvoir changer dynamiquement le contenu d'un select avec .innerHTML.

Microsoft propose des solutions de contournement : utiliser .innerHTML sur l'élément parent ou de passer par du DOM.

Très peu pratique quand on a déjà codé un select_element.innerHTML="nouvelles_options";

Heureusement, une solution rapide et efficace : remplacez select_element.innerHTML="nouvelles_options" par selectupdate(select_element,"nouvelles_options") et ajoutez la fonction de la page d'exemple suivante dans votre code :

<script>
   function selectupdate(destination,contenu) {
      if(navigator.userAgent.indexOf("MSIE") != -1) {
         var emptyselect = destination.outerHTML.split(destination.innerHTML);
         var result=emptyselect[0]+contenu+emptyselect[1];
         destination.outerHTML=result;
      } else {
         destination.innerHTML=out;
      }
   }
</script>
Exemple : <select id="test">
   <option>test1</option>
</select>
<input type="button" onclick="selectupdate(document.getElementById('test'), '<option>test2</option>')" value="OK">

jeudi, 21 octobre 2010

Supprimer les accents en PHP

S'il y a bien un truc embêtant en informatique, c'est la gestion des caractères. Vous connaissez ASCII, qui est un standard qui dit que par exemple, que "A" correspond à "1000001" histoire que les ordinateurs qui n'utilisent que des 0 et 1 puissent travailler avec.

Sauf que sur terre, on ne parle pas qu'anglais et que des caractères, il y en a un paquet dont une infime partie est gérée par ASCII. Vu que les autres standards de correspondance entre les caractères ne permet pas de mélanger des caractères facilement, on a crée utf-8 qui permet de gérer un grand nombre de caractères. Manque de bol, il faudra attendre PHP6 pour qu'il soit géré nativement.

En attendant que PHP6 sortes, pour convertir un texte UTF-8 en minuscules :

$texte=mb_strtolower($texte, 'UTF-8'); 

Et une méthode efficace pour supprimer les accents avec un texte UTF-8 (le script PHP doit être encodé en UTF-8!) :

$search =explode(',','á,à,â,ä,ã,å,ç,é,è,ê,ë,í,ì,î,ï,ñ,ó,ò,ô,ö,õ,ú,ù,û,ü,ý,ÿ');
$replace=explode(',','a,a,a,a,a,a,c,e,e,e,e,i,i,i,i,n,o,o,o,o,o,u,u,u,u,y,y');
$texte= str_replace($search,$replace,$texte);

Et pour un nom de fichier dont on veux retirer les caractères spéciaux :

$nom_fichier =  preg_replace('#[^a-zA-Z0-9\-\._]#', '_', $nom_fichier);

Et de quoi faire fonctionner des expressions régulières avec de l'UTF-8 :

$texte=utf8_decode($texte);
$mot=utf8_decode($mot);
$texte=preg_replace('#(?!<.*?)('.preg_quote($mot).')(?![^<>]*?>)#i','<span class="found">\1</span>',$texte);
$texte=utf8_encode($texte);

N'hésitez pas à en parler dans les commentaires si vous avez aussi des astuces pour gerer l'UTF-8

dimanche, 19 septembre 2010

Lecteur de texte amélioré

Internet, le réseau des réseau, a permis d'abolir les frontières physiques de l'échange avec un large public.

Nous ne sommes plus obligé de passer par un éditeur  pour publier un livre ou par un major pour faire écouter sa musique ou ses films. Un simple site web permet de publier du texte, des images, des vidéos, ... ce blog en est d'ailleurs la preuve. On peut même passer par des sites spécialisés pour ses livres, pour sa musique et ses vidéos. N'oubliez juste pas de vérifier que vos données vous appartiennent toujours.

Dans le cas où l'on vise un large public, il faut néanmoins vérifier que celui-ci puissent les utiliser. Outre la barrière de la langue et des handicaps possibles, la technologie peut aussi causer des problèmes techniques.

Les DRM, formats propriétaires et brevets sont voulu par des entreprises pour empêcher le partage et la diffusion des œuvres pour ne réaliser que des ventes histoire de nourrir les artistes et de faire fonctionner le système. Enfin, je doute que ce sois la meilleur solution à en voir les problèmes qui en découlent, le matraquage publicitaire, les DLC et tout ce qui en découle, mais on n'est pas là pour nourrir le troll donc passons.

Dans un guide, j'avais écrit un chapitre sur la publication de récits, que vous pouvez lire ici : HOWTO make a fanfic (mirroir) (Original). Bon, je n'avais pas trop expliqué comment créer une page web rapidement, ce que je vais corriger rapidement ici.

Créer une page web à partir d'un texte

On a la méthode rapide :
<!doctype html><html lang="fr"><head><meta charset="utf-8">
<title>Le titre de votre document</title>
</head><body><pre style="white-space:pre-wrap;font-family:sans-serif;">
votre texte
sur plusieurs lignes
</pre></body></html>
En prenant soin de remplacer "&" par "&amp;" , "<" par "&lt;" et  ">" par "&gt;" dans votre titre et votre texte.
Vous avez une page web HTML5 valide.


Sinon, vous pouvez vous baser sur ce fichier (zip) qui contiens pas mal d'améliorations pour la lecture : Choix de la couleur de fond, largeur de la page, type de police, taille de la police, marque-page en double-cliquant sur un mot.

ATTENTION : Pour la fonction de marque page, la position est enregistrée dans l'adresse de la page (après le #) et vous permet de  reprendre la lecture là où vous vous étiez arrêté dans un long document. Cette fonction n'est malheureusement pas compatible entre les différents navigateurs, leurs calculs internes étant différents, vous devrez reprendre la lecture sur le même navigateur.

Un peu de technique

La première astuce consiste à utiliser la propriété CSS "white-space:pre-wrap" qui indique au navigateur de prendre en compte les retours à la ligne sans avoir besoin des balises HTML spécifiques, et qui permet au texte de revenir à la ligne lorsqu'il atteints le bout de la fenêtre pour éviter d'avoir une barre de défilement horizontale que l'on aurais avec juste la balise <pre>. On change le style de police par défaut.

Un cadre de sélecteurs placé en position "fixed" permet de le laisser visible en permanence dans la page et 7 lignes de javascript Javascript permettent de changer le style de celle-ci, rien de bien compliqué.

La gestion des marque pages utilise 2 fonctions : "sauvegarder_marque_page" et "charger_marque_page".
Elles sont assez techniques mais pas très compliquées à comprendre, la fonction de sauvegarde :
  • Pour marquer la page, la fonction découpe le document en "bouts de texte"
  • On récupère le numéro du "bout de texte" et la position du caractère
  • On enregistre ces 2 numéros dans l'URL
La fonction de chargement, elle :
  • Récupère les 2 numéros dans l'URL
  • découpe le document en "bouts de texte"
  • place un marqueur de position au bon emplacement
  • fait défiler le navigateur à la bonne position
  • restaure le texte d'origine afin de supprimer le marqueur

Le code n'est pas encore parfait et a du mal avec les mises en page complexes, vu que lors du chargement de texte, je ne charge que du texte brut. Je mettrai l'article à jour si nécessaire.

Pour ceux que ça intéresse, la page web du guide HOWTO make a fanfic (mirroir) (Original) est composé d'une seule page web. Vous pouvez consulter le code source pour voir comment sont géré l'affichage des chapitres,  l'inclusion des images et la gestion de l'impression du document.

- page 7 de 8 -