unix4fun

Aller au contenu | Aller au menu | Aller à la recherche

lundi 12 avril 2010

C'est dans les vieux pots...

Suite à la mise à disponibilité de RE2, je suis tombé sur un article de Russ Cox qui explique en quoi l'algorithme de matching de Ken Thompson (Thompson NFA, pour Non Deterministic Algorithm) poutrait grave sa mère pour la reconnaissance de certaines grammaires (face à PCRE ou Perl), avec moins de 500 lignes de C. C'est intéressant. On a même droit à une implémentation (assez basique) en C. Yummy.

o l'article

vendredi 29 janvier 2010

mechante deadlock! vilaine! booouuu mechante! a la niche!

Un projet marrant et que je trouve super drole, j'ai a peine commence a lire et j ai pas poste depuis des lustres, allez hop c'est la fete :)

Un projet pour "eviter" les deadlock sans avoir a recompiler quoique ce soit, vais tester ca gentillement ce soir!

Le project:

Le paper:

Le code:

samedi 21 mars 2009

ruby, marrant ruby!

Apres m'etre instruit du post precedent, merci poz!

Voici un link super interessant d'un mec de chez yahoo qui s'est amuse a ecrire un petit moteur d'indexation ( je suis pas sur du mot, c'est ptet mon neologisme du jour) avec un web et un "crawler" aka "moteur de recherche".

Il a ecrit ca en ruby, en 200 lignes (wai il utilise des libs etc...) et il a tout documente proprement sur son blog, c'est interessant a lire.

le blog du monsieur

have fun!

samedi 21 février 2009

Il etait une fois BGP... et BGP c'est drole!

Une histoire que j ai trouve interessante (subjectif) meme si elle est n'est pas "neuve", le cas est marrant a lire et a comprendre.

L'annonce BGP de Pakistan Telecom qui a annonce un subnet plus specifique de youtube en Fevrier 2008 sur une bonne partie de l' internet poilu avec des choses marrantes a comprendre comme:

comment hijacker proprement pour que (par exemple) Pakistan Telecom puisse rerouter correctement vers youtube si necessaire en evitant que son "path" vers youtube soit pollue par ses annonces illegitimes.

Update!!
un paper qui fourni des infos completes, merci au monsieur anonyme qui a laisse le commentaire
/Update!!

have fun! :)

mardi 13 janvier 2009

C'est dans les vieux pots...

Bon, pour le boulot, je dois coder pas mal de trucs relatifs aux réseaux. Et c'est suite à mes pérégrinations sur le web que je suis tombé sur ce lien. Un vieuuuux lien, de plus de 10 ans d'âge, mais mis à jour, et très intéressant. Il parle notamment des mesures de la qualité d'un réseau, des méthodes à employer, et renvoie vers plein d'autres documentations. Je me régale, personnellement.

Je mets le tag "code", parce que ça file plein d'idées de trucs à coder :-)

Youpla, c'est par ici

lundi 22 décembre 2008

ma machine d'etat a moi!

Bon ca fait genre le 3eme rewrite de mon bout de code, et c'est toujours PAS "comme-je-voudrais" (tm), grmlgmrlmgrl alors j'ai demande qqes conseils a gauche a droite et j'ai fait qqes google.

Comme j'imagine qu'il y a d'autres incompetents/boulets/ignorants dans mon genre, je leur propose les liens suivants pour matter:

bonne lecture!

mardi 2 décembre 2008

Quand on est stupide comme moi...

Je cherchais a comprendre des choses, jusque la rien de surprenant, j'ai commence a matter comment je pourrais differencier certains pattern d'autres, au sein d'un meme fichier.

C'est un probleme "classique", je sais!, vous avez une reponse, j'imagine bien (au pire commentez), mais comme je suis un peu stupide, j'essaye de comprendre.

Alors en posant la question autour de moi, une des reponses m'a intrigue, c'est: "mesure l'entropie!"

Wai alors pour la definition, je dois vous avouer, apres qqes debats et discussions sur la definition de l'entropie, il y en a qqes unes, voir meme pleins, ca depend des donnees a analyser, de la taille de la lune, de la couleur de la farine apres une journee au soleil, etc.. bref (allez voir wikipedia, theorie de l'information blablabla)...

Mais surtout aujourd'hui on m'a parle d'un outil "stan" qui semblerait pourrait donner l'illustration d'une (parmis d'autres) reponse a mes questions, alors je matte et je fais un test tout bete :

$ ./stan -b test.txt.gz
General statistics for the stream, bytes 75
   Arithmetic mean:       101.786667  ~  0x65(e)
   Median:                115.000000  ~  0x73(s)
   Deviation:              69.466979  ~  0x45(E)
   Chi-Square test:       520.023529
   Entropy per byte:        5.241939
   Correlation co.:         0.390945
[...]

VS

$ ./stan -b testrnd
General statistics for the stream, bytes 75
   Arithmetic mean:       113.720000  ~  0x71(q)
   Median:                106.000000  ~  0x6a(j)
   Deviation:              74.741610  ~  0x4a(J)
   Chi-Square test:       205.423529
   Entropy per byte:        5.925420
   Correlation co.:        -0.148000
[...]

Et on observe qqes "debut" de difference... c'est marrant, maintenant faut essayer de comprendre... quand on est stupide comme moi...

$ vim stan.c bits.c pattern.c stats.c
[...]

vendredi 17 octobre 2008

Détection rapide de protocole layer7

Alors dans le cadre de mon job je suis tombé sur un article qui m'intéresse. Peut-être que ça sera le cas pour toi aussi, ami lecteur. La problématique est la suivante : sur des gros liens (Gbps typiquement), comment reconnaître les applications utilisées ? Ça peut être pour un admin, qui cherche à identifier les flux qui circulent sur son réseau, ou autre.

La technique "de base" consiste à inspecter les payloads à la recherche d'une signature applicative (à la snort, ou qosmos en propriétaire et plus exhaustif). Le "hic", c'est que sur des liens chargés, ça rame sa mère. Ou alors faut se payer la super solution corporate pouic pouic de Qosmos à 50KEUR, avec une bécane de 32 procs, des cartes DAG (Endace) d'acquisition et tout le bousin.

Mais nous, chez Unix4fun, on est pauvres, et on pense à la plèble, alors on écarte cette solution. Durant ma visite du Web je suis donc tombé sur un article pas mal, qui explique comment en 4 ou 5 paquets TCP (hors établissement de la connexion, SYN, SYN/ACK, ACK), on peut taguer un flux comme étant telle ou telle application, avec un taux d'erreur acceptable (de l'ordre de 5%). L'idée est évidemment d'utiliser des mécanismes d'apprentissage statistique (chaînes de Markov, etc) ; mais avec ça on n'est pas avancé, le problème étant de mesurer et d'apprendre sur les bonnes métriques. Ici, on s'inquiète uniquement de la taille des payloads, et du "sens" du paquet (client -> serveur, ou serveur -> client), qui est un facteur discriminant supplémentaire, et indépendant du contexte (type de réseau, type d'appli, besoin de performance, etc).

Bref, c'est ma pause déjeuner au bureau, je vais pas m'attarder.

L'article Early Application Identification

La thèse sur le sujet (même auteur principal) : Classification temps réel d'applications sur l'Internet. Elle se lit vite, et la dernière partie est en français, pour madame Michu, mais sans les formules et un peu allégée.