Fork me on GitHub

Les aspects techniques de la fusion

200408
Décembre
  Christian Lettres d'informations 7505

Une fois l'idée de cette fusion validée, un groupe projet s'est constitué pour en définir la stratégie, les objectifs, ce qu'on souhaitait ou ne souhaitions pas.

La mise en oeuvre fut un peu longue, il est vrai, mais nous sommes tous bénévoles, avons une activité professionnelle à coté, et le plus souvent Xoops n'est pas forcément notre seule passion. De plus nous avions envie d'intégrer directement la dernière version du module newbb et avons essayé de calquer la date de fusion avec la date de sortie définitive de ce module que vous semblez tous apprécier.

Je vais donc vous faire un résumé des différentes étapes qui ont constitué cet évènement, représentant une charge de travail importante.


Création du nouvau site
Lorsque le nouvel espace d'hébergement fut disponible, nous avons installé Xoops à partir de la dernière version publiée du megapack, plus quelques autres modules, dont certains ont été clonés à partir de la méthode proposée par TheCat dans le manuel de référence de la documentation.

Nous avons ensuite activé le mode debug afin de vérifier que tous ces modules étaient compatibles en eux, contrôler les "define" manquants des fichiers de traduction et tester différentes fonctionnalités sur ces modules pour voir si elles étaient effectivement opérationnelles.

Intégration du thème
Nous avons d'abord sollicité Goran, qui nous avait proposé de nous faire un thème, mais il n'apas donné suite au cahier des charges que nous lui avions fourni. C'est donc notre Chewb qui s'est chargé de nous faire des propositions. Elles ont été validées en une semaine environ et vous pouvez en constater l'excellent résultat produit.

La feuille de style
Après la partie graphique, la feuille de style est vraiment un élément essentiel si l'on souhaite donner une image cohérente tout au long de la navigation sur le site. Et là Philou s'est vraiment investi pour obtenir ce niveau de cohérence, même si tous les objectifs ne sont pas encore atteints par manque de temps.
En effet, on constate de plus en plus que les modules utilisent leur propre class, qu'il faut faire de l'audit pour retrouver les conséquences des héritages de style.
Bien évidemment, nous avons tenté d'obtenir un affichage quasi équivalent entre Internet Explorer et Firefox, sans oublier les utilisateurs de Mac.
Nous sommes conscients des imperfections restantes dans ce domaine, la plupart sont identifiées et devraient être résolues dans les semaines à venir.
Le prochain challenge sera de convertir ce nouveau thème à la norme xhmtl/css2 et ce n'est pas une mince affaire. (on n'est un peu oufs, mais on aime çà!)

Migration des users
Le challenge consistait à réunifier dans une seule table, le couple pseudo/emails qui étaient contenus dans chaque site.

La méthode utilisée fut la suivante :
- réalisation d'une sauvegarde des tables users mysql de chaque site
- recherche/remplace dans le contenu de ces fichiers pour remplacer la chaine insert into xoops_users par insert into xf_users pour xoops france, etc....
- intégration de ces tables dans une base mysql de test

Pour la suite des opérations, nous avons utilisé une interface access connectée à la base mysql avec le driver ODBC mysql qui permet ainsi de voir les tables mysql presque comme des tables access et de faire les manipulations que l'on souhaite :

- création d'un table temporaire contenant tous les champs d'une table users standard auxquels nous avons ajouté les champs suivants site d'origine, nouvel uid, commentaires (à des fins de debug)
- alimentation de cette table à partir des sauvegardes de tous les autres sites et en remplissant le champ site avec le préfixe du site d'origine (xf pour xoops france, xt pour thèmes, etc..)
- exécution d'un programme en vba qui va balayer tous les enregistrements autres que ceux de xoops france déjà créés.
- pour chaque enregistrement, on vérifie si le pseudo existe sur xf
- si le pseudo en cours est absent dans xf (xoops france) on le crée à partir des données du site d'origine, puis on met à jour l'enregistrement du site d'origine en indiquant le nouvel uid du membre
- si le pseudo existe sur xoops france, on vérifie si les deux adresses emails sont identiques et dans ce cas on met juste à jour dans l'enregistrement d'origine l'uid trouvé sur xoops france dans le champ nouvel uid, sinon nous avons affaire à un doublon. Nous procédons donc à la création d'un pseudo doublon suffixé avec _W et éventuellent un chiffre en cas de triplons ou plus.

