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

Chaîne aléatoire en PHP

Ça sert toujours, une fonction pour générer une chaîne aléatoire :

PHP:
  1. function randStr($len, $alphabet = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ") {
  2.     $as = strlen($alphabet) - 1;
  3.     $str = "";
  4.  
  5.     for($i = 0; $i <$len; $i++) {
  6.         $str .= $alphabet[rand(0, $as)];
  7.     }
  8.  
  9.     return $str;
  10. }

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

Compiler Aegisub sous Debian (et Ubuntu ?)

Voulant faire du sous titre en ASS, le meilleur logiciel que j'ai pu trouver dans ce but est "Aegisub". Il a pas mal de fonctions, par contre pour le compiler c'est un peu la misère totale.

Sous Debian Sid, j'ai réussi avec la méthode que je vais détailler plus loin, mais c'est pas garanti que ça fonctionne avec toutes les cartes graphiques... Sous Ubuntu, ça devrait être à peu près pareil aussi.

Trève de bavardage, une fois les sources téléchargées (je vous laisse vous amuser à les trouver...), il faut se rendre dans le dossier, puis taper les commandes :

CODE:
  1. sudo aptitude install build-essential libglu1-mesa-dev libfreetype6-dev libfontconfig1-dev libwxgtk2.8-dev libwxbase2.8-dev intltool libhunspell-dev libopenal-dev libasound2-dev libavcodec-dev libavformat-dev libswscale-dev libavutil-dev libpostproc-dev liblua5.1-0-dev libxext-dev
  2. LUA_CFLAGS=-I/usr/include/lua5.1 LUA_LDFLAGS=-llua5.1 ./configure
  3. make -j3
  4. sudo make install

Je garanti pas du tout que ça fonctionne, mais au moins y'a de bonnes pistes (par exemple, pour savoir comment avoir le support de Lua...)

Note : les dernières versions de Aegisub semblent demander WX Widget 2.9, et ce n'est toujours pas packagé dans Debian. Personellement je n'ai pas encore la force mentale pour arriver à compiler cette horreur, donc j'vais rester sur ma vieille revision tant pis...

Add comment September 23rd, 2009

Smplayer & VDPAU

Tout content avec mon nouveau PC, j'ai pu tester VDPAU sous Debian (mon mplayer vient de debian multimedia). Par défaut, le support est compilé (dans sid), par contre il y a quelques options à régler dans smplayer avant que ça fonctionne.

Déjà, il faut choisir la sortie video "vdpau", choisir le bon codec pour le fichier dans les infos et propriétés (par exemple ffh264vdpau au lieu de ffh264).

