Planet Fedora-Fr

fedora-fr fedora-fr

Aller au contenu | Aller au menu | Aller à la recherche

mercredi, avril 30 2008

Hier était pour moi un jour particulier puisqu'il s'agissait de mon dernier jour au sein de la société Kaliop. Une société et des collaborateurs avec qui j'ai pris plaisir à travailler pendant près de 2 ans & demi, et où je pense avoir beaucoup appris.

Lundi commencera pour moi un nouveau défi puisque j'intègre la société Logica, la 7e société de conseil, de services informatiques et outsourcing en Europe (sources Wikipédia) qui est plus connu en France sous son ancien nom : Unilog (Mais où est passé Unilog). Mon titre y est décrit comme "Ingénieur en technologies de l'information" et j'y ferais principalement du php5/MySQL/eZ Publish; bref, je m'aventure en terrain connu ;-).

Autre changement en prévision : un nouveau déménagement ! Ce coup si je n'emménage pas seul vu que je déménage pour habiter avec ma copine ;-).

Petit message à mes anciens collaborateurs : Vengeance ;-) : Dark Tyranus | Kakia la coquineTouche les tétous :-)

Billet original sur Le blog de llaumgui

 
 

dimanche, avril 27 2008

English A small introduction on using MySQL in strict mode to improve development quality.

Documentation : SQL Mode.

Français Une petite introduction sur l'utilisation de MySQL en mode strict pour améliorer la qualité du développement.

Documentation :

Un des reproches couramment fait à MySQL est son manque de respect des standards du Langage SQL. Et en effet il est vrai qu'il peut sembler laxiste. Cependant, il est possible de modifier son comportement pour respecter de manière plus stricte les standards. Ces options ne sont pas activées par défaut pour ne pas bloquer le fonctionnement des applications existantes.

Un exemple en mode classique :

mysql> CREATE TABLE `essai`.`Test` (
-> `Ref` INT UNSIGNED NOT NULL AUTO_INCREMENT ,
-> `Nom` VARCHAR( 10 ) NOT NULL ,
-> `Dat` DATE NOT NULL ,
-> PRIMARY KEY ( `Ref` )
-> ) ENGINE = innodb CHARACTER SET utf8 COMMENT = 'Test SQL Mode';
Query OK, 0 rows affected (0.00 sec)
mysql> SET sql_mode='';
Query OK, 0 rows affected (0.00 sec)
mysql> INSERT INTO Test SET Nom="Hello";
Query OK, 1 row affected, 1 warning (0.00 sec)
mysql> INSERT INTO Test SET Nom='Hello';
Query OK, 1 row affected, 1 warning (0.01 sec)
mysql> INSERT INTO Test SET Nom='empty date', Dat='';
Query OK, 1 row affected, 1 warning (0.00 sec)
mysql> INSERT INTO Test SET Nom='2008-04-31', Dat='2008-04-31';
Query OK, 1 row affected, 1 warning (0.00 sec)
mysql> INSERT INTO Test SET Nom='2008-05-01', Dat='2008-05-01';
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO Test SET Nom='Very long string', Dat=NOW();
Query OK, 1 row affected, 2 warnings (0.00 sec)
mysql> SELECT * From Test;
+-----+------------+------------+
| Ref | Nom | Dat |
+-----+------------+------------+
| 1 | Hello | 0000-00-00 |
| 2 | Hello | 0000-00-00 |
| 3 | empty date | 0000-00-00 |
| 4 | 2008-04-31 | 0000-00-00 |
| 5 | 2008-05-01 | 2008-05-01 |
| 6 | Very long | 2008-04-27 |
+-----+------------+------------+

On voit ici que toutes les requêtes sont acceptées, et que les résultats ne correspondent pas forcément au but rechercher par le développeur.

Maintenant, la même chose en mode strict :

