PROJET AUTOBLOG


Sam & Max: Python, Django, Git et du cul

Site original : Sam & Max: Python, Django, Git et du cul

⇐ retour index

Mise à jour

Mise à jour de la base de données, veuillez patienter...

Comment tailler une pipe

samedi 16 novembre 2013 à 19:54

Sur ce blog, l’article qui a le plus cartonné n’a évidement absolument rien à avec Python : c’est le tuto video sur la masturbation féminine (même celui sur la sodomie n’a pas fait mieux). En l’occurrence qui s’adresse aux mecs qui veulent prendre en main leur nana, mais qui je suis sûr a intéressé quelques femmes également. Pour la culture (du point) G.

Malgré l’abondance du matériel pornographique sur le sujet, je suis certain que de nombreuses femmes se demandent comment faire une fellation. En effet, on le souligne rarement, mais il y a autant de mauvais coups femmes que hommes, la différence majeure étant que la plupart des hommes se satisfont de relations sexuelles de piètre qualité (pour des raisons pathétiques, mais ce n’est pas le sujet de l’article).

Et dans le lot il y en a forcément qui se demandent comment changer cela. Après tout personne n’est né pour mettre la bite de quelqu’un dans sa bouche, c’est forcément une connaissance artificielle. Et puis on a un lectorat gay également, même si je doute qu’on puisse leur apprendre quoique ce soit. Pro-tip : si vous avez des amis LGB extravertis, demandez leurs des conseils, ils sont simplement meilleurs que vous au pieu.

Comme pour le cuni, il n’y a pas de méthode empaquetée, prête à être livrée, mais voici quelques points clés.

Le teaser

Je le répète souvent, le sexe est la dînette des adultes. C’est du théâtre. C’est pour le fun. Et la reproduction, mais bon, la turlute n’est pas indiquée pour ça.

La pipe n’échappe pas à cette règle, elle sera meilleur si vous jouez le jeu.

D’abord il y a le regard. Un regard sûr(e) de soi (faites semblant), coquin ou carrément cochon. Un air qui dit qu’on en a envie.

Et il y a l’approche. Pas trop rapide, un peu joueur ou alors bestial, comme vous voulez, mais faites une mise en scène, c’est plus sympa.

Encore une fois, personne ne baise 5 étoiles tous les jours, ce sont juste des conseils.

La prise en main

Le gland est sensible au début, donc la main à la base du pénis. Vous pouvez y aller fermement, la base n’est pas sensible. Les doigts autour de la verge, la paume reposant, et poussant, sur la base. Un micro mouvement de va et vient en appuyant lentement, mais avec un peu de force vers le bas peut le faire.

Évitez de remonter la main à plus de quelques centimètres du gland est le plus important au début.

Mais comme pour le broute minou, il y a beaucoup de question de goût dans tout ce que je vais dire, donc souvenez-vous que ce sont des indications pour avoir de bonnes bases, pas des recettes miracles. J’ai rencontré un suisse qui me disait une fois qu’il adorait qu’on lui fasse des genres de brûlure indienne sur la tub. Je sais, j’ai des conversations bizarres. C’était près du lac du Loch Ness, alors la bizarrerie, vous savez…

Si vous savez masturber votre partenaire, vous pouvez alterner sans problème, et même pratiquer une masturbation particulièrement forte sur la fin. Mais attention, branler un mec correctement est généralement plus difficile que de le sucer. Pour vous entraîner, faites le en étant derrière lui d’abord, votre main sera dans le bon sens de la courbure donc se sera plus facile.

La prise en bouche

Je sais qu’on voit beaucoup de pornos où la meuf s’acharnent comme une malade sur le dard de son ou ses partenaires, mais bien que ça puisse être excitant à regarder, c’est rarement aussi agréable physiquement que quelqu’un qui y va à un rythme modéré au départ.

Bien entendu, comme souvent dans le cul, on accélère sur la fin, on y va plus fort, et on peu aussi commencer en mode bête sauvage dès le début, mais c’est contextuel. Pour la plupart des cas, doucement, puis on accélère.

Le plus important est de ne pas sentir les dents et de bien lubrifier.