Ensuite, il faut éviter les options pas compatibles. Par exemple les screenshots (pour les désactiver, faire pointer le répertoire de screenshot vers un répertoire qui n'existe pas), ou le postprocessing.

Happy HD

Add comment September 22nd, 2009

Dual screen et xrandr

J'oublie toujours la commande, alors la voici.

xrandr --output VGA --auto --left-of LVDS

À noter que LVDS c'est l'écran de mon PC portable, et VGA c'est l'écran que j'ai à gauche du PC portable. Si vous voulez faire un truc plus compliqué ou différent, RTFM :P

Add comment September 17th, 2009

Ma vie sans Google : les Web Analytics

Quand on créé un site Internet, il est souvent souhaitable (et souhaité) de pouvoir comptabiliser les visiteurs, savoir d'où ils viennent, comment ils sont venu, quel est leur OS, etc...

Historiquement, les gens mettaient un compteur de visites sur leur page perso, pour frimer en montrant le nombre de visiteurs qu'ils avaient eu. On a vu plus détaillé :) . Les premiers vrais outils à faire ça étaient des analyseurs de logs (webalizer, awstats et ses copains). Il faut admettre, c'est pas ce qu'il y a de plus follichon comme interface (quoi que le copain à Awstats, Jawstats, commence à être pas trop pire), et on manque de plein d'informations (les résolutions de l'écran, quels plugins sont installés, etc).

Après on a eu pas mal de trucs en PHP (ou autre...) à qualité variable pour avoir des statistiques de son site, ainsi que certains sites comme At Internet (anciennemnet Xiti), qui permettaient d'avoir des statistiques plus ou moins détaillées en fonction de combien on payait.

Pendant un moment j'ai utilisé PhpMyVisites, qui était déjà pas mal, mais très lourd (pour calculer les stats sur le mois par exemple...). Après, Google a racheté un de ces fameux sites payants pour avoir des stats (Urchin), et l'a transformé en "Google Analytics". C'est là que pas mal de choses ont changé : il faut l'avouer encore une fois, le service rendu par Google est excellent.

Mais comme je n'aime pas du tout l'idée de placer un œil de Google sur mon blog, j'ai cherché une autre solution. Ayant touché à Analytics, je n'étais pas très chaud à l'idée de repasser à PhpMyVisites. J'ai donc commencé par installer Xiti (vous voyez d'ailleurs toujours le logo). Les stats ne sont pas mauvaises, l'interface est pas mal, mais si on veut des données, il faut payer. Et puis quelquepart, on sent l'inertie d'un outil ancien qui fait un peu "old school". Bref, j'suis pas fan. C'est là que, retournant vers PhpMyVisites, j'ai fini par tomber sur le nouveau projet de ses developpeurs : Piwik. Objectif clair et net : cloner Google Analytics. Du côté innovation, on reverra la copie (quoi qu'il y a quand même des plus dans l'interface), par contre du côté fonctionnalités, c'est pas Google Analytics, mais ça y ressemble beaucoup, et la plupart des webmasters y trouveront ce qu'ils cherchent.

Même si pendant un moment, Google Analytics s'est imposé comme une solution quasi incontournable si on avait un budget limité ou inexistant, cependant maintenant des solutions alternatives de poids (Piwik) émmergent. On peut donc faire des web analytics sans Google :) .

Add comment September 15th, 2009

Ma vie sans Google : les mails

Voici donc le premier article d'une série d'articles (enfin si j'ai le courage de tout écrire) qui explique comment je peux vivre sans Google (oui il y a encore des gens qui y arrivent !). Aujourd'hui, nous parlerons donc des emails.

Petit historique : nous sommes en 2004, les fournisseurs d'adresses mail proposent des stockages de 10 Mo par personnes... J'étais heureux d'avoir trouvé Yahoo Mail, qui donnait à ses utilisateurs 100 Mo de stockage. Puis, arrive le premier avril, et là Google a une idée tout à fait originale : annoncer un service de mails avec 1 Go de stockage et une interface révolutionnaire. Haha la bonne blague... Ah tiens mais en fait, c'est pour de vrai ? O_o

Depuis, le reste des services s'est quand même amélioré... Déjà, on va commencer par l'interface : elle est géniale certes, mais d'un autre côté ils ont aussi complètement fait sauter la notion de hiérarchie, que ça soit pour les dossiers ou pour les réponses aux mails. Du coup, c'est tout plat et tout joli, mais c'est tout en bordel. Et à cause de cette interface justement, quand on cherche un nouveau service de mails, on fait très rapidement la gueule face aux webmails de qualité plutôt moyenne (sous entendu : comparé à Gmail). Mais on oublie une chose : les clients lourds. Comme Kmail par exemple. Eux, ils gèrent la hiérarchie des dossiers, des filtres, des recherches enregistrées, l'intégration à l'agenda, les signatures GPG, la lecture des messages hors ligne (oui je sais, y'a Gears) et tout ce genre de gadgets que Google a du trouver inutile...

Partant de ce constat, j'ai utilisé une adresse mail qui m'était offerte avec mon nom de domaine acheté chez Gandi. Ils fournissent un serveur POP3 et/ou IMAP correct, avec en prime un webmail tout à fait convenable pour dépanner. Je suis donc sans aucun problèmes retourné à un client lourd, qui en fin de compte s'avère quand même largement plus léger que Gmail, et qui offre plus de fonctions. Après tout, il ne faut pas oublier que depuis qu'on a quité notre client lourd pour rejoindre Gmail, le developpement de tels clients n'a pas été arrêté pour autant :) .

Si vous aussi voulez ce genre de services, il n'y a pas que ce type de solutions payantes qui soient possibles (c'est gratuit avec un domaine, faut-il encore avoir un domaine...). Si ma mémoire est bonne, Yahoo Mail et ses copains offrent maintenant des stockages illimités ou ce genre de joyeusetées. Personellement, je n'ai pas été tester ces solutions là, libre à vous de vous amuser avec !

Il faut en revanche avouer que certains aspects de Gmail me manquent, comme par exemple le fait de pouvoir consulter ses mails de n'importe où. Avec un serveur en IMAP, cela reste possible, mais sans un webmail correct (comprendre : aussi bon que Gmail), l'expérience est vite décevante...

Il y a donc des avantages et des inconveignants dans les deux camps... Il serait difficile de savoir si la vie est mieux avec ou sans Gmail, par contre je peux affirmer que sans Gmail la vie est tout à fait... vivable :)

2 comments September 8th, 2009

Mes flux RSS

Comme le Web 2.0 est un magnifique moteur social où on aime tout mettre en commun, j'ai créé un flux RSS qui sert à contenir les articles que j'aime bien dans d'autres flux RSS...

Ici : http://hyperthese.net/ttrss/backend.php?op=publ...

2 comments September 5th, 2009

Next Posts Previous Posts


Categories

Links

Feeds

Wikipedia Affiliate Button