skip to main | skip to sidebar
Code 18
Manuel du savoir-faire à l'usage des geeks et des curieux
RSS
  • Accueil
  • Le web au Québec
  • Liens
  • Twitter
  • Facebook
  • À propos

lundi 31 août 2009

5 sites où acheter des t-shirts en ligne

Publié par Infinite Loop, à 21 h 55 1 commentaire

À cette période de l'année, le changement de saison approche à grands pas. Pour certains, c'est synonyme de retour en classe et pour les autres, la preuve que l'été nous a fait un pied de nez et a pris ses jambes à son cou (c'est notre cas à Montréal, la période estivale a duré à peine 1 semaine).

Je n'ai pas pu porter mes shorts très souvent cette année, mais une chose est certaine, ma garde-robe de t-shirt demeure une valeur sûre à porter dans un environnement de travail comme le mien. Confortable, économique et évocateur de votre état d'esprit. En effet, quoi de mieux pour un geek que d'arborer fièrement un t-shirt aux références obscures au bureau ? C'est probablement l'uniforme par excellence pour les programmeurs de ce monde. Parfois j'ai l'impression que plus le code vestimentaire se rapproche de la cravate, moins l'emploi est stimulant et créatif!

Gardez vos porte-feuilles à portée de la main pour effectuer quelques achats compulsifs, je vous suggère 5 sites web où vous pourrez vous procurer des t-shirts originaux à bas prix.

BustedTees

  • Choix de 20 t-shirts à 9.99$ chacun
  • Vente à 8$
  • Coup de coeur : The future is in your hands
ThinkGeek
  • Prix moyen de 18$
  • Très cool, très geek
  • Coup de coeur : T-Qualizer interactif
Threadless
  • Prix variant entre 9$ et 15$
  • Abonnement d'un an disponible, un nouveau t-shirt exclusif chaque mois!
  • Coups de coeur : Living in Harmony et Allow me to explain through interpretive dance
6 dollar shirts
  • Comme le nom l'indique, 6$ chacun
  • Super spécial 10 pour 50$
  • Soumettez vos propres design et gagnez de l'argent (entre 50 et 500$!)
  • Choix vintage comme Cool Aid, Knight Rider, Flux Capacitor 1.21 Gigawatts (Back to the Future), Konami Code, etc
  • Coup de coeur : Volume 11 (pour comprendre la référence à Spinal Tap. Tout simplement hilarant!)
Ten Bills
  • Entre 7$ et 10$ chaque
  • présentement 20% de rabais sur les pré-ventes
  • Coup de coeur : Old School Technology, évidemment


Tags: Le coin du geek, Liens

dimanche 30 août 2009

Easter egg dans Python

Publié par Infinite Loop, à 16 h 59 0 commentaire

Voici un petit easter egg documenté depuis longtemps concernant le langage de programmation Python. Ouvrez un terminal et entrez python :

# python

Ensuite, entrez :

>>> import this

Vous verrez apparaître les principes directeurs pour la conception de Python.

The Zen of Python, by Tim Peters

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!


Tags: Easter Eggs

Citation no. 45 sur Perl

Publié par Infinite Loop, à 10 h 00 0 commentaire

Perl combines all the worst aspects of C and Lisp: a billion different sublanguages in one monolithic executable. It combines the power of C with the readability of PostScript.

- Jamie Zawinski


Tags: Citations, Perl

samedi 29 août 2009

Créer un singleton en PHP

Publié par Infinite Loop, à 11 h 25 1 commentaire

Le pattern de création singleton permet de s'assurer qu'il existe une seule instance d'un objet à l'intérieur du projet. Et d'autres mots, le constructeur est privé, ce qui veut dire qu'on ne peut en aucun cas appeler "new" sur la classe pour obtenir de multiples copies. Comme la méthode est statique, il n'y a pas d'instance à manipuler, on ne fait que la récupérer.

Voici un gabarit de base de la structure du singleton sur lequel on pourra développer :

class Singleton{
private static $_instance = false;

private function __construct(){
echo 'chargement des valeurs par défaut';
}

public static function getInstance(){
if( self::$_instance === false ){
self::$_instance = new Singleton();
}

return self::$_instance;
}
}
Déclaration statique ou non ?
  • la classe ne doit pas être déclarée statique
  • la propriété $_instance doit être statique
  • la méthode getInstance() doit être statique
Dans la classe, la propriété $_instance conservera l'instance unique de l'objet. C'est pour cette raison que dans la fonction getInstance() vérifie si l'objet est initialisé, autrement une instance de la classe Singleton sera créée et conservée dans cette variable.

En rendant le constructeur privé, on empêche la classe d'être instanciée à l'extérieur de l'objet. Autrement dit, l'objet peut être créé uniquement à l'intérieur de lui-même.