mysql> TRUNCATE Test;
Query OK, 6 rows affected (0.01 sec)
mysql> SET sql_mode='STRICT_ALL_TABLES,ANSI_QUOTES,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_DATE,NO_ZERO_IN_DATE';
Query OK, 0 rows affected (0.00 sec)
mysql> INSERT INTO Test SET Nom="Hello";
ERROR 1054 (42S22): Unknown column 'Hello' in 'field list'
mysql> INSERT INTO Test SET Nom='Hello';
ERROR 1364 (HY000): Field 'Dat' doesn't have a default value
mysql> INSERT INTO Test SET Nom='empty date', Dat='';
ERROR 1292 (22007): Incorrect date value: '' for column 'Dat' at row 1
mysql> INSERT INTO Test SET Nom='2008-04-31', Dat='2008-04-31';
ERROR 1292 (22007): Incorrect date value: '2008-04-31' for column 'Dat' at row 1
mysql> INSERT INTO Test SET Nom='2008-05-01', Dat='2008-05-01';
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO Test SET Nom='Very long string', Dat=NOW();
ERROR 1406 (22001): Data too long for column 'Nom' at row 1
mysql> SELECT * From Test;
+-----+------------+------------+
| Ref | Nom | Dat |
+-----+------------+------------+
| 1 | 2008-05-01 | 2008-05-01 |
+-----+------------+------------+
1 row in set (0.00 sec)

Lorsque ce mode est activé, seule les requêtes totalement valides sont exécutées. Il est souvent préférable d'avoir un message d'erreur que d'accepter l'enregistrement de données corrompues.

De plus, il semblerait que certaines distributions de MySQL active désormais le mode strict par défaut (notament sous Windows). Cela peut provoquer de très mauvaises surprises si vos développements ne sont pas impeccables.

Conclusion

Si vous développez avec MySQL je vous recommande donc d'activer le mode strict, cela vous permettra de vérifier la qualité de votre code et d'éviter de nombreux rapport de bugs de vos utilisateurs. Pour cela, dans le fichier de configuration (/etc/my.cnf), ajouter dans la section du serveur ([mysqld]) :

sql-mode=STRICT_ALL_TABLES

Voir, encore plus exigeant :

sql-mode=STRICT_ALL_TABLES,ANSI_QUOTES,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_DATE,NO_ZERO_IN_DATE

N'oubliez pas de consulter la documentation pour bien comprendre l'impact de chacune des options disponibles. Plus vous serez exigeant, plus votre code a de chance d'être portable.

Au travail !

Billet original sur Les RPM de Remi

 
 

samedi, avril 19 2008

English RPM of the MySQL 5.1.24 Release Candidate Community Server are available in remi-test repository for Fedora >= 7 and EL5. This version is provided for test, see Changelog.

Français Les RPM de MySQL 5.1.24 Release Candidate Community Server sont disponibles dans le dépôt remi-test pour Fedora >= 7 et EL-5. Cette version est fournie pour test , voir le Changelog.

Dans cette version 5.1 plusieurs nouveautés me semblent particulièrement intéressantes :

Cette construction utilise un fichier .spec proche de celui de Fedora 8 modifié pour activer les "moteurs de stockage"  :

  • Federated : accès à une base distante
  • Archive : stockage économique sans indexation
  • CSV : fichier texte
  • Blackhole : trou noir, les données ne sont pas enregistrées (mais peuvent être synchronisées vers un serveur esclave)

J'aurais souhaité pouvoir compiler ces moteurs comme des extensions. Cependant, dans ce cas il est nécessaire de les déclarer après l'installation, ce qui n'est pas possible en RPM (il faut connaitre la mot de passe de l'administrateur MySQL).

ATTENTION : avant la mise à jour, une sauvegarde de vos bases de données est très vivement conseillée.

L'installation la plus simple consiste, bien sur, a utiliser yum !

yum --enable remi-test update mysql-server

Pour ceux qui préfèrent le téléchargement et l'installation à la main :

Comme à chaque changement de version il sera nécessaire de passer la commande mysql_upgrade qui vérifie les tables, les corrige si besoin et convertit la table contenant les privilèges utilisateurs. Dans tous les cas la lecture de la documentation est conseillée :

ATTENTION : les bibliothèques de cette version ne sont pas compatibles avec celles de la 5.0, elle fournit désormais libmysqlclient.so.16. Pour continuer à utiliser les applications destinées aux anciennes versions il faut donc installer mysqlclient15 (qui fournit libmysqlclient.so.15).

Cette version fournit en plus le paquet mysql-cluster pour ceux qui veulent s'amuser avec moteur ndb.

A noter que la version pour EL5 est désormais disponible car c'est celle qui tourne sur le serveur dédié hébergeant ce site et quelques autres.

