Sam & Max » Web http://sametmax.com Du code, du cul Sat, 07 Nov 2015 10:56:13 +0000 en-US hourly 1 http://wordpress.org/?v=4.1 Multiboards Customizable – Le retour de la mort de la peur de mourir 18 http://sametmax.com/multiboards-customizable-le-retour-de-la-mort-de-la-peur-de-mourir/ http://sametmax.com/multiboards-customizable-le-retour-de-la-mort-de-la-peur-de-mourir/#comments Tue, 18 Aug 2015 11:46:48 +0000 http://sametmax.com/?p=16741 Pour ceux qui ont suivi la lamentable mais néanmoins poilante mise en prod de la nouvelle version buggée de MB j’ai du reporter un rendez-vous avec mon escort pour réparer le bébé.

Normalement ça devrait marcher (ça valait pas un post mais c’est pour remplir un peu plus les BAL des abonnés…)

Rendez-vous ici ou ou encore et donnez-moi vos impressions si comme moi vous n’avez pas d’ami et passez votre temps à la maison devant l’ordi au lieu de vous dorer la pilule entouré de femmes fontaines sur une île déserte.

Une source de flux RSS pas mal ici.

PS: Normalement dans l’onglet en haut à droite il devrait y avoir la liste des boards populaires, on calcule ça en fonction du nombre de visiteurs en ligne en temps réel, Sam avait fait un article dessus.

Et une bonne fin qui pourrait faire brève de comptoir:
“Tant que le board n’est pas populaire il reste anonyme” (et donc ne s’affiche pas dans l’onglet) ^^

]]>
http://sametmax.com/multiboards-customizable-le-retour-de-la-mort-de-la-peur-de-mourir/feed/ 18
Traquez les erreurs de vos apps Django avec Sentry 16 http://sametmax.com/traquez-les-erreurs-de-vos-apps-django-avec-sentry/ http://sametmax.com/traquez-les-erreurs-de-vos-apps-django-avec-sentry/#comments Wed, 26 Mar 2014 04:36:51 +0000 http://sametmax.com/?p=9944 Tout foire tout le temps. Le site (ou app) sans erreur n’existe pas. Après chaque mise à jour on croise les doigts et on espère que tout va bien se passer.
Les plus courageux auront fait des tests unitaires en amont qu’ils lanceront avant l’update, les autres comme moi vont commiter leurs changements et redémarrer le serveur prod. On est boucher de père en fils dans la famille…

Avant toute chose Sentry qui avant était un projet Django serveur/client a depuis évolué et est devenu un serveur uniquement, laissant le choix du client suivant votre framework/language de travail. Sentry est disponible sur à peu près toutes les plateformes (Python, PHP, Ruby, JavaScript, Java, Node.js, iOS) et les frameworks Rails et Django. La documentation est très fournie et le projet très actif.

Dans le cas d’un site web en général on a tellement de pages qu’on ne peut pas prédire à l’avance ce qui va foirer ou pas (mais ça foire toujours, tout foire, etc…). Même si vous avez fait les tests unitaires vous aurez forcément oublié quelque chose.

Cette page spéciale sur les nains obèses unijambistes scatophiles pour lesquels vous avez créé un tag unique et qui ne supporte pas que vous ayez changé votre mode de cache va lamentablement planter et vous priver de la fidélité de DSK sur votre site pour longtemps.

Heureusement nous allons pouvoir logger toutes ces erreurs et avoir des jolis graphiques post-mortems. Bien évidement ça va vous faire du taf en plus bande de feignasses.

Sentry vient en standalone ou en version gratuite limitée, hebergée par les créateurs.
J’ai voulu installer la standalone parceque je revenais de l’apéro et qu’au 8ème Ricard on veut tout faire soit-même mais la raison et 14heures de sommeil l’ont emporté, c’est à mon réveil que je me suis alors décidé à installer la version trial limitée à 7 jours de log et 2800 evenements loggés (qui au passage suffit sur un de nos plus gros sites).

la mise en place est vraiment des plus simples:

Créez un compte et ensuite récupérez la clef API dans les préférences sur votre compte en ligne Sentry.

Du côté de votre projet Django:

Installez Raven, qui est un client Python pour Sentry. Il va se charger de collecter vos erreurs et les transmettre à Sentry.

