Warning: UPDATE command denied to user 'michelon01'@'10.0.86.4' for table 'drupal_cache' query: UPDATE drupal_cache SET data = 'a:451:{s:13:\"theme_default\";s:7:\"garland\";s:13:\"filter_html_1\";i:1;s:18:\"node_options_forum\";a:1:{i:0;s:6:\"status\";}s:17:\"menu_primary_menu\";i:2;s:19:\"menu_secondary_menu\";i:2;s:15:\"install_profile\";s:7:\"default\";s:17:\"node_options_page\";a:1:{i:0;s:6:\"status\";}s:12:\"comment_page\";s:1:\"0\";s:18:\"drupal_private_key\";s:64:\"b4e640288de05f522bbe6b032bdd5e965244625713cbf8cf2021d99f2fe3072a\";s:19:\"file_directory_temp\";s:9:\"files/tmp\";s:19:\"file_directory_path\";s:5:\"files\";s:14:\"file_downloads\";s:1:\"1\";s:21:\"date_default_timezone\";s:4:\"7200\";s:22:\"configurable_timezones\";s:1:\"1\ in /home/michelon/www/olivier/blog/includes/database.mysql.inc on line 174

Warning: Cannot modify header information - headers already sent by (output started at /home/michelon/www/olivier/blog/includes/database.mysql.inc:174) in /home/michelon/www/olivier/blog/includes/bootstrap.inc on line 569

Warning: Cannot modify header information - headers already sent by (output started at /home/michelon/www/olivier/blog/includes/database.mysql.inc:174) in /home/michelon/www/olivier/blog/includes/bootstrap.inc on line 570

Warning: Cannot modify header information - headers already sent by (output started at /home/michelon/www/olivier/blog/includes/database.mysql.inc:174) in /home/michelon/www/olivier/blog/includes/bootstrap.inc on line 571

Warning: Cannot modify header information - headers already sent by (output started at /home/michelon/www/olivier/blog/includes/database.mysql.inc:174) in /home/michelon/www/olivier/blog/includes/bootstrap.inc on line 572

Warning: INSERT command denied to user 'michelon01'@'10.0.86.4' for table 'drupal_watchdog' query: INSERT INTO drupal_watchdog (uid, type, message, severity, link, location, referer, hostname, timestamp) VALUES (0, 'php', '<em>Cannot modify header information - headers already sent by (output started at /home/michelon/www/olivier/blog/includes/database.mysql.inc:174)</em> in <em>/home/michelon/www/olivier/blog/includes/common.inc</em> on line <em>141</em>.', 2, '', 'http://olivier.michelon.me/blog/?q=category/tag/accessibilite&page=2', '', '54.226.179.247', 1516771111) in /home/michelon/www/olivier/blog/includes/database.mysql.inc on line 174