Attention : si vous aviez installé mysql-5.1.23a-0.1.rc with Maria il est possible que la migration entraine la corruption de certaines tables. Dans ce cas un recherchement du dump de sauvegarde sera la meilleure solution.

Billet original sur Les RPM de Remi

 
 

mardi, avril 15 2008

English RPM of new version 3.0.2 of MySQL++ library are available in the remi repository for Fedora and Enterprise Linux (RHEL / CentOS). This new version is not API and ABI compatible with 2.x so will be only available in Fedora repository for Sulphur (Fedora 9).

Français Les RPM de la nouvelle version 3.0.2 de la bibliothèque MySQL++ sont disponibles dans le dépôt remi pour Fedora et Enterprise Linux (RHEL / CentOS). Cette nouvelle version n'est pas compatble (API et ABI) avec la 2.x, elle ne sera donc disponible dans le dépôt Fedora que pour Sulphur (Fedora 9)

MySQL++ est la bibliothèque officielle d'encapsulation C++ de la bibliothèque C pour MySQL.

Pour plus d'informations sur cette nouvelle version, je vous invite à lire le ChangeLog

L'installation se fait simplement avec yum :

yum --enablerepo=remi install mysql++-devel

Pour les inconditionnels du téléchargement, http://rpms.famillecollet.com/ :

La compilation et l'exécution des exemples fonctionnent :

cp -R /usr/share/doc/mysql++-devel-3.0.2/examples /tmp/examples
cd /tmp/examples
make
./resetdb -s localhost -u root -p secret

La documentation au format PDF et HTML se trouve dans le paquet mysql++-manuals et peut être consulter dans devhelp.

A noter que les fichiers spec utilisés pour générer les RPM sont (pratiquement) les mêmes pour le projet Fedora et pour le site officiel. Les RPM du site officiel sont construit avec les versions MySQL de MySQL.com, pour les versions "Enterprise Linux" (RHEL, CentOS...) et uniquement pour l'architecture i386. Les RPM du projet Fedora sont construit avec les versions MySQL du projet, pour les architectures i386, x86_64 et ppc. Les versions de mon dépôt sont constuite avec mysql-5.0.51a-2.

A noter que les mises à jour 3.0.0 vers 3.0.1 et 3.0.1 vers 3.0.2 cassent la compatibilité binaire. Normalement il suffit de recompiler les applications (la compatibilité de l'API est maintenue). Normalement ceci ne devrait pas se produire (le mainteneur du projet en est conscient).

Voir :

Billet original sur Les RPM de Remi

 
 

samedi, avril 12 2008

English RPM of new version 3.0.1 of MySQL++ library are available in the remi repository for Fedora and Enterprise Linux (RHEL / CentOS). This new version is not ABI compatible with 2.x so will be only available in Fedora repository for Sulphur (Fedora 9).

Français Les RPM de la nouvelle version 3.0.1 de la bibliothèque MySQL++ sont disponibles dans le dépôt remi pour Fedora et Enterprise Linux (RHEL / CentOS). Cette nouvelle version n'est pas compatble (ABI) avec la 2.x, elle ne sera donc disponible dans le dépôt Fedora que pour Sulphur (Fedora 9)

MySQL++ est la bibliothèque officielle d'encapsulation C++ de la bibliothèque C pour MySQL.

Pour plus d'informations sur cette nouvelle version, je vous invite à lire le ChangeLog

L'installation se fait simplement avec yum :

yum --enablerepo=remi install mysql++-devel

Pour les inconditionnels du téléchargement, http://rpms.famillecollet.com/ :

La compilation et l'exécution des exemples fonctionnent :

cp -R /usr/share/doc/mysql++-devel-3.0.1/examples /tmp/examples
cd /tmp/examples
make
./resetdb -s localhost -u root -p secret

La documentation au format PDF et HTML se trouve dans le paquet mysql++-manuals et peut être consulter dans devhelp.

A noter que les fichiers spec utilisés pour générer les RPM sont (pratiquement) les mêmes pour le projet Fedora et pour le site officiel. Les RPM du site officiel sont construit avec les versions MySQL de MySQL.com, pour les versions "Enterprise Linux" (RHEL, CentOS...) et uniquement pour l'architecture i386. Les RPM du projet Fedora sont construit avec les versions MySQL du projet, pour les architectures i386, x86_64 et ppc. Les versions de mon dépôt sont constuite avec mysql-5.0.51a-2.

Billet original sur Les RPM de Remi

 
 

dimanche, mars 30 2008

English RPM of the MySQL 5.1.23a Community Server with Maria (the new storage engine) are available in remi-test repository for F-8 and EL5. This version is provided for test only, see Changelog.

Français Les RPM de MySQL 5.1.23 Community Server avec (le nouveau moteur de stockage) Maria sont disponibles dans le dépôt remi-test pour F-8 et EL-5. Cette version est fournie pour test uniquement, voir le Changelog.

Dans cette version 5.1 plusieurs nouveautés me semblent particulièrement intéressantes :

Cette construction utilise un fichier .spec proche de celui de Fedora 8 modifié pour activer les "moteurs de stockage"  :

  • Federated : accès à une base distante
  • Archive : stockage économique sans indexation
  • CSV : fichier texte
  • Blackhole : trou noir, les données ne sont pas enregistrées (mais peuvent être synchronisées vers un serveur esclave)
  • Maria : un nouveau moteur de stockage gérant la reprise après crash

J'aurais souhaité pouvoir compiler ces moteurs comme des extensions. Cependant, dans ce cas il est nécessaire de les déclarer après l'installation, ce qui n'est pas possible en RPM (il faut connaitre la mot de passe de l'administrateur MySQL).