Comme d’habitude une bonne PIP:

  pip install raven

Dans le fichier settings.py de votre projet Django:

Utilisez la clef Api fournie par Sentry (voir plus haut)

# used for sentry login
RAVEN_CONFIG = {
    'dsn': 'https://aboudouboudousplish:aboudouboudousplash@app.getsentry.com/1984',
}

Vous pouvez faire un test pour voir si tout est bien configuré:

Dans votre projet Django tapez

python manage.py raven test

Vous devriez recevoir un email de Sentry avec le récapitulatif du test raven.


L’interface Sentry:

La liste des évènements avec possibilité de filtres.

Sur le flux vous allez avoir la liste de tous les évènements loggés, vous pouvez les trier en choisissant parmi une pléthore d’options. Vous pouvez nettoyer ce flux en un seul clic (lors d’un redémarrage de serveur vous risquez d’avoir beaucoup d’erreurs qui n’en sont en fait pas, donc inutile de les traiter).

L'évènement en détail, une clarté qui donne envie d'avoir des bugs ^^

Chaque évènement du flux a une vue détail où vous allez pouvoir tracer le bug, c’est clair et plein d’informations (un peu comme les pages de debug Django). Il y a la possibilité d’ajouter des notes, de relancer la requête afin de vérifier la correction effectuée.


Le mode Team:

Sentry vous permet de bosser en équipe, vous créez un projet, des utilisateurs et chacun peut monitorer, corriger des bugs etc (pas dispo dans la version trial). Vous pouvez aussi créer des groupes d’utilisateurs qui n’auront accès qu’à certains projets. Le côté équipe a bien été intégré. Vous saurez sur qui gueuler lorsque le bug aura été mal corrigé.

Conclusion:
Monitorer ses apps est un vrai calvaire quand on n’a pas les bons outils ou que ces derniers sont chiants à installer/maintenir.
Sentry offre deux possibilités d’installation et leur mode trial vaut vraiment le coup (gratuit je le répète), les plus courageux se farciront l’install.
Pour la version standalone j’ai lu un peu partout qu’il était préférable de l’installer sur un serveur à part, à méditer avant de se lancer. Les logs sont en temps réél, vous n’avez pas à attendre le lendemain pour savoir ce qui a planté la veille, vous pouvez donc corriger vos bugs rapidement.

Le plus gros problème de Sentry je pense c’est qu’on tombe accroc, je m’y rend désormais plusieurs fois par jour pour voir si il n’y a pas un petit bug à corriger :)

PS: je cherche l’équivalent pour monitorer les serveurs, Munin est trop vieux et tous les autres outils que j’ai pu tester demandent à installer (entendez passer des heures à compiler) toute une machinerie. L’idéal serait des paquets à installer sur les serveurs à monitorer + service en ligne à la Sentry.

]]>
http://sametmax.com/traquez-les-erreurs-de-vos-apps-django-avec-sentry/feed/ 16
Sondage! Aimeriez-vous un espace petites-annonces chez S&M ? 14 http://sametmax.com/sondage-aimeriez-vous-un-espace-petites-annonces-chez-sm/ http://sametmax.com/sondage-aimeriez-vous-un-espace-petites-annonces-chez-sm/#comments Sat, 15 Feb 2014 16:53:54 +0000 http://sametmax.com/?p=9165 Pendant que Sam vous mijotte des bons petits tutos à se lécher les babines moi je vais vour divertir un peu l’oignon avec ce petit vote.

On a quelques e-mails par mois assez surprenants, certains nous demandent si on ne veut pas bosser pour eux, d’autres veulent faire la publicité de leur app/produit, d’autres encore aimeraient nous rencontrer, voire même certaines coucher avec moi (ah non… merde)

On ne peut pas répondre favorablement à ces requêtes et c’est peut-être l’occasion de permettre à certains d’entre-vous d’échanger, vendre, se rencontrer via une sorte de pages jaunes/craiglist/ads (appelez ça comme vous voulez).

En gros des petites-annonces dans lesquelles nous définirons des catégories précises (on ne veut pas d’annonce pour vendre la recette miracle pour la repousse de la moustache).

On préfère vous demander avant car on estime que c’est une bonne chose de proposer plutôt que d’imposer. Et puis pour tâter le potentiel.

