PROJET AUTOBLOG


Sam et Max

source: Sam et Max

⇐ retour index

La galère pour configurer un email chez Opéra!

lundi 1 avril 2013 à 12:05

La page d’intro semblait avenante, se disait simple, mais non, Opéra fait du grand n’importe quoi à l’instar des autres service de mail. Plus c’est compliqué, plus ça leur plait…

En me levant ce matin, plutôt de bonne hummeur je me suis dit que j’allais tester Opéra Mail, d’autant que sam avait fait un article dessus.

Bon d’accord j’y go!

(Attention SVP placez-vous dans l’esprit de quelqu’un qui n’a pas envie de chercher, 99% des utilisateurs internet, je veux un e-mail, pas me marrier)

Premiere page déjà ça coince!
https://mail.opera.com/

Je clique où? je fais quoi? Il m’a fallut 10 secondes et du hasard pour percuter qu’il fallait cliquer sur le bouton bleu sans entrer quoique ce soit dans le champs e-mail à côté.
Ben oui si y a un champs c’est qu’il faut le remplir! si je clique sans remplir il va y avoir une erreur je vais perdre ma page, etc, souvenez-vous).

Bon passons, j’arrive sur la page où je dois rentrer….un e-mail… Je suis fatigué…
Je viens pour avoir un e-mail il faut que je donne mon e-mail, ça continue….

Admettons…

Je m’enregistre et là je reçois un email de bienvenue, bla bla… C’est cool sauf que voilà cet email est un email de confirmation avec pas moins de … 7 liens !
Comme un bourrin je clique sur le premiere lien “before getting started activate your account”…

J’arrive sur une page internet avec mon compte opéra activé, c’est beau ! Comme en 1996 au début du net, les fonts, les icônes, les coueleurs, tout est là pour rappeler le bon vieux temps du 8 bits…

Bon je m’en fiche un peu car en fait je veux pas de leur portail, je veux juste un email.
Ha au fait je vous l’ai dit ? Vous êtes automatiquement ajouté à leur réseaux social, forum, blog, etc…

Bon je cherche les infos pour mon email, et… Y en a PAS!
Il y en a JUSTE PAS !
Dans votre compte opéra ne cherchez pas d’infos sur votre email il n’y en a pas !
Il faut retourner dans l’email de confirmation, et cliquer sur un des 7 (nains) liens celui-là : https://mail.opera.com/mail/
Et ouiii il fallait suivre voyons !

donc j’arrive enfin sur ma boite email (la vrai) et j’ai un joli message qui m’attends:

à  pol_pot1925

Bonjour !

Bienvenue à My Opera Mail. Nous vous offrons un accès sécurisé, efficace et facile à utiliser à vos emails sur presque n’importe quel type d’appareil. Que vous naviguiez sur un PC ou sur un téléphone avec Opera Mini, allez à https://mail.opera.com/. Vous pouvez aussi connecter vos autres comptes emails pour lire tout votre courrier à un seul endroit. Il suffit d’entrer vos adresses et mots de passe dans les réglages du compte, et nous nous occuperons du reste.

Si vous préférez utiliser un client email dédie, comme celui intégré à Opera, vous pouvez vous connecter à votre compte en utilisant ces réglages :

Serveur IMAP : imap.myopera.com port 993 (SSL uniquement)
Serveur SMTP : smtp.myopera.com port 465 (SSL uniquement) ou 587 (STARTTLS uniquement)

Ouf voilà les infos pour configurer mon client e-mail. Je rentre tout ça et ça marche pas, en fait j’avais mis mon user mais sans l’adresse, je vous rappelle qu’à AUCUN MOMENT OPERA NE VOUS DONNE VOTRE ADRESSE EMAIL.
Il faut la deviner ! C’est le jeu ma pauvre lucette. Heureusement on peu l’aperçevoir timidement en haut à droite de vote interface web mail.opera.com.

En gros j’ai passé 30 minutes à créer un email et configurer ce dernier dans mon client mail. Sous Gmail c’est tout aussi chiant je vous rassure mais avec le temps je connais le chemin.

Bref c’est pas demain la veille qu’on aura des trucs simples à configurer pour communiquer…

PS: je vous ai épargné la config des serveurs sur le client mail avec smpt ou imap à choisir, qui dans le mode des humains normaux connait la différence ? On ne devrait même pas avoir à configurer ça…

C’était mon coup de geule du lundi, à vous Cognac Jay

flattr this!

Initiation à Varnish – Accélerer un blog WordPress

dimanche 31 mars 2013 à 10:54