ATTENTION : avant la mise à jour, une sauvegarde de vos bases de données est très vivement conseillée.

L'installation la plus simple consiste, bien sur, a utiliser yum !

yum --enable remi-test update mysql-server

Pour ceux qui préfèrent le téléchargement et l'installation à la main :

Comme à chaque changement de version il sera nécessaire de passer la commande mysql_upgrade qui vérifie les tables, les corrige si besoin et convertit la table contenant les privilèges utilisateurs. Dans tous les cas la lecture de la documentation est conseillée :

ATTENTION : les bibliothèques de cette version ne sont pas compatibles avec celles de la 5.0, elle fournit désormais libmysqlclient.so.16. Pour continuer à utiliser les applications destinées aux anciennes versions il faut donc installer mysqlclient15 (qui fournit libmysqlclient.so.15).

Cette version fournit en plus le paquet mysql-cluster pour ceux qui veulent s'amuser avec moteur ndb.

A noter que la version pour EL5 est désormais disponible car c'est celle qui tourne sur le serveur dédié hébergeant ce site et quelques autres.

Billet original sur Les RPM de Remi

 
 

mercredi, février 20 2008

English RPM of new version 3.0.0 Release Candidate 5 of MySQL++ library are available in the remi-test repository for Fedora 6, 7 & 8 and Enterprise Linux 4 & 5.

Fedora packager, please read : mysql++ version 3.0.0 - soname bump

Français Les RPM de la nouvelle version 3.0.0 Release Candidate 5 de la bibliothèque MySQL++ sont disponibles dans le dépôt remi-test pour Fedora 6, 7 & 8 et Enterprise Linux 4 & 5 .

MySQL++ est la bibliothèque officielle d'encapsulation C++ de la bibliothèque C pour MySQL.

Ces paquets ont été construit avec mysql-5.0.51a-2.

L'installation se fait simplement avec yum :

yum --enablerepo=remi-test install mysql++-devel


cp -R /usr/share/doc/mysql++-devel-3.0.0/examples /tmp/examples cd /tmp/examples make ./resetdb -s server -s server -u user -p pass

La documentation au format PDF et HTML se trouve dans le paquet mysql++-manuals.

A noter que cette version remplacera prochaine la version 2.3.2 présente dans les dépôts officiels Fedora/EPEL. Il faut juste que je m'assure avant de la nécessité de créer un paquet mysql++-compat-2.

Billet original sur Les RPM de Remi

 
 

lundi, février 18 2008