Cette opération portait sur plus de 26.000 enregistrements et donne le jour de la fusion 12.490 membres uniques dont la sauvegarde mysql a été intégré dans la base du nouveau site.

Intégration des publications des autres sites
Chaque autre site ayant réalisé diverses publications articles, documentation, etc...., l'opération suivante a consisté à récupérer les sauvegardes mysql, les intégrer dans la base de test, passer une fonction qui selon le site et l'uid d'origine restitue le nouvel uid, puis on exporte le résultat pour intégration dans la base de données.

Pour les modules comportant dans leurs tables les autorisations d'accès, dans le champ groupid par exemple, il a été nécessaire de faire des requêtes sql de mises à jour car les numéros de groupes ne correspondaient pas forcément.

La migration des forums
C'est cette opération qui a nécessité le plus de temps et de mise au point. Nous partions du constat suivant : les forums de xoops modules sont sous ipb, alors que xoops france et xoops thèmes utilisent newbb1 et nous voulions tout migrer dans le clone de newbb, c'est à dire newbbex réalisé par Hervé.

Il a donc d'abord fallu réaliser un processus de migration des tables ipb vers les tables newbb.

Ensuite c'est là que çà se corse, en effet les forums de xoops france représente plus de 40 Mo de données à charger dans la base de données mysql locale et donc l'intégration de ces données n'a pas été de tout repos, et 3 simulations n'ont pas été de trop pour mettre au point une méthode optimisée.

Après avoir testé des scripts ou programmes de découpage sql censés réalisés ce travail proprement, c'est Ultra-Edit qui a ma préférence pour son aptitude à pouvoir sélectionner un certain nombre de lignes qui étaient ensuite insérées par paquet de 5.000 dans l'éditeur de texte de mysql front, et lorsque mysqlfront détectait une erreur( ligne trop longue, pb de séparateurs de champs (ah la france et sa ponctuation!), il suffisait d'identifier la ligne en cause dans le debug mysqlfront, de l'insérer par phpMyadmin et de reprendre l'intégration là où le programme s'était arrêté.

Le temps moyen pour cette opération est d'environ 3 heures tout compris (café, boissons pure malt, et autres produits licites bien sur)

L'étape suivante a consisté à écrire un programme vba qui effectue les opérations suivantes :
- boucle sur la table bb_topics
- récupération dans une table de correspondance de la nouvelle catégorie du forum, du nouvel uid, et insertion de l'enregistrement dans la nouvelle table bbex_topics
- à partir de l'enregistrement de cette table bb_topics, on va rechercher tous les enregistrements concernés dans la table bb_posts, on leur fait subir les corrections nécessaires pour les intégrer dans la nouvelle table bbex_posts, et en même temps on fait la même chose pour la table bb_posts_text dans bbex_posts_text
- ouf, et maintenant on passe à l'enregistrement suivant (heureusement qu'on a des programmes pour faire çà)

Comme en cuisine, on met au four et on attend deux bonnes heures pour vérifier si le compte est bon. Dans les trois simulations effectuées, cela n'a posé aucun problème et le jour du basculement une différence a été découverte. Compte tenu des impératifs de temps et d'autres problèmes rencontrés lors de la mise en ligne, l'import des autres forums a été suspendue et sera réintégré plus tard.

Car ensuite, il fallu exporter le contenu des tables issus de ces processus pour les intégrer dans la base de données du futur site. Transférer et intégrer 127 megaoctets de données à 128ko n'est pas une sinécure!!!

Utilitaires
L'utilisation d'outils comme ultra-edit qui a la capacité de faire des recherche/remplace dans des fichiers pour un répertoire donné, ou de mysqlfront qui permet autant d'accéder à des bases de données locales que distantes avec la technique du tunelling a grandement facilité certaines opérations.

Xhelp quant à lui se révèle particulièrement adapté , pour qui à l'habitude de travailler en mode projet (définition très très concise :de qui, de quoi ai-je besoin et à quel moment pour faire une action)

Firefox avec sa barre web developper alliés au logiciel TopStyle pro sont des atouts primordiaux pour la mise au point du design.