Les annonces sont bien évidement gratoches, on mettra peut-être des quotas si il y a des abus.

Quelques catégories pour donner une idée:
– Lans (parties)
– hack parties
– ventes de matos info
– trucs geek (gadgets, etc)
– demande de cours d’info
– donne des cours d’info
– donne des cours de math
– sallons info
– propositions de collaboration
– projets de conquête du monde
– demande d’aide sur des sujets particuliers
etc.

On a pas encore de liste précise des catégories mais il y a de quoi faire dans notre domaine. Si vous avez des idées quand aux catégories n’hésitez pas, balancez !

Aller, détente….

Note: There is a poll embedded within this post, please visit the site to participate in this post's poll. ]]>
http://sametmax.com/sondage-aimeriez-vous-un-espace-petites-annonces-chez-sm/feed/ 14
Utilisez-vous l’anglais pour vos recherches d’informations ? 37 http://sametmax.com/utlisez-vous-langlais-pour-vos-recherches-dinformations/ http://sametmax.com/utlisez-vous-langlais-pour-vos-recherches-dinformations/#comments Mon, 10 Feb 2014 07:22:14 +0000 http://sametmax.com/?p=9106 A l’heure où internet est l’outil quasi-indispensable pour trouver une information (technique ou de tous les jours) et où une grande partie de cette dernière est rédigé en anglais la question est:

Note: There is a poll embedded within this post, please visit the site to participate in this post's poll. ]]>
http://sametmax.com/utlisez-vous-langlais-pour-vos-recherches-dinformations/feed/ 37
Virtualenv EnvironmentError: mysql_config not found sous MAC OSX 16 http://sametmax.com/virtualenv-environmenterror-mysql_config-not-found-sous-mac-osx/ http://sametmax.com/virtualenv-environmenterror-mysql_config-not-found-sous-mac-osx/#comments Tue, 04 Feb 2014 10:56:18 +0000 http://sametmax.com/?p=8963 Comme le post précédent est inutile j’en fais un autre qui doit concerner au moins 0.00001% de la population.

A vous qui essayez depuis 2 heures de configurer MySQL-python sous votre virtualenv, cet article vous est dédié.

Cette erreur vicieuse m’arrive à chaque fois que j’installe MySQL-python dans un nouvel environnement virtuel. Ceci dit vous l’aurez peut-être sous un autre OS. Sur CentOS j’avais qu’à faire un yum install mysql-devel mais sous Mac c’est autre chose. Plus de puissance engendre plus de responsabilités…

 
Max $  pip install MySQL-python
Downloading/unpacking MySQL-python
  Downloading MySQL-python-1.2.5.zip (108Kb): 108Kb downloaded
  Running setup.py egg_info for package MySQL-python
    sh: mysql_config: command not found
    Traceback (most recent call last):
      File "<string>", line 14, in <module>
      File "/Users/Max/.virtualenvs/zooscator/build/MySQL-python/setup.py", line 17, in <module>
        metadata, options = get_config()
      File "setup_posix.py", line 43, in get_config
        libs = mysql_config("libs_r")
      File "setup_posix.py", line 25, in mysql_config
        raise EnvironmentError("%s not found" % (mysql_config.path,))
    EnvironmentError: mysql_config not found
    Complete output from command python setup.py egg_info:
    sh: mysql_config: command not found
 
Traceback (most recent call last):
 
  File "<string>", line 14, in <module>
 
  File "/Users/Max/.virtualenvs/zooscator/build/MySQL-python/setup.py", line 17, in <module>
 
    metadata, options = get_config()
 
  File "setup_posix.py", line 43, in get_config
 
    libs = mysql_config("libs_r")
 
  File "setup_posix.py", line 25, in mysql_config
 
    raise EnvironmentError("%s not found" % (mysql_config.path,))
 
EnvironmentError: mysql_config not found
 
----------------------------------------
Command python setup.py egg_info failed with error code 1
Storing complete log in /Users/Max/.pip/pip.log

Il faut éditer votre fichier activate qui se trouve dans le répertoire bin de votre environnement virtuel: ex “/Users/Max/.virtualenvs/zooscator/bin/activate”

vi /Users/Max/.virtualenvs/zooscator/bin

Trouvez les lignes suivantes et ajoutez:

