Vous le savez sans doute si vous êtes sur Mac, l’Utilitaire d’Archive (Archive Utility ou encore BOMArchiveHelper) est un petit programme qui s’ouvre lorsque vous voulez extraire un fichier .zip. Ce petit programme m’a fait ***** ces dernières heures à ne pas vouloir extraire mes fichiers zip créer en PHP.. assez ralant sachant que la plupart des Mac users l’utilisent par défaut (je vous conseille personnellement “The Unarchiver.app”).

Le problème quand on se rend dans la console est.. très imprécis.
Archive Utility[1356]: failed to write to /usr/bin/ditto
[0x0-0xde0de].com.apple.archiveutility[1356]: ditto: Couldn't read pkzip signature.

L’extraction fonctionne incroyablement bien via la commande unzip sur le terminal.. étrange.

Bon je suis courageux ce soir, donc je m’en vais lire les spécifications de ZIP, je refais la classe entièrement (j’utilisais une classe téléchargée sur le net). Quelques problèmes plus tard, me revoilà au même point.. ça fonctionne superbement avec unzip et The Unarchiver.. mais pas par l’utilitaire d’archive de Mac OS X… (l’avantage c’est que ça m’a permis de rentrer dans les spécs de ZIP :p)

Quelques coups de Google plus tard (encore et encore), je trouve enfin la solution. Apparement le problème vient de ditto, et c’est l’un des derniers commentaires qui me fait comprendre. L’Archive Utility n’aime pas le Data Descriptor qui est pourtant bien dans la spécification. En effet, il suffit de supprimer le Data Descriptor et la magie s’opère. Encore merci à ce topic.. personne n’en parle, j’ai eu de la chance de tomber dessus.

Tout ça pour dire qu’Apple devrait faire des efforts à ce niveau la :-).. surtout que la commande unzip est parfaite.. au moins créer quelque-chose qui renvoie des erreurs plus précises, parce-que la c’est la misère.

Bon reste à voir si cela fonctionne sur Windows/linux maintenant..

J’ai remarqué que Wordpress ne fait pas toujours de belles URL.

Exemples :
- un titre avec un url du genre “google.com”, wordpress générera une url du type “googlecom”.
- Il vire aussi les “…”, genre “Je suis…fatigué” => “Je suisfatigue”
- Il vire les ‘, ce qui fait des mots “c’étais” => “cetais”
- Il vire les /, avec les dates ça fait pas top.

J’ai refais la méthode sanitize_title_with_dashes de wp-includes/formatting.php disponible ici :

function sanitize_title_with_dashes($str) {
/* lower letters */
if (seems_utf8($str)) {
if (function_exists('mb_strtolower')) {
$str = mb_strtolower($str, 'UTF-8');
}
//$str = utf8_uri_encode($str, 200);
}
else
$str = strtolower($str);
/* remove accents */
$str = remove_accents($str);
/* keep only letters/numbers */
$letters_ = "abcdefghijklmnopqrstuvwxyz0123456789";
$letters = Array();
for ($i=0;$i<strlen($letters_);$i++) {
$letters[] = substr($letters_,$i,1);
}
$tmp = $str;
$str = "";
for ($i=0;$i<strlen($tmp);$i++) {
$letter = substr($tmp,$i,1);
if(in_array($letter,$letters))
$str .= $letter;
else
$str .= "-";
}
/* remove double - */
while(strpos($str,"--") || substr($str,0,2) == '--')
$str = str_replace("--","-",$str);

/* trim the - at the begin or the end */
if(substr($str,0,1) == "-")
$str = substr($str,1,strlen($str) - 1);
if(substr($str,strlen($str)-1,1) == "-")
$str = substr($str,0,strlen($str) - 1);
return $str;
}

Cela ne s’appliquera évidemment qu’aux nouveaux posts.. il faut régénérer toutes les anciennes urls (les post_name dans la DB) à partir des titres (post_title).

Est-ce que quelqu’un sait comment on fait pour avoir des espaces entre les phrases…

Je ne comprenais pas pourquoi le _quality=”best” qui est censé rendre mieux les bitmap lorsqu’ils sont redimensionnés ne fonctionnait plus depuis Flash 8.. j’ai trouvé la réponse (voir le deuxième post).

En gros il faut loader l’image dans un MovieClip temporaire et ensuite paint le MovieClip réel grâce à BitmapData avec option smooth.

Pour supprimer le BitmapData, je n’ai rien trouvé de mieux que de supprimer le MovieClip parent..

C’est la qu’on se dit qu’Adobe a encore du boulot!

Note : un nouveau billet a été créé pour la dernière preview.

Posted Image

Je ne pouvais plus résister, je vous dévoile donc ce que sera PicsEngine 3. Tout d’abord, il faut savoir qu’il n’est pas du tout fini, qu’il reste des bugs et des finitions à apporter aux fonctionnalités déjà implémentées et qu’il ne sert strictement à rien de me rapporter des bugs. Vous pouvez néanmoins critiquer l’utilisation!

Voir la preview de PicsEngine 3.

Je citerai quand même quelques nouveautés parmis d’autres.
- Interface totalement customisable: images, couleurs des textes, etc. Vous en saurez plus lors de sa sortie!
- Redimensionnement des miniatures à la volée via l’interface Flash.
- Diaporama en plein-écran
- Clavier comme contrôle de navigation
- Affichage des miniatures en grille
- ..et bien d’autres qui sont déjà implémentées mais pas perceptibles ou en développement!

Preview de l’interface admin en vrac qui est sujet à changer:

Posted Image

Posted Image

Posted Image

Edit 3/10/07
J’ai changé ma technique, l’autre était beaucoup trop lourd côté serveur (merci rémi :P)
J’ai donc choisi d’utiliser Javascript en surcouche au widget MyBlogLog.
Voir le code de ce blog si vous voulez reproduire cela sur le votre.
Fin Edit

Ca fait longtemps que je trouve que le widget de MyBlogLog craint un max.
- C’est foireux pour appliquer un style, il faut mettre le style directement dans le <body> après l’inclusion du script MyBlogLog, c’est pas très joli.
- On sait pas ouvrir les pages des utilisateurs dans d’autres onglets (à notre époque c’est inconcevable)

J’ai créé un mini-script qui parse le widget MyBlogLog pour l’avoir dans un format convenable. XML ou HTML.
“http://www.nemstudio.com/tools/mybloglog.php?mblID=XXXXXXXXXXXXXXXX”
Il suffit d’y mettre votre id mybloglog facilement récupérable via la zone widgets du site en question.
La sortie par défaut est XML, pour mettre de l’html, rajoutez &output=html, ou directement avec une liste ul/li, &output=li.
La taille des images avec &size=25 en pixels (par défaut 26).
Le nombre d’images avec &count=10 (par défaut 5).

Pour les plus débutants, l’inclure en php se fait rapidement avec
<?php $mybloglog = file_get_contents(’http://www.nemstudio.com/tools/mybloglog.php?mblID=XXXXXXXXXXXXXXXX&count=8&output=ul’); echo $mybloglog; ?>
Par exemple.

Il ne faut pas oublier d’ajouter le tracker mybloglog à part avec :
<script language=”javascript” src=”http://track3.mybloglog.com/js/jsserv.php?mblID= XXXXXXXXXXXXXXXX”></script>

Voila ca sert pas à grand chose mais fallait que je le fasse!