Snippets populaires

Réduire le coût de performances de require_once

La fonction require_once étant assez coûteuse en PHP, il peut être intéressant de tester l'existence de l'objet que le fichier définit avant de le charger d'emblée :

class_exists('sfCache') or require_once($sf_symfony_lib_dir.'/cache/sfCache.class.php');
by Nicolas Perriault on 2007-01-15, tagged optimisation  performance  php 
(2 comments)

[Symfony] Traiter les OR sql avec Propel

Voici comment gérer les "ou" SQL dans Propel :

$criteria = new Criteria();
$criteria->add(TotoPeer::NAME, 'Gérard Bouchard');
$criterion = $criteria->getNewCriterion (
  TotoPeer::ID, 5
)->addOr($criteria->getNewCriterion (
  TotoPeer::ID, 10
));
$criteria->addAnd($criterion);
TotoPeer::doSelect($criteria);

Ceci donnera quelque chose comme :

SELECT 
  * 
FROM 
  toto 
WHERE 
  toto.NAME = 'Gérard Bouchard' 
  AND 
  (
    toto.ID = 5 
    OR 
    toto.ID = 10
  );
by Nicolas Perriault on 2007-01-15, tagged mysql  php  propel  sql  symfony 

Changer les caractères <CR> en <LF>

Convertir rapidement et simplement les caractères \r en \n :

$ perl -pi -e 's#\r#\n#gs' /path/to/file
by Nicolas Perriault on 2007-01-15, tagged character  cli  linux  perl  string 
(1 comment)

Can't start server: Bind on TCP/IP port: Cannot assign requested address

Des fois, MySQL c'est chiant. Merci IRC !