PATH=”$PATH:/opt/local/lib/mysql5/bin/”

...
_OLD_VIRTUAL_PATH="$PATH"
PATH="$VIRTUAL_ENV/bin:$PATH"
PATH="$PATH:/opt/local/lib/mysql5/bin/"
export PATH
...

Chez moi le chemin vers mysql est /opt/local/lib/mysql5/bin/, si vous ne connaissez pas le vôtre utilisez la commande locate: ex locate mysql

Une fois le fichier activate édité il faut le resourcer:

source /Users/Max/.virtualenvs/zooscator/bin/activate

Et vous pourrez alors installer MySQL-python tranquillou billou:

Max $  pip install MySQL-python
 
Downloading/unpacking MySQL-python
  Running setup.py egg_info for package MySQL-python
 
Installing collected packages: MySQL-python
  Running setup.py install for MySQL-python
[....................]
Successfully installed MySQL-python
Cleaning up...

Je vais nourrir mon cochon d’Inde.

]]>
http://sametmax.com/virtualenv-environmenterror-mysql_config-not-found-sous-mac-osx/feed/ 16
Les stats Sam&Max 2013 10 http://sametmax.com/les-stats-sammax-2013/ http://sametmax.com/les-stats-sammax-2013/#comments Sat, 28 Dec 2013 13:02:23 +0000 http://sametmax.com/?p=8532 Presque 2 ans déjà que ce blog prêche la bonne parole aux brebis égarées ici bas. Comme tout webmaster qui se respecte on adore les stats alors on va se faire un petit résumé de l’année 2013 dans la joie et la bonne humeur. On avait déjà publié quelques stats ici d’ailleurs l’été dernier.

Pour info sur l’année 2012 le blog totalisait 244,183 visites.

Petit récap année 2013:

Date de création: 4 février 2012
Visites pour l’année 2013: 1,173,671
Visites depuis la création du blog: 1,417,854
Nombre de posts: 323
Nombre de commentaires: 5967

Qui nous envoi du monde ?

Search Engines 481,053
Twitter 20,139
news.humancoders.com 9,702
sebsauvage.net 8,837
Facebook 6,072
Netvibes 4,727
multiboards.net 4,465
google.fr 1,366
macg.co 1,257
search.free.fr 1,129
Google Reader 897
Google+ 837
lehollandaisvolant.net 678

Par quels mots-clefs les gens sont arrivés ici ?
(Comme il y en a trop la liste est volontairement tronquée)

masturbation feminine 19,981
masturbation féminine 8,896
fkk 6,504
masturbation 6,362
video masturbation 3,789
masturbation video 3,272
masturbation femme 2,403
maison close allemagne 2,105
freeplug 1,904
synchroniser freeplug 1,641
video masturbation feminine 1,427
masturbation feminine video 1,328
sam et max 1,197
fkk allemagne 1,118
synchronisation freeplug 965
sex japon 868
sexe japonais 813

Les posts les plus vus:

Home page / Archives 268,964
Masturbation féminine – Un peu de théorie en vidéo 160,715
Une journée dans un FKK (maison close Allemande) 65,974
Synchroniser les freeplugs (les adaptateurs réseaux CPL de free) 43,321
Les abréviations de la prostitution et des Escorts, vous connaissez ? 33,502
Les Japonais et le sexe – des gros malades… Ou pas… 17,011
Les émoticones cachées de Skype 15,244
Il ne faut pas prendre les gens pour des cons mais ne jamais oublier qu’ils en sont 14,666
10 astuces pour Sublime Text 2 12,716
Ajouter un chemin à la variable d’environnement PATH sous Windows 9,309
Les articles pour apprendre Python, dans le bon ordre :-) 8,188
Liste des plugins sublime text que j’utilise 7,514
Cours et tutos 6,415
L’encoding en Python, une bonne fois pour toute 5,532
Les environnements virtuels Python : virtualenv et virtualenvwrapper 5,423
Entreprendre en France, Autopsie d’un échec. 5,204
Bitcoin: créer un portefeuille, obtenir des bitcoins et payer 5,138
La fonction anonyme appelée immédiatement en Javascript: (function())() 4,933
Mettre la capote sans casser l’ambiance 4,333
Nos tweets 4,137
Qu’est-ce que Javascript et à quoi ça sert ? 4,073
Soyez relax, faites vous un petit Git stash 3,976
Tiens, je suis toujours sur OSX 3,891
Comment tailler une pipe 3,786
Qu’est-ce qu’on peut faire avec Python ? 3,705
Votre Python aime les pip 3,688
Qu’est-ce que bitcoin ? 3,609

