Je suis vraiment désolé, je ne me suis pas rendu compte que les liens ont été cassé entre deux.
J'avais testé au début de la création du validateur de lien et, apparemment, quand je l'ai finalisé avec toutes les conditions, ça a cassé les bookmarks :/
Ah oui, bien vu, on peut utiliser la page des préférences du compte.
Là-bas, les formulaires ont la références vers ton identifiant utilisateur, comme tu l'as montré avec le <input type="hidden">. Comme c'est du code ajouté implicitement par Ruby On Rails, je n'y avais pas pensé.
J'avais pensé à la solution de l'avatar, car j'étais passé par le code d'upload des avatars et que je me souvenais que ça avait été codé avec les identifiants utilisateurs :)
J'ai regardé le code de html-pipeline-linuxfr et effectivement, seul une liste restreinte de caractères est prise en compte pour créer un lien wikipédia:
' .+:!-/()_ les chiffres de 0 à 9 et les lettres de a à z et de A à Z
En fait, il faut savoir que le texte qui est mis entre les doubles crochets est directement utilisé pour créer l'URL Wikipédia. Donc j'imagine que cette liste de caractère a été choisie pour pouvoir être utilisé directement dans une URL.
Si je modifie le code pour accepté le caractère ’, alors [[L’Haÿ-les-Roses]] créera une URL comme ça: https://fr.wikipedia.org/wiki/L’Haÿ-les-Roses.
Là, on se rend compte qu'on a un problème de fond avec cette fonctionnalité: on vient de mélanger l'apostrophe français avec le simple quote technique du lien.
Heureusement, Wikipédia est bien fait pour cette article et ils ont prévu la redirection de https://fr.wikipedia.org/w/index.php?title=L’Haÿ-les-Roses vers https://fr.wikipedia.org/wiki/L'Haÿ-les-Roses.
Or je ne sais pas si cette redirection est automatique pour tous les articles ou si c'est fait à la main.
Dans ce genre de cas, je propose d'utiliser les liens Markdwon standards, car c'est la manière la plus explicite pour séparer la forme du fond: [L’Haÿ-les-Roses](https://fr.wikipedia.org/wiki/L%27Ha%C3%BF-les-Roses). Le rendu ajoute aussi le W: L’Haÿ-les-Roses
Comme ça on a une belle forme avec le caractère ’ et on a la forme technique correcte qui utilise le caractère '.
Ça tombait bien, j'avais justement dû faire une vidéo de 5 minutes avec mon smartphone Android.
La vidéo contenait un discours rhétorique d'une personne distante d'environ 4 mètres (une longueur de table).
Quand j'ai prévisualisé la vidéo sur VLC (la version Android donc), je me suis rendu compte que le son n'était pas assez audible: j'ai dû utiliser la fonction "sur-amplification" de VLC pour bien entendre le discours. J'avais donc peur de ne pas réussir à en tirer quelque chose de bien.
Comme on devait de toute façon couper la fin de la vidéo, j'ai installé Pitivi 2021.05 avec Flatpak.
D'abord quel bonheur d'avoir la version la plus récente d'un logiciel, installé en 5 minutes, moins d'une semaine après sa sortie ! Merci à Flatpak et aux devs de Pitivi :)
Ensuite, j'ai facilement découpé la fin de la vidéo et augmenter le volume à 100%.
Enfin, comme je l'avais imaginé, ça n'a pas suffit, j'ai du ajouté un effet d'amplification.
Mais quand on fait ça, il y a un bruit de fond constant qui est ajouté au discours. J'ai pu ajouté un second effet de filtre qui atténue ce bruit.
En fait, les effets de Pitivi sont bien catégorisés et, après, je me suis amusé à en appliquer d'autres (ajuster le contraste, la luminosité…).
C'est vraiment top de pouvoir s'amuser comme ça, sans aucun plantage de l'interface et en voyant en direct les résultats.
Mon projet était très simple, car ce n'était qu'une vidéo de 5 minutes et les effets étaient directement appliqués dessus. Mais, n'empêche, Pitivi a bien fonctionné était réactif et je l'ai trouvé assez intuitif.
C'était l'idéal pour moi qui ne monte pas de vidéos régulièrement, mais qui avait besoin de faire un petit montage ponctuel.
En plus, chose étonnante, les paramétrages de rendus par défaut sont bien choisis: ma vidéo est passée de ~700 Mio à 215 Mio, c'est très bien ça, car je devais transmettre cette vidéo sur Internet plus tard.
Avec le Pull Request, si je fais une réorganisation avec un lien invalide: il n'y a plus d'exception levée, mais le save ne passe pas et, du coup, il n'y a pas de nouvelle version crée.
Par contre, le résultat est que la news est bien complètement sauvée (les paragraphes sont bien présents).
Les logs pour info:
linuxfr.org_1 | Started PUT "/redaction/news/voici-venu-le-temps-des-cathedrales-libres/reorganized" for 172.18.0.8 at 2021-05-31 21:12:35 +0000
linuxfr.org_1 | Cannot render console from 172.18.0.1! Allowed networks: 127.0.0.1, ::1, 127.0.0.0/127.255.255.255
linuxfr.org_1 | Processing by Redaction::NewsController#reorganized as HTML
linuxfr.org_1 | Parameters: {"utf8"=>"✓", "authenticity_token"=>"6rSwmgRGKjCj0-SWOLShHi7bJqCxOYIsP25mJAIcrq7xAz_y1sahDTRQl14RnG2EEb34l6Q_gCIj2Dx0dQpPgg", "news"=>{"section_id"=>"1", "title"=>"Voici venu le temps des cathédrales libres", "wiki_body"=>"test chapeau :)\r\n\r\n\r\n\r\ntest\r\nt\r\n\r\n\r\n\r\ntest2222", "links_attributes"=>{"0"=>{"title"=>"http://localhost", "url"=>"http://localhost", "lang"=>"fr", "id"=>"9"}, "1"=>{"title"=>"http://localhost", "url"=>"http://localhost/asdfjkl", "lang"=>"fr", "id"=>"10"}, "2"=>{"title"=>"http://localhost", "url"=>"http://localhost/éééééé", "lang"=>"fr", "id"=>"11"}}, "wiki_second_part"=>"Un sommaire sera automatiquement créé si nécessaire. Pensez à l'orthographe et aux liens explicatifs vers Wikipedia. (Vous pouvez éditer ce paragraphe en cliquant sur le crayon !)\r\n\r\n\r\n\r\ntest\r\n\r\n\r\n\r\nCe paragraphe est chou :) test\r\n\r\n\r\n\r\nVous pouvez éditer ce paragraphe en cliquant sur le crayon ! http://localhost/ééééééé test\r\n\r\n\r\n\r\nVous pouvez éditer ce paragraphe en cliquant sur le crayon ! test\r\n\r\naésldkjfaséldkjf"}, "commit"=>"OK", "id"=>"voici-venu-le-temps-des-cathedrales-libres"}
linuxfr.org_1 | Account Load (0.3ms) SELECT `accounts`.* FROM `accounts` WHERE `accounts`.`id` = 4 ORDER BY `accounts`.`id` ASC LIMIT 1
nginx_1 | 172.18.0.1 - - [31/May/2021:21:12:36 +0000] "POST /redaction/news/voici-venu-le-temps-des-cathedrales-libres/reorganized HTTP/1.1" 302 149 "http://dlfp.lo/redaction/news/voici-venu-le-temps-des-cathedrales-libres/reorganize" "Mozilla/5.0 (X11; Linux x86_64; rv:88.0) Gecko/20100101 Firefox/88.0" "-"
linuxfr.org_1 | News Load (0.2ms) SELECT `news`.* FROM `news` WHERE `news`.`cached_slug` = 'voici-venu-le-temps-des-cathedrales-libres' LIMIT 1
linuxfr.org_1 | (0.2ms) BEGIN
linuxfr.org_1 | Paragraph Destroy (0.7ms) DELETE FROM `paragraphs` WHERE `paragraphs`.`news_id` = 4
linuxfr.org_1 | Link Load (0.3ms) SELECT `links`.* FROM `links` WHERE `links`.`news_id` = 4 AND `links`.`id` IN (9, 10, 11)
linuxfr.org_1 | Paragraph Load (0.5ms) SELECT `paragraphs`.* FROM `paragraphs` WHERE `paragraphs`.`news_id` = 4 AND (`paragraphs`.`position` IS NOT NULL) ORDER BY `paragraphs`.`position` DESC LIMIT 1
linuxfr.org_1 | Paragraph Create (0.3ms) INSERT INTO `paragraphs` (`news_id`, `position`, `second_part`, `body`, `wiki_body`) VALUES (4, 1, FALSE, '<p>test chapeau :)</p>\n', 'test chapeau :)\r\n\r\n')
linuxfr.org_1 | Paragraph Load (0.6ms) SELECT `paragraphs`.* FROM `paragraphs` WHERE `paragraphs`.`news_id` = 4 AND (`paragraphs`.`position` IS NOT NULL) ORDER BY `paragraphs`.`position` DESC LIMIT 1
linuxfr.org_1 | Paragraph Create (0.4ms) INSERT INTO `paragraphs` (`news_id`, `position`, `second_part`, `body`, `wiki_body`) VALUES (4, 2, FALSE, '<p>test<br>\nt</p>\n', 'test\r\nt\r\n\r\n')
linuxfr.org_1 | Paragraph Load (0.6ms) SELECT `paragraphs`.* FROM `paragraphs` WHERE `paragraphs`.`news_id` = 4 AND (`paragraphs`.`position` IS NOT NULL) ORDER BY `paragraphs`.`position` DESC LIMIT 1
linuxfr.org_1 | Paragraph Create (0.3ms) INSERT INTO `paragraphs` (`news_id`, `position`, `second_part`, `body`, `wiki_body`) VALUES (4, 3, FALSE, '<p>test2222</p>\n', 'test2222')
linuxfr.org_1 | Paragraph Load (0.7ms) SELECT `paragraphs`.* FROM `paragraphs` WHERE `paragraphs`.`news_id` = 4 AND (`paragraphs`.`position` IS NOT NULL) ORDER BY `paragraphs`.`position` DESC LIMIT 1
linuxfr.org_1 | Paragraph Create (0.7ms) INSERT INTO `paragraphs` (`news_id`, `position`, `second_part`, `body`, `wiki_body`) VALUES (4, 4, TRUE, '<p>Un sommaire sera automatiquement créé si nécessaire. Pensez à l\'orthographe et aux liens explicatifs vers Wikipedia. (Vous pouvez éditer ce paragraphe en cliquant sur le crayon !)</p>\n', 'Un sommaire sera automatiquement créé si nécessaire. Pensez à l\'orthographe et aux liens explicatifs vers Wikipedia. (Vous pouvez éditer ce paragraphe en cliquant sur le crayon !)\r\n\r\n')
linuxfr.org_1 | Paragraph Load (0.6ms) SELECT `paragraphs`.* FROM `paragraphs` WHERE `paragraphs`.`news_id` = 4 AND (`paragraphs`.`position` IS NOT NULL) ORDER BY `paragraphs`.`position` DESC LIMIT 1
linuxfr.org_1 | Paragraph Create (0.3ms) INSERT INTO `paragraphs` (`news_id`, `position`, `second_part`, `body`, `wiki_body`) VALUES (4, 5, TRUE, '<p>test</p>\n', 'test\r\n\r\n')
linuxfr.org_1 | Paragraph Load (1.0ms) SELECT `paragraphs`.* FROM `paragraphs` WHERE `paragraphs`.`news_id` = 4 AND (`paragraphs`.`position` IS NOT NULL) ORDER BY `paragraphs`.`position` DESC LIMIT 1
linuxfr.org_1 | Paragraph Create (0.4ms) INSERT INTO `paragraphs` (`news_id`, `position`, `second_part`, `body`, `wiki_body`) VALUES (4, 6, TRUE, '<p>Ce paragraphe est chou :) test</p>\n', 'Ce paragraphe est chou :) test\r\n\r\n')
linuxfr.org_1 | Paragraph Load (0.6ms) SELECT `paragraphs`.* FROM `paragraphs` WHERE `paragraphs`.`news_id` = 4 AND (`paragraphs`.`position` IS NOT NULL) ORDER BY `paragraphs`.`position` DESC LIMIT 1
linuxfr.org_1 | Paragraph Create (0.7ms) INSERT INTO `paragraphs` (`news_id`, `position`, `second_part`, `body`, `wiki_body`) VALUES (4, 7, TRUE, '<p>Vous pouvez éditer ce paragraphe en cliquant sur le crayon ! <a href=\"http://localhost/%C3%A9%C3%A9%C3%A9%C3%A9%C3%A9%C3%A9%C3%A9\">http://localhost/ééééééé</a> test</p>\n', 'Vous pouvez éditer ce paragraphe en cliquant sur le crayon ! http://localhost/ééééééé test\r\n\r\n')
linuxfr.org_1 | Paragraph Load (0.6ms) SELECT `paragraphs`.* FROM `paragraphs` WHERE `paragraphs`.`news_id` = 4 AND (`paragraphs`.`position` IS NOT NULL) ORDER BY `paragraphs`.`position` DESC LIMIT 1
linuxfr.org_1 | Paragraph Create (0.3ms) INSERT INTO `paragraphs` (`news_id`, `position`, `second_part`, `body`, `wiki_body`) VALUES (4, 8, TRUE, '<p>Vous pouvez éditer ce paragraphe en cliquant sur le crayon ! test</p>\n', 'Vous pouvez éditer ce paragraphe en cliquant sur le crayon ! test\r\n')
linuxfr.org_1 | Paragraph Load (0.6ms) SELECT `paragraphs`.* FROM `paragraphs` WHERE `paragraphs`.`news_id` = 4 AND (`paragraphs`.`position` IS NOT NULL) ORDER BY `paragraphs`.`position` DESC LIMIT 1
linuxfr.org_1 | Paragraph Create (0.5ms) INSERT INTO `paragraphs` (`news_id`, `position`, `second_part`, `body`, `wiki_body`) VALUES (4, 9, TRUE, '<p>aésldkjfaséldkjf</p>\n', 'aésldkjfaséldkjf')
linuxfr.org_1 | Link Load (0.4ms) SELECT `links`.* FROM `links` WHERE `links`.`news_id` = 4
linuxfr.org_1 | Paragraph Load (0.5ms) SELECT `paragraphs`.* FROM `paragraphs` WHERE `paragraphs`.`news_id` = 4 AND `paragraphs`.`second_part` = FALSE ORDER BY `paragraphs`.`position` ASC
linuxfr.org_1 | Paragraph Load (0.4ms) SELECT `paragraphs`.* FROM `paragraphs` WHERE `paragraphs`.`news_id` = 4 AND `paragraphs`.`second_part` = TRUE ORDER BY `paragraphs`.`position` ASC
linuxfr.org_1 | Section Load (0.5ms) SELECT `sections`.* FROM `sections` WHERE `sections`.`id` = 1 LIMIT 1
linuxfr.org_1 | (1.8ms) COMMIT
On voit bien que je n'ai plus d'exception, car j'ai le COMMIT SQL qui est exécuté.
Mais aucun lien n'a été mis à jour (sûrement à cause du validator d'url) et aucune version n'a été crée.
J'ai ajouté une transaction SQL manuellement pour la réorganisation, parce que c'est une opération complexe et que ce genre de bug ne devrait pas mettre dans un tel état une dépêche.
On voit bien que la première étape est de supprimer tous les paragraphes.
La ligne create_parts va recréer tous les paragraphes de la première et de la seconde partie.
L'appel à create_new_version est définit pour s'exécuter après le save (after_save).
Il faut savoir que, si un lien est invalide, le modèle link lève une exception sans gestion d'erreur et donc fait arrêter nette la procédure.
Ce que je ne sais pas, c'est si le modèle de link est appelé au moment de faire self.attributes = params ou au moment de faire save.
En plus, je ne sais pas si Rails fait des transactions dans MySQL, donc c'est un peu compliqué à expliquer ce qui se passe juste en regardant le code. Il faudrait que je reproduise aussi pour mieux analyser.
Mais en tout cas, s'il n'y a pas de transaction SQL, la news serait effectivement dans un mauvais état: les paragraphes ont été détruits et les nouveaux body/wiki_body n'ont pas été sauvés.
Mon Pull Request fait en sorte que le modèle link ne lève plus une exception brute, mais remonte une erreur de validtion. Au moins, ça n'arrête plus le processus d'un coup, mais ça perturbe uniquement les modifications sur les liens.
Avant, on n'affichait aucune des erreurs de validation, j'ai ajouté les messages d'erreurs dans ces cas. J'ai dû mettre à jour un peu le rendu des liens en édition dans l'espace de rédaction:
J'ai ajouté un cadre autour du formulaire, pour bien montrer à l'utilisateur que tous ces boutons sont liés.
Dans le lien "en édition", j'ai profité d'expliquer que le lien peut être supprimé en vidant le champ Adresse.
Quand plusieurs erreurs existent, une liste à puce est affichée. Si le lien est en modification, les puces sont les drapeaux de langue. Je n'ai pas corrigé ça, parce qu'on a déjà un Pull Request pour enlever les drapeaux de langue dans les liens.
Merci pour toutes ces informations, je vais voir ce que j'arrive à faire.
Et il faut aussi faire très attention à la version de Ruby : on a une version de Ruby assez ancienne en prod et j'ai plusieurs fois dû faire des reverts à cause de ça.
Est-ce que la version de Ruby est plus vieille que celle disponible sur Debian Stretch (version 2.3.3) ?
Je comptais utiliser les images Docker que j'ai configuré et qui travaillent justement avec Debian Stretch pour l'instant.
J'ai donc commencé par chercher dans l'historique git et j'ai découvert qu'il y avait des tests dans le dossier test (dossier utilisé par rails, justement).
Puis, ce dossier a été supprimé en faveur du framework de test rspec2 qui avait ses tests dans le dossier spec.
le changement de framework a était fait il y a très longtemps (en 2010), si je recommence de zéro, on pourrait à nouveau utiliser le framework de rails ?
Je préférerais utiliser celui de rails, car le tutoriel de rails est plutôt complet (pour les autres aspects du framework en tout cas) et comme ça on peut diriger les bonnes volontés sur leur tutoriel.
est-ce que les tests qui étaient dans le dossier spec étaient vraiment trop cassé ? est-ce que je devrais recommencer de zéro ? étaient-ils utiles ?
Bonne nouvelle, j'ai repris le code et, en fait, je m'étais complètement trompé :)
Il n'y avait pas besoin de passer par JavaScript, je devais simplement couper le template de l'email en 3 parties.
Voilà le résultat:
En travaillant là-dessus, je me suis en plus rendu compte qu'il y avait besoin de faire une petite correction CSS dans l'espace de rédaction pour les écrans mobiles: il y avait trop de marge autour du texte sur les petits écrans, j'ai ajusté ça pour être raccord avec le reste du site mobile.
Je me suis lancé aujourd'hui dans ma première contribution à une dépêche, et je trouve l'interface de rédaction vraiment bien pensée et très pratique ! Félicitations :)
Merci :)
Le seul point qui m'a un peu surpris concerne le comportement de césure de l'éditeur de texte : lorsqu'on écrit le texte au format markdown dans la boîte à cet effet, l'éditeur applique automatiquement une césure à la fin des lignes avec l'ajout d'un tiret -. Seul l'affichage est modifié : le text brut sous-jacent n'est pas modifié (par exemple, un mot affiché tronqué peut être copié-collé sur une nouvelle ligne et le tiret disparaîtra).
Ce comportement est profitable pour l'affichage du texte dans le rendu html, mais cela m'a un peu déstabilisé dans l'éditeur lui-même : je me demandais parfois si j'avais fait une faute de frappe et inséré un tiret indésirable, ou bien si le tiret était celui de l'affichage de césure.
Il me semblerait bénéfique de désactiver ce comportement d'affichage de césure dans la boîte d'édition de texte brut afin de n'afficher que le texte tapé. Curieusement, je ne retrouve pas ce comportement dans la boîte de texte utilisée pour écrire cette suggestion ? :)
C'est vrai que, quand on édite un texte, ça ne sert pas à grand chose cette césure automatique, puisqu'elle ne sera certainement pas placée au même endroit lors du rendu réel.
J'ai préparé un merge request qui enlève la césure automatique pour tous les textarea.
[^] # Re: Récupérer des infos des autres utilisateurs ?
Posté par Adrien Dorsaz (site web personnel, Mastodon) . En réponse à l’entrée du suivi Récupérer l'avatar d'un utilisateur ?. Évalué à 2 (+0/-0).
Oui, ça marche si l'image est envoyée directement sur les seveurs Linuxfr. Si l'avatar est un lien externe, c'est plus compliqué de "deviner" 😉
[^] # Re: Commit récent
Posté par Adrien Dorsaz (site web personnel, Mastodon) . En réponse à l’entrée du suivi Échec de validation de lien. Évalué à 3 (+0/-0).
Oui, tout à fait, c'est lié à ça, j'ai proposé un correctif ici: https://github.com/linuxfrorg/linuxfr.org/pull/312
Je suis vraiment désolé, je ne me suis pas rendu compte que les liens ont été cassé entre deux.
J'avais testé au début de la création du validateur de lien et, apparemment, quand je l'ai finalisé avec toutes les conditions, ça a cassé les bookmarks :/
[^] # Re: Joyeux anniversaire !
Posté par Adrien Dorsaz (site web personnel, Mastodon) . En réponse à la dépêche Vingt-trois ans de LinuxFr.org. Évalué à 6. Dernière modification le 28 juin 2021 à 22:25.
Ah oui, bien vu, on peut utiliser la page des préférences du compte.
Là-bas, les formulaires ont la références vers ton identifiant utilisateur, comme tu l'as montré avec le
<input type="hidden">
. Comme c'est du code ajouté implicitement par Ruby On Rails, je n'y avais pas pensé.J'avais pensé à la solution de l'avatar, car j'étais passé par le code d'upload des avatars et que je me souvenais que ça avait été codé avec les identifiants utilisateurs :)
[^] # Re: Joyeux anniversaire !
Posté par Adrien Dorsaz (site web personnel, Mastodon) . En réponse à la dépêche Vingt-trois ans de LinuxFr.org. Évalué à 10. Dernière modification le 28 juin 2021 à 16:00.
Tu peux le retrouver grâce à ton avatar: il faut faire "afficher l'image dans un nouvel onglet".
Ensuite, dans le lien de l'image, tu trouveras 3 groupes de chiffres, appelons les "A", "B" et "C" dans cet ordre.
Il faut les mettre dans l'ordre "C", "B", "A" et tu retrouves ton identifiant préfixé par des zéros.
Par exemple, pour toi, le lien de ton avatar, c'est: https://img.linuxfr.org/avatars/878/076/000/avatar.png
Donc, ton identifiant devrait être
000 076 878
qui, sans les zéros préfixés, donne76878
.Et comme dit plus haut par Beurt, on peut utiliser le lien https://linuxfr.org/users/76878 pour vérifier que l'on est bien redirigé sur ton profil :)
L'astuce vient du code d'envoi des avatars:
model
ici correspond à l'utilisateur.PS: ça ne fonctionne que si un avatar a été défini et qu'il n'utilise pas un lien externe, mais une image directement envoyée sur linuxfr.org.
[^] # Re: Source
Posté par Adrien Dorsaz (site web personnel, Mastodon) . En réponse au journal [HS] Microsoft annonce la fin. Évalué à 10.
Et la source de la source sans passer par un tiers: https://docs.microsoft.com/en-us/lifecycle/products/windows-10-home-and-pro
[^] # Re: Article supprimé ?
Posté par Adrien Dorsaz (site web personnel, Mastodon) . En réponse au lien Le nouveau Firefox pour iPhone & iPad - blog.mozilla.org. Évalué à 2.
C'est revenu :)
# Construction du lien wikipédia
Posté par Adrien Dorsaz (site web personnel, Mastodon) . En réponse à l’entrée du suivi Les liens Wikipédia ne fonctionnent pas avec « ’ ». Évalué à 4 (+0/-0).
Hello,
J'ai regardé le code de html-pipeline-linuxfr et effectivement, seul une liste restreinte de caractères est prise en compte pour créer un lien wikipédia:
' .+:!-/()_
les chiffres de 0 à 9 et les lettres de a à z et de A à ZEn fait, il faut savoir que le texte qui est mis entre les doubles crochets est directement utilisé pour créer l'URL Wikipédia. Donc j'imagine que cette liste de caractère a été choisie pour pouvoir être utilisé directement dans une URL.
Si je modifie le code pour accepté le caractère
’
, alors[[L’Haÿ-les-Roses]]
créera une URL comme ça:https://fr.wikipedia.org/wiki/L’Haÿ-les-Roses
.Là, on se rend compte qu'on a un problème de fond avec cette fonctionnalité: on vient de mélanger l'apostrophe français avec le
simple quote
technique du lien.Heureusement, Wikipédia est bien fait pour cette article et ils ont prévu la redirection de
https://fr.wikipedia.org/w/index.php?title=L’Haÿ-les-Roses
vershttps://fr.wikipedia.org/wiki/L'Haÿ-les-Roses
.Or je ne sais pas si cette redirection est automatique pour tous les articles ou si c'est fait à la main.
Dans ce genre de cas, je propose d'utiliser les liens Markdwon standards, car c'est la manière la plus explicite pour séparer la forme du fond:
[L’Haÿ-les-Roses](https://fr.wikipedia.org/wiki/L%27Ha%C3%BF-les-Roses)
. Le rendu ajoute aussi leW
: L’Haÿ-les-RosesComme ça on a une belle forme avec le caractère
’
et on a la forme technique correcte qui utilise le caractère'
.# Merci Pitivi :)
Posté par Adrien Dorsaz (site web personnel, Mastodon) . En réponse au lien Pitivi 2021.05 est sorti. Évalué à 4.
Ça tombait bien, j'avais justement dû faire une vidéo de 5 minutes avec mon smartphone Android.
La vidéo contenait un discours rhétorique d'une personne distante d'environ 4 mètres (une longueur de table).
Quand j'ai prévisualisé la vidéo sur VLC (la version Android donc), je me suis rendu compte que le son n'était pas assez audible: j'ai dû utiliser la fonction "sur-amplification" de VLC pour bien entendre le discours. J'avais donc peur de ne pas réussir à en tirer quelque chose de bien.
Comme on devait de toute façon couper la fin de la vidéo, j'ai installé Pitivi 2021.05 avec Flatpak.
D'abord quel bonheur d'avoir la version la plus récente d'un logiciel, installé en 5 minutes, moins d'une semaine après sa sortie ! Merci à Flatpak et aux devs de Pitivi :)
Ensuite, j'ai facilement découpé la fin de la vidéo et augmenter le volume à 100%.
Enfin, comme je l'avais imaginé, ça n'a pas suffit, j'ai du ajouté un effet d'amplification.
Mais quand on fait ça, il y a un bruit de fond constant qui est ajouté au discours. J'ai pu ajouté un second effet de filtre qui atténue ce bruit.
En fait, les effets de Pitivi sont bien catégorisés et, après, je me suis amusé à en appliquer d'autres (ajuster le contraste, la luminosité…).
C'est vraiment top de pouvoir s'amuser comme ça, sans aucun plantage de l'interface et en voyant en direct les résultats.
Mon projet était très simple, car ce n'était qu'une vidéo de 5 minutes et les effets étaient directement appliqués dessus. Mais, n'empêche, Pitivi a bien fonctionné était réactif et je l'ai trouvé assez intuitif.
C'était l'idéal pour moi qui ne monte pas de vidéos régulièrement, mais qui avait besoin de faire un petit montage ponctuel.
En plus, chose étonnante, les paramétrages de rendus par défaut sont bien choisis: ma vidéo est passée de ~700 Mio à 215 Mio, c'est très bien ça, car je devais transmettre cette vidéo sur Internet plus tard.
# Bonne idée
Posté par Adrien Dorsaz (site web personnel, Mastodon) . En réponse à l’entrée du suivi Indiquer en tribune de dépêche le retour dans l'espace de rédaction.. Évalué à 2 (+0/-0).
Hello,
C'est en effet une bonne idée et c'est assez simple à mettre en place.
J'ai proposé un correctif sur github.
Le correctif ajoute un message dans la tribune de la dépêche lors de ces actions:
Par exemple, ça donne:
[^] # Re: Validation des liens et bookmarks
Posté par Adrien Dorsaz (site web personnel, Mastodon) . En réponse à l’entrée du suivi Corruption de dépêches et URL avec des caractères non ascii. Évalué à 3 (+0/-0).
Voilà, j'ai ajouté des commits pour avoir un comportement acceptable:
Si la transaction SQL a échoué ou s'il y a une erreur de validation, la méthode
reorganize
du modèle retournefalse
(sinon, elle retournetrue
).Dans le cas d'un
false
, le contrôleur demande de réafficher la page de réorganisation avec les erreurs de validations.[^] # Re: Validation des liens et bookmarks
Posté par Adrien Dorsaz (site web personnel, Mastodon) . En réponse à l’entrée du suivi Corruption de dépêches et URL avec des caractères non ascii. Évalué à 2 (+0/-0).
Mince, visiblement, ça ne suffit pas.
Avec le Pull Request, si je fais une réorganisation avec un lien invalide: il n'y a plus d'exception levée, mais le save ne passe pas et, du coup, il n'y a pas de nouvelle version crée.
Par contre, le résultat est que la news est bien complètement sauvée (les paragraphes sont bien présents).
Les logs pour info:
On voit bien que je n'ai plus d'exception, car j'ai le COMMIT SQL qui est exécuté.
Mais aucun lien n'a été mis à jour (sûrement à cause du validator d'url) et aucune version n'a été crée.
[^] # Re: Validation des liens et bookmarks
Posté par Adrien Dorsaz (site web personnel, Mastodon) . En réponse à l’entrée du suivi Corruption de dépêches et URL avec des caractères non ascii. Évalué à 2 (+0/-0).
J'ai ajouté une transaction SQL manuellement pour la réorganisation, parce que c'est une opération complexe et que ce genre de bug ne devrait pas mettre dans un tel état une dépêche.
[^] # Re: Validation des liens et bookmarks
Posté par Adrien Dorsaz (site web personnel, Mastodon) . En réponse à l’entrée du suivi Corruption de dépêches et URL avec des caractères non ascii. Évalué à 2 (+0/-0).
Je viens de reproduire, c'est sur la ligne
self.attributes = params
que ça se déclenche.Voilà le déroulement dans le log et, malheureusement, il n'y a pas de transaction sql :(
[^] # Re: Validation des liens et bookmarks
Posté par Adrien Dorsaz (site web personnel, Mastodon) . En réponse à l’entrée du suivi Corruption de dépêches et URL avec des caractères non ascii. Évalué à 2 (+0/-0).
Pour la réorganisation, on a, dans le modèle de news, le code:
On voit bien que la première étape est de supprimer tous les paragraphes.
La ligne
create_parts
va recréer tous les paragraphes de la première et de la seconde partie.L'appel à
create_new_version
est définit pour s'exécuter après le save (after_save
).Il faut savoir que, si un lien est invalide, le modèle
link
lève une exception sans gestion d'erreur et donc fait arrêter nette la procédure.Ce que je ne sais pas, c'est si le modèle de
link
est appelé au moment de faireself.attributes = params
ou au moment de fairesave
.En plus, je ne sais pas si Rails fait des transactions dans MySQL, donc c'est un peu compliqué à expliquer ce qui se passe juste en regardant le code. Il faudrait que je reproduise aussi pour mieux analyser.
Mais en tout cas, s'il n'y a pas de transaction SQL, la news serait effectivement dans un mauvais état: les paragraphes ont été détruits et les nouveaux body/wiki_body n'ont pas été sauvés.
Mon Pull Request fait en sorte que le modèle
link
ne lève plus une exception brute, mais remonte une erreur de validtion. Au moins, ça n'arrête plus le processus d'un coup, mais ça perturbe uniquement les modifications sur les liens.# Validation des liens et bookmarks
Posté par Adrien Dorsaz (site web personnel, Mastodon) . En réponse à l’entrée du suivi Corruption de dépêches et URL avec des caractères non ascii. Évalué à 2 (+0/-0).
Hello,
J'ai ajouté la validation des liens HTTP dans ce Pull Request: https://github.com/linuxfrorg/linuxfr.org/pull/309
Avant, on n'affichait aucune des erreurs de validation, j'ai ajouté les messages d'erreurs dans ces cas. J'ai dû mettre à jour un peu le rendu des liens en édition dans l'espace de rédaction:
J'ai ajouté un cadre autour du formulaire, pour bien montrer à l'utilisateur que tous ces boutons sont liés.
Dans le lien "en édition", j'ai profité d'expliquer que le lien peut être supprimé en vidant le champ Adresse.
Quand plusieurs erreurs existent, une liste à puce est affichée. Si le lien est en modification, les puces sont les drapeaux de langue. Je n'ai pas corrigé ça, parce qu'on a déjà un Pull Request pour enlever les drapeaux de langue dans les liens.
[^] # Re: Comment débuter ?
Posté par Adrien Dorsaz (site web personnel, Mastodon) . En réponse à l’entrée du suivi Pouvoir tester les mises à jour de maintenance. Évalué à 2 (+0/-0).
Merci pour toutes ces informations, je vais voir ce que j'arrive à faire.
Est-ce que la version de Ruby est plus vieille que celle disponible sur Debian Stretch (version 2.3.3) ?
Je comptais utiliser les images Docker que j'ai configuré et qui travaillent justement avec Debian Stretch pour l'instant.
[^] # Re: iOS
Posté par Adrien Dorsaz (site web personnel, Mastodon) . En réponse au sondage Sous quel système d'exploitation tourne votre téléphone ?. Évalué à 4.
Euh, tu viens donc justement de prouver que Facebook et les autres pouvaient ces 10 dernières années se servir ?
Et donc, malgré le prix du téléphone qui a toujours était élevé, il n'y avait pas plus de discrétion.
[^] # Re: iOS
Posté par Adrien Dorsaz (site web personnel, Mastodon) . En réponse au sondage Sous quel système d'exploitation tourne votre téléphone ?. Évalué à 9.
C'est très intéressant comme point de vue, mais je pense que c'est certainement faux.
Apple aime vendre très cher son matériel, mais il ne se gène pas non plus pour te tracer ou permettre aux applications tiers de te tracer.
C'est pareil chez Google, mais ça fait tomber l'argument du prix.
Justement, vu la citation plus haut sans justification, il y a une confiance aveugle dans Apple également ;)
# Comment débuter ?
Posté par Adrien Dorsaz (site web personnel, Mastodon) . En réponse à l’entrée du suivi Pouvoir tester les mises à jour de maintenance. Évalué à 2 (+0/-0).
Préambule: c'est moi qui est ouvert l'entrée de suivi, j'ai oublié de me connecter avant :)
Comme je ne connais pas moi-même rails, j'ai cherché la manière de faire avec Rails.
D'après son tutorial, rails a déjà son propre framework de test: https://guides.rubyonrails.org/testing.html
J'ai donc commencé par chercher dans l'historique git et j'ai découvert qu'il y avait des tests dans le dossier
test
(dossier utilisé par rails, justement).Puis, ce dossier a été supprimé en faveur du framework de test
rspec2
qui avait ses tests dans le dossierspec
.Depuis le commit eaf8458858ab4fff7dffd86ae396c64f0d76e753, on a supprimé tous les tests.
Avant de pouvoir commencer, j'ai donc plusieurs questions:
pourquoi est-ce que l'on est passé au framework
rspec2
?le changement de framework a était fait il y a très longtemps (en 2010), si je recommence de zéro, on pourrait à nouveau utiliser le framework de rails ?
est-ce que les tests qui étaient dans le dossier
spec
étaient vraiment trop cassé ? est-ce que je devrais recommencer de zéro ? étaient-ils utiles ?[^] # Re: Texte pré-établi <> message supplémentaire
Posté par Adrien Dorsaz (site web personnel, Mastodon) . En réponse à l’entrée du suivi Message pour relance dans l'espace de rédaction. Évalué à 2 (+0/-0).
Bonne nouvelle, j'ai repris le code et, en fait, je m'étais complètement trompé :)
Il n'y avait pas besoin de passer par JavaScript, je devais simplement couper le template de l'email en 3 parties.
Voilà le résultat:
En travaillant là-dessus, je me suis en plus rendu compte qu'il y avait besoin de faire une petite correction CSS dans l'espace de rédaction pour les écrans mobiles: il y avait trop de marge autour du texte sur les petits écrans, j'ai ajusté ça pour être raccord avec le reste du site mobile.
J'ai préparé un Pull Request pour ça: https://github.com/linuxfrorg/linuxfr.org/pull/308
# Superbe illustration
Posté par Adrien Dorsaz (site web personnel, Mastodon) . En réponse à la dépêche GIMP 2.99.4 et 2.99.6: don't worry, be h-API!. Évalué à 10.
Merci beaucoup pour la dépêche et le travail sur Gimp !
Je trouve l'illustration "work in progress" vraiment bien trouvée, c'est exactement l'esprit que j'aime avec les logiciels libres :)
# Doublon
Posté par Adrien Dorsaz (site web personnel, Mastodon) . En réponse à l’entrée du suivi Césure inutile / toxique dans les champs de saisie texte. Évalué à 3 (+0/-0). Dernière modification le 23 mai 2021 à 11:47.
Pour information, il y avait cette demande en double: https://linuxfr.org/suivi/suggestion-concernant-l-interface-de-redaction-des-depeches
Je n'avais pas vu que, en peu de temps, vous étiez les 2 à faire la même suggestion 😅
# Merci !
Posté par Adrien Dorsaz (site web personnel, Mastodon) . En réponse à l’entrée du suivi Suggestion concernant l'interface de rédaction des dépêches. Évalué à 3 (+0/-0).
Hello,
Merci :)
Je suis tout à fait d'accord avec toi et j'ai proposé une correction dans cette entrée de suivi.
Comme c'est un doublon de demande, je vais clôturer ici et on pourra continuer à discuter là-bas si jamais.
# Texte pré-établi <> message supplémentaire
Posté par Adrien Dorsaz (site web personnel, Mastodon) . En réponse à l’entrée du suivi Message pour relance dans l'espace de rédaction. Évalué à 2 (+0/-0).
Hello,
J'ai regardé un peu comment le code fonctionne actuellement.
L'idée actuelle est que le
TEXTE DE LA RELANCE
est inséré dans l'email et, également, directement dans la discussion sur le côté de la dépêche.Au début, je pensais mettre directement l'email complet dans la zone de texte.
Mais à cause de l'utilisation du message de relance dans la discussion, je ne peux pas le faire.
En plus, je dois travailler côté javascript et je crois que je n'arrive pas à récupérer le texte de l'email depuis javascript.
Je suis un peu coincé pour cette idée, désolé…
Ça c'est faisable :)
J'ai juste une question: quelle phrase générique pourrais-je mettre si aucun
TEXT DE LA RELANCE
n'est renseigné ?Quelque chose comme:
Est-ce que ça pourrait jouer ? Est-ce que tu as une meilleure idée ?
Merci pour l'idée !
# En effet
Posté par Adrien Dorsaz (site web personnel, Mastodon) . En réponse à l’entrée du suivi Césure inutile / toxique dans les champs de saisie texte. Évalué à 3 (+0/-0).
C'est vrai que, quand on édite un texte, ça ne sert pas à grand chose cette césure automatique, puisqu'elle ne sera certainement pas placée au même endroit lors du rendu réel.
J'ai préparé un merge request qui enlève la césure automatique pour tous les
textarea
.