woffer 🐧 a Ă©crit 216 commentaires

  • # drone.io

    Posté par  (site web personnel) . 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  (site web personnel) . 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  (site web personnel) . 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  (site web personnel) . 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  (site web personnel) . 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  (site web personnel) . 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  (site web personnel) . 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  (site web personnel) . 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  (site web personnel) . En rĂ©ponse au journal IBM achĂšte Red Hat. Évalué à 6.

    Oh mince alors, il nous reste Debian 😁

  • [^] # Re: Go -> Rust

    Posté par  (site web personnel) . 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  (site web personnel) . 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  (site web personnel) . 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  (site web personnel) . 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  (site web personnel) . 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  (site web personnel) . 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  (site web personnel) . 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/

  • [^] # Re: Rust et SIMD

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

    Il y a un outil pour détecter les race conditions en Go, race detector, mais je ne le trouve pas trÚs efficace.
    

    Juste pour compléter, l'outil race detector est basé sur de la détection des accÚs concurrents non protégés qui se produisent lors des tests unitaires lancés avec le mode race ou sur une des instances en production qui a été compilée avec le mode race. Les erreurs sont sorties sur l'erreur standard, elles donnent les goroutines incriminées en écriture (voire en lecture) et la zone mémoire (variable, tableau
).
    Il n'analyse pas le code source pour trouver les accÚs concurrents non protégés (pas d'analyse statistique). Il ne permet pas de garantir que le code est sûr s'il ne détecte rien par contre s'il détecte une erreur c'est vraiment un accÚs concurrent non protégé qu'il faudra corriger. Il n'est donc pas parfait mais il a le mérite d'exister.
    Pour moi, le couple benchmark ou test unitaire avec plusieurs appels en parallĂšle (par exemple pour une API WS plusieurs requĂȘtes jouĂ©es lors des tests unitaires) et le mode race activĂ© fonctionne trĂšs bien. Il me donne une bonne garantie que le code est sĂ»r d'un point de vue des accĂšs concurrences non protĂ©gĂ©s et il est exĂ©cutĂ© dans la CI sur chaque push.

  • [^] # Re: Image from scratch + Go = 🎉

    Posté par  (site web personnel) . En rĂ©ponse au journal Une image de base docker. Évalué à 2. DerniĂšre modification le 08 aoĂ»t 2018 Ă  12:46.

    Et surtout c'est une trĂšs bonne couche d'abstraction. Pour le OPS, que tu (en tant que DEV) produises une image lĂ©gĂšre ou un peu plus grosse (ex: jvm + ton appli) pour l'OPS ç'est un peu prĂšs la mĂȘme chose. Les OPS peuvent in fine facilement l'installĂ© sur un cluster k8s.

  • # Image from scratch + Go = 🎉

    Posté par  (site web personnel) . En rĂ©ponse au journal Une image de base docker. Évalué à 5.

    Pour moi, le couple From scratch + Go est parfait. L'image fait quelques mo, l'empreinte mĂ©moire est d'une vingtaine de mo. Et mĂȘme si on attribue quelques millicores au pod, le serveur Web de Go se comporte trĂšs bien. Bref, je suis satisfait.

  • # awk vs cut

    Posté par  (site web personnel) . En rĂ©ponse au journal taptempo.awk : une approche plus unix ?. Évalué à 0.

    Ok, awk est trĂšs puissant.
    Par contre, si je souhaite parser des gros fichiers avec le minimum de ressources ou le plus rapidement possible, alors je préfÚre utiliser grep+cut pour sa sobriété et rapidité.

  • [^] # Re: Archlinux

    Posté par  (site web personnel) . En rĂ©ponse Ă  la dĂ©pĂȘche Sortie d'it-edit version 3.0. Évalué à 2.

    D'oĂč ma question, j'ai cherchĂ© aussi et pour fois je n'ai rien trouvĂ© mĂȘme pas dans AUR. Donc, j'ai (ou on a) sans doute loupĂ© quelque chose.

  • # GOPATH

    Posté par  (site web personnel) . En rĂ©ponse au journal frundis : un langage de balisage sĂ©mantique qui mĂ»rit !. Évalué à 2.

    Hello,
    La configuration de la variable d'environnement GOPATH n'est plus nécessaire depuis go 1.8.
    Si elle n'est pas configurée, alors la valeur ${HOME}/go est utilisée.
    https://github.com/golang/go/issues/17262

  • # Archlinux

    Posté par  (site web personnel) . En rĂ©ponse Ă  la dĂ©pĂȘche Sortie d'it-edit version 3.0. Évalué à 1.

    Hello,
    Savez-vous s'il existe un package pacman de disponible pour Arch Linux ?
    Merci

  • [^] # Re: Meetup "Go release party" chez Deezer

    Posté par  (site web personnel) . En rĂ©ponse au journal Go 1.8. Évalué à 2.

    Voici le genre de problÚme que cette évolution doit corriger :
    https://blog.cloudflare.com/how-and-why-the-leap-second-affected-cloudflare-dns/

  • [^] # Re: A propos de Manjaro

    Posté par  (site web personnel) . En rĂ©ponse au journal 2017 : l'annĂ©e oĂč Linux atteindra les 5% de parts de marchĂ©. Évalué à 1.

    Je l'utilise au boulot et Manjaro stable fonctionne sans aucun souci.