Flattr nous rapporte un peu de pognon mais j’ai pas les stats actuellement (c’est sam qui tiens les bourses…). On s’en est toujours pas servi je crois d’ailleurs.

Cela nous fait quand même à peu près 1 200 000 visites dans l’année. Comprenez que des fois ce petit VPS avec 512MO de RAM que nous louons soit un peu essouflé.

Passez de bonnes fêtes ou ouvrez-vous bien les veines (toujours dans le sens des fibres)

]]>
http://sametmax.com/les-stats-sammax-2013/feed/ 10
Afficher le queryset d’une requête dans les logs SQL sous Django 2 http://sametmax.com/afficher-le-queryset-dune-requete-dans-les-logs-sql-sous-django/ http://sametmax.com/afficher-le-queryset-dune-requete-dans-les-logs-sql-sous-django/#comments Wed, 25 Dec 2013 11:38:12 +0000 http://sametmax.com/?p=8447 C’est Noël, 2 articles rien que pour vous dont un très interressant de Sam.

L’ORM de django pour les bases de données est chouette, agréable à utiliser mais construit des requêtes SQL qu’on ne peut reconnaître lors de l’analyse des logs MYSQL du premier coup d’oeil. Et quand on a des centaines de requêtes par secondes c’est carrément impossible de s’y retrouver.

Ce que je vous propose ici c’est d’afficher le queryset (sa ligne et le fichier qui le contient) qui a permit d’exêcuter la requête SQL que vous voyez défiler dans les logs SQL sous forme de commentaires SQL.

L’application se nomme Django Sql StackTrace. C’est facile à installer et ça peut sauver des heures de debug.

Installation Django Sql StackTrace:

Une bonne PIP comme toujours pour bien commencer.

pip install django-sql-stacktrace

Dans votre fichier settings de django.

INSTALLED_APPS = (
    .........................
    'sqlstacktrace',
    .........................
)
 
SQL_STACKTRACE = True

La variable SQL_STACKTRACE sert à activer le debug.
Pensez à le désactiver lorsque vous n’en avez pas besoin.

Où se trouve mes super infos de debug ?

D’après la doc vous pouvez executer un watch

watch -n1 mysqladmin -u login -pmot_de_passe processlist --verbose

Chez moi ça n’a rien donné. Mais du côté des logs MySQL la magie a opérée.
Vérifiez tout d’abord que vos logs sont activés dans mysql.

vi /etc/my.cnf
[mysqld]
......
log = /var/logs/mysql.log
......

Comment on teste ça ?

Redemarrez votre serveur web, surfez sur les pages de votre projet et observez les logs MySql. Vous deviez voir quelques chose de similaire:

tail -F /var/logs/mysql.log
		  644 Query	SELECT `auth_user`.`id`, `auth_user`.`password`, `auth_user`.`last_login`, `auth_user`.`is_superuser`, `auth_user`.`username`, `auth_user`.`first_name`, `auth_user`.`last_name`, `auth_user`.`email`, `auth_user`.`is_staff`, `auth_user`.`is_active`, `auth_user`.`date_joined` FROM `auth_user` WHERE `auth_user`.`id` = 65290
/* File "/Users/max/work/mon_projet/apps/mon_apps/views/others.py", line 146, in user_public_page
	user = User.objects.get(pk=user_id)
*/

Observez cette merveille !
Entre /* */ sont les infos générées par django-sql-stacktrace. J’ai nettoyé quelques fichiers pour plus de lisibilité.
Vous avez droit au chemin du fichier de la requête, à la ligne de la requête et à la requête django elle-même.

Une alternative ? J’ai pas envie d’installer d’app.

Pour les grosses feignasses ou si vous voulez juste tester occasionnellement quelques queries vous pouvez utiliser la méthode extra pour ajouter vos propres commentaires.

videos = Video.objects.filter(status='online').extra(where=['1=1 /* ceci apparaitra dans les logs mysql ! */'])

