Grande Surface Man

Oui, je sais, il faut pas grand chose pour m'amuser.

En ce moment je suis un peu charrette, et comme j'aime pas paralléliser mon boulot, c'est ce blog qui trinque.
Mes projets en cours ?
Et là vous vous demandez : "le rapport au titre de ce billet ?", et vous avez raison.
Ça m'apprendra à commencer à écrire un billet par le titre :)
Donc, les bons sites de blagues informatiques qui envoient régulièrement des petites perles dans mon reader et que je vous recommande chaudement :
Ah et tous ces sites proposent la petite graine rss qui va bien. Ce qui te permet quelques bons lols en un clic sur ton dossier "détente" de ton lecteur rss.
Bonus de fin de billet : ma dernière compo électro. Inutile de vous préciser que c'est plutôt dancefloor donc taillé pour être écouté fort !
Vu à l'instant, cette publicité somme toute banale. Mais il y a un détail terriblement foiré, le trouverez-vous ?

5687: END IF; -- You can now hang yourself here. 5688: END LOOP; -- | 5689: END IF; -- | 5690: END IF; -- O 5691: END IF; -- /|\ 5692: END LOOP; -- / \ 5693: END IF; 5694: END IF; 5695:END;
Source : Je sais plus trop comment je suis arrivé sur ce petit blog de 10 billets, dernière mise à jour : avril 2008... mais certains articles m'ont beaucoup parlé, notamment celui-ci dont je vous livre les morceaux choisis et traduits.
Alors celle-là !
Conversation avec ma chère et tendre compagne, prise soudainement d'une saine curiosité envers mon métier :
"Benoît, c'est quoi un système d'exploitation ?"
"C'est une sorte de très gros programme qui te permet d'utiliser facilement ton ordinateur : il gère tes fichiers, les périphériques que tu raccordes... et surtout, c'est lui qui exécute les programmes que tu utilises. Windows, c'est un système d'exploitation. Il y en a d'autres, comme Linux, Mac, etc."
"Et c'est quoi un language de programmation ?"
"C'est ce qui permet de décrire le fonctionnement des programmes que tu utilises. Sans ces langages, on serait obligé d'écrire chaque programme en langue machine, avec des 0 et des 1, ce serait trop compliqué. Windows, qui est aussi un programme, est écrit en C."
"Oui ça je le savais."
"Ha bon ?! oO Je peux savoir comment ?"
"Sur mon ancien PC, quand je le démarrais, ça affichait C:"
"..."
La réponse à Hadopi ne s'est pas fait attendre !
Pour télécharger sans crainte d'être tracé par les forces du mal, je vous recommande cet excellent Routeur anti-hadopi :