Warning: INSERT command denied to user 'michelon01'@'10.0.86.4' for table 'drupal_watchdog' query: INSERT INTO drupal_watchdog (uid, type, message, severity, link, location, referer, hostname, timestamp) VALUES (0, 'php', '<em>UPDATE command denied to user &amp;#039;michelon01&amp;#039;@&amp;#039;10.0.86.4&amp;#039; for table &amp;#039;drupal_cache_browscap&amp;#039;\nquery: UPDATE drupal_cache_browscap SET data = &amp;#039;O:8:\\&amp;quot;stdClass\\&amp;quot;:2:{s:9:\\&amp;quot;useragent\\&amp;quot;;s:1:\\&amp;quot;%\\&amp;quot;;s:4:\\&amp;quot;data\\&amp;quot;;s:609:\\&amp;quot;a:25:{s:7:\\&amp;quot;browser\\&amp;quot;;s:15:\\&amp;quot;Default Browser\\&amp;quot;;s:7:\\&amp;quot;version\\&amp;quot;;s:1:\\&amp;quot;0\\&amp;quot;;s:8:\\&amp;quot;majorver\\&amp;quot;;s:1:\\&amp;quot;0\\&amp;quot;;s:8:\\&amp;quot;minorver\\&amp;quot;;s:1:\\&amp;quo in /home/michelon/www/olivier/blog/includes/database.mysql.inc on line 174
Accessibilité | MICHBlog

Accessibilité

  • warning: Cannot modify header information - headers already sent by (output started at /home/michelon/www/olivier/blog/includes/database.mysql.inc:174) in /home/michelon/www/olivier/blog/includes/common.inc on line 141.
  • user warning: UPDATE command denied to user 'michelon01'@'10.0.86.4' for table 'drupal_cache_browscap' query: UPDATE drupal_cache_browscap SET data = 'O:8:\"stdClass\":2:{s:9:\"useragent\";s:1:\"%\";s:4:\"data\";s:609:\"a:25:{s:7:\"browser\";s:15:\"Default Browser\";s:7:\"version\";s:1:\"0\";s:8:\"majorver\";s:1:\"0\";s:8:\"minorver\";s:1:\"0\";s:8:\"platform\";s:7:\"unknown\";s:5:\"alpha\";s:0:\"\";s:4:\"beta\";s:0:\"\";s:5:\"win16\";s:0:\"\";s:5:\"win32\";s:0:\"\";s:5:\"win64\";s:0:\"\";s:6:\"frames\";s:0:\"\";s:7:\"iframes\";s:0:\"\";s:6:\"tables\";s:0:\"\";s:7:\"cookies\";s:0:\"\";s:16:\"backgroundsounds\";s:0:\"\";s:10:\"javascript\";s:0:\"\";s:8:\"vbscript\";s:0:\"\";s:11:\"javaapplets\";s:0:\"\";s:15:\"activexcontrols\";s:0:\"\";s:8:\"isbanned\";s:0:\"\";s:14:\"ismobiledevice\";s:0:\"\";s:19:\"issyndicationreader\";s:0:\"\";s:7:\"crawler\";s:0:\"\";s:10:\"cssversion\";s:1:\"0\";s:10:\"aolversion\";s:1:\"0\";}\";}', created = 1516771111, expire = 0, headers = '' WHERE cid = 'CCBot/2.0 (http://commoncrawl.org/faq/)' in /home/michelon/www/olivier/blog/includes/database.mysql.inc on line 174.

Changer le mot de passe root et mobile d’un iPhone Jailbreaké

Le compte root est le compte administrateur du noyau UNIX. Il permet simplement de tout faire. Le compte mobile est un compte utilisateur.

Apple utilise le même mot de passe pour les comptes root et mobile sur chaque iPhone qu'il conçoit : il s'agit de "alpine". Aucun danger cependant qu'un iPhone d'origine se fasse hacker car aucun terminal distant n'est fourni par défaut. Néanmoins, le jailbreak permet d'installer OpenSSH, le Terminal distant par excellence, qui permet, avec le compte root, de tout faire à distance! D'où la nécessite de changer son mot de passe root une fois un iPhone jailbreaké pour des raisons de sécurité.

Du nouveau sur Street View : il passe à la 3D!

Il est désormais possible de regarder Street View en 3 dimension : un Pegman géant à lunette Rouge et Vert vient de faire son apparition.

Pegman_3D.PNG

Un clic sur celui-ci lui met des lunette et bascule la vue courante en vue anaglyphique, la plus célèbre des techniques stéréoscopiques. Il n'y a plus qu'à retrouver les lunettes pour anaglyphes de votre enfance et espérer qu'elles n'ont pas été jetées.

Google a même introduit cette fonctionnalité là dans les iframes Street View!

Changer l'adresse MAC de ses médiums de connexion réseau

Une adresse MAC (Media Access Control) ou UAA (Universally Administered Adress) est une adresse unique permettant d'identifier physiquement et mondialement une interface réseau. Elle est stockée dans cette interface.

Drupal : ajouter le module Lightbox2 à une gallerie d'images créée avec le module Image

J'en profite pour vous signaler une nouveauté sur mon blog : le MICHFlickr en haut à droite!!

Lightbox2 est à priori un super module compatible avec tous les modules d'image sur Drupal! Il doit, toujours à priori, automatiquement modifier les liens existants vers des images avec les paramètres qui vont bien pour qu'elles puissent s'afficher dans le viewer JS Lightbox2.

En pratique, rien du tout!

Je possède plusieurs galeries d'images créées avec le module Image, et Lightbox2 ne m'a pas changé les liens de ces galeries! Aidé par ici, j'ai alors entrepris de développer une page compatible avec Lightbox2 à l'image de celle affichant les galeries (/?q=image).

 Pour votre information, voici un extrait de ma Drupal config:

Cette configuration doit probablement planter avec l'outil "Automatic image gandling" de Lightbox2.

Je vous communique le code, parce qu'à la vue des premiers résultats Google, ça peut intéresser du monde!

<style type="text/css" media="all">
    ul.galleries{
        list-style-type:none;
        margin:0;
        padding:0;
    }
    ul.galleries li.subgalleries {
        -moz-background-clip:border;
        -moz-background-inline-policy:continuous;
        -moz-background-origin:padding;
        background:#EEEEEE none repeat scroll 0 0;
        border:1px solid #CCCCCC;
        margin:1em 0;
        padding:1em;
        position:relative;
    }
    ul.images {
        list-style-type:none;
        margin:0;
        padding:0;
    }
    ul.images li {
        -moz-background-clip:border;
        -moz-background-inline-policy:continuous;
        -moz-background-origin:padding;
        background:transparent none repeat scroll 0 0;
        float:left;
        margin:1em 2em 1em 0;
        padding:0;
    }
    ul.images li h3{
        font-size:1em;
    }
</style>
<ul class="galleries">
<?php
$result = db_query ("SELECT td.tid AS tid, td.name AS name, td.description AS description FROM {term_data} td");
while ($img = db_fetch_object($result)) {
    echo "<li class=\"subgalleries clear-block\">";
    echo "<h3>".$img->name."</h3>";
    echo "<div class=\"description\"><p>".$img->description."</p></div>";
    echo "<ul class=\"images clear-block\">";
    $gallery_tid=$img->tid;
    $subresult = db_query ("SELECT n.title AS title, f1.filepath AS originalpath, f2.filepath AS thumbpath FROM {files} f1, {files} f2, {node} n, {image} i, {image} i2, {term_node} tn WHERE tn.tid=%d AND i.nid=tn.nid  AND i.image_size='_original' AND i2.image_size='thumbnail' AND n.nid=tn.nid AND f1.fid=i.fid AND f2.fid=i2.fid AND i.nid=i2.nid", $gallery_tid);
    while ($subimg = db_fetch_object($subresult)) {
        echo "<li style='width : 100px;'>";
        echo "    <a href=\"/blog/".$subimg->originalpath."\" rel=\"lightshow[".$img->name."]\" title=\"".$subimg->title."\"><img src=\"/blog/".$subimg->thumbpath."\" width=\"100\" title=\"".$subimg->title."\"/></a>";
        echo "    <h3><a href=\"/blog/".$subimg->originalpath."\" rel=\"lightshow[".$img->name."]\" title=\"".$subimg->title."\">".$subimg->title."</a></h3>";
        echo "</li>";
    }
    echo "</ul>";
    echo "</li>";
}
?>
</ul>

Ce code est à insérer en PHP code dans une page par exemple.

EDIT 1 : Affichage des paramètres EXIF

<style type="text/css" media="all">
   ul.galleries{
        list-style-type:none;
        margin:0;
        padding:0;
    }
    ul.galleries li.subgalleries {
        -moz-background-clip:border;
        -moz-background-inline-policy:continuous;
        -moz-background-origin:padding;
        background:#EEEEEE none repeat scroll 0 0;
        border:1px solid #CCCCCC;
        margin:1em 0;
        padding:1em;
        position:relative;
    }
    ul.images {
        list-style-type:none;
        margin:0;
        padding:0;
    }
    ul.images li {
        -moz-background-clip:border;
        -moz-background-inline-policy:continuous;
        -moz-background-origin:padding;
        background:transparent none repeat scroll 0 0;
        float:left;
        margin:1em 2em 1em 0;
        padding:0;
    }
    ul.images li h3{
        font-size:1em;
    }
</style>
<ul class="galleries">
<?php
$result = db_query ("SELECT td.tid AS tid, td.name AS name, td.description AS description FROM {term_data} td");
while ($img = db_fetch_object($result)) {
    echo "<li class=\"subgalleries clear-block\">";
    echo "<h3>".$img->name."</h3>";
    echo "<div class=\"description\"><p>".$img->description."</p></div>";
    echo "<ul class=\"images clear-block\">";
    $gallery_tid=$img->tid;
    $subresult = db_query ("SELECT n.title AS title, f1.filepath AS originalpath, f2.filepath AS thumbpath FROM {files} f1, {files} f2, {node} n, {image} i, {image} i2, {term_node} tn WHERE tn.tid=%d AND i.nid=tn.nid  AND i.image_size='_original' AND i2.image_size='thumbnail' AND n.nid=tn.nid AND f1.fid=i.fid AND f2.fid=i2.fid AND i.nid=i2.nid", $gallery_tid);
    while ($subimg = db_fetch_object($subresult)) {
        $res_exif = "";
        if(in_array(strtolower(end(explode('.', $_SERVER['DOCUMENT_ROOT']."/blog/".$subimg->originalpath))), array('jpg', 'jpeg', 'tif', 'tiff'))){
            if($exif = exif_read_data($_SERVER['DOCUMENT_ROOT']."/blog/".$subimg->originalpath, EXIF, true)){
                $res_exif = "<br />";
                $exif_tab = Array();
                foreach ($exif as $key => $section){
                    foreach ($section as $name => $value){
                        $exif_tab[$name] .= $value;
                    }
                }
                if($exif_tab['FocalLength']){
                    $focale = round($exif_tab['FocalLength'], 0)/10;
                    $focale = $focale." mm";
                }
                if($exif_tab['Make'])
                    $marque = $exif_tab['Make'];
                if($exif_tab['Model'])
                    $modele = $exif_tab['Model'];
                if($exif_tab['ExposureTime'])
                    $vit_obt = $exif_tab['ExposureTime']." s";
                if($exif_tab['ISOSpeedRatings'])
                    $iso = $exif_tab['ISOSpeedRatings'];
                if($exif_tab['ApertureFNumber'])
                    $ouverture = $exif_tab['ApertureFNumber'];
                $res_exif .= "<span style='font-size:7px'>Focale: <i>".$focale."</i> | Ouverture <i>".$ouverture."</i> | Vitesse d'obturation: <i>".$vit_obt."</i> | ISO: <i>".$iso."</i></span>";
            }
        }
        echo "<li style='width : 100px;'>";
        echo "    <a href=\"/blog/".$subimg->originalpath."\" rel=\"lightshow[".$img->name."]\" title=\"".$subimg->title.$res_exif."\"><img src=\"/blog/".$subimg->thumbpath."\" width=\"100\" title=\"".$subimg->title."\"/></a>";
        echo "    <h3><a href=\"/blog/".$subimg->originalpath."\" rel=\"lightshow[".$img->name."]\" title=\"".$subimg->title.$res_exif."\">".$subimg->title."</a></h3>";
        echo "</li>";
    }
    echo "</ul>";
    echo "</li>";
}
?>
</ul>

EDIT 2 : Pagination

<style type="text/css" media="all">
    ul.galleries{
        list-style-type:none;
        margin:0;
        padding:0;
    }
    ul.galleries li.subgalleries {
        -moz-background-clip:border;
        -moz-background-inline-policy:continuous;
        -moz-background-origin:padding;
        background:#EEEEEE none repeat scroll 0 0;
        border:1px solid #CCCCCC;
        margin:1em 0;
        padding:1em;
        position:relative;
    }
    ul.images {
        list-style-type:none;
        margin:0;
        padding:0;
    }
    ul.images li {
        -moz-background-clip:border;
        -moz-background-inline-policy:continuous;
        -moz-background-origin:padding;
        background:transparent none repeat scroll 0 0;
        float:left;
        margin:1em 2em 1em 0;
        padding:0;
        width : 100px;
        height: 166px;
    }
    ul.images li h3{
        font-size:1em;
    }
</style>
<ul class="galleries">
<?php
$sql = "SELECT td.tid AS tid, td.name AS name, td.description AS description FROM {term_data} td ORDER BY td.tid DESC";
$result = pager_query(db_rewrite_sql($sql), 3);
while ($img = db_fetch_object($result)) {
    print "<li class=\"subgalleries clear-block\">";
    print "<h3>".$img->name."</h3>";
    print "<div class=\"description\"><p>".$img->description."</p></div>";
    print "<ul class=\"images clear-block\">";
    $gallery_tid=$img->tid;
    $subresult = db_query ("SELECT n.title AS title, f1.filepath AS originalpath, f2.filepath AS thumbpath FROM {files} f1, {files} f2, {node} n, {image} i, {image} i2, {term_node} tn WHERE tn.tid=%d AND i.nid=tn.nid  AND i.image_size='_original' AND i2.image_size='thumbnail' AND n.nid=tn.nid AND f1.fid=i.fid AND f2.fid=i2.fid AND i.nid=i2.nid", $gallery_tid);
    while ($subimg = db_fetch_object($subresult)) {
        $res_exif = "";
        if(in_array(strtolower(end(explode('.', $_SERVER['DOCUMENT_ROOT']."/blog/".$subimg->originalpath))), array('jpg', 'jpeg', 'tif', 'tiff'))){ // Si fichier Jpeg ou Tiff
            if($exif = exif_read_data($_SERVER['DOCUMENT_ROOT']."/blog/".$subimg->originalpath, EXIF, true)){ // Si le fichier $img contient des infos Exif
                $res_exif = "<br />";
                $exif_tab = Array();
                foreach ($exif as $key => $section){ // On parcourt la première partie du tableau multidimensionnel
                    foreach ($section as $name => $value){ // On parcourt la seconde partie
                        $exif_tab[$name] .= $value; // Récupération des valeurs dans le tableau $exif_tab
                    }
                }
                if($exif_tab['FocalLength']){ // Si les données de la distance focale existent
                    $focale = round($exif_tab['FocalLength'], 0)/10; // j'arrondis la valeur
                    $focale = $focale." mm"; // Je rajoute l'unité millimètre
                }
                if($exif_tab['Make']) // Marque de l'appareil
                    $marque = $exif_tab['Make'];
                if($exif_tab['Model'])// Modèle de l'appareil
                    $modele = $exif_tab['Model'];
                if($exif_tab['ExposureTime'])// Vitesse d'obturation
                    $vit_obt = $exif_tab['ExposureTime']." s";
                if($exif_tab['ISOSpeedRatings']) // Valeur iso
                    $iso = $exif_tab['ISOSpeedRatings'];
                if($exif_tab['ApertureFNumber'])//valeur ouverture
                    $ouverture = $exif_tab['ApertureFNumber'];
                $res_exif .= "<span style='font-size:7px'>Focale: <i>".$focale."</i> | Ouverture <i>".$ouverture."</i> | Vitesse d'obturation: <i>".$vit_obt."</i> | ISO: <i>".$iso."</i></span>";
            }
        }
        print "<li>";
        print "    <a href=\"/blog/".$subimg->originalpath."\" rel=\"lightshow[".$img->name."]\" title=\"".$subimg->title.$res_exif."\"><img src=\"/blog/".$subimg->thumbpath."\" width=\"100\" title=\"".$subimg->title."\"/></a>";
        print "    <h3><a href=\"/blog/".$subimg->originalpath."\" rel=\"lightshow[".$img->name."]\" title=\"".$subimg->title.$res_exif."\">".$subimg->title."</a></h3>";
        print "</li>";
    }
    print "</ul>";
    print "</li>";
}
?>
</ul>
<?php
    print theme('pager', NULL, 5);
?>

BlogPress : une application pour poster depuis son iPhone

Juste un petit post pour faire la promo de cette application qui permet de poster sur la plupart des plateformes de blog (Blogger, WordPress, Drupal...).
On peut même y insérer des photos prises avec Le fameux:

Regrettons par contre que les photos soient stockées sur les serveurs de BlogPress, l'API utilisée permettant pourtant l'upload sur le serveur du blog!!!!

En complément du Windows Live Writer, BlogPress vous permettra d'avoir la panoplie complète de l'éditeur de contenu unlogged.

Sur Drupal, il convient au préalable d'avoir activé le module natif "Blog API" pour l'utilisation des deux systèmes.

-- Posté de mon iPhone

Maito et encodage d'URL

L'URL (Uniform Resource Locators) a été définie en décembre 1994 au CERN. Mais cette spécification pose problème: elle autorise l'utilisation d'un simple extrait de l'US-ASCII: "Thus, only alphanumerics, the special characters "$-_.+!*'(),", and reserved characters used for their reserved purposes may be used unencoded within a URL."

En d'autres termes, les espaces, les caractères spéciaux ne sont pas autorisés dans l'écriture.

Du nouveau sur Google Maps : la géolocalisation!

Une nouveautés vient d'apparaître sur Google Maps : la localisation grâce à l'IP.

geoloc.PNG

Windows Live Hotmail agrège maintenant les mails!

Windows Live Hotmail comble une lacune qui n'était jusqu'à présent disponible que pour les abonnés de la version payante d'Hotmail (qui semble ne plus exister): l'agrégation de mails POP.

Notons que cette disponibilité était offerte depuis bien longtemps avec Gmail!!!

Pour y parvenir, cliquez sur "Ajouter un compte de messagerie" de la barre de lancement rapide et renseignez vos paramètres POP de courriers entrants dans les "Options avancées".

Microsoft devance Adobe sur l'affichage de vidéos sur l'iPhone

Il y'a quelques semaines, j'écrivais qu'Adobe reprochait à Apple de refuser la portabilité de son précieux Flash sur l'iPhone. 

betanews vient d'annoncer une nouvelle des plus surprenantes : Microsoft aurait travaillé avec Apple pour rendre compatible son Sylverlight sur l'iPhone.

Du nouveau sur Google Traduction!

Google Traduction vient de s'équiper de fonctionnalités extrêmement intéressantes : la traduction instantanée et la traduction vocale.
Disponible uniquement pour une traduction vers l'anglais, cette dernière, reposant sur Flash, est impressionnante !!

Syndiquer le contenu