<n1k0> help
<n1k0> je dois installer un server mysql5 sur une ubuntu lts server toute fraiche
<n1k0> apt-get install mysql-server-5.0
<n1k0> et là c'est le drâme
<n1k0> il me sort ...failed or took more than 6s.
<n1k0>         Please take a look at the syslog.
<n1k0> /usr/bin/mysqladmin: connect to server at 'localhost' failed
<n1k0> error: 'Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)'
<n1k0> Check that mysqld is running and that the socket: '/var/run/mysqld/mysqld.sock' exists!
<n1k0> dans le syslog, j'ai :
<n1k0>  [ERROR] Can't start server: Bind on TCP/IP port: Cannot assign requested address
<n1k0> netstat, ps et lsof me montrent qu'aucun autre mysql ne tourne
<n1k0> j'ai tenté --reinstall --purge, rien n'y fait
<Yann2> et si t'essaie de démarrer le serveur?
<david`bgk> port utilisé ?
<n1k0> j'ai même rebooté la machine (!)
<n1k0> port 3306 libre
<Yann2> avec sudo /etc/init.d/ ?
<n1k0> rien n'y fait
<Yann2> meme message d'erreur?
<n1k0> ouais
<david`bgk> et /var/run/mysqld/mysqld.sock existe ?
<n1k0> non justement
<n1k0> mais d'ou vient le bleme ??
<worf|work> dans /etc/mysql/my.cnf regarde quel est le bind-adress
<worf|work> si y en a un etc...
<n1k0> j'ai aussi  ^G/usr/bin/mysqladmin: connect to server at 'localhost' failed
<[NikO]> j'adore les boulets sur msn, ils m'ajoutent dans leur contact, et ils me font 't'es ki ?'
<n1k0> dans le syslog
<worf|work> netstat -an | grep 3306
<worf|work> regarde si y a un truc qui listen aussi
<n1k0> bind-address : 127.0.0.1
<worf|work> il doit servir qu'en local ce mysql ?
<worf|work> ou d'autres machines devront s'y connecter ?
<n1k0> rien n'ecoute
<n1k0> non c'est du local pur
<worf|work> dans ps y a aucun mysqld ?
<n1k0> non
<worf|work> tapes : safe_mysqld
<worf|work> ou mysqld_safe
<worf|work> (si ça existe)
<n1k0> command not found
<n1k0> ah
<n1k0> Starting mysqld daemon with databases from /var/lib/mysql
<n1k0> mysqld_safe[4716]: started
<n1k0> STOPPING server from pid file /var/run/mysqld/mysqld.pid
<n1k0> mysqld_safe[4729]: ended
<n1k0> gné
<worf|work> ls -la /var/lib/mysql
<n1k0> total 20532
<n1k0> drwxr-xr-x  3 mysql mysql     4096 2007-01-10 13:35 .
<n1k0> drwxr-xr-x 22 root  root      4096 2007-01-10 13:21 ..
<n1k0> -rw-r--r--  1 root  root         0 2007-01-10 13:21 debian-5.0.flag
<n1k0> -rw-rw----  1 mysql mysql 10485760 2007-01-10 13:35 ibdata1
<n1k0> -rw-rw----  1 mysql mysql  5242880 2007-01-10 13:35 ib_logfile0
<n1k0> -rw-rw----  1 mysql mysql  5242880 2007-01-10 13:21 ib_logfile1
<n1k0> drwxr-xr-x  2 mysql root      4096 2007-01-10 13:21 mysql
<worf|work> ça m'a l'air pourtant pas mal
<n1k0> Le truc qui m'inquiète c'est :
<worf|work> chown mysql:mysql /var/lib/mysql 
<n1k0> http://www.debianforum.de/forum/viewtopic.php?t=59014&sid=f89fc839052a659222b63b77b55572d5
<n1k0> et surtout http://www.linuxforums.org/forum/servers/41668-mysql-problems-_-solved-_.html
<n1k0> Genre personne y comprend rien
<n1k0> le chown a rien changé
<worf|work> dans ton my.cnf vire ton bind-adresse
<n1k0> ok
<n1k0> ça marche !
<n1k0> bouarf
<worf|work> ton interface loopback est pas en bon état :)
<n1k0> yep
<worf|work> ferme ton 3306 avec un firewall
<worf|work> et pi toute façon quand tu fais tes GRANT restreint les ensuite à l'ip de la machine.
<Rik24d> david`bgk: je parlais bien évidemment des négo entre apple et les opérateurs
<worf|work> ifconfig lo
<worf|work> ça dit quoi ?
<n1k0> lo        Link encap:Local Loopback  
<n1k0>           LOOPBACK  MTU:16436  Metric:1
<n1k0>           RX packets:0 errors:0 dropped:0 overruns:0 frame:0
<n1k0>           TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
<n1k0>           collisions:0 txqueuelen:0 
<n1k0>           RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)
<worf|work> c le script réso qui pue
<worf|work> ifconfig lo UP
<Rik24d> n1k0: http://paste.inertie.org ;)
<david`bgk> paste.inertie.org :p
<david`bgk> arf
<n1k0> Rik24d, flemme + mode panic = excusez moi
<neuro`> Quelqu'un qui torche en rewrite rules ici ?
<david`bgk> c'est juste que c'est nouveau mais personne l'utilise ;)
<n1k0> YEAH
<n1k0> merci mille fois worf|work 
<worf|work> verifie tes scripts de démarrage
<n1k0> I owe you a beer, quand tu veux
<worf|work> c'est pas normal que lo soit pas UP
<worf|work> et ça doit etre ça qui merde, pas mysql
<n1k0> yep
<n1k0> mais là le truc tourne, je peux installer ma demo
<n1k0> je ferai un gros check up cet aprem
<n1k0> merci encore
<worf|work> de rien
by Nicolas Perriault on 2007-01-10, tagged bug  mysql  sysadmin 

Utiliser la JVM de Sun au lieu de GCJ

Vérifier la présence de la mchine virtuelle Java de Sun :

$ update-java-alternatives -l
java-1.5.0-sun 53 /usr/lib/jvm/java-1.5.0-sun
java-gcj 1041 /usr/lib/jvm/java-gcj

La mettre par défaut :

$ sudo update-java-alternatives -s java-1.5.0-sun

Puis :

$ sudo vi /etc/jvm

Écrire tout en haut du fichier :

/usr/lib/jvm/java-1.5.0-sun
by Nicolas Perriault on 2007-01-05, tagged java  jvm  sysadmin  ubuntu 

[Edgy] Sources.list bien cool

De quoi subvenir à la plupart des besoins.

# Ubuntu officials
deb http://archive.ubuntu.com/ubuntu/ edgy main restricted multiverse universe
deb http://archive.ubuntu.com/ubuntu/ edgy-updates main restricted multiverse universe
deb http://archive.ubuntu.com/ubuntu/ edgy-backports main restricted universe multiverse
deb http://security.ubuntu.com/ubuntu edgy-security main restricted multiverse universe
 
# Ubuntu commercials
deb http://archive.canonical.com/ubuntu edgy-commercial main
 
# Beryl
deb http://ubuntu.beryl-project.org edgy main
 
# Asher
deb http://asher256-repository.tuxfamily.org edgy main dupdate french
deb http://asher256-repository.tuxfamily.org ubuntu main dupdate french
 
# Medibuntu
deb http://medibuntu.sos-sts.com/repo/ edgy free
deb http://medibuntu.sos-sts.com/repo/ edgy non-free
 
# Wine
deb http://wine.budgetdedicated.com/apt edgy main
 
# Geany
deb http://gauvain.tuxfamily.org/repos edgy contrib
by Nicolas Perriault on 2007-01-03, tagged apt  ubuntu 
(2 comments)

Trouver tous les fichiers modifiés récemment

To find files modified between the last x days and the last y days (x > y) in the current directory (x and y are integers) :

$ find ./ -ctime -x -ctime +y
by gameplayer on 2007-01-03, tagged files  linux  sysadmin 

Générer la PHPDoc d'un projet

$ sudo apt-get install php-pear
$ sudo pear install PhpDocumentor
$ phpdoc -d /path/to/project/sources -t /path/to/project/doc
by Nicolas Perriault on 2006-12-26, tagged pear  php  phpdoc  ubuntu 

Multiton en PHP5

class Multiton
{
  private $instances = array();
 
  public function getInstance($var1, $var2, $var3)
  {
    $uid = md5((string)$var1.(string)$var2.(string)$var3);
    if (!isset(self::$instances[$uid])) 
    { 
      self::$instances[$uid] = new Multiton($var1, $var2, $var3);
    }
    return self::$instances[$uid];
  }
 
}
by Nicolas Perriault on 2006-12-26, tagged pattern  php 

Lire le @#!$% de format mp3 sous Ubuntu Edgy

Après avoir installé la moitié des packages universe ou autres medibuntu, c'était en fait un simple :

$ sudo apt-get install gstreamer0.10-ffmpeg

Now, banshee rocks.

by Nicolas Perriault on 2006-12-24, tagged codecs  mp3  ubuntu