Conclusion
Cette fusion est une opération exceptionnelle qui a mobilisé beaucoup de temps (certains ont pris des congés) et d'énergie. Nous en profitons pour vous remercier de vos encouragements, manifestés à plusieurs reprises, ils ont largement contribué à entretenir notre motivation.

Philou et Christian

Note: 0.00 (0 votes) - Noter cet article -

Partager Twitter Partagez cette article sur GG+
Format imprimable Envoyer cet article à un ami
Les commentaires appartiennent à leurs auteurs. Nous ne sommes pas responsables de leur contenu.
Admin Frxoops
Inscrit le: 04/02/2003
De: Blois
Contributions: 3071
philou Posté le: 08/12/2004 14:43  Mis à jour: 09/12/2004 05:58
 Les aspects techniques de la fusion : MERCI CHRISTIAN !!!!!!!
Je me permettrais juste un petit remerciement perso.

Je voudrais en effet tirer mon chapeau à Christian qui a accompli un travail remarquable sur les bases de données des sites XF, XD, XM et XT.

Même s'il reste très (trop) discret je tiens vraiment à le remercier et le féliciter car c'est une tache monumentale et très complexe de part le volume d'informations à traiter mais aussi par la complexité des transcriptions d'utilisateurs entre les sites.

J'ai toujours été partant pour cette fusion mais elle n'aurait pas été possible sans lui....

nous pouvons donc tous faire une petite ovation à Christian !!!!

:ola::ola:
:ola::ola:
:ola::ola:

Anonyme Posté le: 08/12/2004 19:40  Mis à jour: 09/12/2004 05:59
 Re: Les aspects techniques de la fusion : MERCI CHRISTIAN...
oui c'est vrai, bravo Christian !
Semi pro
Inscrit le: 05/04/2003
De:
Contributions: 1645
fooups Posté le: 08/12/2004 20:28  Mis à jour: 09/12/2004 05:59
 Re: Les aspects techniques de la fusion : MERCI CHRISTIAN...
Vive notre Christian!
:ola: :ola: :ola: :ola:
Régulier
Inscrit le: 08/02/2003
De:
Contributions: 171
chewb Posté le: 09/12/2004 11:51  Mis à jour: 09/12/2004 11:51
 Re: Les aspects techniques de la fusion : MERCI CHRISTIAN...
Bah oui bravo et surtout merci !!!

J'ai déjà du mal a comprendre toutes les manips que tu as du faire, alors les mettres en oeuvre chapeau !
Semi pro
Inscrit le: 04/02/2003
De: Qc.ca
Contributions: 1389
king76 Posté le: 11/12/2004 00:50  Mis à jour: 11/12/2004 00:50
 Re: Les aspects techniques de la fusion : MERCI CHRISTIAN...
Philou,


Disons qu'on aurait pu faire sans Christian, mais on aurait ouvert le site en 2006 ;)

lol
Aspirant
Inscrit le: 04/02/2003
De: la planète Xoops
Contributions: 84
Alain Posté le: 12/12/2004 09:38  Mis à jour: 12/12/2004 09:38
 Re: Les aspects techniques de la fusion : MERCI CHRISTIAN...
J'ai créé un bébé Xoops... Anexia m'a aidé à lui faire passer une adolescenece tranquille et Christian en a fait un site adulte (pas du XXX !!!). Merci à lui, je ne le dirai jamais assez.
On fête cela ensemble aujourd'hui autour d'une bonne table....
MERCI CHRISTIAN !!!
Newbie
Inscrit le: 19/04/2003
De:
Contributions: 1
wklinger Posté le: 12/12/2004 12:37  Mis à jour: 12/12/2004 12:37
 Je vous tire mon chapeau à tous !
A la lecture de cet article, je n'ai qu'un mot : chapeau !
Bien sûr, me vient ensuite un bravo pour ce travail d'equipe bénévole pour le bien de la communauté Xoops.

Werner Klinger.
:merci:
Propulsé avec XOOPS | Graphisme adapté par Tatane, Grosdunord, Montuy337513

20 Personne(s) en ligne (1 Personne(s) connectée(s) sur Articles) | Utilisateur(s): 0 | Invité(s): 20 | Plus ...