Ça veut dire notamment saliver abondamment sur la bite. Abondamment. Crachez dessus si c’est trop sec. Si, si. Il faut que ça soit bien mouillé.

Et gardez votre air coquin, ça aide.

Pour les dents, c’est une question d’entraînement. Une copine bi m’a dit qu’avant sa première fois avec un mec, elle n’avait eu que des nanas, et était donc un peu perdu. Elle s’est finalement entraîné sur son pouce.

C’est un très bon conseil pour les dents et la salive. Pour le mouvement et autre, non. Mais il est très facile de voir si on sent ses dents sur son propre pouce, et assez simple de s’apercevoir si ça glisse tout seul ou si c’est un peu sec.

Vous avez déjà du entendre parler ou voir du deept throat ou du bukkake, des pratiques qui consiste essentiellement à traiter la bouche de la femme comme un vagin-auto-tamponneuse. Le plaisir qui en est retiré est purement psychologique et n’apporte aucun agrément physique. Il y a en fait peu d’hommes qui aiment ça, même si ils existent. Ce n’est pas parce que ça vous excite en vidéo que vous le voulez en vrai. Donc renseignez vous avant, et dans le doute, on vit très bien sans.

Le finish

Le finish est très important. Si vous êtes en train de faire quelque chose quand il vient, il aura bien plus de plaisir si vous ne vous arrêtez pas quand il jouit. Que ça soit branler ou sucer.

Maintenant il y a des tas de meufs qui n’ont pas envie de se prendre une giclée de sperme, ce que je comprends. Demandez au mec de prévenir dans ce cas avant qu’il vienne. Si vous ne dites rien…

La finition en bouche est très agréable, et bien entendu, personne ne vous oblige à avaler. Aller cracher juste après et vous laver les dents et tout à faire normal. Refuser catégoriquement aussi :-)

Sinon, venir sur les nichons n’apporte pas de sensation en plus, mais dans la tête ça turbine, et c’est un bon compromis.

Ne vous mettez pas non plus martèle en tête. Vous lui avez sucé la bite, si en plus il se plaint que la fin lui convient pas, mettez lui un god dans le cul, ça le calmera.

Quelques exemples

Bon, tout ça c’est très théorique, mais ça donne quoi en pratique ?

Voici deux styles un peu différents, et les deux sont de bons exemples :

Et voici un exemple qui peut être excitant en vidéo, mais qui, sauf quelques exceptions (contexte, personnes, alcoolémie, phases de la lune), rend vachement moins bien IRL :

Tips

Il existe quelques moments particulièrement chouettes pour glisser une fellation. Il faut qu’elle vienne de vous dans ce cas là, mais ça fait toujours plaisir :

L’idée est que ce soit spontané et imprévu. J’ai une copine une fois qui, juste avant de partir au boulot, au lieu de m’embrasser, m’a sucé en quelques secondes, puis est partie sans dire un mot. Je m’en souviens encore.

Notez que le problème de la pipe surprise (et même sans surprise), c’est que le mec peut avoir la bite sale. Or vous n’allez pas lui demander de se la laver avant, imagez qu’il fasse ça pour un cuni…

L’astuce, c’est d’avoir des lingettes pour bébé. Bien choisir sa marque pour que le goût soit pas dégueu, ça fait briller un braquemart en 5 secondes, remplaçant l’odeur de crevette faisandée par un doux fumet de what-ever-is-inside-the-stuff.

Une fois qu’il est venu, n’hésitez pas à le nettoyer avec un mouchoir ou un lingette. C’est très agréable.

Oh, et si vous avez envie d’un massage ou d’un léchage, demandez le avant la pipe, après c’est foutu :-)

Pour finir, un petit résumé :

flattr this!

Changer la timezone sous Ubuntu Server en ligne de commande

vendredi 15 novembre 2013 à 11:28

Avoir tous ses serveur à la même heure, c’est primordial. Et cette même heure devrait toujours être UTC.

Du coup dans votre script de déploiement, n’oubliez pas de changer la timezone de la machine.

Sous Ubuntu server, ça se fait en deux lignes :

echo "UTC" | sudo tee /etc/timezone
sudo dpkg-reconfigure  --frontend noninteractive  tzdata

Si vous avez des cron, redémarrez le daemon sinon il sera toujours décalé :