La ligne suivante provoquera une erreur du type "Call to private Singleton::__construct() from invalid context..." :
$obj = new Singleton();
Pour récupérer l'instance de l'objet singleton, on devra utiliser :
$obj = Singleton::getInstance();
Mise en garde
Avant d'utiliser ce gabarit de conception, assurez-vous de réfléchir adéquatement à son application. Je vous suggère une lecture complémentaire très pertinente sur l'utilisation des singletons : Êtes-vous atteint de singletonite ?


Tags: PHP

vendredi 28 août 2009

Modèle de Go Kart en batmobile !

Publié par Infinite Loop, à 16 h 12 0 commentaire

Comme c'est vendredi, j'ai décidé de mettre de côté le sujet que j'avais prévu parler pour le remplacer par quelque chose de moins technique, plus léger, qui terminera bien la semaine.

Vous adorez la course automobile et le super-héros Batman ? Vous rêvez de conduire la plus récente version de la batmobile (celle qui apparaît dans Batman Begins et The Dark Knight) ?



Si vous avez l'âme d'un garagiste, vous pouvez vous procurez les plans de go kart de la batmobile sur eBay (vendus par tully712 pour la modique somme d'une trentaine de dollars américains ) et construire votre réplique suivant le populaire principe DIY (Do It Yourself). Visitez T-man's karts pour plus de détails.



Vous pourrez connaître tous les détails techniques et l'historique de la batmobile sur la page qui lui est consacrée sur Wikipedia.

Dommage qu'il n'existe pas de réplique de la DeLorean de BTTF, je me serais volontier porté acquéreur. Par contre, j'ai trouvé le site bttfdelorean.com qui vend tous les accessoires nécessaires pour convertir votre DeLorean en authentique véhicule à voyager dans le temps. Vous pouvez aussi tenter d'intégrer un convecteur temporel à votre Hyundai Pony pour approximativement 400$ ou encore, pour ceux qui disposent d'un budget limité, simplement acheter un t-shirt à l'image du 1.21 gigawatts (6$)!


Tags: Humour, Le coin du geek

jeudi 27 août 2009

SQL Inject Me

Publié par Infinite Loop, à 19 h 19 1 commentaire

Je viens à l'instant d'installer l'extension Firefox SQL Inject Me, créé par la compagnie Security Compass, qui sert à tester les vulnérabilités d'une page web au SQL injection. Cet outil fait parti de la suite Exploit Me qui comprend aussi un testeur contre le XSS et les accès aux ressources (ce sont toutes des extensions indépendantes pour Firefox).

L'extension SQL Inject Me permet de soumettre un jeu de tests pré-construit pour voir comment le site réagira. Si la programmation présente des faiblesses, on apercevra les résultats des erreurs 500, l'état des redirections, etc. Dans mon cas, j'ai testé le formulaire de login d'un CMS en ASP pour voir ce que ça dénicherait (beaucoup de sites en ASP sous IIS présentent des lacunes en sécurité; ce sont habituellement les plus vulnérables, les plus bavards et les plus faciles à infiltrer) :


(cliquez pour agrandir)

Ce que j'ai appris ? Qu'il ne fallait entrer que la chaîne 1' OR '1'='1 dans le champ nom d'usager et mot de passe, ou encore uniquement ' OR username IS NOT NULL OR username = ' dans le champ du nom d'usager pour réussir à me connecter à l'interface de gestion du site web. Et j'ai accès à absolument tout!

Heureusement pour eux, je ne suis pas du genre à profiter de l'opportunité pour saccager leurs données. Tout ce qui m'intéresse, c'est de tester les vulnérabilités existantes et savoir comment les corriger. Mieux vaut apprendre les techniques de SQL injection si on veut être en mesure d'implémenter correctement le code qui permet de les éviter.

C'est dommage pour les développeurs et leurs clients car ils courent un risque énorme puisque leur plateforme centrale est utilisée pour gérer les données de nombreux sites... Qui sait, le prochain à y pénétrer sera peut-être plus mal intentionné que moi ?


Tags: Extensions Firefox, Sécurité

mercredi 26 août 2009

Désastres de Photoshop

Publié par Infinite Loop, à 19 h 35 0 commentaire

Tout à l'heure, en parcourant les nouvelles sur Digg, je suis tombé sur un article du site engadget.com intitulé Microsoft sucks at Photoshop qui démontre que la compagnie a utilisé la photo originale du site américain et l'a modifiée pour son site polonais en substituant dans la photo le visage de l'homme noir pour celle d'un blanc. Certains crient déjà au racisme.



Suite à la controverse, Microsoft a fait changer l'image retouchée pour remettre l'originale. Le plus drôle dans toute cette histoire : regardez la main de l'homme blanc au centre. Oui, elle est toujours noire (cliquez sur l'image pour l'agrandir). Au moins, si vous souhaitez retoucher une photo, faites le comme il faut!

Si vous avez l'oeil pour détecter les anomalies de ce genre, vous apprécierez le blogue PsD - Photoshop Disasters qui recense des centaines d'exemples aussi curieux.


Tags: Humour

Messages plus récents Messages plus anciens Accueil
S'abonner à : Messages (Atom)
    Suivre @code18 sur Twitter

    Catégories

    • Apache (21)
    • Citations (167)
    • Club Vidéo (24)
    • Coffre à outils (55)
    • CSS (8)
    • Curiosités (117)
    • Design Pattern (2)
    • Drupal (8)
    • Easter Eggs (22)
    • Extensions Firefox (20)
    • GIMP (7)
    • Histoire (21)
    • HTML (32)
    • Humour (57)
    • Intégration (34)
    • iPod (12)
    • JavaScript (110)
    • Jeu de combat (6)
    • Le coin du geek (128)
    • Liens (12)
    • Linux (56)
    • Livres (78)
    • Lois et principes (46)
    • Marché des saveurs (26)
    • Mathématique (18)
    • Mobile (5)
    • Montréal (32)
    • Musique (112)
    • Pancartes et écriteaux (16)
    • Perl (8)
    • Pérou (1)
    • PHP (130)
    • PostgreSQL (44)
    • Programmation (105)
    • Saviez-vous que (55)
    • Sécurité (22)
    • SEO (5)
    • SQL Server (22)
    • Vieilles publicités (6)
    • Virtualisation (8)
    • Voyages (1)
    • Zend Framework (26)

    Divers

    Archives

    • ▼  2015 (6)
      • ▼  août 2015 (1)
        • Citation no.164 sur la tromperie
      • ►  juillet 2015 (1)
      • ►  février 2015 (3)
      • ►  janvier 2015 (1)
    • ►  2014 (8)
      • ►  décembre 2014 (1)
      • ►  novembre 2014 (1)
      • ►  octobre 2014 (1)
      • ►  août 2014 (2)
      • ►  juillet 2014 (2)
      • ►  janvier 2014 (1)
    • ►  2013 (53)
      • ►  décembre 2013 (2)
      • ►  novembre 2013 (1)
      • ►  octobre 2013 (3)
      • ►  septembre 2013 (2)
      • ►  août 2013 (5)
      • ►  juillet 2013 (3)
      • ►  juin 2013 (5)
      • ►  mai 2013 (3)
      • ►  avril 2013 (7)
      • ►  mars 2013 (7)
      • ►  février 2013 (11)
      • ►  janvier 2013 (4)
    • ►  2012 (105)
      • ►  décembre 2012 (8)
      • ►  novembre 2012 (5)
      • ►  octobre 2012 (4)
      • ►  septembre 2012 (1)
      • ►  août 2012 (8)
      • ►  juillet 2012 (7)
      • ►  juin 2012 (7)
      • ►  mai 2012 (10)
      • ►  avril 2012 (13)
      • ►  mars 2012 (15)
      • ►  février 2012 (15)
      • ►  janvier 2012 (12)
    • ►  2011 (146)
      • ►  décembre 2011 (14)
      • ►  novembre 2011 (11)
      • ►  octobre 2011 (12)
      • ►  septembre 2011 (13)
      • ►  août 2011 (15)
      • ►  juillet 2011 (17)
      • ►  juin 2011 (18)
      • ►  mai 2011 (15)
      • ►  avril 2011 (9)
      • ►  mars 2011 (7)
      • ►  février 2011 (3)
      • ►  janvier 2011 (12)
    • ►  2010 (398)
      • ►  décembre 2010 (29)
      • ►  novembre 2010 (28)
      • ►  octobre 2010 (32)
      • ►  septembre 2010 (34)
      • ►  août 2010 (22)
      • ►  juillet 2010 (35)
      • ►  juin 2010 (42)
      • ►  mai 2010 (36)
      • ►  avril 2010 (37)
      • ►  mars 2010 (34)
      • ►  février 2010 (32)
      • ►  janvier 2010 (37)
    • ►  2009 (429)
      • ►  décembre 2009 (32)
      • ►  novembre 2009 (34)
      • ►  octobre 2009 (33)
      • ►  septembre 2009 (37)
      • ►  août 2009 (37)
      • ►  juillet 2009 (39)
      • ►  juin 2009 (38)
      • ►  mai 2009 (37)
      • ►  avril 2009 (35)
      • ►  mars 2009 (36)
      • ►  février 2009 (32)
      • ►  janvier 2009 (39)
    • ►  2008 (84)
      • ►  décembre 2008 (34)
      • ►  novembre 2008 (39)
      • ►  octobre 2008 (11)

    Abonnés

Copyright © All Rights Reserved. Code 18 | Converted into Blogger Templates by Theme Craft