Digital Fashion

Rien de grand ne se fit jamais sans enthousiasme.

To content | To menu | To search

Le saviez vous ?

Entries feed - Comments feed

Google Reader + Wii

Google Reader dispose d'une interface dédiée à la wii (sur laquelle on tombe automatiquement quand on s'y rend avec opera4wii) et optimisé pour la wiimote.

via

Java et /dev/dsp

Il semblerait que la java virtual machine, connue sous le nom de java_vm par /usr/bin/lsof, attaque directement /dev/dsp, bloquant ainsi l'accès au son à toutes les autres applications. Pas très sympa.

dotdeb et PDO_Mysql

Pour ceux:

  1. qui utilisent le repository dotdeb
  2. qui se demandent pourquoi php5-pdo-mysql a disparu
  3. qui ne lisent pas les news de dotdeb

Sachez que php5-pdo-mysql a été renommé/fusionné en php5-mysql.

C'était l'info utile (ou pas) du jour.

MySQL, Interclassement et Recherche

Sur une colonne en interclassement utf8_bin, une recherche de type LIKE sera case sensitive (sensible à la casse) par défaut (je n'ai pas cherché / trouvé de moyen d'inverser ce comportement). Alors que sur un interclassement utf8_unicode_ci, la recherche se fait en mode case insensitive (insensible à la casse), à moins d'employer la syntaxe LIKE BIN 'needle'.

Coca-Cola et Minute Maid

Non je ne vous dirai pas que Minute Maid appartient à Coca-Cola, tout le monde le sait déjà. Le truc qu'on ne sait pas forcément, et ce surtout grâce au célèbre mantra coca == sucre, c'est qu'un Coca-Cola est moins calorique et contient moins de glucides qu'un Minute Maid Tropicale. Qui l'eut-cru ?

Liste de fichiers avec grep

Quand on cherche à récupérer une liste de fichiers contenant un motif particulier sous UNIX, on peut, quand on est une grosse brute comme moi, utiliser un mix des commandes grep, cut et uniq:

grep -r motif /emplacement/des/fichiers/ | cut -d : -f 1 | uniq

Le truc, c'est qu'il existe une option de grep qui remplace avantageusement l'appel a cut:

grep -rl motif /emplacement/des/fichiers | uniq

Je ne sais pas si l'option -l traite les doublons, a vérifier.

Pub éhontée

20 notes sur ruby on rails, un site bien si on ne veut savoir que 20 choses sur Ruby on Rails.

Si vous aussi vous êtes sympa, et que vous voulez que minitareck ait une bonne note, faites un lien sur votre blog, c'est d'utilité publique. Et en plus ça peut servir pour de vrai. Ou pas.

Reconfigurer les locales sous Ubuntu Dapper

Sous ubuntu Dapper, dpkg-reconfigure locales ne propose pas de modifier la locale a utiliser sur le système. C'est ennuyeux. Pour remédier a ce problème, nous pouvons utiliser le package localeconf:

This package provides a debconf-based interface to configuring the system-wide locale settings on your system.

C'est exactement ce qu'il nous faut.

$ sudo apt-get install localeconf
$ sudo dpkg-reconfigure localeconf

And violà ;-)

les fichiers .jar

Les fichiers .jar sont compressés au format zip.

En gros, quand vous avez un .jar qui traine et que vous ne savez pas quoi en faire, unzip lefichier.jar peut aider.

Le plus mauvais match de l'équipe de France

Danemark 17-1 France joué le 22 octobre 1908. Eh Beh.

Les galigeades du javascript

Prenons une page http://foo.example.org/foo.html avec, entre autre, cette portion de code javascript quelque part:

window.open('http://bar.example.org/bar.html');

La page http://bar.example.org/bar.html contenant elle même cet innocent bout de code:

alert(window.opener.location.toString());

On obtient une chouette Exception: Permission denied to call Location.toString(). Tout ça parceque les deux pages ne sont pas sur le même domaine. C'est frustrant non ?

Downgrade MySQL 5.0 vers 4.x avec APT

Si vous avez un mysql-server-5.0 d'installé et que vous souhaitez le downgrader vers un 4.x (pour une raison X ou Y), il est probable que APT vous jette ainsi:

Aborting downgrade from (at least) 5.0 to 4.1.
dpkg: error processing mysql-server-4.1_4.1.15-1ubuntu5_i386.deb (--install):
 subprocess pre-installation script returned error exit status 1
Errors were encountered while processing:
 mysql-server-4.1_4.1.15-1ubuntu5_i386.deb

So what ? Il s'agit en fait d'un problème causé par la présence du /var/lib/mysql du mysql-server-5.0, il suffit de le supprimer, ou de le déplacer pour backup:

rm -rf /var/lib/mysql
mv /var/lib/mysql /var/lib/mysql.old

Une des deux seulement hein ! Puis on relance l'installation:

apt-get install mysql-server-4.1

Ce post inaugure le retour en douceur des posts techniques sur ce blog.

MySQL, type de champ ENUM et type de valeur

Imaginons la table suivante:

+--------+---------------+------+-----+---------+-------+
| Field  | Type          | Null | Key | Default | Extra |
+--------+---------------+------+-----+---------+-------+
| foobar | enum('0','1') | YES  |     | NULL    |       |
+--------+---------------+------+-----+---------+-------+