Depuis quelques jours on me rapporte des comportements étranges sur les forums de fedora-fr. Les messages récents ne seraient plus triés dans le bon ordre (ni dans aucun autre d'ailleurs)... Étonnant, car je n'ai rien touché au code de notre PunBB depuis un bon petit moment...

Bref un petit vim include/common.php pour passer le PUN_SHOW_QUERIES à 1 et ainsi tracer les requêtes MySQL et m'apercevoir que la requête fait bien un ORDER BY t.last_post DESC:

SELECT t.id AS tid, t.poster, t.subject, t.last_post, t.last_post_id, t.last_poster, t.num_replies, t.closed, t.forum_id
FROM punbb_topics AS t
WHERE t.id
IN ( 14524, 29504, 29192, 29526, 29426, 29358, 29381, 29507, 29512, 29534, 29523, 29531, 29532, 29514, 29469, 28791, 29308, 29141, 20353, 29449, 29505, 28867, 29500, 29495, 29535, 29321, 29478, 29480, 29486, 29499, 29506, 29528, 29529, 29457, 29496, 29533, 28380, 29510, 28969, 29142, 29416, 29454, 29511, 29513, 26116, 29333, 29267, 29455, 29493, 29524, 28420, 29258, 29410, 29418, 29452, 29509, 29491, 29477, 29487, 29492, 29501, 29508, 29515, 29517, 29519, 29520, 29525, 29530, 29527, 27926, 28938, 29231, 29265, 29371, 29440, 29485, 29497, 29502, 29518, 29522, 29521 )
GROUP BY t.id, t.poster, t.subject, t.last_post, t.last_post_id, t.last_poster, t.num_replies, t.closed, t.forum_id
ORDER BY t.last_post DESC
LIMIT 0 , 30

Un café plus tard, je lance directement la requête dans l'interface de phpMyAdmin et je m'aperçois que les résultats ne sont effectivement pas triés dans l'ordre... Mais qu'ai je fais ?! Je trace le log de yum et je constate que je suis récemment passé de mysql-server 5.0.45 à la version 5.0.51a...

root@borsalino ~> cat /var/log/yum.log | grep mysql
Oct 15 20:05:57 Installed: mysql.i386 5.0.27-1.fc6
Oct 15 20:08:09 Installed: mysql-server.i386 5.0.27-1.fc6
Oct 15 20:08:10 Installed: php-mysql.i386 5.1.6-3.7.fc6
Jan 20 18:56:44 Installed: mysql-libs.i386 5.0.45-1.fc6.remi
Jan 20 18:56:47 Updated: mysql.i386 5.0.45-1.fc6.remi
Jan 20 18:56:54 Updated: mysql-server.i386 5.0.45-1.fc6.remi
Jan 20 18:56:54 Updated: php-mysql.i386 5.2.5-1.fc6.remi
Feb 17 13:06:18 Updated: mysql-libs.i386 5.0.51a-1.fc6.remi
Feb 17 13:06:22 Updated: mysql.i386 5.0.51a-1.fc6.remi
Feb 17 13:06:29 Updated: mysql-server.i386 5.0.51a-1.fc6.remi

Dans le doute je contact l'ami Remi qui m'aide et me trouve ce bug : #30596 : GROUP BY optimization gives wrong result order.

Effectivement en virant les GROUP BY la requête se retrouve ordonnée comme il faut...
5 minutes plus tard Remi lance un build de MySQL comportant le correctif que j'installe dans la foulée et tout ce remet à marcher dans l'ordre ;-).

root@borsalino ~> yum --enable remi-test update mysql\*

Billet original sur Le blog de LLaumgui

 
 

samedi, février 16 2008

English RPM of the new MySQL 5.0.51a Community Server are available in remi repository. New storage engines are also include. New sub-package (mysql-cluster) is provided (as for RHEL) This version include a lot of fixes.

Français Les RPM du nouveau MySQL 5.0.51a Community Server sont disponibles dans le dépôt remi. Ils intégrent les nouveaux moteurs de stockages. Un nouveau sous-paquet (mysql-cluster) est fournit (comme pour RHEL). Cette version contient de nombreux correctifs.

Avec pas mal de retard pour cette version sortie il y a quelques temps déjà (5.0.51 en novembre, 5.0.51a en janvier), mais je passe actuellement plus de temps sur la version 5.1.x.

Cette construction utilise le fichier .spec de Fedora 8 modifié pour activer les "moteurs de stockage"  :

  • Federated : accès à une base distante
  • Archive : stockage économique sans indexation
  • CSV : fichier texte
  • Blackhole : trou noir, les données ne sont pas enregistrées (mais peuvent être synchronisées vers un serveur esclave)
  • NDB : pour les serveurs en grappe (cluster)

L'installation la plus simple consiste, bien sur, a utiliser yum !

