woffer 🐧 a Ă©crit 175 commentaires

  • # Note pour les futurs webmester Redoxfr.org

    Posté par  . En rĂ©ponse Ă  la dĂ©pĂȘche Redox OS, le prochain systĂšme d’exploitation Ă  conquĂ©rir le monde ?. Évalué à 9.

    Hey, les futurs webmester de redoxfr.org, n'oubliez pas d'y accoler GNU (GNU/Redox.org), sinon RMS ne voudra pas venir faire une interview !!!

  • [^] # Re: Les mots ont un sens

    Posté par  . En rĂ©ponse au journal Les rollbacks avec Manjaro, Btrs et Timeshift. Évalué à 0.

    Stricto sensu non. Manjaro a des versions. Ces versions ne sont pas majeures mais elle a quand mĂȘme des versions, contrairement Ă  Arch Linux qui n'a pas de version.

  • [^] # Re: Raisons d'essayer Rust

    Posté par  . En rĂ©ponse au journal Retour d'expĂ©rience sur les langages de programmation. Évalué à 3.

    En Go, le pattern c'est de retourner (resultat, erreur). Si tu ne verifies pas l'erreur, dommage le compilateur ne t'aidera pas Ă  t'en rendre compte.

    Tu peux utiliser des linters et notamment le metalinter golangci-lint qui fait référence et évitera ce genre d'erreur (entre autres).

    En plus il faut toujours gérer 4 cas: (result, nil), (result, err), (nil, err), (nill, nil). Et si les cas 2 et 4 semble improbables et inutiles, il n'y a pas besoin de chercher trÚs loin dans la doc de la lib standard pour trouver des exemples (read par exemple, qui peut retourner des données et un EOF).

    Euh, non pas spĂ©cialement, si tu retournes la valeur et non son pointeur donc (rĂ©sultat, erreur) et pas (*rĂ©sultat, erreur), tu ne peux pas avoir tes deux derniers cas (nil, err) et (nil, nil). Car tu disposeras directement de la valeur qui ne peut ĂȘtre nulle.
    AprÚs plus de 6 années d'expérience intensive de programmation en Go, mes fonctions ne retournent pratiquement que des valeurs donc (result,error). Si je dois retourner un pointeur, c'est qu'il y a un besoin bien particulier comme retourner une structure avec un partage d'un espace mémoire (ex : mutex et co).

  • [^] # Re: VM

    Posté par  . En rĂ©ponse au journal Ivre, il tente de rĂ©installer Windows, ça tourne mal. Évalué à 4.

    Si j'ai bien compris, tu mets un point de restauration à la premiÚre utilisation et tu le restaure au bout de 90 jours, c'est bien ça ?
    Du coup, quel est l'intĂ©rĂȘt de Microsoft de fournir ce genre d'image ?

  • [^] # Re: JSON? YAML?’

    Posté par  . En rĂ©ponse au journal En finir avec CSV ou Excel pour Ă©changer des donnĂ©es. Évalué à 3.

    Pour streamer du JSON like, tu peux utiliser du JSONL, c'est trÚs pratique pour échanger des données entre back-end car facilement streamable. Si la performance est vraiment problématique pour les échanges entre back-end, tu peux te tourner vers des formats binaires avec schéma (protobuf, 
 ) ou sans schéma (msgpack, 
).

  • # Concernant le switch Discord

    Posté par  . En rĂ©ponse Ă  la dĂ©pĂȘche Rust a 5 ans, rĂ©trospective. Évalué à 4.

    De la mĂȘme maniĂšre Discord bascule de Go Ă  Rust pour son Ă©cosystĂšme de bibliothĂšques notamment en matiĂšre d’asynchronisme avec Tokio (EN), sa gestion mĂ©moire et ses performances globales.

    Visiblement, la comparaison ne semblait pas trÚs juste car basée sur une vieille version de Go (cf. le tweet du leader technique de Go Russ Cox https://twitter.com/_rsc/status/1224802726774812672?s=20).

  • [^] # Re: RMS

    Posté par  . En rĂ©ponse au journal Kernel-5.1-gnu. Évalué à 5.

    Il me semble peut-ĂȘtre Ă  tort que Google utilise le concept des micro kernel pour son Fuchsia OS.

  • [^] # Re: VallĂ©e de l'Ă©trange

    Posté par  . En rĂ©ponse au journal Cette personne n'existe pas. Évalué à 3.

    Moi, j'en ai eu au moins 1 sur une trentaine de visages demandés.

  • [^] # Re: drone.io

    Posté par  . En rĂ©ponse au journal Mettre en place des build automatiques avec jenkins et docker. Évalué à 1.

    Les runners de gitlab ci sont écrits en Go. Donc, j'imagine que ça ne doit pas prendre beaucoup de RAM.

  • # drone.io

    Posté par  . En rĂ©ponse au journal Mettre en place des build automatiques avec jenkins et docker. Évalué à 4.

    Hello,
    Quelqu'un a-t-il déjà essayé drone?

  • # Sortir du lot

    Posté par  . En rĂ©ponse au journal Huit ans et plus toutes ses dents. Évalué à 3. DerniĂšre modification le 28 dĂ©cembre 2018 Ă  16:47.

    Pourquoi ne pas sortir du lot en proposant des compĂ©tences plus rares mais utiles ? Je pense notamment au Go qui peut ĂȘtre utilisĂ© dans pour le dĂ©veloppement dans diffĂ©rents domaines comme le devops ou le backend.

  • [^] # Re: Go Go Go :)

    Posté par  . En rĂ©ponse au journal recherche-totoz en JavaScript. Évalué à 1.

    Bonne question merci.
    Il faut utiliser le principe du fan-in fan-out qui permet de parallĂ©liser N requĂȘtes et les merger voir annuler celles qui restent si une Ă©choue. Go montre toute sa puissance ici.

  • [^] # Re: Go Go Go :)

    Posté par  . En rĂ©ponse au journal recherche-totoz en JavaScript. Évalué à 1. DerniĂšre modification le 02 dĂ©cembre 2018 Ă  10:47.

    Je suis complĂštement en accord avec toi sauf malheureusement quand les librairies n'utilisent pas Netty ou d'autres (e.g. Apache Mina). Dans mes prĂ©cĂ©dents dĂ©veloppements (je travaille pour un grand telco français), nous devions nous interconnecter avec une plateforme d'accĂšs gĂ©rant plusieurs millions de clients. Nous utilisions un client radius en Java qui n'utilisait pas les nio. Donc, nous Ă©tions obligĂ©s de configurer nos pools de threads pour ne pas dĂ©grader la QoS de notre plate-forme avec des pools de threads vidĂ©s car le serveur radius Ă©tait par moment un peu long Ă  rĂ©pondre


    Alors qu'en Go, l'asynchronisme (via epoll sous linux) est obligatoire car géré par le runtime de façon transparente.

    De plus, comme je l'ai déjà dit, je préfÚre que le code soit écrit en synchrone qu'en asynchrone car beaucoup plus simple maintenir par la suite surtout par quelqu'un d'autre.

  • [^] # Re: Go Go Go :)

    Posté par  . En rĂ©ponse au journal recherche-totoz en JavaScript. Évalué à 1. DerniĂšre modification le 01 dĂ©cembre 2018 Ă  20:12.

    C'est justement l'intĂ©rĂȘt de Go, qui contrairement Ă  Java par exemple, ne bloque pas les threads systĂšmes sur les entrĂ©es/sorties rĂ©seaux. C'est pour cela que Go propose que des clients synchrones d'un point de vue des goroutines dans son SDK.

    Je peux te dire que venant du monde Java backend, cela a toujours été l'horreur de configurer la taille des pool de threads (souvent fait au doigt mouillé) d'autant plus quand tu accÚdes à des API qui répondent plus moins vite (donc bloquant plus ou moins les threads).

    J'aime le Go et son semblant d'aspect synchone car il me permet de lire le code comme un livre. C'est dire naturellement.

  • [^] # Re: Go Go Go :)

    Posté par  . En rĂ©ponse au journal recherche-totoz en JavaScript. Évalué à 1.

    Oui sans aucun doute ;)
    Disons que c'est plus un partage d'expérience :p

  • [^] # Re: Go Go Go :)

    Posté par  . En rĂ©ponse au journal recherche-totoz en JavaScript. Évalué à 0.

    En relisant, je m'aperçois que je n'ai pas fermé le body de la réponse. Donc voici la version corrigée :

    package main
    
    import (
        "encoding/xml"
        "log"
        "net/http"
    )
    
    type totozes struct {
        Name []string `xml:"totoz>name"`
    }
    
    func main() {
        res, err := http.Get("https://totoz.eu/search.xml?terms=plop")
        if err != nil {
            log.Fatal(err)
        }
        defer res.Body.Close()
    
        if expected, actual := http.StatusOK, res.StatusCode; expected != actual {
            log.Fatalf("unexpected status code [actual: %v] [expected: %v]", actual, expected)
        }
    
        var (
            d         = xml.NewDecoder(res.Body)
            totozList totozes
        )
    
        if err := d.Decode(&totozList); err != nil {
            log.Fatal(err)
        }
    
        for _, Name := range totozList.Name {
            log.Println(Name)
        }
    }
  • # Go Go Go :)

    Posté par  . En rĂ©ponse au journal recherche-totoz en JavaScript. Évalué à 3.

    Hello,
    Pour moi, le Go est dans son élément ici. Les goroutines vous permettent de ne pas vous occuper de l'aspect asynchrone/synchrone.
    Go c'est une application qui tourne avec 10 à 20 Mo d'emprunte mémoire, qui se comporte trÚs bien sur un pod k8s dont les ressources sont inférieures 100 millicore, qui démarre quasi-instantanément, dont le déploiement est simplissime un simple binaire dans un container from scratch, dont la taille sera de quelques mega (ici 6.1Mo pour binaire linux amd64).

    Le tout avec un langage qui reste simple (pour des cas simples), trĂšs bien outillĂ© (vet, race 
), gĂ©nial pour la concurrence, la gestion des timeouts/fin de vie (via les context) et qui va utiliser tous les cores disponibles de façon optimale.

    Bref, qu'en pensez vous ?

    https://play.golang.org/p/ElZ99l4WTd-

    package main
    
    import (
        "encoding/xml"
        "log"
        "net/http"
    )
    
    type totozes struct {
        Name []string `xml:"totoz>name"`
    }
    
    func main() {
        res, err := http.Get("https://totoz.eu/search.xml?terms=plop")
        if err != nil {
            log.Fatal(err)
        }
    
        if expected, actual := http.StatusOK, res.StatusCode; expected != actual {
            log.Fatalf("unexpected status code [actual: %v] [expected: %v]", actual, expected)
        }
    
        var (
            d         = xml.NewDecoder(res.Body)
            totozList totozes
        )
    
        if err := d.Decode(&totozList); err != nil {
            log.Fatal(err)
        }
    
        for _, Name := range totozList.Name {
            log.Println(Name)
        }
    }
  • [^] # Re: Microsoft en rĂȘvait

    Posté par  . En rĂ©ponse au journal IBM achĂšte Red Hat. Évalué à 6.

    Oh mince alors, il nous reste Debian 😁

  • [^] # Re: Go -> Rust

    Posté par  . En rĂ©ponse au journal Go et Rust, lequel est le remplaçant du C ?. Évalué à 2.

    Pour avoir utiliser les deux (dep et mod). Et bien, je suis contant que Russ ait imposé la vision de la gestion des dépendance qui beaucoup plus simple et suffisamment puissant.

    C'est aussi un outil qui va nettoyer les logiciels qui adoptent des mauvais comportements (je pense à toi k8s qui change son API sur chaque nouvelle version mineure) car ils devront enfin respecter la gestion sémantique

  • [^] # Re: Si tu aimes le risque

    Posté par  . En rĂ©ponse au journal GNU/Linux Manjaro ! + projet ARM Ă  300 € !?. Évalué à 1.

    C'est exactement le mĂȘme ressenti que j'ai. Moi, je n'ai jamais eu de problĂšme avec cette distribution. Elle est trĂšs bien fournie grĂące Arch tout en limitant les mise Ă  jour, une grosse maj une fois toutes les deux ou trois semaines.

  • [^] # Re: Arch

    Posté par  . En rĂ©ponse au journal GNU/Linux Manjaro ! + projet ARM Ă  300 € !?. Évalué à 2.

    Je ne dirai pas ça, j'aime Arch car elle permet de comprendre un peu plus en profondeur Linux. J'aime aussi Arch pour la possibilitĂ© de tuning. Elle m'a permis d'installer une Arch Linux sur une clef USB et de tuner le systĂšme pour limiter les Ă©criture sur la clef USB en passant tout les Ă©critures en RAM puis lors de l'arrĂȘt du systĂšme synchroniser avec rsync. Et surtout j'aime Arch pour la trĂšs grande qualitĂ© de son wiki.
    Donc, Arch c'est bien, mais Manjaro aussi ;)

  • [^] # Re: Arch

    Posté par  . En rĂ©ponse au journal GNU/Linux Manjaro ! + projet ARM Ă  300 € !?. Évalué à 1.

    J'ai suivi leur wiki à la lettre, et je n'ai jamais installé sur mon Arch des paquets provenant de Manjaro.
    Non, les problÚmes que j'ai eu ont toujours été des problÚmes mineurs mais c'est agaçant. Le dernier en date, si je me souviens bien, a été un problÚme de certificat lors de la mise à jour. Ce sont des problÚmes mineurs mais je n'ai jamais eu ça avec Manjaro.

  • [^] # Re: Arch

    Posté par  . En rĂ©ponse au journal GNU/Linux Manjaro ! + projet ARM Ă  300 € !?. Évalué à 1.

    J'utilise les deux et franchement j'ai plus de problĂšmes avec Archlinux que Manjaro. Mais bon, Ă  mes yeux ce sont de trĂšs bonnes distributions. Ce que
    j'aime quand mĂȘme dans Manjaro, c'est ça simplicitĂ© d'installation par rapport Ă  Archlinux (c'est quand mĂȘme brute de dĂ©coffrage ;)) et surtout beaucoup moins de mise Ă  jour. Sur Archlinux, j'en ai plusieurs fois par jour, alors que Manjaro les regroupe en une seule.
    Ça Ă©vite les mise Ă  jour du logiciel version x.y.z-1, puis une nouvelle mise Ă  jour du mĂȘme logiciel en version x.y.z-2.

  • [^] # Re: Si tu aimes le risque

    Posté par  . En rĂ©ponse au journal GNU/Linux Manjaro ! + projet ARM Ă  300 € !?. Évalué à 2.

    Personnellement, j'utilise Manjaro comme poste de développement professionnel depuis plusieurs années et c'est stable. J'ai beaucoup moins de problÚmes que j'avais avec Fedora lors des montées de version. Bref, je recommande chaudement. C'est une Archlinux (que j'utilise sur ma machine perso) avec beaucoup moins de mise à jour.

  • [^] # Re: Rust et SIMD

    Posté par  . En rĂ©ponse Ă  la dĂ©pĂȘche Faut‐il continuer Ă  apprendre le C++ ?. Évalué à 2.

    Le vol de travail par exemple est un modÚle un peu plus récent
    

    Ce mĂ©canisme est aussi implĂ©mentĂ© dans le runtime de Go. En effet, les M goroutines sont rĂ©parties sur N threads (un thread par core de la machine) avec un M en gĂ©nĂ©ral beaucoup plus important N (c'est le principe du scheduler M:N). Le principe du vol de travail (c'est Ă  dire des goroutines en attentes) est mise en Ɠuvre entre les diffĂ©rents threads dans le runtime de Go cf. https://rakyll.org/scheduler/