Posts filed under 'Go'

La cohésion interne chez Google

Quand une boite devient un peu grosse, il peut arriver qu'elle choppe des tendance schizophréniques. Par exemple, si on fouille bien dans le code source de Go, on trouve ça :

C:
  1. // Is it a broken browser?
  2.     var msg string;
  3.     switch agent := req.UserAgent; {
  4.     case strings.Index(agent, "MSIE")>= 0:
  5.         msg = "Internet Explorer"
  6.     case strings.Index(agent, "Chrome/")>= 0:
  7.         msg = "Chrome"
  8.     default:
  9.         return
  10.     }

J'aime bien le principe d'un produit "Google" (le Go n'a pas l'air si Google que ça) qui en insulte un autre :)

(pour info, on trouve ça dans le fichier $GOROOT/src/pkg/http/server.go, vous aurez l'explication complète de pourquoi Chrome se fait traiter de broken en commentaire de la fonction :) )

2 comments November 17th, 2009

Go : un serveur TCP

Dans la catégorie je fais mumuse avec Go : je fais un serveur TCP qui répond invariablement "Hello, World !" à tous les clients qui se connectent.

C:
  1. package main
  2.  
  3. import (
  4.     "fmt";
  5.     "net";
  6.     "strings";
  7. );
  8.  
  9. func handler(c *net.TCPConn) {
  10.     c.Write(strings.Bytes("Hello, World !\n"));
  11.     c.Close();
  12. }
  13.  
  14. func main() {
  15.     addr, err := net.ResolveTCPAddr("127.0.0.1:5896");
  16.     l, err := net.ListenTCP("tcp4", addr);
  17.  
  18.     if l == nil {
  19.         fmt.Println("Could not listen : ", err);
  20.     }
  21.  
  22.     for {
  23.         a, err := l.AcceptTCP();
  24.         if a == nil {
  25.             fmt.Println("Could not accept : ", err);
  26.         }
  27.         go handler(a);
  28.     }
  29. }

Add comment November 15th, 2009

Go : VIM et Makefile

Me voici en train de faire mumuse avec le Go, nouveau langage fraîchement annoncé par Google (j'sais pas si le projet est bien porté à cœur par Google même quand on voit la tronche de leurs t-shirts et de leur site, sans compter l'annonce lors d'un simple tech talk). Même si leur mascotte ressemble largement trop à Glenda, j'ai donc quand même décidé de leur porter un peu d'attention. Dans ce but, j'ai suivi leur tuto d'installation, mais pour le compléter j'ai écris un Makefile pour compiler un seul fichier (la flemme de faire la compilation "à la main") :

CODE:
  1. GOARCHPREF=6
  2. GOCOMPILE=$(GOARCHPREF)g
  3. GOLINK=$(GOARCHPREF)l
  4.  
  5. %: %.$(GOARCHPREF)
  6.     $(GOLINK) -o $@ $<
  7.  
  8. %.$(GOARCHPREF): %.go
  9.     $(GOCOMPILE) $<

Mettons que je veuille compiler truc.go :

CODE:
  1. make truc

On récupère à la sortie un fichier truc exécutable.

Ça c'est le Makefile pour amd64. Si vous êtes sous x86, mettez le GOARCHPREF à 8, et si vous êtes sous ARM mettez le à 5.

Ah et j'oubliez, comment coder sans coloration syntaxique dans Vim ? Ils sont gentil, ils donnent les règles de coloration syntaxique pour Vim (et d'autres éditeurs sans importance) dans le répertoire $GOROOT/misc/vim. Pour l'installer, il faut le copier (au moins sous Debian) dans /usr/share/vim/vim72/syntax/, puis ajouter la ligne

CODE:
  1. au BufNewFile,BufRead *.go setf go

Au fichier /usr/share/vim/vim72/filetype.vim

Et ça sera tout pour aujourd'hui :) Moi j'men vais coder un serveur quelconque en Go :)

EDIT : ouais non définitivement, ce projet Google s'en tape en fait. Par exemple, le site du langage ne parle nulle part de "Google"...

4 comments November 12th, 2009


Calendar

September 2010
M T W T F S S
« Jun    
 12345
6789101112
13141516171819
20212223242526
27282930  

Posts by Month

Posts by Category

Wikipedia Affiliate Button