yum --enablerepo=remi update mysql\*

Pour ceux qui préfèrent le téléchargement et l'installation à la main :

Comme à chaque changement de version il sera nécessaire de passer la nouvelle commande mysql_upgrade qui vérifie les tables, les corrige si besoin et convertit la table contenant les privilèges utilisateurs (même si vous étiez déjà en 5.0.x) . Dans tous les cas la lecture de la documentation est conseillée :

J'ai remarqué que d'autres fournissait les RPM de la version MySQL 5.0.54 Enterprise, mais je ne suis vraiment pas persuadé que cela soit conforme à la licence. L'utilisation de la version communauté permet de disposer des correctifs des dernières versions entreprises.

P.S. désolé pour les liens vers la documentation en anglais, mais celle en français n'est vraiment pas à jour.

Billet original sur Les RPM de Remi

 
 

vendredi, février 15 2008

English RPM of the MySQL 5.1.23 Release Candidate Community Server are available in remi-test repository for F-7, F-8 and EL5. This version is provided for test only, see Changelog.

Français Les RPM de MySQL 5.1.23 Release Candidate Community Server sont disponibles dans le dépôt remi-test pour F-7, F-8 et EL-5. Cette version est fournie pour test uniquement, voir le Changelog.

Dans cette version 5.1 plusieurs nouveautés me semblent particulièrement intéressantes :

Cette construction utilise un fichier .spec proche de celui de Fedora 8 modifié pour activer les "moteurs de stockage"  :

  • Federated : accès à une base distante
  • Archive : stockage économique sans indexation
  • CSV : fichier texte
  • Blackhole : trou noir, les données ne sont pas enregistrées (mais peuvent être synchronisées vers un serveur esclave)

J'aurais souhaité pouvoir compiler ces moteurs comme des extensions. Cependant, dans ce cas il est nécessaire de les déclarer après l'installation, ce qui n'est pas possible en RPM (il faut connaitre la mot de passe de l'administrateur MySQL).

ATTENTION : avant la mise à jour, une sauvegarde de vos bases de données est très vivement conseillée.

L'installation la plus simple consiste, bien sur, a utiliser yum !

yum --enable remi-test update mysql-server

Pour ceux qui préfèrent le téléchargement et l'installation à la main :

Comme à chaque changement de version il sera nécessaire de passer la commande mysql_upgrade qui vérifie les tables, les corrige si besoin et convertit la table contenant les privilèges utilisateurs. Dans tous les cas la lecture de la documentation est conseillée :

ATTENTION : les bibliothèques de cette version ne sont pas compatibles avec celles de la 5.0, elle fournit désormais libmysqlclient.so.16. Pour continuer à utiliser les applications destinées aux anciennes versions il faut donc installer mysqlclient15 (qui fournit libmysqlclient.so.15).

Cette version fournit en plus le paquet mysql-cluster pour ceux qui veulent s'amuser avec moteur ndb.

A noter que la version pour EL5 est désormais disponible car c'est celle qui tourne sur le serveur dédié hébergeant ce site et quelques autres.

Billet original sur Les RPM de Remi

 
 

dimanche, janvier 20 2008

Devant la coupure de service, surement due à une monté en charge de Borsalino, et devant les failles récentes révélées pour php : j'ai décidé de basculer Borsalino sur le dépôt de l'ami Remi Collet qui maintient toujours les packages php et MySQL pour Fedora 6 alias Zod !

On install le dépôt :

root@borsalino ~> wget http://remi.collet.free.fr/rpms/remi-release-6.rpm
root@borsalino ~> rpm -Uvh remi-release-6.rpm

On active le dépôt en passant enabled à 1 :

root@borsalino ~> vim /etc/yum.repos.d/remi.repo

Et on mets à jour :

root@borsalino ~> yum clean all; yum update
[...]
Dependencies Resolved

=============================================================================
 Package                 Arch       Version          Repository        Size