Varnish est un service qui permet de mettre en cache (sur disque ou en mémoire) certains contenus de votre site. Beaucoup de gros sites l’utilise pour sa puissance et ses options de configuration.
Il est plutôt facile à installer mais ça se corse lorsqu’il faut le configurer car il peut ne rien cacher du tout, surtout avec la config par défaut.

Nous allons voir ici une configuration pour un site sous WordPress avec un serveur Nginx, Varnish étant placé en Front c’est à dire devant Nginx (il y a aussi le mode sandwich Nginx / Varnish / Backend).

Installation de Varnish sous ubuntu:

sudo apt-get install varnish

Il y a 2 fichiers qu’il faut retenir pour Varnish, le fichier avec les règles et le fichier de config du service.

Configurer le service, On va faire en sorte que Varnish écoute sur le port 80:

vi /etc/default/varnish
DAEMON_OPTS="-a :80 \
             -T localhost:6082 \
             -f /etc/varnish/default.vcl \
             -S /etc/varnish/secret \
             -s malloc,256m"

Trouvez cette ligne dans le fichier de conf et mettez 80 pour l’option -a.
malloc va sauver le cache en mémoire à hauteur de 256 MB, on peut sauvegarder sur disque si on a un SSD (ex: -s file,/var/lib/varnish/varnish_storage.bin,1G”).

Configurer les règles de cache:

vi /etc/varnish/default.vcl
#
# Varnish 3 configuration for Wordpress
#
# On Debian OS:  /etc/varnish/default.vcl
#
# Nicolas Hennion (aka) Nicolargo
#
 
# Set the default backend (Nginx server for me)
backend default {
	# My Nginx server listen on IP address 127.0.0.1 and TCP port 8080
	.host = "127.0.0.1";
	.port = "8080";
	# Increase guru timeout
	# http://vincentfretin.ecreall.com/articles/varnish-guru-meditation-on-timeout
	.first_byte_timeout = 300s;
}
 
# This function is used when a request is send by a HTTP client (Browser) 
sub vcl_recv {
	# Block the forbidden IP addresse
	if (client.ip ~ forbidden) {
        	error 403 "Forbidden";
	}
 
	# Only cache the following sites
	if ((req.http.host ~ "(sametmax.com)")) { 
		set req.backend = default; 
	} else { 
		return (pass); 
	}
 
	# Normalize the header, remove the port (in case you're testing this on various TCP ports)
	set req.http.Host = regsub(req.http.Host, ":[0-9]+", "");
 
	# Post requests will not be cached
	if (req.http.Authorization || req.request == "POST") {
		return (pass);
	}
 
	# --- Wordpress specific configuration
 
	# Did not cache the RSS feed
	if (req.url ~ "/feed") {
		return (pass);
	}
 
	# Blitz hack
        if (req.url ~ "/mu-.*") {
                return (pass);
        }
 
 
	# Did not cache the admin and login pages
	if (req.url ~ "/wp-(login|admin)") {
		return (pass);
	}
 
	# Remove the "has_js" cookie
	set req.http.Cookie = regsuball(req.http.Cookie, "has_js=[^;]+(; )?", "");
 
	# Remove any Google Analytics based cookies
	set req.http.Cookie = regsuball(req.http.Cookie, "__utm.=[^;]+(; )?", "");
 
	# Remove the Quant Capital cookies (added by some plugin, all __qca)
	set req.http.Cookie = regsuball(req.http.Cookie, "__qc.=[^;]+(; )?", "");
 
	# Remove the wp-settings-1 cookie
	set req.http.Cookie = regsuball(req.http.Cookie, "wp-settings-1=[^;]+(; )?", "");
 
	# Remove the wp-settings-time-1 cookie
	set req.http.Cookie = regsuball(req.http.Cookie, "wp-settings-time-1=[^;]+(; )?", "");
 
	# Remove the wp test cookie
	set req.http.Cookie = regsuball(req.http.Cookie, "wordpress_test_cookie=[^;]+(; )?", "");
 
	# Are there cookies left with only spaces or that are empty?
	if (req.http.cookie ~ "^ *$") {
		    unset req.http.cookie;
	}
 
	# Cache the following files extensions 
	if (req.url ~ "\.(css|js|png|gif|jp(e)?g|swf|ico)") {
		unset req.http.cookie;
	}
 
	# Normalize Accept-Encoding header and compression
	# https://www.varnish-cache.org/docs/3.0/tutorial/vary.html
	if (req.http.Accept-Encoding) {
		# Do no compress compressed files...
		if (req.url ~ "\.(jpg|png|gif|gz|tgz|bz2|tbz|mp3|ogg)$") {
			   	remove req.http.Accept-Encoding;
		} elsif (req.http.Accept-Encoding ~ "gzip") {
		    	set req.http.Accept-Encoding = "gzip";
		} elsif (req.http.Accept-Encoding ~ "deflate") {
		    	set req.http.Accept-Encoding = "deflate";
		} else {
			remove req.http.Accept-Encoding;
		}
	}
 
	# Check the cookies for wordpress-specific items
	if (req.http.Cookie ~ "wordpress_" || req.http.Cookie ~ "comment_") {
		return (pass);
	}
	if (!req.http.cookie) {
		unset req.http.cookie;
	}
 
	# --- End of Wordpress specific configuration
 
	# Did not cache HTTP authentication and HTTP Cookie
	if (req.http.Authorization || req.http.Cookie) {
		# Not cacheable by default
		return (pass);
	}
 
	# Define the default grace period to serve cached content
	set req.grace = 30s;
 
	# Cache all others requests
	return (lookup);
}
 