sudo service cron restart

Si vous êtes du genre à aimer la précision, vous pouvez installer un daemon NTP qui permet de synchroniser l’horloge du serveur régulièrement avec un serveur distant :

sudo apt-get -y install ntp

flattr this!

map(), filter() et reduce () ?

jeudi 14 novembre 2013 à 10:44

map(), filter() et reduce() sont des fonctions de traitement d’itérables typiques de la programmation fonctionnelle, qui ont été marquées comme à retirer des builtins pour Python 3. Finalement, seule reduce() sera déplacée dans le module functools pour Python 3.

Les opérations que font ces fonctions sont typiquement quelque chose que l’ont peut faire sans elles, et nous allons les passer en revue pour voir dans quels cas elles sont pertinentes, dans quel cas une alternative est meilleure. L’alternative étant, dans 90% des cas, une liste en intention.

filter()

filter() prend une fonction en paramètre, souvent une lambda, comme ses deux soeurs puisqu’on est dans le paradigme fonctionnel. Elle doit renvoyer True si on garde un élément, et False sinon.

L’usage typique est celui-ci :

ages = range(30)
majeurs = filter(lambda x: x > 18, ages)
print(majeurs)
## [19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29]

Typiquement, ce code peut être remplacé par une liste en intention dans le pur style Python :

majeurs = [a for a in ages if a > 18]

Le code est plus court, et fait usage d’une des fonctionalités les plus importantes du langage. On peut en plus ajouter une transformation à a facilement si on le désire, au lieu de devoir coller un map() derrière.

filter() est vraiment la moins utile des 3, et sera une question de style, surtout pour les nostalgiques de Lisp. Je répète souvent que quand on code avec un autre langage, on doit essayer de se tenir au style du nouveau et pas faire un mix avec ses anciennes habitudes. Quand je code en Java, je fais des getter et setter, même si j’ai horreur de ça.

Mon conseil: oubliez filter().

map()

Si filter() est l’équivalent de la partie de droite d’une liste en intention, map() est l’équivalent de la partie de gauche. La fonction passée retourne un résultat qui permet de transformer la liste.

Typiquement :

memes = ["It's over 9000 !", "All your base are belong to us."]
print(map(unicode.upper, memes))

Ce qui peut se traduire par :

print(s.upper() for s in memes)

map() est un peu plus utile, dans le sens où sa syntaxe peut être plus concise dans certains cas, comme le casting de types. Par exemple si je reçois une heure sous forme de string :

h, m, s = map(int, '8:19:22'.split(':'))

sera plus court et plus concis, et plus clair que :

h, m, s = (int(i) for i in '8:19:22'.split(':'))

Mais bon, la différence n’est pas non plus incroyable au point d’en faire une fonctionnalitéé clé. Je l’utilise de temps à autre par soucis de brièveté, mais vraiment c’est tout.

reduce()

reduce() est plus tordu. La fonction doit prendre deux paramètres en entrée, et retourner une valeur. Au premier appel, les deux premiers éléments de l’itérable sont passés en paramètres. Ensuite, le résultat de cet appel et l’élément suivant sont passés en paramètre, et ainsi de suite.

Vous n’avez rien pigé ? C’est normal. reduce() est parfaitement cryptique. Voici ce que ça donne en pratique :

def afficher(a, b):
    print("Entrée :", a, b)
    print("Sortie :", a + b)
    return a + b
 
res = reduce(afficher, range(10))
print("Résultat final", res)
 
## Entrée : 0 1
## Sortie : 1
## Entrée : 1 2
## Sortie : 3
## Entrée : 3 3
## Sortie : 6
## Entrée : 6 4
## Sortie : 10
## Entrée : 10 5
## Sortie : 15
## Entrée : 15 6
## Sortie : 21
## Entrée : 21 7
## Sortie : 28
## Entrée : 28 8
## Sortie : 36
## Entrée : 36 9
## Sortie : 45
## Résultat final 45

Vous allez me dire, à quoi ça sert ? Et bien par exemple à appliquer des opérateurs commutatifs, ici nous l’avons fait avec +, nous avons fait la somme de tous les éléments retournés par range(10). La preuve :

