MW / Accueil / Articles / MUSIC WAVES: VERSION MOBILE ET MISES A JOUR

MUSIC WAVES: VERSION MOBILE ET MISES A JOUR


TYPE:
EDITORIAL
GENRE:
AUTRES
Un petit tour dans les coulisses de la programmation et de la maintenance d'un site comme Music Waves...
TORPEDO - 12.06.2019
Enfin elle est arrivée, cette version mobile. Avec (seulement) trois ans de retard... Au moins elle est là et à priori, comme disait Galilée, elle tourne. 

Et c'est tant mieux car il y avait longtemps que je ne m'étais pas autant "donné" sur un développement. D'abord il a fallu faire des choix : une mobile app ou bien un site web adapté... Une fois écartée l'idée de faire une app (y'en a trop, faut la télécharger, c'est un peu has-been ces derniers temps) fallait-il modifier les pages existantes ou créer des pages spécifiques ? La décision a été rapide car tout chambouler sur les pages existantes qui fonctionnent correctement était risqué. Va pour refaire toutes les pages publiques en version mobile. 

Ah oui, parce que vous ne le savez pas même si vous vous en doutez, outre les pages publiques qui vous permettent de lire les chroniques, articles, etc. il y a aussi des pages privées qui permettent aux membres du staff de rentrer leurs données directement. Il y en a en tout 124 (des pages, pas des membres) en incluant les pages mobiles fraichement créées. Et il y a 750 procédures stockées. C'est quoi, une procédure stockée ? Pour faire très simple, c'est l'accès aux données que l'on veut afficher sur une page. Parfois elle est simple :

"
SELECT gender_id, user_profil_id, city_id, country_id, tx_image, tx_login, tx_email, tx_name, tx_forename, 
tx_address, tx_birthdate, tx_contactname, tx_phonenumber, tx_signature, tx_official_website, dt_creation, 
dt_last_, nu_current_points FROM [table des utilisateurs] WHERE user_id = @iuser_id
"

Parfois elle est légèrement plus compliquée :

"
SET @sql = 'SELECT * FROM (SELECT ROW_NUMBER() OVER(ORDER BY ' + @sOrder +') as rownumber,
convert(varchar,ta_production.production_id) + ''&REF='' + ta_production.tx_url_ref + ''' + @sLang + ''' AS 
tx_url_production,dbo.getDirectory(ta_user.user_id) + ''/'' + CONVERT(varchar(10),ta_user.user_id) + 
''/covers/'' + ta_production.tx_image AS tx_image,ta_production.tx_url_ref, convert(varchar,ta_user.user_id) + 
''&REF='' + ta_user.tx_url_ref + ''' + @sLang + ''' AS tx_url_band,ta_user.tx_name AS band,''('' + upper
(ta_country_lang.tx_name) + '')'' AS country,convert(varchar,ta_country.country_id) + ''&REF='' + 
ta_country_lang.tx_name + ''' + @sLang + ''' AS tx_url_country,ta_production.tx_title + '' ('' + convert
(varchar(4),ta_production.dt_parution, 102) + '')'' AS production,convert(varchar,ta_user_2.user_id) + 
''&REF='' + ta_user_2.tx_url_ref + ''' + @sLang + ''' AS tx_url_label,ta_user_2.tx_name AS 
label,ta_production.nu_comment, genre.tx_url_genre, genre.tx_genre,convert(varchar(10),nu_nb_note_user) + '' 
note(s)'' AS nu_nb_note_user,ta_production.production_id, ta_production_review.nu_note, ta_user_3.tx_login AS 
reviewer,ta_production_review_lang.tx_resume, nu_avg_note_user, '' - '' + CONVERT(varchar
(10),ta_production.dt_online,103) AS dt_review
FROM    ta_production INNER JOIN 
ta_user ON ta_production.user_id = ta_user.user_id INNER JOIN
ta_production_report ON ta_production.production_id = ta_production_report.production_id INNER JOIN
ta_user AS ta_user_1 ON ta_production.user_creation = ta_user_1.user_id INNER JOIN
ta_country ON ta_user.country_id = ta_country.country_id INNER JOIN
ta_country_lang ON ta_country.country_id = ta_country_lang.country_id INNER JOIN
ta_production_type ON ta_production.production_type_id = ta_production_type.production_type_id INNER JOIN
ta_production_type_lang ON ta_production_type.production_type_id = ta_production_type_lang.production_type_id INNER JOIN
ta_user AS ta_user_2 ON ta_production.user_label_id = ta_user_2.user_id INNER JOIN
ta_production_review ON ta_production.production_id = ta_production_review.production_id INNER JOIN
ta_user AS ta_user_3 ON ta_production_review.user_creation = ta_user_3.user_id INNER JOIN
ta_production_review_lang ON ta_production_review.production_review_id = ta_production_review_lang.production_review_id
CROSS APPLY
(SELECT TOP 1 convert(varchar,ta_genre.genre_id) + ''&REF='' + ta_genre_lang.tx_url_ref 
+ ''' + @sLang + ''' AS tx_url_genre, UPPER(ta_genre_lang.tx_label) AS tx_genre
FROM ta_production_genre INNER JOIN ta_genre ON ta_production_genre.genre_id = 
ta_genre.genre_id INNER JOIN ta_genre_lang ON ta_genre.genre_id = ta_genre_lang.genre_id WHERE 
ta_production_genre.production_id = ta_production.production_id AND culture_id = ' + CONVERT(varchar, @iculture_id) + ') genre 
WHERE ta_production_review.bo_primary = 1 AND ta_production_type_lang.culture_id = ' + convert
(varchar, @iculture_id) + ' AND ta_country_lang.culture_id = ' + convert(varchar, @iculture_id)
+ ' AND bo_online = 1 AND ta_production_review_lang.culture_id = ' + convert(varchar, @iculture_id)
"