sub vcl_pipe {
	return (pipe);
}
 
sub vcl_pass {
	return (pass);
}
 
# The data on which the hashing will take place
sub vcl_hash {
 	hash_data(req.url);
 	if (req.http.host) {
     	hash_data(req.http.host);
 	} else {
     	hash_data(server.ip);
 	}
 
	# If the client supports compression, keep that in a different cache
    	if (req.http.Accept-Encoding) {
        	hash_data(req.http.Accept-Encoding);
	}
 
	return (hash);
}
 
# This function is used when a request is sent by our backend (Nginx server)
sub vcl_fetch {
	# Remove some headers we never want to see
	unset beresp.http.Server;
	unset beresp.http.X-Powered-By;
 
	# For static content strip all backend cookies
	if (req.url ~ "\.(css|js|png|gif|jp(e?)g)|swf|ico") {
		unset beresp.http.cookie;
	}
 
	# Only allow cookies to be set if we're in admin area
	if (beresp.http.Set-Cookie && req.url !~ "^/wp-(login|admin)") {
        	unset beresp.http.Set-Cookie;
    	}
 
	# don't cache response to posted requests or those with basic auth
	if ( req.request == "POST" || req.http.Authorization ) {
        	return (hit_for_pass);
    	}
 
    	# don't cache search results
	if ( req.url ~ "\?s=" ){
		return (hit_for_pass);
	}
 
	# only cache status ok
	if ( beresp.status != 200 ) {
		return (hit_for_pass);
	}
 
	# A TTL of 24h
	set beresp.ttl = 24h;
 
	return (deliver);
}
 
# The routine when we deliver the HTTP request to the user
# Last chance to modify headers that are sent to the client
sub vcl_deliver {
	if (obj.hits > 0) { 
		set resp.http.X-Cache = "cached";
	} else {
		set resp.http.x-Cache = "uncached";
	}
 
	# Remove some headers: PHP version
	unset resp.http.X-Powered-By;
 
	# Remove some headers: Apache version & OS
	unset resp.http.Server;
 
	# Remove some heanders: Varnish
	unset resp.http.Via;
	unset resp.http.X-Varnish;
 
	return (deliver);
}
 
sub vcl_init {
 	return (ok);
}
 
sub vcl_fini {
 	return (ok);
}

Avant toute chose voici la doc :) : https://www.varnish-cache.org/docs/3.0/
Ce qu’il faut retenir de ce fichier de règle c’est les parties normalisation, enlever les cookies inutiles (car si cookie alors pas de cache) et ne pas mettre en cache l’admin. Cette config tourne actuellement sur S&M.

Un point interressant c’est le debug, vous pouvez mettre un set resp.http.X-Cache = “cached”; et vérifier les header de votre serveur dans le debug de votre navigateur pour savoir si oui ou non la page servit est en cache.

L’admin varnish en ligne de commande:
Varnish possède une admin en ligne de commande où l’on peut par exemple purger le cache d’une ou plusieurs pages.
Tapez varnishadm dans le shell:

varnishadm
200        
-----------------------------
Varnish Cache CLI 1.0
-----------------------------
Linux,3.2.0-25-virtual,x86_64,-smalloc,-smalloc,-hcritbit
 
Type 'help' for command list.
Type 'quit' to close CLI session.
 
varnish> ban.url /toto/ma-page.php

Pour purger une page on va utiliser la commande ban.url et y ajouter une partie de l’url à purger. On peut utiliser un ban en appelant également une url de purge avec Curl ou Wget pour les automations, il y a un excellent article sur la purge ici.