Cependant le WHERE 1=1 peut causer quelques baisses de performances, mais lorsqu’on est en debug en local ça peut servir !

PS: Je rappelle également le formidable outil django-debug-toolbar qui devient vite indispensable.

Alors ? Elle est pas belle la vie ?

]]>
http://sametmax.com/afficher-le-queryset-dune-requete-dans-les-logs-sql-sous-django/feed/ 2
Astuces de recherche 16 http://sametmax.com/astuces-de-recherche/ http://sametmax.com/astuces-de-recherche/#comments Wed, 27 Nov 2013 08:46:13 +0000 http://sametmax.com/?p=8115 Quand vous voulez traduire un mot compliqué d’une langue à l’autre, les outils de traduction en ligne marchent pas super bien. Une bonne solution ? Chercher le terme sur wikipedia, puis demander l’article dans une autre langue. Non seulement on a la traduction voulue dans le titre de l’article, mais en plus tout le champ lexical lié dans le corps de l’article.

Tips : la commande bang pour ddg est !wfr pour la version française de wikipédia.

Quand vous cherchez un nouveau mot à la noix comme “lulz”, un truc cochon style “bukakke” ou une abréviation obscure du genre “GTFO”, vous n’allez pas la trouver dans le dico ou sur wikipedia. La meilleure source pour ce genre de terme : urbandictionry.com. En plus, c’est drôle.

Tips : la commande bang pour ddg est !ud

Vous voulez regarder un film ou une série en VO streaming mais elle n’est pas sortie en France ? Ou alors votre connexion bride ces fournisseurs ? Ou vous avez peur de vous faire choper ?

Allez sur les sites de streaming en espangol ! Ils listent les mêmes séries, le plus souvent en VO sous-titré ES, sur des hébergeurs différents complètement hors radar de nos tristes sires français. Et en plus, il n’y a pas de limite de temps ou de débit. Exemple : seriesyonkis et peli24.

Tips : évitez les séries doublées en espagnol comme la peste. C’est HORRIBLE. Dans stargate O’Neil a la voix de Teal’c et inversement…

Vous allez sur des sites de rencontre et vous voulez évitez les faux profiles ? Clic-droit sur la photo et enregistrez l’image sur votre bureau. Allez sur Google Image, et dans le champ, cliquez sur l’appareil photo pour uploader l’image.

Vous allez très vite voir si l’image a été réutilisée.

]]>
http://sametmax.com/astuces-de-recherche/feed/ 16
Afficher l’IP d’un visiteur – Django vs Nginx 11 http://sametmax.com/afficher-la-vrai-ip-dun-visiteur-django-vs-nginx/ http://sametmax.com/afficher-la-vrai-ip-dun-visiteur-django-vs-nginx/#comments Fri, 25 Oct 2013 03:53:30 +0000 http://sametmax.com/?p=7525 Lorsque l’on veut connaitre son ip on fait souvent appel à des sites du genre: whatismyip.com, mon-ip.com ou on utilise un ifconfig en ssh.
Des fois on a aussi besoin de connaître l’ip d’un visiteur sur son site, 2 petites méthodes pour le faire sous Django et Nginx.

Sous Django:

Dans l’Urlconf

urlpatterns = patterns('',
    # return client IP
    url(r'^my_ip$', get_ip),
)

Créez une vue du nom de get_ip qui sera utilisée par l’urlconf

from django import http
 
def get_ip(request):
    """
        Vue qui retourne l'IP du client
    """
    try:
 
    	# récupère l'ip du client
        return http.HttpResponse(request.META["REMOTE_ADDR"] )
 
    except Exception, e:
        return http.HttpResponse('error %s' % e)

Le code ci-dessus peut retourner l’adresse locale (127.0.0.1) dans ce cas il faut tester l’existence de la variable HTTP_X_REAL_IP, certains serveurs web ont besoin d’être configuré.

Sous Nginx:

Dans le fichier de configuration de nginx on écrit une nouvelle location

# return client ip
location /my_ip {
    default_type 'text/plain';
    content_by_lua 'ngx.print(ngx.var.remote_addr)';
}

il suffit de se rendre à l’url http://monsite.com/my_ip pour voir s’afficher son ip. Cependant il faut avoir nginx compilé avec le module Lua ce qui peut être délicat si l’on a jamais compilé d’application.


