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 0000000..b88462c Binary files /dev/null and b/favicon.ico differ diff --git a/feuille_de_style.css b/feuille_de_style.css new file mode 100644 index 0000000..059d833 --- /dev/null +++ b/feuille_de_style.css @@ -0,0 +1,113 @@ +body +{ + background: #dfd5e5; +} + +h1, h2, h3 +{ + color: #000020; +} + +h3 +{ + margin-left: -10px; + margin-right: 0px; + margin-top: 10px; + margin-bottom: 10px; + text-decoration: none; +} + +#tout +{ + font-family: Georgia, “Nimbus Roman No9 L”, serif; + margin-left: auto; + margin-right: auto; + max-width: 800px; + background-color: #fff5f5; + padding: 50px; + box-shadow: 0px 0px 10px 0px #d8d8d8; +} + + +.groupe-lettre +{ + margin: 10px; + background-color: #fff5f5; + padding-left: 40px; + padding-right: 30px; + padding-top: 12px; + padding-bottom: 20px; + box-shadow: 0px 0px 5px 0px #d0d0d0; +} + +.definition +{ + padding: 1px 2px 1px 2px; +} + +.definition +{ + margin-left: 10px; +} + +.mot-francais +{ + color: #208f20; +} + +.mot-anglais +{ + color: #905050; +} + +#intro +{ + font-size: larger; + color: #905050; + margin: 50px; +} + +#publicite +{ + font-size: normal; + color: #905050; + margin: 50px; +} + +#subtitle +{ + color: #101010; + margin-left: 100px; + width : 50%; +} + +#index +{ + text-align: center; +} + +#index a +{ + font-size: larger; + color: black; + text-decoration: none; + margin-right: 5px; + position:relative; +} + +#index a:hover +{ + background-color: #999; +} + +.bouton-gh +{ + position: absolute; + top: 0; right: 0; + border: 0; +} + +a:visited +{ + color: inherit; +} diff --git a/scissionnezmoi_right_gray.png b/scissionnezmoi_right_gray.png new file mode 100644 index 0000000..35c0533 Binary files /dev/null and b/scissionnezmoi_right_gray.png differ