Configurer Nginx:
Une fois varnish installé, on va modifier un peu nginx pour que la liaison puisse se faire. Ci-dessous l’exemple de notre conf nginx.

 
server {
    listen      8080;
    server_name  sametmax.com  ;
    root         /unrep/sametmax/;  # absolute path to your WordPress installation
    index index.php index.html;
    set_real_ip_from        127.0.0.1;
    real_ip_header          X-Forwarded-For;
 
    location ~ \.php$ {
        include        /etc/nginx/fastcgi_params;
        fastcgi_pass   127.0.0.1:53217;
        fastcgi_index index.php;
        fastcgi_buffers 8 16k;
        fastcgi_buffer_size 32k;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    }

Pour PHP on utilise spawn-fcgi que l’on gère avec supervisor dont voici la conf dans /etc/supervisord.conf

[program:php5-cgi]
command=/usr/local/bin/spawn-fcgi -u adolf -n -a 127.0.0.1 -p 53217 -P /tmp/fastcgi-php.pid -F 4 -- /usr/bin/php-cgi
redirect_stderr=true          ; redirect proc stderr to stdout (default false)
user=sametmax
autostart=true
autorestart=true
startsecs=10
startretries=9999999999999
stdout_logfile=/var/log/php5-cgi/php5-cgi.log
stdout_logfile_maxbytes=10MB   ; max # logfile bytes b4 rotation (default 50MB)

Pour résumer:

Dans cette configuration Varnish est en front end et va décider quand servir une page prise dans le cache (disque dur ou RAM) et quand intéroger le backend pour servir une nouvelle page.
Sur d’autres sites à fort trafic on a mis Nginx en front end car il encaisse beaucoup plus les hits et qu’il fait très bien le boulot pour servir des pages statiques.

Attention!
Même si Varnish n’est pas compliqué à installer il peut être un vrai casse tête quand il s’agit de cacher des pages. Pensez donc bien à normaliser vos headers (user-agent, gzip, etc), utilisez le debug.
Bien configuré Varnish vous booste un serveur avec une réélle efficacité, il nous a sauvé 2 sites jusqu’à présent, ça sera d’ailleurs un standard sur nos prochains sites.

flattr this!

De l’inutilité de <dl>

samedi 30 mars 2013 à 19:28

Sémantiquement c’est génial :

<dl>
<dt>Couleurs disponibles :</dt>
<dd>Bleue</dd>
<dd>Rouge</dd>
<dt>Pas de RAM</dt>
<dt>Pays : </dt>
<dd>France</dd>
<dd>Espagne</dd>
<dd>Wonderland</dd>
</dl>

On peut faire une liste avec des sortes de titres, et on sait que les éléments de la liste sont liés par leur titre.

Sauf que :

Bref, la definition list est la balise la plus inutile de tous les temps. J’ai essayé de l’utiliser dans un millions de cas de figure, au final un <ul> avec un <strong> et un <span> dans le <li> ou des <div> pour les gros morceaux sont toujours plus facile à style. Les développeurs front end peuvent se mettre la sémantique au cul.

flattr this!

10 sites Web découverts au cours de l’année passée

vendredi 29 mars 2013 à 10:43

Les sites vont et viennent, et ces 12 derniers mois j’ai fais beaucoup moins de découvertes qu’avant alors que l’information n’a jamais autant circulé. Preuve s’il en est besoin que la quantité du contenu a aujourd’hui largement dépassé la capacité des humains à le traiter et qu’il est de plus en plus difficile de se faire sa place en tant que petit nouveau. Internet mute, d’un outil de bidouilleurs passionnés vers un torrent de bits de moins en moins démocratique. C’est triste, mais dans le lot on trouve toujours quelques perles.

Imgur

Trop de temps perdu sur Stumble Uppon. Alors j’ai arrêté. Puis sur 4chan, alors j’ai arrêté. Puis sur Reddit. Alors j’ai arrêté. Maintenant je perds mon temps sur Imgur.

C’est un simple site de partages d’images sur lequel on peut naviguer paresseusement au clavier. On enchaine les choses belles, drôles, curieuses, inutiles… On y retrouve le meilleur de reddit et 4chan, ainsi que des meme inédits, et des commentaires funs.  La communauté est une des plus sympathiques que je connaisse, drôle, pertinente, et globalement bienveillante.

Ce site est un pot de nutella.

Covoiturage.fr

Un site ergonomique, rapide et efficace pour trouver des covoiturages dans toutes la France et les pays limitrophes. Sa force est qu’il arrive à cumuler une simplicité d’utilisation, un grand nombre d’utilisateurs et un certains sérieux : ils ont réussit à rendre payant ce qui était avant gratuit. Chapeau, car je suis heureux de payer.

Le système de réputation, de question / réponse et d’alertes SMS et vraiment rassurant. Si vous voulez traverser le pays pour la moitié du prix d’un billet de train, c’est top.

Bitcoin.de

[Insérer cliché sur la fiabilité allemande ici]

Avant j’utilisais bitmarket.eu pour acheter et vendre des bitcoins. Mais ça c’était avant.

C’était avant que le mec de bitmarket joue avec l’argent de ses utilisateurs et perdent tout. Ce sera jamais que le 5eme site de ce genre à se vautrer. J’ai eu de la chance car je ne laisse jamais de crédit sur ces sites, mais faites gaffe quand vous les utiliser.

Bref, le nouvel outil que j’utilise est bitcoin.de (le btc  est à 80 euros l’unité à l’heure où j’écris ce post, alors c’est un peu la folie sur les exchanges en ce moment) et après 3 ventes, aucun problème. Je recommande. Jusqu’au prochain incident :-)