Je sais, c'est du charabia... Je vous rassure, même moi, je n'y comprends rien (c'est pas vrai)... J'attends avec impatience les commentaires des codeurs qui vont décortiquer tout ça et me faire de bon gros trolls !

Je vous passe le nombre de lignes de codes. 13 ans de création, évolution, ça en fait du code... Trop de code... Bref revenons à la version mobile...

Une fois ces deux choix faits et avant de commencer, il a fallu bien évidemment voir ce que Google (SEO pour les connaisseurs) préconisait. Car le référencement est une étape très importante pour pouvoir être visible dans les recherches Google. Je vous raconte pas les modifications nécessaires à faire sur les META de toutes les pages (un META permet en gros de présenter aux moteurs de recherche le contenu de votre page) pour le passage en anglais, déclarer les "alternate" et signifier qu'il existe une version identique de la page dans une autre langue et dans un autre format (mobile). Ah si, je vous ai raconté. Et vous n’avez toujours rien compris hein ? Normal, moi non plus (c'est toujours pas vrai).

Alors que veut Google ? Des pages bien construites, s'adaptant à l'écran avec le moins de plugins et de javascript et qui s'affichent rapidement. C'est pas ce que veulent aussi les utilisateurs au final ? Alors en avant pour quelques tests de page sur des sites qui analysent les performances et l'affichage. Si le résultat sur ordinateur n'était pas trop mauvais, ça coinçait sérieusement niveau mobile... D'ailleurs ça coince toujours mais utilisant des objets de développement externes, le résultat est un peu faussé. Et puis il y a la 4G alors ça passe (c'est choquant je sais) ! Malgré celà, il fallait tout de même non seulement créer des pages "mobiles" mais retravailler les pages "ordinateur" pour que les procédures stockées (récupération des données de la base) soient exploitables dans les deux versions. Pour faire court, 2 semaines de boulot. A priori, les pages semblent se charger bien plus rapidement depuis la mise à jour. Ça rassure.

2 autres semaines ont été nécessaires pour simplifier, améliorer, transformer les pages et 1 pour tester les modifications. Et les tests, ce n'est pas une partie de plaisir. Car quand on se plonge dedans on trouve parfois des coquilles qui datent de plus de 5 ans notamment sur le nombre de chroniques, articles qui s'affichent dans les grilles. J'ai eu honte. Mais j'ai travaillé sur moi et c'est fini maintenant.

Et voilà le résultat... Même si j'ai corrigé quelques bugs qui trainaient un peu partout, il n'est toujours pas parfait. J'ai du réaliser des changements dans le fonctionnement de certaines choses, notamment les commentaires et les recherches sur les pages. Il y a du neuf et le neuf nécessite toujours des corrections pour être optimal. Certains éléments qui ont leur propre mise en page comme les actualités et les articles ne s'affichent pas toujours très bien sur mobile. Je vais encore travailler dessus pour essayer d'améliorer ça. 

Si vous avez été au bout de cet édito, merci... Il y avait pas mal de termes techniques mais pour une fois que je parlais de mon boulot, je ne pouvais pas faire autrement. Si vous tombez sur des bugs, des problèmes, n'hésitez pas à m'en faire part en commentaire ou par mail. Plus vite c'est corrigé, plus vite je passe à autre chose. Car des évolutions futures, il y en aura. A suivre...
eventuser_idarticle_comment_id
TONYB - 12/06/2019 14:18:34
Le ch... est grand, vive le ch... Et moi, j'ai tout compris à la technique ... enfin pas au point d'aller tester les requêtes quand même :-) Attention aux pirates tout de même !
999474
 com_answer_user_id

  TORPEDO   - 12/06/2019 17:08:17
On a déjà essuyé du SQL injection et j'ai fait en sorte que ça ne se reproduise plus ;)
NUNO777 - 12/06/2019 13:11:41
Je n'ai pas compris grand chose à l'aspect technique mais ce témoignage m'a beaucoup intéressé. Cela permet de prendre un peu la mesure du travail que nécessite un tel site. Bon, je n'ai pas de mobile pour consulter ce bijou mais ça me donnerait presque envie de prendre un abonnement internet mobile uniquement pour voir ça. Merci Torpedo.
1405473
 com_answer_user_id

  TORPEDO   - 12/06/2019 13:34:02
Merci a toi mon ami :)
Main Image

Item 1 of 0
 
EN RELATION AVEC ADMINISTRATION
DERNIER ARTICLE
Un petit tour dans les coulisses de la programmation et de la maintenance d'un site comme Music Waves...

Lire l'article
Voir tous les articles concernant ADMINISTRATION

F.A.Q. / Vous avez trouvé un bug / Conditions d'utilisation
Music Waves (Media) - Media sur le Rock (progressif, alternatif,...), Hard Rock (AOR, mélodique,...) & le Metal (heavy, progressif, mélodique, extrême,...)
Chroniques, actualités, interviews, conseils, promotion, calendrier des sorties
Quelques uns de nos partenaires :
Roadrunner Records, Mascot Label Group, Spv Steamhammer, Afm Records, Sony Bmg, Peaceville, Warner, Unicorn Digital, Frontiers Records, Karisma Records, Insideout Music, Kscope, Ear Music, Progressive Promotion Records

© Music Waves | 2003 - 2019