syj a écrit 664 commentaires

  • # J'ai réussi à voter :-)

    Posté par  . En réponse au journal Primaire socialiste. Évalué à 3 (+2/-0).

    J'ai réussi à voter :-)

  • [^] # Re: dns

    Posté par  . En réponse au journal Primaire socialiste. Évalué à 6 (+6/-1).

    Mince, Tu as raison ! çà fait beaucoup moins :-) c'est vraiment nul Webdev :-D

  • [^] # Re: dns

    Posté par  . En réponse au journal Primaire socialiste. Évalué à 4 (+4/-1). Dernière modification le 09 octobre 2026 à 15:15.

    Sur le site du monde , il parle 2,6M d'inscrit.
    En considérant que tout le monde se répartie de manière homogène sur 48h. çà fait 15 connexion par seconde (2.6 M / 3600 / 48).
    Franchement, gérer une tel volumétrie avec du Webdev, c'est probablement se tirer une balle dans le pied.

    le problème ,c'est que les gens ,qui échouent, tentent à nouveau.

  • [^] # Re: Le problème est en aval

    Posté par  . En réponse au journal Le vibe coding, linuxfr, et moi. Évalué à 1 (+0/-0).

  • # Vous avez une API MCP ?

    Posté par  . En réponse au journal Pour collaborer sur vos projets, pourquoi ne pas essayer Tracim 2026.10 ?. Évalué à 2 (+1/-0). Dernière modification le 09 octobre 2026 à 10:21.

    Vous avez une entrée MCP ?

  • [^] # Re: Le problème est en aval

    Posté par  . En réponse au journal Le vibe coding, linuxfr, et moi. Évalué à 0 (+2/-3).

    Tu interprètes mal mon propos car tu veux le voir sous un certains angles qui conforte ton point de vue.

    Je partage juste ce que je constate. En prenant les choses juste sous un angle purement efficacité.
    çà va plus vite, c'est mieux écrit même si c'était écrit par moi directement.

    Un junior ou un senior, c'est comme LLM. il va interpréter les choses avec son contexte. Il va faire le travail et il y aura un écart.
    D'ailleurs, c'est ce que j'ai toujours trouvé intéressant dans ce job justement ,c'est de cette écart que parfois émerge de bonnes idées.

    Ma réponse était donc purement factuel en réagissant sur le côté déterministe ou non. Si tu veux quelques choses de déterministe.
    Mon conseil est dans ton cas de le faire faire par un LLM.
    Tu auras plus de chance d'avoir toujours le même résultat bien sûr si tu l'as beaucoup contraint.

  • [^] # Re: Le problème est en aval

    Posté par  . En réponse au journal Le vibe coding, linuxfr, et moi. Évalué à -1 (+2/-4). Dernière modification le 08 octobre 2026 à 09:46.

    En fait, je ne dirais pas que c'est non-déterministe.

    A l'inverse, c'est même beaucoup plus déterministe que quand on demande à un junior ou un senior d'écrire un module sur laquelle on s'est mis d'accord sur l'architecture. Le LLM ira beaucoup plus vite , çà sera beaucoup plus propre.

    Au final, le travail reste. c'est important de le préciser. Il est en amont. On travaille beaucoup plus sur le raffinement des besoins, de l'organisation, des attendus.
    Mécaniquement, on passe aussi plus de temps à tester, à réceptionner les productions des autres , même de non-dev (équipe service) où il faut être vigilant.
    Et là, ce n'est pas sur la qualité du code mais sur l'intégration fonctionnel qui peut avoir été bâclé.

    On passe aussi beaucoup de temps à raffiner le process de production.

  • [^] # Re: Le problème est en aval

    Posté par  . En réponse au journal Le vibe coding, linuxfr, et moi. Évalué à 2 (+1/-0).

    En fait, comme je le disais un peu plus haut les LLM Open-Weight comme GLM n'ont que 6 mois de retard vis-à-vis des LLM fermés.
    Et ils sont déjà satisfaisant. Suffisant pas encore, mais dans 1 ans, ils le seront. J'en ai aucun doute.

    C'est aussi pour çà que j'aime bien suivre les articles de Jérôme Flesch car potentiellement ce qu'il fait on sera obligé tous de le maitriser dans un an.

  • [^] # Re: Le problème est en aval

    Posté par  . En réponse au journal Le vibe coding, linuxfr, et moi. Évalué à 1 (+2/-2).

    J'avais le même point de vue avant :-D

    En fait, vu qu'ils ont un contexte énorme. Le modèle arrive à avoir une connaissance de la spec, de la doc & du code en même temps (et même voir plus parfois).
    Et quand tu négocies les changements avec lui. Il va pointer tous les points qui deviennent contradictoire.
    Dans le plan de dev, il pointera tous ces éléments et il ira les corriger pour que tout reste cohérent.

    En soit, çà te prendrait énormément de temps de de faire çà à la main. Pour eux, c'est rapide.

    PS : Mistral propose le modèle GLM en plus de leur modèle maison. Actuellement, c'est le meilleur qu'ils m'offrent dans leur abonnement.

  • [^] # Re: Le problème est en aval

    Posté par  . En réponse au journal Le vibe coding, linuxfr, et moi. Évalué à 2 (+6/-5). Dernière modification le 07 octobre 2026 à 14:57.

    Je suis passé dans mon équipe sur un développement piloté par les specs.

    On a process très documenté qui guide le modèle du design à la livraison.

    Il n'y a rien à y re-dire, çà marche, çà fournit un travail de meilleur qualité que la majorité des devs peuvent fournir.
    le code est propre , testé de manière intelligente surtout si tu l'y contrains fort car ils ont tendance à rechigner comme beaucoup de développeurs.

    Notre système est très contraint. Le LLM a au final très peu de marge de manœuvre, il est contraint par:
    - la spécification( en Anglais dans un markdown)
    - les attendus (en Gherkin + ou moins strict)
    - le plan de développement établi (négocié avec le dev … négocié c'est le terme, je peux passer 1/2 journée sur un plan de dev)
    - les règles de conception relatif à notre framework
    - les tests qui valident les attendus à plusieurs niveaux (grain fin JUnit jusqu'au test d'intégration Playwright).
    - les règles de code reviews (bonne pratique, contrôle de la duplication de code, vérifie que la bonne méthode est au bon endroit , mais aussi les failles sécurité type XXE , path-traversal, injection de script, le contrôle des sécurités utilisateurs, …)
    - Contrôle la cohérence de la documentation utilisateur existant & les anciens specs qu'on appelle la doc froide.

    Tous les éléments ci-dessus définissent le corpus de règle qui définissent ton application. Le modèle suit un workflow définit par des skills qui l'oblige à valider que chaque éléments de ce corpus est vérifié.

    Au final pour moi, le développement est passé d'un langage Java/Typescript (de haut niveau) en langage naturel
    Au final, çà reste du codes car on exprime des règles logiques qui définissent le logiciel, c'est nous qui spécifions l'architecture , les règles mais on ne code plus chaque fonction. C'est un peu comme utiliser une librairie pour faire un taff qu'on ne veut pas implémenter.

    Concernant les LLM fermés, j'en utilise actuellement 2:
    - Claude Opus pour taff. (J'utilise rarement Fable si j'ai besoin de quelques choses de mieux je réveille mon cerveau :-D )
    - Mistral GLM 5.? pour le perso

    Certes, GLM est moins bon que le Claude Opus actuel, mais ils n'ont que 6 mois de retard… çà va!(chez mistral, on n'a pas le dernier GLM). Pour moi, ce n'est pas un problème. Opus actuel est suffisant pour toutes les tâches. Dans 6 mois, les modèles Open-Weight seront au moins aussi performant et probablement plus performant en économie d'énergie car ils sont construit pour être plus efficient.

  • [^] # Re: Non libre

    Posté par  . En réponse au journal Un petit jeu de freestyle rap dans le navigateur. Évalué à 1 (+1/-1).

    Je trouve que l'idee est bonne mais il faut clarifier la license et exposer les sources même si elles sont theoriquement deja ouverte

    Je pense que l'AGPL se prete bien a ton projet.

    Perso, le freestyle en Anglais , c est trop chaud pour moi.

  • [^] # Re: Système d'information local

    Posté par  . En réponse au journal Qui est le public de LibreOffice Base ?. Évalué à 3 (+2/-0).

    J'ai connu un logiciel de gestion de consultations d'anesthésie qui était développé en Access. La clinique faisait 30 k interventions par an, donc je peux te dire qu'il y en avait, des consultations dedans, et des prescriptions de sortie…

  • # En Jeu de RTS opensource dispo sur steam & playstore, il y a ...

    Posté par  . En réponse au journal Beyond All Reasons. Évalué à 3 (+2/-0).

    https://github.com/Anuken/Mindustry

    C'est vraiment un très bon jeu avec bon niveau difficulté.

    J'y joue quasiment que sur téléphone même si l'interface est plus pratique sur PC

    Il est dispo sur Steam
    https://store.steampowered.com/app/1127400/Mindustry/

    Entre 1000 à 2000 joueurs steam
    https://steamdb.info/app/1127400/charts/#breakdown

    Je n'ai jamais joué en réseau ou avec mods.

    L'unique défaut, les parties dur en 30min à 2h voir plus si on fait bcp de pause. (C'est lié au Game Design)

  • # Tarif, télémaintenance & assistance à distance ?

    Posté par  . En réponse à la dépêche Multiplier par 4 et en 4 ans l’adoption de Linux chez le particulier !. Évalué à 3 (+2/-0). Dernière modification le 11 août 2026 à 16:40.

    Hello,

    J'aime bien l'idée & je trouve sympa de l'appuyer avec "le service à la personne" & j'adore le logo.

    Par contre 68€, c'est chaud en terme de rentabilité à mon avis.
    Si il y a un peu de données à copier, où que la machine est un peu vieille l'upgrade pourra prendre un peu plus 1/2 journée entre la MDV & la mini-formation.
    Pour un salaire descend, il faut que vous ciblez au moins un revenu brut supérieur à 200 euros par jour de revenu

    L'autre sujet qui m'intéresse , j'ai migré le PC de mon père sous Linux… Il en est plus ou moins satisfait (mais c'est un autre sujet c'est mon père, mais il y en a des beaucoup comme lui :-D ).

    Je n'ai pas trouvé de solution efficace pour faire de la télémaintenance sur son poste à distance. (ils vivent dans le sud, je suis proche de Paris).
    Vous avez réfléchi à une solution de ce type ? si oui comment vous facturez ?

  • [^] # Re: Keycloak

    Posté par  . En réponse à la dépêche SelfRecover — protocole AGPL de récupération de compte sans email. Évalué à 7. Dernière modification le 31 mai 2026 à 10:39.

    Le principale problème de ta proposition est le suivant.
    Pour que cela fonctionne , il faut que ton recovery secret soit simple et utiliser sur plusieurs site. Sinon , c est comme un systéme a 2 mot de passe qui est forcement 2 fois moins securisé que si il n y avait qu un mot de passe.

    En l occurence, Si ton serveur est corrompu:
    -L attaquant peut alors recupérer les empreintes de tous tes utilisateurs. Il peut alors tenter de brute force ce "recovery secret" sans ce soucier de la limite de tentative.
    -L attaquant peut corrompre la page de recuperation est recupéré le recovery secret des utilisateurs au moment de la saisie.

    Une fois qu il a identifié un secret. Il peut alors le tester sur d autre serveur non compromis et gagner des accès. Bref, ce qui en fait la principale faiblesse.

    Historiquement, ce type de recovery a été utilisé, on te demandait de repondre le nom de ta prof de cp, ou de ton premier chien. La recommandation des experts, c est de repondre un truc random et de ne pas utiliser ce type de recovery.

    Si on voudrait améliorer l authentification actuel.
    Il faudrait mettre en place une authentification par messagerie instantané crypté ou par mail crypté.
    Le mail est par essence decentralisé donc cela serait un bon candidat.
    Rien empeche d indiquer sa clé public a l inscription sur un site.

    Avantage, l utilisateur devient connu par son email et sa clé public

  • [^] # Re: Je suis un mauvais programmeur

    Posté par  . En réponse au journal Audition de la direction de Mistral AI et Solo dev. Évalué à 3. Dernière modification le 26 mai 2026 à 18:49.

    J’ai vécu la même expérience que toi. Il y a un an, j’avais une vision qui a été complètement remise en cause.
    Pour ma part, je pratique désormais un développement entièrement piloté par l’IA.

    On peut en dire ce qu’on veut : ça marche, et on est plus productifs.

    Avec le bon framework, ça tient même sur de gros projets.
    Wilk : Si tu n’es pas familier avec ce concept, sache que l’idée est de créer une boucle de validation entre la spécification, la planification, les tests et le développement.

    À terme, le travail devrait gagner en qualité.

    Quant à l’emploi des développeurs, je pense qu’on a encore de belles années devant nous. La charge de travail se concentrera surtout sur la
    spécification, la planification et les tests – même si ces étapes seront assistées par l’IA. L’humain ne pourra pas être retiré de la boucle.
    L’application sur mesure va devenir la norme. On va faire de la haute couture pilotée par l’IA.

    À mon avis, le risque est plutôt que l’économie s’effondre pour d’autres raisons (crise financière, bulle spéculative qui éclate, etc.), mais ce ne sera pas directement lié à l’IA.

  • # Trollometre explosé !

    Posté par  . En réponse au journal J'ai mis à jour Fedora 44 juste avant la stable. Évalué à 4. Dernière modification le 27 avril 2026 à 18:06.

    Non mais sérieux, les journaux à Troll sont réservé exclusivement au Vendredi !

    PS: Au passage, il est un peu trop gros comme Troll. çà ne marchera pas même un vendredi.

  • [^] # Re: Svp arrêter de dire ce genre de chose.

    Posté par  . En réponse à la dépêche L’économie du logiciel est-elle morte ?. Évalué à 5.

    Comme pour les logiciels libres :-)

  • # Svp arrêter de dire ce genre de chose.

    Posté par  . En réponse à la dépêche L’économie du logiciel est-elle morte ?. Évalué à 5. Dernière modification le 13 mars 2026 à 16:14.

    « L’économie du logiciel est-elle morte ? »
    Désolé, J’en ai marre de lire ce genre de reaction.
    En fait, je suis encore plus choqué de lire ce genre de réaction sur LFR.
    Dire que l’économie du logiciel est morte car on peut créer un logiciel from scratch avec un LLM.
    C’est aussi ridicule que de dire les logiciels libres, c’est le cancer des éditeurs de logiciels.
    Que tu demandes un code source à un SFTP d’un repo officiel ou que tu la fasses générer par un LLM d’un point boite de noir. C’est la même chose.
    C’est comme dire Red Hat ne peut pas faire de l’argent avec Linux qui est issue des super LLM que sont « Linus Torvald, et les autres contributeurs du noyaux ».
    Red Hat, Ubuntu exploite la production de logiciel depuis des années. Leur savoir faire n’est pas dans un logiciel privateur mais dans leur capacité à organiser, former & déployer un logiciel libre.
    Donc tu vois, j’ai le point de vue inverse. Les LLM montrent ce qu’on sait tous depuis des années. La vraie valeur d’un logiciel n’est pas dans sa création mais dans la capacité des sociétés à le déployer et à l’accompagner au quotidien.

    PS: Désolé pour le démarrage un peu sec :) Joli troll pour un Vendredi

  • # J'envisage sérieusement d'abandonner Nvidia pour ma prochaine carte Video

    Posté par  . En réponse à la dépêche AMD mise tout sur RADV. Évalué à 6.

    Hello,
    Merci pour l'article.

    Perso ,je n'en peux plus des pilotes NVidia qui me font planter l'upgrade ma Ubuntu.
    Je pense sérieusement à passer sur AMD pour ma prochaine carte vidéo.

  • [^] # Re: Adopté par les services publics

    Posté par  . En réponse au journal Selfid Connect : l'authentification de confiance. Évalué à 1.

    Il est important d'ajouter cet image à l'UI pour que cela soit bien clair :)

  • [^] # Re: Jour 10

    Posté par  . En réponse au journal Advent of Code 2025. Évalué à 1. Dernière modification le 15 décembre 2025 à 19:17.

    Je voulais tester pour m'amuser le recuis simulé , mais çà ne marche pas. Définitivement une mauvaise idée :-p

  • [^] # Re: Jour 10

    Posté par  . En réponse au journal Advent of Code 2025. Évalué à 1.

    Après, si tu veux chercher l'optimum à la main. Tu peux envisager un "Recuis simulé".
    https://fr.wikipedia.org/wiki/Recuit_simul%C3%A9

    Mais dans ce cas , tu n'es peut être pas obligé de simplifier ta matrice (sauf peut être pour des raison de performances)

    En gros, à chaque tour de boucle , tu fais varié aléatoirement le nombre de pression d'un des bouttons & petit à petit , tu réduis le seuil de tes
    variations

    La difficulté de cette algo, c'est d'exprimer le choix de l'aléatoire voisin car il faut envisager que tu diminues un au profit d'un autre ce qui peut être lourd à caler.

  • [^] # Re: Jour 10

    Posté par  . En réponse au journal Advent of Code 2025. Évalué à 1.

    Perso, j'ai utilisé Z3. Tu poses juste les équations et tu indiques le type d'optimisation que tu veux.
    çà m'a pris moins d'1h une fois que j'ai compris qu'il fallait que je pose çà sous forme d'équation.

    Tu obtiens le résultat très rapidement.

  • [^] # Re: Jour 12

    Posté par  . En réponse au journal Advent of Code 2025. Évalué à 1.

    Ce qui est marrant,c'est que ton code ne fonctionne pas pour le jeu de test.

    Mais finalement , çà ne me surprend pas car j'étais surpris que mon code marche alors que je suis loin de trouver un optimum
    Et on voit que je ne fais pas toujours le meilleur choix. Je calcule des distributions de ce type
    ```
    . 1 1 0 0 0 0 0 0 0 0 0 4 4 4 4 4 4 3 3 3 4 4 4 3 3 3 4 4 4 3 3 3 4 4 4 3 3 3 .
    1 1 . 0 0 . . 0 0 0 0 2 2 . 4 4 4 4 4 3 3 4 4 4 4 3 3 4 4 4 4 3 3 4 4 4 4 3 3 .
    1 1 1 0 5 5 5 . 0 0 2 2 4 4 4 4 4 4 4 3 3 4 4 4 4 3 3 4 4 4 4 3 3 4 4 4 4 3 3 .
    1 1 5 5 5 5 0 0 0 . 2 2 2 4 4 4 4 4 4 . . . 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
    1 1 1 5 5 5 5 0 0 . 4 4 4 4 4 4 4 4 4 4 . . . 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 . 4
    1 1 5 5 5 0 0 0 0 4 4 4 4 4 4 4 4 4 4 4 4 3 3 3 4 4 4 4 4 . 4 4 4 4 4 4 . 4 4 4
    1 1 1 . . 0 0 . . 4 4 4 4 . 4 4 4 4 4 4 4 3 3 3 4 4 4 . 4 . 4 . 4 4 4 4 4 4 . .
    1 1 5 5 5 0 5 5 5 4 4 4 2 2 . . . . 4 4 4 . . . . . . . . . . . . . . . . . . .
    1 1 1 5 5 5 5 5 0 0 0 2 2 2 2 2 . . . . . . . . . . . . . . . . . . . . . . . .
    1 1 5 5 5 5 5 5 5 0 0 2 2 2 2 2 . . . . . . . . . . . . . . . . . . . . . . . .
    1 1 1 . 5 5 5 0 0 0 0 2 2 2 2 . . . . . . . . . . . . . . . . . . . . . . . . .
    1 1 5 5 5 . . 0 0 . 2 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . .
    1 1 1 5 5 5 5 0 . . 2 2 2 . . . . . . . . . . . . . . . . . . . . . . . . . . .
    1 1 5 5 5 5 5 5 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
    1 1 1 . 5 5 5 5 5 5 5 . . . . 2 2 2 . . . . . . . . 2 2 2 . 2 2 2 . . . . . . .
    1 1 5 5 5 . 5 5 5 5 0 0 0 . . . 2 2 . . . . . . . . . 2 2 2 2 2 2 . . . . . . .
    1 1 1 5 5 5 5 . 5 5 5 0 0 3 3 2 2 3 3 3 . . . . 2 2 2 2 2 2 2 2 . . . . . . . .
    1 1 5 5 5 5 0 0 0 0 0 0 0 3 3 3 3 3 3 3 2 . 2 2 2 . 2 2 2 2 2 . . . . . . . . .
    1 1 1 . 5 5 5 0 0 0 0 . . 3 3 3 3 3 3 3 2 2 2 2 2 2 2 2 2 2 2 . . . . . . . . .
    1 1 0 0 0 0 0 0 0 0 . 4 4 4 3 3 3 3 3 3 3 2 2 3 3 2 2 2 2 2 2 2 . 2 2 2 . . . .
    1 1 1 0 0 0 0 0 0 0 4 4 4 4 3 3 2 2 2 3 3 3 3 3 3 2 2 2 2 2 2 2 2 2 2 2 . . . .
    1 1 1 1 0 0 . . 0 0 4 4 4 4 3 3 3 2 2 3 3 3 3 3 3 3 2 2 2 2 2 2 2 2 2 . . . . .
    1 1 1 1 1 0 0 0 0 0 4 4 4 3 3 3 2 2 3 3 . 3 3 3 3 3 3 . . 2 2 2 2 2 2 2 . . . .
    1 1 1 1 1 0 0 . 0 0 . 4 4 4 3 3 3 3 3 3 3 3 3 3 3 3 3 2 . 2 . 2 . 2 2 2 2 . . .
    1 1 1 1 1 0 . . 0 0 0 4 . 4 3 3 3 3 3 3 3 3 3 3 3 3 3 2 2 2 . 2 2 2 2 . 2 . . .
    1 1 1 1 1 0 0 0 0 0 0 4 3 4 2 2 3 3 3 2 2 3 3 3 3 3 2 2 2 2 2 2 2 2 2 2 . . . .
    1 1 1 1 1 0 0 . 0 0 3 3 3 2 2 3 3 3 2 2 3 3 3 3 3 3 2 2 2 2 2 2 2 2 2 2 2 . . .
    1 1 1 1 1 0 . . 0 0 3 3 3 2 2 2 3 3 2 2 2 3 3 3 3 3 2 . 2 2 2 2 2 2 2 . 2 . . .
    1 1 1 1 1 0 0 0 0 0 0 0 0 0 . . 3 3 . . . 3 3 3 . . . . . . . 2 2 . . . . . . .
    1 1 1 1 1 0 0 0 0 0 0 0 0 0 . . . . . . . . . . . . . . . . . . . . . . . . . .
    1 1 1 1 1 0 . 5 5 5 0 0 0 0 5 5 5 . . . . . . . . 3 3 3 . . . . 2 2 3 3 3 . . .
    1 1 1 1 1 0 0 0 5 0 0 0 0 0 0 5 5 5 5 . 5 5 5 . . 3 3 3 . . . . 2 2 2 3 3 . . .
    1 1 1 1 1 0 0 5 5 5 0 0 0 0 5 5 5 5 5 5 5 5 5 5 5 3 3 3 3 3 3 2 2 2 2 3 3 3 3 .
    1 1 1 1 1 0 . 5 5 5 . 0 0 5 5 5 5 5 5 5 5 5 5 5 4 4 4 3 3 3 3 2 2 2 3 3 3 3 3 .
    1 1 1 1 1 0 0 0 5 0 0 0 . . 5 . . . 5 5 5 . 5 5 5 . 4 3 3 3 3 3 2 2 3 3 3 3 3 3
    1 1 1 1 1 0 0 5 5 5 0 0 0 5 5 5 5 5 5 . 5 5 5 . 4 4 4 3 3 3 . 3 3 3 3 3 3 3 . .
    1 1 1 1 1 0 . 5 5 5 . 0 0 0 5 5 5 5 5 5 5 5 5 5 5 . . 3 3 3 . 3 3 3 . 3 3 3 . .
    1 1 1 1 1 0 0 0 5 5 5 5 0 0 0 5 5 5 5 5 5 5 5 5 5 5 5 3 5 5 5 3 5 5 5 3 5 5 5 .
    1 1 1 1 1 0 0 5 5 5 5 0 0 0 5 5 5 . 5 5 5 . 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 . .
    1 1 1 1 1 0 0 0 0 5 5 5 0 0 4 4 4 4 4 4 4 4 4 . 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 .
    1 1 1 . . . 0 0 . . . . . 0 4 . . 4 . . 4 . . . . . 5 5 5 . 5 5 5 . 5 5 5 . . .
    . 1 . . . . 0 . . . . . . . 4 4 4 4 4 4 4 4 4 . . . . . . . . . . . . . . . . .