Bon, ok... c'est un fake, mais d'excellent goût.
Présenté il y a quelques temps comme un Google-killer, le moteur de recherche Wolfram est maintenant accessible en version alpha. C'est un truc de dingue, mais vraiment.
Contrairement à Google, Wolfram ne présente pas de liste de pages web correspondant à notre requête... Wolfram nous calcule la réponse à notre requête !
C'est très impressionnant. Pour réaliser cela, ils ont réunis et structurés plus de 10 milliard de données brutes en tous genres, créés 50 000 modèles et algorithmes pour plus de 1000 domaines de connaissance : maths et physique, bien sûr, mais aussi la culture, l'histoire, la science de la vie, chimie, sport, musique... Et pour faire tourner tout ça, des fermes de superordinateurs qui font tourner un noyau de 5 millions de lignes de code Mathematica.
Le résultat ? Hé bien, vous pouvez lui demander, en language courant, le temps que vous prendrait une chûte de 1km (16,8 secondes !), quand est-ce que la musique "Like a Rolling Stone" est sortie, de comparer la population féminine et masculine au Japon, le volume sonore perçu par un humain d'un son de 60 dB à 110Hz... et même l'âge de Madonna, hé oui. (Attention hein, je suis pas fan du tout :)
Tout est possible ! Je suis sûr que si ce moteur s'étoffe avec encore plus de données, il deviendra bientôt un incontournable du web.
Complétement dingue. Allez voir les exemples, vous n'en reviendrez pas.
PS : Ca m'a permi aussi d'apprendre que le Wolfram et le Tungstène, c'est pareil.
PS 2 : rhô, il y a même un whois de domaine !
Chaque année à lieu le Concours International du Code C Obscur - The International Obfuscated C Code Contest. L'objectif ?
Inutile de précisier qu'ils ont un humour qui fait mouche chez moi...
Voici quelques morceaux choisis. Oui, ça compile, et oui, ces programmes remplissent une fonction !
This program takes a single command line argument, transcribes the argument text into Tolkien's Elvish letters, and writes the transcription to standard output as a portable graymap (PGM) file.
#include\
#include
#include
#define w "Hk~HdA=Jk|Jk~LSyL[{M[wMcxNksNss:"
#define r"Ht@H|@=HdJHtJHdYHtY:HtFHtF=JDBIl"\
"DJTEJDFIlMIlM:HdMHdM=I|KIlMJTOJDOIlWITY:8Y"
#define S"IT@I\\@=HdHHtGH|KILJJDIJDH:H|KID"\
"K=HdQHtPH|TIDRJDRJDQ:JC?JK?=JDRJLRI|UItU:8T"
#define _(i,j)L[i=2*T[j,O[i=O[j-R[j,T[i=2*\
R[j-5*T[j+4*O[j-L[j,R[i=3*T[j-R[j-3*O[j+L[j,
#define t"IS?I\\@=HdGHtGIDJILIJDIItHJTFJDF:8J"
#define y yy(4),yy(5), yy(6),yy(7)
#define yy( i)R[i]=T[i],T[i ] =O[i],O[i]=L [i]
#define Y _(0 ], 4] )_ (1 ], 5] )_ (2 ], 6] )_ (3 ], 7] )_=1
#define v(i)( (( R[ i ] * _ + T [ i ]) * _ + O [ i ]) * _ + L [ i ]) *2
double b = 32 ,l ,k ,o ,B ,_ ; int Q , s , V , R [8 ], T[ 8] ,O [8 ], L[ 8] ;
#define q( Q,R ) R= *X ++ % 64 *8 ,R |= *X /8 &7 ,Q=*X++%8,Q=Q*64+*X++%64-256,
# define p "G\\QG\\P=GLPGTPGdMGdNGtOGlOG" "dSGdRGDPGLPG\\LG\\LHtGHtH:"
# define W "Hs?H{?=HdGH|FI\\II\\GJlHJ" "lFL\\DLTCMlAM\\@Ns}Nk|:8G"
# define U "EDGEDH=EtCElDH{~H|AJk}" "Jk?LSzL[|M[wMcxNksNst:"
# define u "Hs?H|@=HdFHtEI" "\\HI\\FJLHJTD:8H"
char * x ,*X , ( * i )[ 640],z[3]="4_",
*Z = "4,8O4.8O4G" r U "4M"u S"4R"u t"4S8CHdDH|E=HtAIDAIt@IlAJTCJDCIlKI\\K:8K"U
"4TDdWDdW=D\\UD\\VF\\FFdHGtCGtEIDBIDDIlBIdDJT@JLC:8D"t"4UGDNG\\L=GDJGLKHL\
FHLGHtEHtE:"p"4ZFDTFLT=G|EGlHITBH|DIlDIdE:HtMH|M=JDBJLDKLAKDALDFKtFKdMK\
\\LJTOJ\\NJTMJTM:8M4aGtFGlG=G|HG|H:G\\IG\\J=G|IG|I:GdKGlL=G|JG|J:4b"W
S"4d"W t t"4g"r w"4iGlIGlK=G|JG|J:4kHl@Ht@=HdDHtCHdPH|P:HdDHdD=It\
BIlDJTEJDFIdNI\\N:8N"w"4lID@IL@=HlIH|FHlPH|NHt^H|^:H|MH|N=J\\D\
J\\GK\\OKTOKDXJtXItZI|YIlWI|V:8^4mHLGH\\G=HLVH\\V:4n" u t t
"4p"W"IT@I\\@=HdHHtGIDKILIJLGJLG:JK?JK?=JDGJLGI|MJDL:8M4\
rHt@H|@=HtDH|BJdLJTH:ITEI\\E=ILPILNNtCNlB:8N4t"W t"4u"
p"4zI[?Il@=HlHH|HIDLILIJDII|HKDAJ|A:JtCJtC=JdLJtJL\
THLdFNk|Nc|\
:8K"; main (
int C,char** A) {for(x=A[1],i=calloc(strlen(x)+2,163840);
C-1;C<3?Q=_= 0,(z[1]=*x++)?((*x++==104?z[1]^=32:--x), X =
strstr(Z,z)) &&(X+=C++):(printf("P2 %d 320 4 ",V=b/2+32),
V*=2,s=Q=0,C =4):C<4?Q-->0?i[(int)((l+=o)+b)][(int)(k+=B)
]=1:_?_-=.5/ 256,o=(v(2)-(l=v(0)))/(Q=16),B=(v(3)-(k=v(1)
))/Q:*X>60?y ,q(L[4],L[5])q(L[6],L[7])*X-61||(++X,y,y,y),
Y:*X>57?++X, y,Y:*X >54?++X,b+=*X++%64*4:--C:printf("%d "
,i[Q][s]+i[Q ][s+1]+i[Q+1][s]+i[Q+1][s+1])&&(Q+=2)
This program accepts ASCII formatted mazes as input, and renders them onscreen for the user to explore, complete with Line Of Sight - you cannot see parts of the maze your avatar could not have seen.
#include /*****************************************************/
int m[256 ] [ 256 ],a
,b ;;; ;;; WINDOW*w; char*l="" "\176qxl" "q" "q" "k" "w\
xm" "x" "t" "j" "v" "u" "n" ,Q[
]= "Z" "pt!ftd`" "qdc!`eu" "dq!$c!nnwf"/** *** */"t\040\t";c(
int u , int v){ v?m [u] [v-
1] |=2,m[u][v-1] & 48?W][v-1 ] & 15]]):0:0;u?m[u -1][v]|=1 ,m[
u- 1][ v]& 48? W-1 ][v ]&
15] ]):0:0;v< 255 ?m[ u][v+1]|=8,m[u][v+1]& 48? W][ v+1]&15]]
):0 :0; u < 255 ?m[ u+1 ][v ]|=
4,m[u+1][ v]&48?W+1][v]&15]]):0:0;W][ v]& 15] ]);}cu(char*q){ return
*q ?cu (q+ 1)& 1?q [0] ++:
q[0 ]-- :1; }d( int u , int/**/v, int/**/x, int y){ int
Y=y -v, X=x -u; int S,s ;Y< 0?Y =-Y ,s,
s=- 1:( s=1);X<0?X=-X,S =-1 :(S= 1); Y<<= 1;X<<=1; if(X>Y){
int f=Y -(X >>1 );; while(u!= x){
f>= 0?v+=s,f-=X:0;u +=S ;f+= Y;m[u][v]|=32;mvwaddch(w,v ,u, m[u
][ v]& 64? 60: 46) ;if (m[ u][
v]&16){c(u,v);; ;;; ;;; return;}} }else{int f=X -(Y>>1);; while
(v !=y ){f >=0 ?u +=S, f-= Y:0
;v +=s ;f+=X;m[u][v]|= 32;mvwaddch(w,v ,u,m[u][v]&64?60:46);if(m[u
][ v]& 16) {c( u,v );
; return;;;}}}}Z( int/**/a, int b){ }e( int/**/y,int/**/ x){
int i ; for (i= a;i <=a
+S;i++)d(y,x,i,b),d(y,x,i,b+L);for(i=b;i<=b+L;i++)d(y,x,a,i),d(y,x,a+ S,i
); ;;; ;;; ;;; ;;; ;
mvwaddch(w,x,y,64); ;;; ;;; ;;; prefresh( w,b,a,0,0 ,L- 1,S-1
);} main( int V , char *C[
] ){FILE*f= fopen(V==1?"arachnid.c"/**/ :C[ 1],"r");int/**/x,y,c,
v=0 ;;; initscr (); Z(Z (raw
() ,Z( curs_set(0),Z(1 ,noecho()))),keypad( stdscr,TRUE));w =newpad
( 300, 300 ) ; for (x= 255 ; x >=0 ;x--
) for (y= 255 ;y>=0;y-- )m[ x][ y]= 0;x=y=0;refresh( );while
( (c= fgetc (f) )+1) {if(
0||c==10|| x== 256){x=0;y++;if(y==256 )break;;} else{m[x][y]=(c ==
'~' ?64 : c ==32 ?0: 16) ;;x ++;
}}for(x=0 ;x< 256;x++)m [x][0]=16 ,m[ x][ 255]=16;for(y=0
;y< 256 ; y ++) m[0 ][y ] = 16,
m[255][y] =16 ;a=b=c=0; x=y =1; do{v++;mvwaddch (w, y,x ,m[
x][ y]& 32? m[x ][y ] & 16?
0| acs_map[l[m[x][y]&15]]:46 : 32);c==0163&&!(m[x][y+1]&16)?y++: 0;c
== 119 &&! (m[ x][
y- 1]& 16) ?y--:0;;c ==97 &&!(m[x-1][y]&16)?x--:0;c==100&&!(m[x+1
][ y]& 16) ? x ++:0 ;if( c==
3- 1+1 ){endwin( );; return(0) ;}x -a<5?a>S- 5?a-=S-5:(a=0):
0;x -a> S-5?a<255 -S* 2?a +=S
-5:(a=256-S):0; y-b<5?b>L-5?b-=L-5:(b =0) :0; y-b>L-5?b<255-L *2?
b+= L-5 :(b =256
-L) :0;e(x,y);if(m[x][y]&64)break;}while((c=getch())!=-1);endwin();cu(Q);
printf(Q,v);}
Rinia is a tool for embedding CRCs in text files. Rinia will insert a human-readable checksum string in the text itself! ^_^
/* ,*/
#include
#include/* _ ,o*/
#define c(C)/* - . */return ( C); /* 2004*/
#include /*. Moekan "' `\b-' */
typedef/* */char p;p* u ,w [9
][128] ,*v;typedef int _;_ R,i,N,I,A ,m,o,e
[9], a[256],k [9], n[ 256];FILE*f ;_ x (_ K,_ r
,_ q){; for(; r< q ; K =((
0xffffff) &(K>>8))^ n[255 & ( K
^u[0 + r ++ ] )]);c (K
)} _ E (p*r, p*q ){ c( f =
fopen (r ,q))}_ B(_ q){c( fseek (f, 0
,q))}_ D(){c( fclose(f ))}_ C( p *q){c( 0- puts(q ) )}_/* /
*/main(_ t,p**z){if(t<4)c( C("" "\40 "
/*b9213272*/"" ) )u=0;i=I=(E(z[1],"rb")) ?B(2)?0 : (((o =ftell
(f))>=8)?(u =(p*)malloc(o))?B(0)?0:!fread(u,o,1,f):0:0)?0: D():0 ;if(
!u)c(C(" bad\40input "));if(E(z[2],"rb" )){for(N=-1;256> i;n[i++] =-1 )a[
i]=0; for(i=I=0; i-1;i++)++a[R] ?(R==N)?( ++I>7)?(n[
N]+1 )?0:(n [N ]=i-7):0: (N=R) |(I=1):0;A =-1;N=o+1;for(i=33;i<127;i++
)( n[i ]+ 1&&N>a[i])? N= a [A=i] :0;B(i=I=0);if(A+1)for(N=n[A];
I< 8&& (R =fgetc(f ))> -1&& i N+7)?(R==A)?((*w[I
] =u [i])?1:(*w[I]= 46))?(a [I++]=i):0:0:0;D();}if(I<1)c(C(
" bad\40la" "yout "))for(i =0;256>(R= i);n[i++]=R)for(A=8;
A >0;A --) R = ( (R&1)==0) ?(unsigned int)R>>(01):((unsigned
/*kero Q' ,KSS */)R>> 1)^ 0xedb88320;m=a[I-1];a[I
]=(m R;R++)if(R-47&&R-92
&& R-(_)* w[i])*( v++)= (p)R;*v=0;}for(sprintf
/*'_ G*/ (*w+1, "%0" "8x",x(R=time(i=0),m,o)^~
0) ;i< 8;++ i)u [N+ i]=*(*w+i+1);for(*k=x(~
0,i=0 ,*a);i>- 1; ){for (A=i;A-1?!w[i][++ e[+ i]]:0;
) for( A=+i--; A
This is a configurable banner-like program : Convert a character glyph into a data file, or print a string using glyphs from a data file. Extra functionality: The program can also act as a Morse encoder, unarguably.
#include
#include
#include
#include
#define t(x) typedef x
#define G return
#define Y(x) x;x
#define e(s) exit(s);
#define b(x,o) x o x
#define Z while
#define y fclose
#define end static
t(signed)char U;t(struct) b(O,);
t( U*)
H; t(O
*) *o;
struct O{ O* l, **h; void* L; } ; t(int)i; i P(U g) { G
isspace(g); } H D(H s){H p,r;if(!s)G 0;for(p=(H)s;*p &&
!P(*p); p++); if(r=malloc(p-s))for(p=r; *s&&! P(*s);p++
,s++)b(*,p=) s; G r;} void l(o p,O*x){*(o)x=* p; *p=x;}
#define m(x) do{ if(!(q = malloc(sizeof(O)))) e(1)q->l\
=0 ;q\
-> L=\
x ; } while (0)
i(*R)(i) =putchar;i h(
o f,H d,U c){O*q; f+=c;Z(d&&*d)
{ m(D(d)); l(f++, q); Z(*d && !P(*d
)) d++; Z(*d && P(*d)) d++; } G b(,0);}
void k() { static U b(c,;) ?R(c):(c='\n'); }
i main (i Q, H *l){static o
X;i t,j; switch (Q
){ case 1: { H
*p, I [] ={
"aH" " "
"B" "0"
" " "B"
"" "B"
"" " "
"B" ","
" " ","
" `" "0 "
"b0 " "@, "
"0 Hb," " B2 "
"H0 b, B b" "H HB b`, "
"H, @ 2 `, " "@2 H2 BH Bb"
" b@","AH B0 BB B, , `0 b0 @, 0 Hb, B2 H0"
" b, B bH HB b`, H, @ 2 `, @2 H2 BH Bb"
" b@","0bHb, HbH `H2 @b, @H @0 B@ "
"b@ bH0 bHB",".HHH","?`H0",
",b@b,"," +", 0}; p=I;
if (!(X=calloc(
6<<6,sizeof(O*))))e(1)
do{h(X,(*p)+1,**p);} Z(*(++p));
D: if ((t = getchar()) >= 0) { k();
goto u;}e(0)}case 2:{U *p,e[33]; b(i, )
,w;for(i=0;i<34;i++)i[e]=b(0,;w=);p=e; Z(1){
t = (w == 200) ? 10:getchar();
switch(t) { case 0xa:
case EOF: if(w--
){R(1[l ][0])
;for(i =0,
p=e;i <=w
;i+= 6){
R ( *p+
'+' );*
p++ =0;
;} R(
0xa );w
=-1 ;}p=
e- 1;case
32: if (t<0) e(
0) break; /*/*
/*/ default : *
p
|=(001<<(w%6));
}if((++w%6)==0)p++;}e(
0)}case 3:{O*u,*q,*x;U s[0400];
i i;FILE*F; j:j=1;if(!(X=calloc(6<<
6,sizeof(O*)))) e(1) if(!(F=fopen(j[l],
"r")))e(1)Z(fgets(s,j<<8,F))(*s)&&h(X,s+j,*s
);j=b(i,=)&0xff; i:u=0;x=X[i];
Z(x){q=Y(*( o)x)=Y(u)
=Y(x)=q;} i[X]=u
;i=(i-2 +9)%(
sizeof (s))
;if(i ^j)
goto i;;
y(F) ; }
case 4:{
end i i
;if (!
X){ i=j
=1; goto
j;} if(i){O
**x ,*m=*(x=X);
do* x=1[x];Z(++
xL;Z(*p>=n){i=(*p++)-n;for(c=0;c<6;c++,i=i
>>1){ if(b(!, i &&)(*p >= n))
break;R(32+ (i&1)*3);
}}R(10);a =a->l;
}if(Q<2 )goto
D;if(* l[2
]){R( 10)
;main (4,
l); }}}
Z(Q ++<
1){ X+=
t; if
((t &7)
>3) goto
i; else {
t-- ;putchar(t)
;t =(t&7)?t:t-
'*' ;}}exit(0);
}
Je suis définitivement fan.
J'adore cette idée de site "second degré", qui se prend pas au sérieux. Alors pour le fun, voici quelques sites au nom de domaine absurde, triés par préférence perso ! Pour pas gâcher le plaisir, je vous dis pas ce qu'il y a derrière...
http://perdu.com
Ma référence.
http://www.fautvraimentetreconpouravoiruneadresseinternetaussilongue.com
Absolument.
http://www.pourquoi.ch
C'est vrai ça, pourquoi ?
http://www.gooooooooooooooooooooooooooooooooooooooooooooooooooooooooooogle.com
Violent :)
http://www.poubelle.net
Bin oui, il en faut bien une.
http://justfuckinggoogleit.com
Pour les énervés des forums...
http://www.llanfairpwllgwyngyllgogerychwyrndrobwyll-llantysiliogogogoch.com
Qui clame (à tord) d'avoir le plus long domaine du monde
http://boitam.eu/
Pour le jeu de mot...
Apparemment, le capteur photo bon marché de l'iPhone met un certain temps avant d'enregistrer l'image qui lui parvient : il scanne doucement de gauche à droite. Du coup, chaque colonne de pixel représente la scène à un moment légèrement différent. Lorsque la cible est en mouvement, cela donne des résultats... intéressants.

Vu sur globalnerdy
Elle est là, en haut à gauche de nos claviers, cette drôle de petite touche estampillée ² !
Sur nos claviers de portables surchargés, compressés, dont certaines touches cumulent 3, voire 4 fonctions pour gagner encore de la place, cette petite touche est toujours bêtement là.
D'où vient-elle ? Je ne suis pas parvenu à trouver l'origine de cette touche sur le net, sûrement un reliquat historique de nos vieux claviers.
Mais quelle drôle d'idée de réserver l'espace de toute une touche juste pour produire ce stupide caractère ² que l'on utilise jamais ?! A la rigueur pourrait-elle servir pour saisir "10m²" dans un bloc-note. Mais qui le fait encore ? Sous Word, il suffit de mettre la police en mode "exponentielle".
Certes, elle est utilisée dans certains jeux pour ouvrir une console de lignes de commandes. On en mourra pas d'assigner cette fonction à autre chose.
Bon, on devrait pouvoir faire quelque chose de cette touche ! Essayons : on peut facilement assigner un raccourci clavier à n'importe lequel des raccourcis qui se trouvent sur notre bureau : clic droit sur le raccourci -> propriétés -> champ Touche de raccourci. Tapons-y le caractère ² et... Windows interprète ça comme CTRL + ALT + ². Flute, perdu.
Je ne baisse pas les bras : j'en tirerais quelque chose à l'occasion du prochain billet. Pour l'heure, allons dormir un peu, parce que se poser des questions pareilles dont tout le monde se fiche c'est bien mais c'est geek, et je ne suis pas un geek.