Memrize

Apprenez quelque chose de nouveau chaque jour. C’est leur slogan.

Memrize vous donne une liste de sujets (les langues, l’histoire, etc) et vous permet de chaque jour travailler quelques minutes dessus. C’est ludique. C’est facile. C’est pas intrusif. L’idée est excellente.

Spamgourmet

J’en ai parlé plus en détails ici donc je ne vais pas me répéter. C’est une bonne solution antispam. Point. Merci Sebsauvage pour me l’avoir fait découvrir.

Le blog de l’odieux connard

Il y a peu de choses qui me font rire tout seul devant mon écran. Bashfr. Le joueur du grenier. Et aussi l’odieux connard.

Hilarant, intelligent, impertinent, l’auteur maitrise l’art délicat du sarcarsme vulgo-classe et de la parodie critique avec goût.

Rire et réfléchir en même temps, c’est si rare. C’est si bon.

Seriesyonki

Je parles parfaitement anglais, et les sous-titres, c’est pour les pédés. Alors je regarde toutes les séries sur des tubes sud américains qui ont les derniers épisodes de tout, en VO, sous-titré espagnol. Pas de censure, pas de bridage. La belle vie.

Hushmail

Opera est un très bon fournisseur de mail généraliste. En parallèle, on peut utiliser Hushmail qui lui fournit des boîtes mails dont le contenu est chiffré côté client. Alors évidement, ça veut dire pas de recherche dans vos mails à la Gmail, mais ça veut aussi dire des communications sûres, sans avoir à installer GPG et tout le toutim.

Slideshare

Uploadez un PDF, un ODS ou un PPT, et boum, vous avez une présentation en ligne embedable. Chouette.

JsFiddle

Quand on veut montrer un bout de JS + HTML + CSS à quelqu’un, ce service est 100 fois mieux qu’un pastebin. Parce qu’il vous montre les résultats en temps réels. Parce que les snippets sont modifiables. Par qu’on peut faire un embed. Et aussi parce que le nom du site rime avec noodle.

flattr this!

Listerine rime avec Cyprine

jeudi 28 mars 2013 à 17:04

L’expérience de mainte fleurs léchées,
Laisse penser le coquin tendre,
Qu’il a fait le tour du sujet,
Que rien ne pourra le surprendre.

Mais c’est au détour d’un voyage,
Accompagné de pairs moins verts,
Qu’il bénéficia du partage,
De cette sagesse décrite en vers.

Il n’est nul doute que les muqueuses,
Perméables, intimement enlacées,
Laissent passer des choses douteuses,
Pour chaque minou bien chouchouté.

Un mal de gorges, une irritation,
Un aphte ou bien d’autres maux,
Peuvent résulter de la passion,
D’une langue et d’un mignon clito.

Aussi avant et après l’action,
Si vous ne pouvez prendre une douche,
Une alternative solution,
Est un rapide bain de bouche.

L’haleine fraiche et mentholée,
Et l’assurance d’un baisé sain,
Vous assurera une soirée,
Enjouée jusqu’au petit matin.

Multipliez les partenaires,
Vous n’avez plus rien à craindre,
De ces plaisirs éphémères,
Que de les entendre geindre.

N’oubliez pas cependant,
N’abusez pas de la potion magique,
Qui abreuvera chacune des dents,
De sa puissance antiseptique.

La délicate faune buccale,
Est en effet bien maltraitée,
Par chaque gorgée qui dévale,
Les rigoles de votre dentier.

flattr this!