print(sum(range(10)))
## 45

Il n’y a pas, en Python, de fonction équivalent à sum() pour la multiplication. Donc on ferait :

print(reduce(lambda a, b: a * b, range(1, 11)))
## 3628800

Ce qui multiplie tous les éléments entre eux. Comme l’ordre dans lequel les éléments sont multipliés n’a pas d’important (d’où le ‘commutatif’), ça fonctionne.

reduce() peut prendre un troisième paramètre, initial, qui sera la valeur passée en premier au premier appel de la fonction. Cela permet de travailler sur des calculs en cascade qui ne fonctionneraient sinon pas. Revenons à notre exemple de temps :

temps = map(int, '8:19:22'.split(':'))
print(reduce(lambda a, b: a * 60 + b, temps, 0))
## 29962

Ce qui peut se traduire par :

h, m, s = map(int, '8:19:22'.split(':'))
print(h * 3600 + m * 60 + s)
## 29962

Bien sûr, cette conversion ne fonctionnerait pas si le calcul était sur un itérable plus long. Mais une version itérative est facile à faire :

res = 0
for i in map(int, '8:19:22'.split(':')):
    res = res * 60 + i
print(res)
## 29962

Maintenant, autant les deux dernières versions sont faciles à comprendre, autant la première prend quelques secondes. Et c’est la raison pour laquelle reduce() a été retirée des builtins, pour encourager l’usage des alternatives. En effet, cette fonction donne toujours un résultat très peu lisible. Je cite et approuve Guido là dessus:

C’est en fait celle que je déteste le plus, car, à part pour quelques exemples impliquant + ou *, presque chaque fois que je vois un appel à reduce() avec une fonction non-triviale passée en argument, j’ai besoin de prendre un crayon et un papier pour faire le diagramme de ce qui est effectivement entrée dans la fonction avant que je comprenne ce qu’est supposé faire reduce(). Donc à mes yeux, l’application de reduce() est plutôt limitée à des opérateurs associatifs, et dans d’autres cas il est mieux d’écrire une boucle d’accumulation explicitement.

Graissage maison.

Bref, reduce() est dur à lire, et une boucle ne l’est pas. Écrivez 3 lignes de plus, ça ne va pas vous tuer. Relire votre one-liner dans un mois par contre…

Cette fonction a été beaucoup utilisée avec les opérateurs or et and pour savoir si tous les éléments étaient vrais au moins un élément vrai dans une liste :

tout_est_vrai = [1, 1, 1, 1]
certains_sont_vrais = [1, 0, 1, 0]
tout_est_faux = [0, 0, 0, 0]
 
# Retourne True si tout est vrai
print(bool(reduce(lambda a, b: a and b, tout_est_vrai)))
## True
print(bool(reduce(lambda a, b: a and b, certains_sont_vrais)))
## False
print(bool(reduce(lambda a, b: a and b, tout_est_faux)))
## False
 
# Retourne True si au moins un élément est vrai
print(bool(reduce(lambda a, b: a or b, tout_est_vrai)))
## True
print(bool(reduce(lambda a, b: a or b, certains_sont_vrais)))
## True
print(bool(reduce(lambda a, b: a or b, tout_est_faux)))
## False

Mais aujourd’hui, c’est parfaitement inutile puisque nous avons les fonctions built-in all() et any(), qui font ça en plus court et plus rapide :

# Retourne True si tout est vrai
print(all(tout_est_vrai))
## True
print(all(certains_sont_vrais))
## False
print(all(tout_est_faux))
## False
 
# Retourne True si au moins un élément est vrai
print(any(tout_est_vrai))
## True
print(any(certains_sont_vrais))
## True
print(any(tout_est_faux))
## False

Petite astuce finale

Souvenez-vous également que les fonctions Python peuvent être déclarées n’importe où à la volée, même dans une autre fonction, une classe, une méthode, un context manager, etc. Or une fonction peut retourner un générateur grâce à yield, ce qui vous permet de déclarer des gros bouts de logique, et de les plugger dans votre process itérative a posteriori :

def traitement_complexe(iterable):
    for x in iterable:
        if x not in (1, 3, 7) and x % 2 != 0:
            if x + x < 13 :
                yield x
            else: 
                yield x - 2
 
