From c5da2d4b1d63f4520e1b4d178701a475c8bfcd50 Mon Sep 17 00:00:00 2001 From: Guillaume Piolat Date: Mon, 26 Oct 2015 15:17:57 +0100 Subject: [PATCH] =?UTF-8?q?Rep=C3=AAchage=20des=20autres=20fichiers=20oubl?= =?UTF-8?q?i=C3=A9s.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- creuille.js | 272 ++++++++++++++++++++++++++++++++++ favicon.ico | Bin 0 -> 894 bytes feuille_de_style.css | 113 ++++++++++++++ scissionnezmoi_right_gray.png | Bin 0 -> 14337 bytes 4 files changed, 385 insertions(+) create mode 100644 creuille.js create mode 100644 favicon.ico create mode 100644 feuille_de_style.css create mode 100644 scissionnezmoi_right_gray.png diff --git a/creuille.js b/creuille.js new file mode 100644 index 0000000..47d1011 --- /dev/null +++ b/creuille.js @@ -0,0 +1,272 @@ +function trouveElement(id) +{ + return document.getElementById(id); +} + +function obtenirLAttribut(element, attribut) +{ + return element.getAttribute(attribut); +} + +function definirLAttribut(element, attribut, valeur) +{ + return element.setAttribute(attribut, valeur); +} + +function changeDeSens(window) +{ + var element = trouveElement('mots') + var langueDesClefsActuelle = obtenirLAttribut(element, 'data-langue'); + var autre = {'anglais': 'francais', + 'francais': 'anglais'}; + var langueDesClefsNouvelle = autre[langueDesClefsActuelle]; + definirLAttribut(element, 'data-langue', langueDesClefsNouvelle); + construitListe(window) +} + +function construitListe(window) +{ + var document = window.document; + document.creeElement = document.createElement; + + var vrais_mots = [ + {anglais: 'dangling pointer', francais: 'pointeur fou'}, + {anglais: 'URL' , francais: 'adresse réticulaire'}, + {anglais: 'GC' , francais: 'ramasse-miettes, glaneur de cellule'}, + {anglais: 'pipeline' , francais: 'bitoduc'}, + {anglais: 'TL;DR (Too Long; Didn\'t Read)' , francais: 'TL;PL (Trop Long; Pas Lu)'}, + {anglais: 'framework', francais: 'cadriciel'}, + {anglais: 'shareware', francais: 'partagiciel'}, + {anglais: 'freeware', francais: 'gratuiciel'}, + {anglais: 'spam', francais: 'polluriel, pourriel'}, + {anglais: 'spammeur', francais: 'arroseur publicitaire'}, + {anglais: 'CDROM', francais: 'cédérom'}, + {anglais: 'e-mail', francais: 'courriel'}, + {anglais: 'anti-pattern', francais: 'anti-patron'}, + {anglais: 'callback function', francais: 'fonction de rappel'}, + {anglais: 'stack overflow', francais: 'dépassement de pile'}, + {anglais: 'flag', francais: 'fanion'}, + {anglais: 'firewall', francais: 'pare-feu'}, + {anglais: 'bug', francais: 'bogue'}, + {anglais: 'USB key', francais: 'mémorette'}, + {anglais: 'core dump', francais: 'vidage de mémoire'}, + {anglais: 'spinlock', francais: 'tourniquet'}, + {anglais: 'polling', francais: 'attente active'}, + {anglais: 'debugger', francais: 'dévermineur'}, + {anglais: 'god object', francais: 'objet omniscient'}, + {anglais: 'flame', francais: 'propos inflammatoire'}, + {anglais: 'angle brackets', francais: 'chevrons'}, + {anglais: 'home row', francais: 'touche de repos'}, + {anglais: 'number sign', francais: 'croisillon'}, + {anglais: 'slash', francais: 'barre oblique'}, + {anglais: 'backslash', francais: 'barre oblique inversée'}, + {anglais: 'ampersand', francais: 'esperluette'}, + {anglais: 'backport', francais: 'rétroportage'}, + {anglais: 'rolling release', francais: 'publication continue'}, + {anglais: 'checksum', francais: 'somme de contrôle'}, + {anglais: 'repository', francais: 'dépôt'}, + {anglais: 'version control system', francais: 'logiciel de gestion de versions'}, + {anglais: 'lazy evaluation', francais: 'évaluation paresseuse'}, + {anglais: 'upload', francais: 'téléversement'}, + {anglais: 'download', francais: 'téléchargement'}, + {anglais: 'patch', francais: 'rustine logicielle'}, + {anglais: 'endianness', francais: 'boutisme'}, + {anglais: 'big-endian', francais: 'grand boutien'}, + {anglais: 'little-endian', francais: 'petit boutien'}, + {anglais: 'plugin', francais: 'greffon'}, + {anglais: 'online chat', francais: 'clavardage'}, + {anglais: 'webcam', francais: 'cybercaméra'}, + {anglais: 'podcasting', francais: 'balladodiffusion'}, + {anglais: 'phishing', francais: 'hameçonnage'}, + {anglais: 'bloatware', francais: 'boufficiel'}, + {anglais: 'spyware', francais: 'espiogiciel'}, + {anglais: 'flood', francais: 'matraquage'}, + {anglais: 'glue code', francais: 'code ciment'}, + {anglais: 'proxy', francais: 'mandataire'}, + {anglais: 'reverse proxy', francais: 'mandataire inverse'}, + {anglais: 'tutorial', francais: 'didacticiel'}, + {anglais: 'browser', francais: 'butineur'}, + {anglais: 'BBS (Bulletin Board System)', francais: 'babillard électronique'}, + {anglais: 'applet', francais: 'appliquette'}, + {anglais: 'cloud computing', francais: 'infonuagique'}, + {anglais: 'overclocking', francais: 'surcadençage'}, + {anglais: 'double word', francais: 'trente-deuzet'}, + {anglais: 'byte', francais: 'octet'}, + {anglais: 'malware', francais: 'maliciel'}, + {anglais: 'namespace', francais: 'espace de noms'}, + {anglais: 'Cascading Style Sheets (CSS)', francais: 'feuilles de style en cascade'}, + {anglais: 'middleware', francais: 'intergiciel'}, + {anglais: 'webmaster', francais: 'webmestre'}, + {anglais: 'Web', francais: 'toile'}, + {anglais: 'Computer Science (CS)', francais: 'science informatique'}, + {anglais: 'program counter', francais: 'compteur ordinal'}, + {anglais: 'hub', francais: 'concentrateur'}, + {anglais: 'backdoor', francais: 'porte dérobée'}, + {anglais: 'hyperlink', francais: 'hyperlien'}, + {anglais: 'fork', francais: 'scission'}, + {anglais: 'watchdog', francais: 'chien de garde'}, + {anglais: 'ROM (Read-Only Memory)', francais: 'mémoire morte'}, + {anglais: 'deadlock', francais: 'étreinte fatale'}, + {anglais: 'refactoring', francais: 'réusinage'}, + {anglais: 'digital', francais: 'numérique'}, + {anglais: 'tag', francais: 'étiquette'}, + {anglais: 'desktop', francais: 'ordinateur de bureau'}, + {anglais: 'to deface', francais: 'défigurer'}, + {anglais: 'ASLR', francais: "Disposition Stochastique de l'espace d'addressage"}, + {anglais: 'back-end services', francais: 'services dorsaux' }, + {anglais: 'back office', francais: 'arrière-guichet' }, + {anglais: 'boot', francais: 'amorçage' }, + {anglais: 'BYOD (Bring Your Own Device)', francais: 'AVEC (Apportez Votre Equipement personnel de Communication)' }, + {anglais: 'cache memory', francais: 'antémémoire' }, + {anglais: 'chipset', francais: 'jeu de puces' }, + {anglais: 'cookie', francais: 'témoin de connexion' }, + {anglais: 'firmware', francais: 'micrologiciel' }, + {anglais: 'FPGA (Field-Programmable Gate Array)', francais: 'CIPP (Circuit Intégré Prédiffusé Programmable)' }, + {anglais: 'front office', francais: 'guichet' }, + {anglais: 'fuzzing', francais: 'frelatage en masse' }, + {anglais: 'fuzzer', francais: "générateur d'anomalies" }, + {anglais: 'hacked', francais: "intrusé" }, + {anglais: 'hacker', francais: "fouineur" }, + {anglais: 'hash', francais: "condensat" }, + {anglais: 'hash table', francais: "tableau à adressage dispersé" }, + {anglais: 'heap spray', francais: "pulvérisation du tas" }, + {anglais: 'instruction pipeline', francais: "instruoduc" }, + {anglais: 'lurker', francais: "fureteur" }, + {anglais: 'man-in-the-middle attack', francais: "attaque de l'homme du milieu" }, + {anglais: 'monkey-in-the-middle attack', francais: "attaque du singe intercepteur" }, + {anglais: 'obfuscation', francais: "noircissement de code" }, + {anglais: 'pharming', francais: "devoiement" }, + {anglais: 'phishing attack', francais: "attaque par filoutage" }, + {anglais: 'return oriented programming', francais: "Exploitation focalisée sur le retour" }, + {anglais: 'reverse-engineering', francais: "Ingénierie à rebours" }, + {anglais: 'to reverse', francais: "détricoter" }, + {anglais: 'shell code', francais: "code encoquillé" }, + {anglais: 'SoC (System-on-Chip)', francais: "puce-système" }, + {anglais: 'smart grids', francais: "grilles malines" }, + {anglais: 'stack cookie', francais: "biscuit de pile" }, + {anglais: 'thumbnail', francais: "imagette" }, + {anglais: 'Web cache', francais: "cache-toile" }, + {anglais: 'XSS (Cross Site Scripting)', francais: "ICID (Injection de Code Indirect à Distance)" } + ]; + + var faux_mots = [ + {anglais: 'branch merging', francais: 'fusion de branches'}, + {anglais: 'pull-request', francais: 'fusiodemande'}, + {anglais: 'NIH (Not Invented Here)', francais: 'PII (Pas Inventé Ici)'}, + {anglais: 'RTFM (Read The Fucking Manual)', francais: 'LPDM (Lis le Putain De Manuel)'}, + {anglais: 'DRY (Don\'t Repeat Yourself)', francais: 'NTRP (Ne Te Répète Pas)'}, + {anglais: 'hashtag', francais: 'croisiquette'}, + {anglais: 'tweet', francais: 'gazouillis'}, + {anglais: 'lolcat', francais: 'chatmusant'}, + {anglais: 'empowerment', francais: 'empouvoirement'}, + {anglais: 'to spoil', francais: 'divulgâcher'}, + {anglais: 'smartphone', francais: 'malinphone'}, + {anglais: 'walled garden', francais: 'jardin secret, communauté prison'}, + {anglais: 'favicon', francais: 'favorimage'}, + {anglais: 'stand-up meeting', francais: 'réunion debout'}, + {anglais: 'commit', francais: 'atome de code'}, + {anglais: 'laptop', francais: 'ordinateur de giron'}, + {anglais: 'cryptoparty', francais: 'chiffrofête'}, + {anglais: 'bitcoin', francais: 'cybersou' } + ]; + + function cache(e) + { + e.style.visibility = 'hidden'; + } + + function montre(e) + { + e.style.visibility = 'visible'; + } + + var tous_les_mots = vrais_mots.concat(faux_mots); + + var i; + var lien = trouveElement('lienChange'); + var index = trouveElement('index'); + var mots = trouveElement('mots'); + var langueDesClefs = obtenirLAttribut(mots, 'data-langue'); + var lettres = new Array(26); + var noeud; + + function enleveLesAccents(s) { + s = s.replace("é", "e"); + return s; + } + + var lienFR = 'Français'; + var lienANG = 'Anglais'; + var lienSource = lienFR; + var lienDestination = lienANG; + if (langueDesClefs === 'anglais') { + lienSource = lienANG; + lienDestination = lienFR; + } + lien.innerHTML = lienSource + ' → ' + lienDestination; + + mots.innerHTML = ''; + index.innerHTML = ''; + + + for (i = 0; i < 26; ++i) { + + var lettre = String.fromCharCode(65 + i); + + lettres[i] = noeud = document.creeElement('div'); + noeud.className = 'groupe-lettre'; + noeud.enfants = 0; + var ancre = document.creeElement('a'); + ancre.name = lettre; + noeud.appendChild(ancre); + var titre = document.creeElement('h3'); + titre.innerHTML = lettre; + noeud.appendChild(titre); + } + + // renvoie un nombre entre 0 et 25 + function indiceDeLaPremiereLettre(m) { + + var motSansAccent = enleveLesAccents(m); + var motEnMinuscule = motSansAccent.toLowerCase(); + var resultat = motEnMinuscule.charCodeAt(0) - "a".charCodeAt(0); + return resultat; + } + + for (i = 0; i < tous_les_mots.length; ++i) { + + var mot = tous_les_mots[i]; + + noeud = document.createElement('div'); + noeud.className = 'definition'; + + var spanAnglais = ' ' + mot.anglais + ' '; + var spanFrancais = '' + mot.francais + ''; + + var spanClef = spanFrancais; + var spanValeur = spanAnglais; + var indice = indiceDeLaPremiereLettre(mot.francais); + if (langueDesClefs === 'anglais') { + spanClef = spanAnglais; + spanValeur = spanFrancais; + indice = indiceDeLaPremiereLettre(mot.anglais); + } + + noeud.innerHTML = '· ' + spanClef + ' : ' + spanValeur; + + lettres[indice].appendChild(noeud); + lettres[indice].enfants++; + } + + for (i = 0; i < 26; ++i) { + var lettre = String.fromCharCode(65 + i); + noeud = lettres[i]; + if (noeud.enfants > 1) { + mots.appendChild(noeud); + var lettreIndex = document.creeElement('a'); + lettreIndex.href = '#' + lettre; + lettreIndex.innerHTML = lettre; + index.appendChild(lettreIndex); + } + } +} diff --git a/favicon.ico b/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..b88462c9094ace659059058c909879e72cc0e18c GIT binary patch literal 894 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%0DEgqLm6Jywwvsg^qmlCh@Q^`*+BrG(!edO# z&W_*Oas)vHGMCpxbyC}^s?NL2gHoC|;6LMjwy;2%k*UCkOrPj55Mk)&VlS`04nG2d zxoQxJqL9Qo-$rfXy;E2i64YTfXFT@nmt^(ciZ7jF!Q=O4wX=?=TlFI@kWE0l{<6H! z@~sl;`uFA8A<|C-5)L5{awcZX4mu_sveFDa*4EaL3mg8KhU=fQmoGCDyLoyJHWB5r_beRugy_$6tdZex% zU7iD+=b`t`7r0jf0_Q*G@q2$-cy#w{Ej9mi_;@xr02L7s06?g!{$;G3lt6-d7x zQb|8QKcx16-Eo|6c~WslPj)soLh?0>Tb}N7nZZ=YruEZ9Dy4B}2|7(>)WEFn>&#!j zBGc4VIW6A3wnAV#3A+^+^AwI1qCXrtT)IRH>V&IAEfrdzqMnf(PuB)~83?dzkE z@OucHytbBi#!(1JxJ=1-9;8PPy|$3q3xvp$H<#{k3F(i5g9gKJdgY#D8rFp2^Q5~< zW&#ufJt2%Fj-NXZK2J@0JvQPo%2c+0yzxw~2cv8G>_je@pWk(E*>K8K9aN{b_JMSN zBLo7i^YIV})b6&;>}Vc%5Waf^)>MpC=p0N#fbS1v?6+@_N_H|~O!I=6;28Jf$pxdW zVd3Va(b2}ug&H`&1Q*W1{xU-RR`|o&Qx%gA7Vok(?i_=8C(VF}kmV&j0Kz4Hu~pB? z!4VGp9ax|XqzmAB_dMgXfW~i`b7?^w`;~|wO6Ku|cz+KVfixmW{|Pn3XX(gTIgMY4 z=j22@^^~eh3!7A3t~}{^;e<6)A+L!EJ~tVu!KL^Jn~i$XBU5h7R8=DM+7(?JKR+sn z@?bzl78E8BDT`VIAZPJqWo*O;z%ro5euMc@T2@9(cuS)_2cmoRaoj)Ci!KKLLYm!H zaeT7-Lea2X)<^SNqsR&Ia)BiRF9bQ5A5{n($966)vzIweebue`qxnY*b4{wu9|9%Q z8#_D4u8?zT6?&lP=;)+pXJaZnhAEPApI6gx#>S?m?#Tuntf-`9IY?BkteAjOf-G^lJOu-^77Y-w z$#ogiX`vlIZ75=H&iK8!FA3-`@Js>WyJ6}kY=JY3LAp#ghTJ7JTxWrq;Q9ISJw=Nu7U?&}k$MK>V{D#dSb(P4K%pMW@VTxh2SSb%*1_lqpXM5!^v|-?Gfp zr_@y@t&!2u(NR-ybLPN8AjJi8OVgKET#PA}MF5*(=ind<{}6mL0jfBWKv8jV@oLPO zPcMLA_v90js nh4nm|M^dG@tw5VVwe7tgB)r z4rxy()pyx!o^+C}fgqtC9tgV(i4LBvvAio!OG#l!RPMB?f3WfLd4myt{VZOQb~L0R zuM-lGS|8jXfCjJ(ym#h^V-4XlaGFR9$a5TpexiBHU#UE}yWdc2aq_WkL3%r2jD+yw zt6cEKT~SsB?L)u!>FJ$czPuDU6{K*3@`Ee@2Du);k79!q@X@^<;1EedPr!W#bpj$^ zreKWW!2^7xI{@tru`JQ$!(`7+h=^2(G<)2TXPewPscdifo$ z4~VQVmv;?R_`0er?T56zD8?H0k8d@#9&tT<_;k1uB)NJ0ELc)n#>SjR0E3z(9_zbc zIU~^>SUeCu2-IMR&%@Ib`LQi6MlZ#i$Nb&g_*ix+**s^T*$J-^eD!b*}XGhK6^%cIMc!pHECpeJW(@^WO|BEK8bnAhVqW*&VA>qVX;Kb8G8E zYiA|#6o@9F z)57>6R8t=C9Y}jQaC~7D2qVH@r*WBdA8k(WZsM|qa&>Wa|C*RH=4K+X$qS0zKPbZ(hB3os#Eq_&6Qs!9cbW?-GufCG zg7L=F3+r&hc(~(K+Jy@0)MBpF+5LwqpC0YMyThNB9dE~snlKbWD0!*HsUe(+yx#O@ zOHs5~7`dX}g{8EwMS?CX;Sk|eUzMrqDwg(&CySgD%l+8yBh)9dvF+1~j+1K87 z%5FW9``XHb*Y^jnzs)8exfcBxb}=N%w>Z5-xy)9}If*CXZJ3$s|tnHyPtE26OMtz$i6`=pPkGt}1-H4~S0eN{+K8&_Lv-Unr z5v0TedM{T!z3ji#@4$Xh$CyTH5@XHQ`j}35^T-d9Bv2JJU+C!#?<=C3#5@U?xQWyJ z>+Vr#=*)AMF1CBy%gSu4JT=V3Kt-}>LLnw)JUua3(mhmXpaLF1fCx&nY_wXf9JtIC ztSj)bwRZ=D>MM)dr|ASZJ}S=4iMKaxOMhZoohqoIGFHun>ovlSA18*eyWhX7QsSYE z{I)1BC)e}Y>@)W7h)GLrxQEp6w&v#SHQ)L!b7;K^48Qxn#!{r=wCcWAt>rbxG8dwX z10xT-kJ9RDGxwQY+ViBC$835Zr7Pjv8HmmdadUl$zJb;sK4eHRAJ&Jbt*1U~Rh#~9 zSp?1(*xdmlo7Bm=a}9IZ_t{!V%Zs-J)Sm`Q(zC{p(02U^==nkkh=EyhO478R%GzRy86H7!!VbNPm}&@1iH+(xP&R-n=}^R+&z((Z(H9q zF86WY6UZR3a^=luj+PdPf!RVq9jN~z16=Ebtm_{7phsVpt%9P^29?nx&58O-il-jU zvM8ikHl$`@FysVM3gnDrFxv}I?THgsk3^}_H2xjr3g!Ch(5*3Ytvh@zJSKdvN_&3( zGjVL!?#VK4ThJ4WG;IntJ&w5Ok+U_To&C5x8=DILE(WlI|B2CZYLuk+Rw%MFAy-_q zHBs?qaF4-Cr|4kEahS$R$9$C{g&96wFeNL!;4h&EdO;ZD<|7_#7yy6f(=W>#e5rwiI%B(IjzaTT|OP<6()A9jBq#K1&yW@zUrZ-;?K-(O|^Il5UE{y~_xl1Un&R07hi? zC0v<{rV0w-z5T66&i6Z})=HOcoW45_U!NAS6!9W!dM9=MS}MpTG~bY8$)f+68!Ksx z?_fKnC-Nxa7i@VueViZ^leKwR9d^I7z-k6#`%7B>2Px%wxRDvH8nYMnRS7KU?lvvN z49hh?jeTyy3F&cw8z|T2{YY<{6r{iotI^PCCc?YdIYA*P4; zcYzXSP7>f7J?$7D;7%Qtt&!hE>g0LtX=8)QIfR^kpx6+-q@;}g1sVd=JxV$;_eaLUxt{D+PNKmO2O}#o?%Pzm4qFT?zfxG|D!>7k0KuF>N zJhDIGSM}~|f30vLX8T=V9f;3)A#W#>!YgJO3FYD=0N}OF7Mi7#Hh|E`7er-^Zhj+y z