Exemple complètement trivial, je sais. L'astuce du jour porte donc sur les requêtes de type SELECT avec un WHERE portant sur un champ de type ENUM. Ce qu'il faut savoir, c'est que la déclaration d'un champ en tant qu'ENUM fait qu'on ne peut pas considérer ce champs comme un entier. Ainsi, la requête suivante retournera un Empty set:

SELECT * FROM foobar WHERE foobar = 0;

Quelque soit le contenu de la table foobar. Il faut écrire la requête comme suit:

SELECT * FROM foobar WHERE foobar = '0';

Et pour les petits malins qui se croient plus malins que MySQL:

mysql> create table foobar (foo enum('0', '1'), bar(0, 1));
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(0, 1))' at line 1

Ajouter une ligne à la fin d'un array dans une boucle

Quand on est dans une boucle, et qu'on veut remplir un array, à chaque itération on doit y rajouter une ligne et garder la trace de l'index courant du tableau, cela peut se faire de plusieurs façons, en voilà au moins deux:

$array = array();
 
while(foo()) {
 
	$array[] = array();
	$row = & $array[count($array) - 1];
 
}
$array = array();
 
while(foo()) {
 
	$row = & $array[];
 
}

qu'on peut fonctionniser comme suit (dans le but par exemple de gagner en lisibilité et en flexibilité):

function & array_newrow(&$array, $default = array()) {
 
	$array[] = $default
	return $array[count($array) - 1];
 
}
 
function & array_newrow(&$array) {
 
	$row = & $array[];
	return $row;
 
}

EDIT

Il parait que c'est pas très clair, alors on va expliquer mieux. En gros, dans une boucle, si on veut ajouter une ligne à un array et qu'on procède comme ça:

$array[]['foo'] = 'bar';
$array[]['bar'] = 'foo';

Ca ne fonctionne pas comme on le désire (ça créé deux lignes d'une entrée chacune). On peut donc faire comme ça:

$array[] = array('foo' => 'bar', 'bar' => 'foo');

Ce qui fonctionne, mais n'est pas pratique ni flexible. Reste alors la solution de récupérer une référence vers la dernière ligne du tableau, qu'on créé spécialement pour l'occasion (sortez le champomy !) en utilisant la méthode sus-expliquée:

$row = & $data[];
$row['foo'] = 'bar';
$row['bar'] = 'foo';

Alt+Entrée dans Firefox

Dans la barre d'URL (raccourci: Alt+D) et dans la barre de Recherche (raccourci: Ctrl+K), Une validation par Alt+Entrée au lieu de Entrée ouvre un nouvel onglet. Pratique.

Conversion de dates

En PHP pour traiter des dates, on peut utiliser PEAR::Date, mais quand on ne peut/veut pas (pour une raison quelconque), et qu'on veut convertir une date au format SQL vers le format fr (ou l'inverse), on peut utiliser les bouts de code suivant:

<?php
 
// ceci est une date au format SQL
 
$date = date('Y-m-d');
 
// conversion SQL -> fr
 
$date = date('d/m/Y', strtotime($date));
 
// conversion fr -> SQL
 
$date = vsprintf('%3$d-%2$02d-%1$02d', sscanf($date, '%d/%d/%d'));
 
?>

On ne peut pas utiliser strtotime dans le sens fr -> SQL car il la traitera comme une date au format m/d/Y le bougre (alors que nous c'est d/m/Y).

Déficiences navigatoriales

le code suivant:

<form method="delete"><input type="submit" /></form>

générera une requête HTTP GET.

:(

DB_DataObject et PHP_VERSION

Je me suis rendu compte aujourd'hui que PEAR::DB_DataObject génère des fichiers différents selon la version de PHP utilisée. Avec /usr/bin/php5, il génère du code genre

public $__table = 'foo';

alors qu'avec /usr/bin/php4 il génère:

var $__table = 'foo';

Voila voila.

PS: notons également que geshi ne connait pas php5 :p

Console javascript et numéro de ligne

La console Javascript de Firefox (1.5) ne prend pas en compte les commentaires HTML.

Exemple

<html>
<head>
<!-- kikoolol -->
<script type="text/javascript">foo();</script>
</head>
<body></body>
</html>

Donnera une erreur du genre foo is not defined (line 3).

Modifier Firefox 1.5 pour qu'il fonctionne avec toutes les extensions

Vu chez Dan Cameron, Modifier Firefox 1.5 pour qu'il fonctionne avec toutes les extensions.

Petite traduction on the fly:

Pour tous ceux qui ont téléchargé Firefox 1.5 et dont les extensions ne fonctionnent plus. Voila une modification simple de la configuration de Firefox pour tromper les extensions et les faire fonctionner. Pas besoin de modifier manuellement les extensions pour qu'elles fonctionnent. Actuellement toutes les extensions fonctionnent sauf l'extension bookmark sync que j'aime tellement.

  1. Dans la barre d'adresse, entrez: about:config. Cela vous affichera la liste des préférences internes de Firefox.
  2. Faites un clic droit sur la liste, et choisissez New > String. Entrez app.extensions.version comme nom de la préférence.
  3. Puis, entrez 1.0 comme valeur pour app.extensions.version.
  4. Relancez Firefox 1.5, puis installez vos extensions Firefox.
  5. Relancez Firefox 1.5 pour activer les extensions. Voilà.

Personnellement, je pense que c'est la meilleure solution parceque vous pouvez toujours revenir en arrière et supprimer la préférence plus tard plutot que de bidouiller dans les extensions.

- page 1 of 2