Conclusion:

Si l’on s’en réfère aux deux exemples ci dessus on serait tenté d’utiliser Nginx car en une seule ligne tout le bazar est réglé.
Le hic c’est qu’il faut que Nginx soit compilé avec le module Lua pour afficher l’ip (sauf si quelqu’un connaît une autre façon d’afficher un message de sortie).
La version Django n’est pas fiable à 100% car suivant comment est configuré votre serveur web il se peut que vous vous retrouviez avec une ip du genre 127.0.0.1.
Il y a aussi la possibilité de parser le résultat des sites web cités en tout début d’article, certains proposent des Api je crois mais vous dépendez d’un autre service (on faisait ça au début) qui peuvent vous lâcher à tout moment (ce qui nous est arrivé).
Personnellement je compile toujours nginx avec Lua et quelques autres modules, ça permet de s’affranchir de plus en plus du backend.

PS: j’ai mis à jour le titre car il laissait sous-entendre autre chose (merci à Sébastien)

]]>
http://sametmax.com/afficher-la-vrai-ip-dun-visiteur-django-vs-nginx/feed/ 11
Télécharger les vidéos de Youtube 10 http://sametmax.com/telecharger-les-videos-de-youtube/ http://sametmax.com/telecharger-les-videos-de-youtube/#comments Wed, 02 Oct 2013 07:51:58 +0000 http://sametmax.com/?p=7251

Ceci est un post invité de Recher posté sous licence creative common 3.0 unported.

– Assistance informatique, bonjour.

– Salut les moines bouddhistes. Comment je fais pour aller sur Youtube ? Votre stupide filtre à puceaux me bloque l’accès !

– C’est lié à la politique de l’entreprise. Le site est totalement interdit.

– Mais bordel, c’est la pause de midi ! Je suis toute seule dans mon service, et je suis excitée ! Pas un seul stagiaire à me mettre sous la dent ! J’ai besoin de mes vidéos pornos ! Et quand je dis “besoin”, c’est VRAIMENT besoin !

– Veuillez m’excuser Madame, mais je ne peux rien pour vous.

– J’ai la patcholle qui palpite à la vitesse d’une levrette au galop ! C’est urgent !

– La patcholle ? Mais enfin Madame, ce mot n’existe même pas !

– Le mot n’existe peut-être pas, mais ma patcholle, elle, elle existe ! Et elle est pas loin de la combustion spontanée !

– La seule solution serait que vous achetiez des DVD, et que vous les rameniez à votre bureau. On ne contrôle que ce que vous faites sur internet, pas ce que vous visionnez en local.

– Merci pour le conseil, mon p’tit chou, j’ai tout ce qu’il faut à la maison. Mais là, c’est d’une vidéo spécifique dont j’ai envie. Celle avec le nain et les ballons de baudruche. Et elle n’est que sur Youtube !

– Vous pouvez la télécharger. Changez l’URL, ajoutez les lettres “ss” devant le mot “youtube”, sélectionnez ensuite la qualité parmi celles disponibles, et vous récupérerez le fichier sur votre disque. Par exemple : http://www.ssyoutube.com/watch?v=uSGnmCTkIfE. Avec un peu de chance, l’accès par la connexion de l’entreprise n’est même pas bloqué.

– Attendez j’essaye. Je connais l’adresse de ma vidéo par cœur. … Oh putain, ça marche ! Et ça passe même le filtre à puceaux de Youtube ! Ooouiiiii !! Va y avoir de la cyprine plein les murs !

– Cela m’a fait plaisir d’avoir pu vous aider, Madame.

– De même. Dites, pendant que ça télécharge, vous voulez pas venir me rendre visite ? On se trouverait bien quelques corpuscules de Krause avec lesquels s’occuper.

– Merci Madame, mais ça ne m’intéresse pas.

– Je vous propose du sexe gratuit et vous n’en voulez pas ? Ah d’accord, vous êtes homosexuel. J’aurais dû m’en douter, à votre petite voix fluette. De toutes façons, ils sont tous pédés dans l’informatique.

– Au contraire Madame, je suis hétérosexuelle. En revanche, je suis une femme. Bon après-midi à vous.

Sofia the Rose en secrétaire sexy

]]>
http://sametmax.com/telecharger-les-videos-de-youtube/feed/ 10