print("-".join(map(str, traitement_complexe(range(20)))))
## 5-7-9-11-13-15-17

flattr this!

Postez votre espace de travail !

mercredi 13 novembre 2013 à 03:46

Oui je sais vous l’avez vu 3 milliards de fois sur les forums, c’est ringard, c’est pas un article constructif mais bon tout à l’heure j’ai pris mon bureau en photo et je me suis dis que ça pouvais être marrant de voir dans quelle porcherie travaille les lecteurs de ce blog :)
D’ailleurs ça serait bien de justifier le choix de votre matos, pas juste une photo, pourquoi 8 écrans à fusion plasma ou un iCore32 à double arbre à cames, etc.

N’oubliez pas de vérifier les données EXIF de votre photo avant de poster des fois qu’il s’y trouve votre location géographique / taille d’anus / empreinte digitale fourni par aippeule et Cie ^^

Aller je me lance, Mongeois! Saint-Denis !

La téloche c'est pour LoL...

- Un ptit Mac Book Air double coeur avec 2GB de RAM et SSD. Je l’ai pris car il est vraiment compact, pour les voyages c’est top, et puis pour l’OS, y a pas à chier cet OS est formidabuleux.
- La téloche je viens de la piquer à l’hotel, résolution moyenne mais ça suffit pour les lignes de code ou y mettre les shells (et puis pour LoL que je viens de réinstaller, j’avoue…). Un peu grosse cependant je sais pas si je vais supporter.
- Souris Raser pas mal mais un peu grosse avec tapis spécial pour douleur au poignet, jamais su si c’était l’abus de souris ou de branlette.

flattr this!

Rooter son lecteur MP3 avec rockbox

mardi 12 novembre 2013 à 08:04

J’ai acheté un Sansa Clip car je cherchais un lecteur mp3 cheap, léger, avec pas mal de batterie et solide, ayant, comme Max, laissé tombé les smartphones.

Globalement j’en étais content : le joujou n’a pas besoin d’un imachin pour tourner, c’est reconnu comme clé USB. Ça lit les formats audio exotiques, ça ne pèse rien et il est déjà tombé 50 fois par terre sans broncher. Je n’ai par ailleurs toujours pas eu à le recharger.

Seulement un matin, en plein footing, monsieurs s’est mis à rebooter à chaque fois qu’il lisait une chanson de Katy Perry. Certains argueront qu’il a bon goût, mais personnellement j’aime l’avoir pour les pointes de vitesse moyennes, Dragon Force étant utilisé pour les sprints.

Bref, soft reset, hard reset, formatage de la mémoire, utilisation de SD, rien n’y fait.

Alors je me souviens de RockBox, un OS libre pour lecteur mp3. Je me dis que pour le prix, je risque pas grand chose à le flasher, une vraie brique coûterait plus cher.

Je télécharge l’installeur automatique (qui existe sous Win/Mac/Linux \o/), je branche le bousin en USB, et je root le lecteur en un clic.

Ah ! Je m’attendais à ce que ça foire moi… A devoir chercher un peu… Je sais pas, quelque chose !

Mais non, ça marche, c’est tout.

J’ai maintenant un dual boot avec l’ancien OS et Rockbox (qui se lance par défaut). Mon lecteur ne reboot plus pour rien, toutes les features d’origine sont prises en charge, avec en prime la lecture du son des vidéos (je podcast donc maintenant TED) et un son que je peux monter beaucoup plus fort.

Merveilleux.

Rien à redire.

Rien à ajouter.

flattr this!

Error happened! 0 - count(): Argument #1 ($value) must be of type Countable|array, null given In: /var/www/ecirtam.net/autoblogs/autoblogs/autoblog.php:428 http://ecirtam.net/autoblogs/autoblogs/sametmaxcom_a844ada43a979e3b1395ab9acb6afafb84340999/?127 #0 /var/www/ecirtam.net/autoblogs/autoblogs/autoblog.php(999): VroumVroum_Blog->update() #1 /var/www/ecirtam.net/autoblogs/autoblogs/sametmaxcom_a844ada43a979e3b1395ab9acb6afafb84340999/index.php(1): require_once('...') #2 {main}