SELECT WEEK( 1er Janvier);
[mysql]
SELECT WEEK('2008-01-01'); // 0;
SELECT WEEK('2008-01-07'); // 1;
SELECT WEEK('2008-02-03'); // 4;
SELECT WEEK('2008-12-31'); // 52;

WEEK ne compte que les semaines complètes.

Certains vont dire, mais non la première semaine c'est la 0.

Non, non, en voici la preuve

[mysql]
SELECT dayofweek('2008-01-01'), # 3
       dayofweek('2007-01-01'), # 2
       dayofweek('2006-01-01'), # 1 <- ICI l'année commence le premier jour de la semaine
       dayofweek('2005-01-01'), # 7
       dayofweek('2004-01-01'), # 6
       dayofweek('2003-01-01'), # 5
       dayofweek('2002-01-01'); # 4

Du coup

[mysql]
SELECT WEEK('2008-01-01'), # 0
       WEEK('2007-01-01'), # 0
       WEEK('2006-01-01'), # 1 <-on est bien la première semaine complète de l'année
       WEEK('2005-01-01'), # 0
       WEEK('2004-01-01'), # 0
       WEEK('2003-01-01'); # 0

et du coup

[mysql]
SELECT WEEK('2008-12-31'), # …
[Lire plus]
En route pour le salon solution linux

Je suis en train de préparer la semaine prochaine, qui va être sportive et festive : je parle bien sûr du salon linux. Ce sera avec beaucoup de plaisir que je vais retrouver un très grand nombre d'acteurs du libre, de PHP et bien sûr, mes collègues d'Alter Way.
Au programme, je propose deux sessions : la première est consacrée à PHP 6, et tout ce qui va changer avec cette nouvelle version. Cela sera la session la plus projective que j'ai faite, avec une forte probabilité que tout ce qui sera dit soit valable.. l'an prochain.
J'ai aussi une session sécurité PHP, sur laquelle je planche pour renouveler le concept : toutes les sessions sécurité font des listes d'épicerie de vulnérabilités à combler. Elles restent théoriques à mon goût, et, avec Philippe Gamache, on travaille à une approche plus pragmatique. L'audit de code PHP et par où commencer à chercher des failles dans le code devrait être une approche …

[Lire plus]
Alertes sécurité des applications PHP et MySQL, édition 179


PHP et MySQL ne font l'objet d'aucune alerte de sécurité dans leurs versions courantes :
PHP 5.2.5 et 4.4.8; MySQL 5.0.51 (communauté) , 4.1.22, ainsi que 5.1.22-beta et 6.0.3.
Les mises à jour sont recommandées vers ces versions.



7 alertes de sécurité ont été émises cette semaine, concernant des applications suivantes :
Drupal, Gallery, Horde, Joomla, MyBB, WordPress et ming


[Lire plus]
Une tonne d'utilitaires MySQL

Il y a les outils MySQL, mais aussi les utilitaires proposés par la communauté. LeFred publie une magnifique liste sur son blogue. Il y a notamment le


  • querysniffer, qui extrait les requêtes d'un serveur, sans active le log général;
  • mysqlsla, qui analyse le log de requête lentes
  • mysqlidchck,qui vous dit quels sont les index inutiles de votre base
  • querysniffer, qui extrait les requêtes d'un serveur, sans active le log général;
[Lire plus]
Rachat de MySQL AB par Sun: revue de web

L'information selon laquelle Sun rachetait MySQL AB n'a pas pu vous échapper. Depuis hier après-midi, le communiqué est repris et largement commenté sur un très grand nombre de supports.

Petite revue de web de cet évènement majeur de la vie du logiciel libre:

Les communiqués officiels:

La presse:

[Lire plus]
Vidéo PHP et MySQL, édition 28

Voici les 5 dernières vidéos PHP et MySQL.



Ces vidéos sont …

[Lire plus]
REPLACE reset les valeurs non spécifiées
[mysql]
# Je crée une table
DROP TABLE IF EXISTS `testReplace`;
CREATE TABLE `testReplace` (
  `id` int(10) unsigned NOT NULL auto_increment,
  `a` int(11) default '1',
  `b` int(11) default '2',
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

#J'y ajoute 2 records /lignes/tuples
INSERT into `testReplace` 
        (`a`, `b`)
        values
        (1, 1),(2,2);
SELECT * FROM  `testReplace`;
 id | a | b
============
  1 | 1 | 1
  2 | 2 | 2
[mysql]
#Je remplace la première valeur de la première ligne 
REPLACE into `testReplace` 
        SET `id`=1, a=3;
# que vaut b ? 
[mysql]
  SELECT * FROM  `testReplace`;
 id | a | b
============
  1 | 3 | 2
  2 | 2 | 2

B a repris sa valeur par défaut

En pratique cela veut dire que si on fait un replace et qu'on ne précise pas toutes les colonnes les colonnes non-spécifiées prennent la valeur par défaut alors qu'on peut s'attendre à …

[Lire plus]
Sun rachète MySQL

Après avoir été présenté comme la super star des introductions en bourse pour 2008, MySQL a finalement signé un accord avec Sun MicroSystems pour une acquisition. Selon O'reilly, l'acquisition de fait au coût de 1 milliard de dollars US en cash, et possiblement des stock options.
L'annonce est actuellement faite par Kaj Arno, sur son blog et l'annonce de presse de Sun semble introuvable à 14h50 , mais Kaj nous détaille les avantages de l'accord. Pour la communauté MySQL, Sun est un champion de l'Open Source, et entend continuer avec MySQL. MySQL fera toujours partie de LAMP, et il n'est pas prévu de l'y soustraire. Dans le sens inverse, il ne semble pas que Sun apporte de grands changements à la communauté MySQL (en bien ou en mal).
A première vue, le mariage est surtout un mariage de raison, pour des raisons probablement de nature entrepreneuriale et non technique : la croissance de la compagnie la conduisait à un …

[Lire plus]
Sun rachète MySQL

Après avoir été présenté comme la super star des introductions en bourse pour 2008, MySQL a finalement signé un accord avec Sun MicroSystems pour une acquisition.
L'annonce est actuellement faite par Kaj Arno, sur son blog et l'annonce de presse de Sun semble introuvable à 14h50 , mais Kaj nous détaille les avantages de l'accord. Pour la communauté MySQL, Sun est un champion de l'Open Source, et entend continuer avec MySQL. MySQL fera toujours partie de LAMP, et il n'est pas prévu de l'y soustraire. Dans le sens inverse, il ne semble pas que Sun apporte de grands changements à la communauté MySQL (en bien ou en mal).
A première vue, le mariage est surtout un mariage de raison, pour des raisons probablement de nature entrepreneuriale et non technique : la croissance de la compagnie la conduisait à un affrontement plus direct avec les grands éditeurs en place, et il est toujours difficile d'entrer dans l'arène quand on est …

[Lire plus]
Conseils de performances pour les applications LAMP

Euan a rassemblé ses notes de 6 mois de recherche sur Google concernant les performances des applications LAMP. Il les livre pour que les autres puisse éviter les mêmes erreurs.


  • in_array, serialize et unserialize sont lents
  • SQL_CALC_FOUND_ROWS peut être plus rapide que COUNT
  • key_buffer_size, sort_buffer_size et read_rnd_buffer_size pour les requêtes SQL
  • Eviter mysqldump et ses verrous de tables


D'autres conseils sur le site.