Skip to content

Instantly share code, notes, and snippets.

View Cycymomo's full-sized avatar

Cyril Moreau Cycymomo

View GitHub Profile
@Cycymomo
Cycymomo / ASCII_art_HelloWorld.js
Last active August 29, 2015 13:56
ASCII_art_HelloWorld.js
// see : http://codegolf.stackexchange.com/questions/20209/ascii-art-hello-world/20211#20211
// That works in Firefox 27 Scratchpad.
// init : 178
c=document.createElement("canvas").getContext("2d");c.fillText("Hello-World!",0,7);d=c.getImageData(1,0,56,7).data;s="";for(i=3;i<1568;i+=4){s+=d[i]?"#":" ";s+=(i+1)%224?"":"\n"}
// golfed : 174
c=document.createElement("canvas").getContext("2d");c.fillText("Hello-World!",s="",7);d=c.getImageData(1,0,56,7).data;for(i=3;i<1568;i+=4)s+=d[i]?"#":" ",s+=(i+1)%224?"":"\n"
@Cycymomo
Cycymomo / domExplanation.md
Created February 7, 2014 08:42
domExplanation.md

##C'est quoi le DOM

DOM n'est pas seulement un truc en plus fourni pas le navigateur ... c'est l'essence même de la page web telle qu'elle est affichée dans le navigateur.

  • on demande une page HTML à un navigateur
  • le navigateur la parcourt, construit un modèle à partir de l'imbrication des balises et affiche le tout à partir de ce modèle.
  • à chaque fois que le modèle (DOM) change, la page change

Dire que c'est un truc en plus est très réducteur pour cet ensemble d'interfaces riches et complètes qui permet de lire, modifier, mettre à jour et supprimer des éléments du document examiné.

Par exemple, si une page web est l'ensemble des éléments composant un meuble, le DOM serait le schéma et les outils nécessaires pour le monter et Javascript les instructions dans la langue que tu comprends.

@Cycymomo
Cycymomo / quiz.js
Last active August 29, 2015 13:56
quiz-dvp-hardcore.js
///////////////////////////////////////////
// Question 1
// D'après le code suivant, que retournera go() ?
var x = 3;
var foo = {
x: 2,
baz: {
x: 1,
bar: function() {
@Cycymomo
Cycymomo / findPrimeNumberLessThan.js
Last active August 29, 2015 13:56
findPrimeNumberLessThan.js
function findPrimeNumberLessThan(number_limit) {
var i, j;
next_prime:
for(i=2; i < number_limit ; i++) {
for(j=2; j < i ; j++) {
if ( i % j === 0) {
continue next_prime;
}
}
@Cycymomo
Cycymomo / in_array.js
Created February 4, 2014 11:05
in_array.js
function in_array(needle, haystack) {
return !!~haystack.indexOf(needle);
}
@Cycymomo
Cycymomo / insertAt.js
Last active August 29, 2015 13:55
insertAt : Array.prototype & String.prototype.
// String
String.prototype.insertAt = function( beginSlice, lengthSlice, stringToInsert ) {
lengthSlice = lengthSlice >= 0 ? lengthSlice : -lengthSlice; // ensure abs value. Faster than Math.abs
return this.slice(0, beginSlice) + stringToInsert + this.slice(beginSlice + lengthSlice);
};
var result = "je ton père".insertAt(3, 0, "suis ");
console.log(result); // je suis ton père
@Cycymomo
Cycymomo / stringRepeat.js
Created January 30, 2014 08:14
stringRepeat.js : Repeating strings efficiently
function stringRepeat(str, num) {
var result = '';
for (num |= 0; num > 0; num >>>= 1, str += str) {
if (num & 1) {
result += str;
}
}
return result;
@Cycymomo
Cycymomo / makeGUID.js
Last active August 30, 2016 23:16
makeGUID.js : globally-unique identifiers in Javascript (rfc4122 compliant http://www.ietf.org/rfc/rfc4122.txt)
// see : http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523
var makeGUID = function makeGUID() {
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
var r = Math.random()*16|0, v = c === 'x' ? r : (r&0x3|0x8);
return v.toString(16);
})
}
@Cycymomo
Cycymomo / isNaN.md
Last active January 4, 2016 03:49
isNaN.md

isNaN : Je suis NaN ! Mais ne suis-je pas un nombre aussi ?

ou pourquoi il ne faut pas faire confiance à isNaN

tl;dr

isNaN(valeurAtester) (de l'objet global window dans le navigateur) est une fonction native JavaScript. C'est aussi, depuis peu, une méthode directe de l'objet natif Number qui tente de résoudre l'échec de son ancêtre. Elle prend en argument une variable à tester et retourne vraie si celle-ci est NaN (Not a Number, littérallement est "Pas un Nombre"). Il ne faut pas confondre window.isNaN et la plus récente Number.isNaN. En effet, cette dernière corrige la première. Cet article analyse donc ces deux fonctions et propose une bonne pratique.

Le problème

@Cycymomo
Cycymomo / twoWayEncryption.php
Created January 21, 2014 08:53
twoWayEncryption.php
$key = 'password to (en/de)crypt';
$string = 'string to be encrypted';
$encrypted = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5($key), $string, MCRYPT_MODE_CBC, md5(md5($key))));
$decrypted = rtrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, md5($key), base64_decode($encrypted), MCRYPT_MODE_CBC, md5(md5($key))), "\0");
var_dump($encrypted);
var_dump($decrypted);