=============================================================================
Updating:
 mysql                   i386       5.0.45-1.fc6.remi  remi              2.1 M
 mysql-server            i386       5.0.45-1.fc6.remi  remi               10 M
 php                     i386       5.2.5-1.fc6.remi  remi              1.3 M
 php-cli                 i386       5.2.5-1.fc6.remi  remi              2.5 M
 php-common              i386       5.2.5-1.fc6.remi  remi              226 k
 php-eaccelerator        i386       1:0.9.5.2-1.fc6.remi  remi              136 k
 php-gd                  i386       5.2.5-1.fc6.remi  remi              115 k
 php-ldap                i386       5.2.5-1.fc6.remi  remi               33 k
 php-mbstring            i386       5.2.5-1.fc6.remi  remi              1.1 M
 php-mcrypt              i386       5.2.5-1.fc6.remi  remi               28 k
 php-mysql               i386       5.2.5-1.fc6.remi  remi               83 k
 php-pdo                 i386       5.2.5-1.fc6.remi  remi               89 k
 php-pear                noarch     1:1.6.2-1.fc6.remi  remi              400 k
 php-xml                 i386       5.2.5-1.fc6.remi  remi               97 k
Installing for dependencies:
 mysql-libs              i386       5.0.45-1.fc6.remi  remi              1.5 M
 sqlite2                 i386       2.8.17-1.fc6     extras            170 k

Transaction Summary
=============================================================================
Install      2 Package(s)        
Update      14 Package(s)        
Remove       0 Package(s)        

Total download size: 20 M

Pour finir, on peut utiliser mon script pour notifier des mises à jour via yum...

Billet original sur Le blog de LLaumgui

 
 

mercredi, juillet 4 2007

Comme certains le savent peut être, je suis fan de PaintBall et j'administre avec mon pote Radinus, la plus grosse communauté francophone de paintball scénarisé.

Avec une base de données MySQL qui grandie chaque jour (laisse tomber la manipulation de 200Mo sur un mutu' sans le shell) et les sites satellites qui vont arriver, il fallait se prendre un petit dédié.
Le choix s'est donc porté sur une Dedibox (pas pour rien qu'on l'appel Radinus) et pour le système d'exploitation, j'ai choisis CentOS 5.0, pourquoi ?

Les raisons sont multiples :

  • Professionnellement, j'administre du Debian, une CentOS me permet d'acquérir de nouvelles expériences et de prendre une bouffée de RPM dans un monde de deb.
  • C'est la famille (représente le chapeau !).
  • Autant je kiff Fedora pour du desk, autant son cycle de vie accéléré est moyen pour du serveur. Donc, dans la famille Red Hat, je demande le serveur au support gratuit : CentOS; bonne pioche.

Bref, pour le moment le strict minimum tourne dessus (apache/MySQL/Postfix) et je commence à transférer les petits sites satellites avant de passer au gros forum.

Billet original sur Le blog de LLaumgui

 
 

samedi, septembre 9 2006

Suite à ma réflexion ainsi que l'avale des ambassadeurs francophones du projet Fedora, je viens de commencer le script de migration de Xoops vers punBB. Pour le moment, seul les groupes sont convertis (oui je sais, c'est le plus facile), mais cette migration ma permis de construire le script et sa logique.

Quel est la logique de ce script ?

Des requêtes SELECT alimentent un tableau de correspondance des données de Xoops vers celles de punBB. Ensuite, ce tableau est passé à la fonction buildInsert qui va construire la requête d'insertion.

function convGroupe () {
        
               //$this->emptyTable( "punbb_groups" );
               
               $query = $this->query( "SELECT * FROM xoops_groups ORDER BY groupid" );
                      
               while ( $groupe = $this->fetch_array($query) ) {
                        // Convertie les groupid                      
                      $groupe['groupid'] = $this->convertGroupeId($groupe['groupid']);
                      if ( $groupe['groupid'] > 4 ) {
                      
                             $tabarray(   'g_id'                             => $groupe['groupid'],
                                                                       'g_title'                                    => $groupe['name'],
                                                                           'g_user_title'     => $groupe['name'],
                                                                       'g_read_board'     => 1,
                                                                       'g_post_replies'                            => 1,
                                                                       'g_post_topics'                                => 1,
                                                                       'g_post_polls'     => 1,
                                                                       'g_edit_posts'     => 1,
                                                                       'g_delete_posts'                            => 1,
                                                                       'g_delete_topics'                        => 1,
                                                                       'g_set_title'          => 0,
                                                                       'g_search_users'                            => 1,
                                                                       'g_edit_subjects_interval'     => 300,
                                                                       'g_post_flood'     => 60,
                                                                       'g_search_flood'                            => 30,
                                    );
                             $this->buidInsert( 'punbb_groups', $tab);
                      }
               }                             
        }



        /**
         * Construction de requêtes d'insertion.
         * @author Guillaume Kulakowski <guillaume AT llaumgui DOT com>
         * @since 0.1
         * @TODO Code lourd à optimisé.
         * @param array $tab     Paramêtres.
         */

        function buidInsert( $table, $tab ) {
       
                $_key;
                $_value;

                foreach ( $tab as $key => $value ) {
                        $_key[] = $key;
                        $_value[]       = $value;
                }
       
                $SQL = "INSERT INTO ".$table." (" . implode(", ", $_key) . ") VALUES ('" . implode("', '", $_value) . "')";
                $this->query($SQL);
        }

