go:packages
Table of Contents
HOWTO Register on wiki ? Manually ask for access on http://www.osinet.fr/contact : there are just too many spammers registering to leave registration open freely.
Go packages
Entre parenthèses, les scores sur go-search: (*stars/packages dépendants). Tri descendant par nombre de dépendants.
- La référence publique : https://code.google.com/p/go-wiki/wiki/Projects
- Un petit projet lancé lors du GopherGala: http://libs.club/golang/
- Un autre wiki: https://github.com/avelino/awesome-go
Audio
Blog / CMS
- Blog à génération statique à la Jekyll:
- Blog classique
- CMS
- Charitablefond 2015-04: pas de commits depuis 2013
- Fragmenta.eu 2016-02 Petit, mais européen
- Toropress doc essentiellement en chinois
Configuration
Loaders
- INI
- https://github.com/robfig/config (8/6/14: 108/178)
- https://code.google.com/p/goconf/ (8/6/14: 3/40 dépendants)
- https://github.com/Unknwon/goconfig (8/6/14: 63/32)
- https://github.com/vaughan0/go-ini (8/6/14: 7/21)
- https://github.com/dlintw/goconf (8/6/14: 10/8)
- https://github.com/Terry-Mao/goconf (8/6/13: 7/4) - INI sans “=” !
- https://github.com/miguel-branco/goconfig (8/6/14: 64/3)
- https://github.com/gosimple/conf (8/6/14: 0/3)
- https://github.com/itkinside/itkconfig (8/6/14: 21/2)
- https://code.google.com/p/gcfg/ (8/6/14: 0/0)
- https://github.com/FogCreek/mini (23/2/15)
- JSON
- https://github.com/stathat/jconfig (8/6/14: 41/10)
- https://github.com/bashtian/jsonutils génération de struct Go à partir de JSON existants pour faciliter leur utilisation
- FFJSON: “faster JSON serialization for Go”
- TOML
- https://github.com/BurntSushi/toml (8/6/14: 198/145)
- Permet d'avoir des décodages personnalisés
- https://github.com/stvp/go-toml-config (8/6/14 48/21)
- Multiformats
- https://github.com/jfbus/autoconfig (4/12/15)
- INI, YAML
- Fusionne automatiquement les configurations de multiples packages
- https://github.com/spf13/viper (8/6/14: 76/6)
- JSON, TOML, YAML
- Combinaison avec les paramètres de ligne de commande
- Conçu pour fonctionner avec Cobra
- https://github.com/moraes/config (8/6/14: 8/1)
- JSON, YAML
- Environnement (à la 12-factor)
- Extensions Flag
Autres
- Managers:
- Finders:
- XDG
- https://github.com/BurntSushi/xdg (8/6/14: 13/10)
Déploiement
- Facebook Go: Grace permet de construire des serveurs interruptibles et redémarrables sans coupure des sockets ouvertes.
- GoXC build, déploiement
Dépendances
Tous ces outils sont obsolètes depuis l'introduction des modules VGO.
Développement
- Wide IDE Go web
- Propriétés des binaires
- Go Version Info inclusion des méta d'exécutable dans les programmes Go pour Windows.
- Documentation
- Metadoc un meilleur générateur de documentation que godoc
- Implements commande listant les interfaces implémentées par un type, ou les types implémentant une interface
- Go Oracle Analyse statique orientée recherche dans le source
- Peach générateur de document style MkDocs ou ReadTheDocs
Déboguage
- Go Spew Dump profond /lisible/, à la
var_dump()
- Stack Dump de pile d'appels Go
- Panicparse affichage amélioré des dumps de panic().
- Stackgraph affichage GraphViz des dumps de panic
- Débogueurs
- Garbage collector
- Debug Charts Tracé de la mémoire avec Highcharts
- Gcvis Visualisation du Garbage Collector
Licensing
- Licentia recherche et MAJ des licences et années de copyright dans une arborescence de sources
- Non-Go mais utilisables dans un projet Go: Ninka, Fossology
Filtres de contenu
- Anti-XSS
- Sanitize permet de stripper au lieu d'échapper.
- Markdown
- Black Friday markdown
- Syntax Highlight coloriseur pour C, Go, Java, JavaScript, Python, Ruby.
- GoValidator validation de chaînes: cartes de crédit, CamelCase, etc
- Vala validation de paramètres
Géomatique
- LatLong détecteur de fuseau horaire basé sur les coordonnées Lat/Long
Graphisme / GUI
- Atlas packer construction de sprites à partir d'images.
- Cairo
-
- autogénéré depuis C au lieu d'être fait à la main
- © Google, non officiel
- Cairo, dans Gotk3 pour GTK3
- Go Cairo (Ungerik) abandonné depuis 2013
- Go Cairo (Joker) abandonné depuis 2012
-
- Dominant Color extrait la couleur dominantes d'une image, avec l'algorithme K-Means. Dérivé de Chromium
- Draw2D ajout de forme géométriques sur des images. Génération de fichiers et sortie sur canevas OpenGL
- Gift traitement d'images
- Glow liaison OpenGL
- Gothis bindings pour Tcl/Tk (8.6)
- GXUI toolkit d'UI natif créé chez Google, expérimental.
- Impressionist serveur de traitement d'images
- MP4 codec MP4
- NetPBM encodeurs/décodeurs pour les formats pixmap PBM, PGM, PPM
- Picfit serveur de traitement d'images genre ImageMagick
-
- SVG Go génération de SVG
- TIFF encodeurs/décodeurs pour TIFF et ses variantes comme BigTIFF, GeoTIFF, RichTIFF
- QR codes
Impression (PDF)
Internationalisation: i18n - L10n - g11n - L12y - NLS
- i18n4go Suite d'internationalisation d'IBM
- StringL10n String localization tools for Go
Logging
- Adaptlog “Adaptive logging” 2016-02-02
- Aybabtme log wrapper pour Go-kit/log
- Andoine Grondin, Gophercon 2016: c'est son choix pour le structured logging
- BeeGo logs niveaux RFC5424
- Glog Google Log.
- Version Go de Google-glog
- Attention: source publié, mais PR non acceptées
- Go Debug “Conditional debug logging for Go libraries”.
- Expose le log de debug sur une socket UNIX
-
- Andoine Grondin, Gophercon 2016: “a bit too bare and opinionated, needs to be wrapped”
- Go Log multi-level + multi-handlers
- Log15 “an opinionated, simple toolkit for best-practice logging”.
- Async (buffered) output option.
- Andoine Grondin, Gophercon 2016: “too many features”
- Logberry inspiré par Logrus.
- Logging Tagged logging (comme des tags de cache)
- Logrus “Structured, pluggable logging for Go.”
- http://sergiotapia.me/simple-go-logging-using-logrus/ Mode d'emploi
- Andoine Grondin, Gophercon 2016: “too many features, has printf”, “used by Docker and Prometheus”
- Logur 2019-01-13 “opinionated logging library targeted at producing (application) logs”
- Loki 2019-02-24 “Logging backend optimized for Prometheus and Kubernetes, to search, visualize and explore your logs natively in Grafana”
- Slog “Structured logging for golang”
- Tracelog 4 niveaux seulement.
- Zap (Uber) “Blazing fast, structured, leveled logging in Go”
- OK Log Archived.
- Interesting design document at https://peter.bourgon.org/ok-log/
- Recommends converting to Loki
Rapports d'erreurs
- Juju Errgo aide à l'amélioration de la qualité des erreurs renvoyées
- Misc classe d'erreur étendue
- Humanlog “Read logs from stdin and prints them back to stdout, but prettier.”
Mobiles
-
- framework pour applications natives Go sur Android
- utilise la toolchain GoAndroid
REPL
Recherche
-
- Regex (hors Go core)
- PCRE
-
- https://github.com/mathpl/golang-pkg-pcre fork recommandé par ADG.
-
Réseau
- Clusters, programmation répartie
- ForestBus bus type Apache Kafka basé sur Raft
- Hadoop
- Gossamr exécuter des programmes Go sur Hadoop
- LDAP
- MAC address
- OUI accès à la base des préfixes MAC de l'IEEE
- Mail
- MQTT
- Packet sniffing
- Pub/Sub
- Queues
- NSQ queue en Go
- Go-NSQ le client officiel pour NSQ
-
- Beanstalk le client créé par l'auteur de Beanstalkd
- Cmdstalk broker de queues basé sur le client Beanstalk
- Go Beanstalk 2015-08: dernier commit en 2014
- Gostalk 2015-08: dernier commit en 2014
- Lentil bibliothèque et commande CLI pour Beanstalkd. 2015-08: dernier commit en 2012.
- RPC
- RSync/Zsync = copie de fichiers incrémentale
- SOAP + WSDL
- Go WSDL générateur WSDL → Go + proxy SOAP
- SSH
-
- DST un fork simplifié d'udt
- Go UDT pur Go. 2014-12: “far from finished”
- UTP pur Go
- Go UDT wrapper un wrapper pour udt
Sérialisation
- AR(1)
- BSON
- Vitess BSON utilisé par Youtube Vitess
- GoBSON utilisé par le pilote MongoDB MGO
- CBOR (RFC 7049)
- Codec (Ugorji) Also handles binc, json, msgpack, simple formats
- JSON
- Megajson sérialiseur JSON plus rapide que encoding/json
- TAR
- Go-Unpack extraction d'archives TAR. Pas de génération.
- CAE Tar, Zip… API dérivée des extensions PHP de compression
- XML
- Divers
- JarGo extraction des méta d'archives Java JAR.
- Multi-formats
Et un benchmark pour les comparer: https://github.com/alecthomas/go_serialization_benchmarks
Stockage
Documentation / Administration
- MongoSchema générateur de structures Go à partir d'une base MongoDB (Facebook)
- Model/Q générateur de structures Go à partir d'une base MySQL
- dbWeb genre phpmyadmin, pour MySQL/PostgreSQL/SQLite
Pilotes
- Cassandra
- Couchbase
- GoCB le pilote/SDK
- CouchDB
- DynamoDB
- Dynago with streams support
- LevelDB (voir aussi les moteurs pour des clones natifs):
- Levigo en lien dynamique
- MongoDB:
- MySQL:
- MySQL driver pour database/sql
- MySQL (Vaquita) pilote natif Go, sans dépendance sur la lib MySQL système
- MyMySQL pilote natif Go, sans dépendance sur la lib MySQL système.
- Mixer Proxy MySQL (réf: Atlas, Cobar, Vitess)
- Kingshard Proxy sharder MySQL
- Oracle
- PostgreSQL
- Redis
- RocksDB
- GoRocks basé sur Levigo.
- RRDtool = Round Robin Database pour les données temporelles à la Munin, Ganglia
- SQLite : en lien dynamique
- Test mocks
- Go SQL Mock mock de pilote SQL pour les tests
DB / Cache divers
- Cachetest test comparatif de packages de cache
- Dbq query builder (avec un bout d'ORM caché dedans)
- Gocraft DBR Fluent SQL API (Select().Where()…)
- Go Memcache client Memcached
- Goose migration tool
- Gotable base NoSQL basée sur RocksDB, inspirée par BigTable et Redis
- Groupcache alternative à Memcached
- Jet DB API
- Q SQL sur CSV/TSV
- SQLx extension du builtin database/sql
- Squirrel fluent query builder
"ORM"
- Astaxie
- BeeGo ORM. Notes pour 1.3.0:
- write-through : pas de séparation init/mapped/stale, pas d'interception de l'accès aux propriétés
- Modèle de MAJ:
obj.Foo = “bar”; obj.Update()
- Insertions bulk:
orm.InsertMulti(batchSize, sliceOfObjects)
- CLI utilitaire, dont génération du schéma
- MySQL, PGSQL, Oracle, SQLite3
- Les FK sont gérées dans l'ORM, pas transcrites dans le schéma physique
- Go Datamapper pour SQLite3
- inactif depuis 2009,
- malgré son nom, c'est un ActiveRecord, pas un DataMapper
- Go ModelDB pas un ORM complet
-
- D'après P. Lafoucrière: closest to ActiveRecord
- Auto-migrations: suit la modification des struct
-
- Modl fork de Gorp
- Hood database-agnostic (Pg/My)
- QBS Query By Struct, utilisé par ToroPress
- TableStruct : générateur de code de persistence pour entités plutôt qu'ORM traditionnel
- upper.io db ex GoSexy DB
- Xorm support de Gogs
Moteurs de stockage
- Badger
- Intro KV-store in Go, same API as RocksDB
- Bolt pas de Windows
- Cayley Moteur de graph database natif Go.
- Ivy flat-file DBMS, stockage JSON.
- LedisDB serveur de structures à la Redis: clef/valeur, list, hash, zset, bit
- LevelDB implémentations natives en Go, voire aussi les pilotes pour l'implémentation standard:
- LevelDB pas d'énumération
- QL
-
- is a “large-scale CRDT set implementation for timestamped events”, on top of Redis, by SoundCloud
- Introduction to Roshi on the SoundCloud blog
- Tiedot contraintes sur le format (struct↔map↔JSON)
Systèmes de fichiers
- Implémentations
- Utilitaires
- FS Notify notifications de système de fichiers cross-platform (dont mobiles)
Scripting
Embedding
Dans cette section, packages permettant l'inclusion de langages de scripting dans les binaires Go
- JavaScript
- Lisp / Scheme
- Lua
- Ruby
- RubyGoLightly portage expérimental de TinyRb sur la VM GoLighty
- Spécifiques à Go
Equivalence / interfaçage
- JavaScript
- GopherJS compile Go en JavaScript
- Go-angularJS Wrapper GopherJS pour AngularJS
- PHP
- Golib funcmap call_user_func(), $func()
- Go PHP Serialize serialize()/unserialize()
Structures de données
-
- Arbres B et B+
-
- Biogo Interval Arbres bicolores gauchers augmentés
- Biogo LLRB Arbres bicolores gauchers
- GoLLRB Arbres bicolores gauchers
- RB Tree Arbres bicolores, API “à la STL”
- Arbres KD (k-dimensional)
-
-
- UUID
- Go UUID 2015-07: dernier commit en 2013
- UUID (fgrid) RFC 4122 V1, V3, V4, V5
- UUID (pborman) (précédemment https://code.google.com/p/go-uuid/)
- Divers
- Decimal bibliothèque de précision arbitraire en point fixe pour le e-commerce et la comptabilité
- GODS (Go DataStructures) : HashSet, TreeSet, LinkedListStack, ArrayStack, HashMap, TreeMap, RedBlackTree, Comparator (function)
Annexes
Test / qualité
Test
- Fast Faker 2018-11 Faker
- Forest test d'API REST
- Ginkgo (Pivotal Labs)
- Factory Go fixtures de test à la mode Factory boy / Factory girl.
- Gocheck Fixtures, benchmarks, assertions verbosity. Elabore sur la base de go test
- Go JUnit report convertit la sortie de
go test
au format JUnit. - Go SQL Mock 2018-11 Mock de base SQL
- Gocheck Essai de Quickcheck en Go. Comparer avec le package standard testing/quick
- Go Convey behavioral testing dans le browser, basé sur “testing”
- Go Fuzz Fuzzing = “randomized testing for Go”
- 2015-04-28 recommandé par Bradfitz
- Go Specify RSpec pour Go
- Go SQL Mock Mocking pour “database/sql”
- HTTP Mock web services Mocking
- Mockery Génération de mocks à partir d'interfaces.
- Rest it REST Integration Tests
- Peroxide Aide au test de services réseau devant alternativement être disponibles ou non
- Tavor Fuzzing et delta-deboguage
- Testify assertions, mocks (compatible Mockery), suites, etc
- Looper Loop recompiling and running tests
- Reflex Loop on changes, for tests or other needs like live reload
Notes pour une suite de tests qualité pour tout code Go
- go vet
- go lint
- Local: go get github.com/golang/lint/golint
- Online: http://go-lint.appspot.com/<repo>
- Meta-linter: https://github.com/alecthomas/gometalinter
- errcheck (go get github.com/kisielk/errcheck)
- couverture de test:
- Local: go test -cover
- Online: http://gocover.io/<package repo>
- Badge: http://gocover.io/_badge/<package repo>
- Go test cover wrapper coverage pour multi-packages
Métriques
- Complexité cyclomatique
- McCabe Cyclomatic déconseillé par son auteur: agrége la complexité au-delà du niveau fonction
Monitoring
- Beego
- BeeGo NewRelic intégration NewRelic
- CLI
- ExpVarMon Surveillance plein écran des métriques applicatives exposées par
expvar
. Mono- ou multi-application
- Binaires
- Bin MAJ automatique des binaires Go sur une machine
- Divers
Tests de performance
- HTTPstress-Go CLI utility for stress testing of HTTP servers with many concurrent connections.
Text UI
- Termbox Go implémentation Go native de Termbox
- TermUI alphagraphiques
- TCell inspiré de Termbox, mais supposé bien plus évolué
- Liner inspiré de Linenoise: imitation Readline
Web
Formulaires
- GForms (bluele) (2015-07: dernier commit en 09/2014)
- GForms (vmihailenco) (2015-07: dernier commit en 07/2013)
- MonstiForm 07/2014: “still under development and unstable”
- Captcha Captchas image et audio.
- Fork 2015-03: génération de formulaires, début de développement
- Protection CSRF (XSRF)
- CSRF Banana pour Gorilla/sessions
- GXSRF Protection CSRF
- NoSurf Protection CSRF
Templates
- Damsel templates de type HAML
- Djinn nesting, caching and multiple loaders using the Go html/template library
-
- Remplace Gold qui avait le même objectif
- Goats HTML à la TAL
-
- portage du moteur “razor” d'ASP.net.
- Mandira post-Mustache: logique limitée, à la façon de Django Template
- NTemplate Go templates + nesting
- Pongo: moteur similaire à Django Templates.
- Tal TAL / Tales / METAL (Zope)
Frameworks
Comparaisons
Liste
- Beego inspiration Sinatra, MVS, REST, jolie doc
- Bones conçu comme un template d'application web à cloner et renommer
- Echo micro-framework avec routeur le plus rapide (2015)
- Falcore semble le plus rapide dans de multiples benchmarks
- Flotilla 1 seule dépendances: les templates Djinn
- Git Gonic “Martini-like, 40x faster”
- Gocraft Web uniquement routeur avec middleware
- Gohan orienté REST / microservices
- Go Kit a distributed programming toolkit for building microservices in large organizations.
- Gomelon inspiré par DropWizard. Principale particularité: instrumentation et healthchecks
- Goji Microframework
-
- Main Gondola site “The web framework for writing faster sites, faster”
-
- “the anti-magic framework”
- 10/6/14: plus d'activité depuis 8 mois
-
- très simple et pratique
- à éviter, même d'après son auteur: pas idiomatique Go
- Macaron inspiré de Martini, mais avec un routeur BeeGo. Middlewares résultant du développement de Gogs.
- Negroni 2ème génération après Martini, l'auteur ayant appris de ses erreurs
-
- semble le plus complet, bien documenté, à peine moins performant que Falcore.
- Pas d'ORM inclus.
- Reddit: pas idiomatique Go, trop de magie (DI, reflection)
-
- TigerTonic framework pour APIs, pas pour HTML
- Volatile “Versatile and minimalist web framework”, créé en 2015-07
- Xweb inspiré par Java Struts.
Frameworks WebAssembly / full stack
Clients d'API
- AWS
- Go AWS Auth signature de requêtes par rôles IAM
- GoAMZ l'original, entretenu par Canonical
- 2014-07-27: “ We're actively maintaining the launchpad project, and planning to move it to github. We're adding signature v4 support currently. I talked to Gustavo Niemeyer, the original author, and he said he's considering rewriting it to be more extensible, to avoid the problem of so many forks that we have now. I don't have a timeline on when that will be done, though.”
- GoAMZ un fork
- GoAMZ (Crowdmob) le plus actif
- Stripe AWS Go par Stripe
- Banque Centrale Européenne
- ECB Rates taux de change interbancaires
- Github
- GO Github par Google
- https://willnorris.com/2013/08/testing-in-go-github : Article sur les tests
- https://willnorris.com/2014/05/go-rest-apis-and-pointers: Article sur la structure de données
- GH web hooks Github, en code ou en templates Go
- Google
- GCloud Golang “Google Cloud for Go” officiel
- Go-ogle Analytics envoi de données à Google Analytics
- (Apache) Kafka
- OpenStreetMap
- Gonominatim API de géocodage d'OSM
- Twilio
- Twitter
Divers
- Aléa
- Crazy générateur de séquences pseudo-aléatoires
- Auth, Passwords
- OTP 2-factor auth et One-Time Passwords
- Go OTP - HOTP (RFC-4226), TOTP (RFC-6238) and Base32 encoding (RFC-3548) pour la compatibilité Google authenticator
- Authboss authentifieur générique, comme Passport pour Rails.
- Garbler générateur de mots de passe prononçables
- Password vérificateur de mots de passe par dictionnaire
- Binding liaison de données entre struct et données de net/http
- Date/Time
- strftime formatage compatible C strftime au lieu de time.Format()
- Générateurs
- Go Bootstrap générateur de squelettes d'applis Web juste sur core, sans ORM, avec PGSQL.
- Go-IDN Bootstring, IDN, Punycode. 2014-12: presque complet, mais abandonné.
- Go Mobile Detect détection des browsers de mobiles
- GO REST Expander filtrage et expansion des résultats d'API REST
- GraphQL
- gqlgen 2018-12: la page de projet compare avec gophers, graphql-go et thunder. 52 devs
- graphql-go 2018-12: 35 devs, “under heavy development”
- graphql 2018-12: 60 devs
- thunder 2018-12: 17 devs
- gq 2018-12: 1 dev, lancé le 03/12/18.
- WC serveur pour la Closure Library
- Reverse Proxy
- Chameleon Reverse proxy, enregistreur
- Go ICAP bilbiothèque ICAP pour proxies
- Redwood filter reverse proxy filtre de contenu (ICAP)
- WebFront Reverse proxy et serveur statique, pour éviter d'avoir à déployer (et configurer) Varnish ou Nginx devant ses applications.
- Clients HTTP améliorés
- Colly framework pour crawlers web
- Go Request Inspiré de Node.JS SuperAgent.
- Naping inspiré de Python-Requests
- GoQuery jQuery pour Go
- Clients spécialisés
- Easyreq générateur de corps de requête HTTP multipart form
- Middlewares
- Alice chaînage de middlewares
- HTTP Auth HTTP Basic Auth middleware
- HTTP Cache cache de réponses HTTP 1.1
- Interpose indépendant du framework, interface basée sur Handler uniquement
- Routeur seul
- Sécurité
- OAuth2 : refonte officielle du package OAuth du runtime Go.
- Websocket et alii
- engine.io for golang long poll + websocket
- Go Long Poll long polling library
go/packages.txt · Last modified: 2023/05/17 07:48 by fgm