Le layer de base est minimaliste car le script reste quand même dans un esprit one-shoot mais pourra être repris par toutes personnes voulant réaliser la même opération.

Pré requis du script, lorsqu'il sera fini :

php4 ou supérieur, par contre la base de données de Fedora-France étant assez conséquente, je compte lancer le script en ligne de commande. Il sera donc optimisé pour les gros forums/sites mais pourra ne pas marcher avec un simple appel via un navigateur.

Un roadmap ?

Non, le script sera prêt quand il sera prêt et sera sous licence GNU/GPL, vous pouvez déjà télécharger la version en cours de développement attachée à ce billet. Version finale disponible attachée à ce billet

Billet original sur Le blog de LLaumgui

 
 

samedi, septembre 2 2006

Depuis plusieurs années, Fedora-France tourne sous Xoops, un CMS ultra complet mais qui nous enferme dans son univers. Depuis que j'ai pris en charge la partie technique du site, je n'ai pas eu le courage de changer et, je l'avoue, j'ai même freiné ce changement.

A présent je m'interroge...
De par mon travail, j'ai énormément progressé et je suis capable de réaliser une migration de CBB (forum de Xoops) vers punBB sans problème (en fait, j'en étais capable avant, mais comme je n'avais rien fais de tel, j'avais un peu la flemme ;)).
Et, récemment, la réflexion de Damien Durant sur la liste de diffusion des ambassadeurs francophone m'a réconforté dans mon idée qu'il faut envisager le changement.

L'hébergement :

Avant tout, le vrai problème de Fedora France demeure l'hébergement. De plus en plus une solution dédiée s'impose ! Elle permettrait de souffler et de mettre fin au erreur 500 et autre petit problème de l'hébergement communautaire. Mais surtout, elle permettrait au site de prendre son envol.

La question est quel hébergement pour Fedora-France ?

  • Apparemment le Projet Fedora est hébergé par Red Hat qui n'héberge que du statique ou du Python pour raisons de sécurité.
  • Avec le trafic actuel et de la publicité nous pourrions nous payer une Dedibox (solution dédiée de Free) sans trop de problème. Mais l'idée de la pub ne va-t-elle pas contre nos idées de liberté ?
  • La solution serait alors de se monter en association (c'est prévu), de démarcher des fournisseurs (Dedibox en premier) et de leurs faire profiter de notre image de libre en nous soutenant.

La structure de Fedora France et le choix d'un CMS

Damien propose de suivre le projet Fedora dans ses choix et de passer vers une solution Python, mais je pense que l'architecture php/MySQL offrirait beaucoup plus de souplesse, et en plus c'est ma spécialité.

Voici ma réflexion :

  • Forum : punBB (scripts CBB -> punBB par moi même).
  • Wiki : DokuWiki, intégré à punBB (étude de la faisabilité d'un script wiwimod -> DokuWiki qui soit correct).
  • Planet : DotClear 2 et son plugin planet visible ici.
  • Page d'accueil : Faites maison.

Je sais, certain dirons que cette structure ressemble pas mal à un autre site... Mais à problématique proche, solution proche.

Bref, le travail que j'aurais à faire pourrait être découpé en plusieurs étapes :

  1. Migration de Fedora France.
  2. Installation du planet.
  3. Migration du forum.
  4. Migration de la home page.
  5. Migration du wiki.

Cette réflexion n'engage que moi et nullement Fedora-francce. Elle est juste là pour aider un éventuel webmaster/administrateur qui se retrouverait face à une solution historique et serait effrayé par l'obstacle d'une migration.

Billet original sur Le blog de LLaumgui