614 shaares
121 results
tagged
programming
Tiens, je connaissais pas, c'est marrant cette notation :)
print('\N{left-pointing double angle quotation mark}') # Output: «
Et pour avoir le nom d'un caractère :
import unicodedata
print(unicodedata.name('«')) # Output: LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
print('\N{left-pointing double angle quotation mark}') # Output: «
Et pour avoir le nom d'un caractère :
import unicodedata
print(unicodedata.name('«')) # Output: LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
Why?! Seriously guys…
So this is an piece of my code :
messages = {'chooseYourLang': {'fr': 'Saisis {} pour le français.', 'en': 'Type {} for the English.'}}
langs = ('fr', 'en')
# This…
for n, (code, msg) in enumerate(messages['chooseYourLang'].items(), 1):
print('{}. [{}] {}'.format(n, code.upper(), msg.format(n)))
# Always become that!!
print('\n'.join('{}. [{}] {}'.format(n, lang.upper(), messages['chooseYourLang'][lang].format(n)) for n, lang in enumerate(langs, 1)))
# I just wanted to have it always in this order (fr then en) without needing to use collections.OrderedDict
Fine for me though (more or less)…
So I guess my answer to my own question could be "Just cause I can!" but I don't know… It -always- just happens suddenly, without a warning. Weird.
Do you understand me? Do you share this with me? Am I alone on this planet? Why are we? Who am I? Maybe I should take a break :D
So this is an piece of my code :
messages = {'chooseYourLang': {'fr': 'Saisis {} pour le français.', 'en': 'Type {} for the English.'}}
langs = ('fr', 'en')
# This…
for n, (code, msg) in enumerate(messages['chooseYourLang'].items(), 1):
print('{}. [{}] {}'.format(n, code.upper(), msg.format(n)))
# Always become that!!
print('\n'.join('{}. [{}] {}'.format(n, lang.upper(), messages['chooseYourLang'][lang].format(n)) for n, lang in enumerate(langs, 1)))
# I just wanted to have it always in this order (fr then en) without needing to use collections.OrderedDict
Fine for me though (more or less)…
So I guess my answer to my own question could be "Just cause I can!" but I don't know… It -always- just happens suddenly, without a warning. Weird.
Do you understand me? Do you share this with me? Am I alone on this planet? Why are we? Who am I? Maybe I should take a break :D
Bon, sûrement peu d'entres vous en auront besoin un jour mais sait-on jamais :) je partage !
Personnellement, ça m'arrive encore assez bien souvent de m'endormir sur une musique de relaxation pour m'aider mais une fois n'est pas coutume, la musique que je voulais écouter était un flux continu (radio en ligne) donc VLC ne se serait jamais arrêté et mon PC ne ce serait jamais mis en veille, il aurait continué à chanter toute la nuit en utilisant ma bande passante pour rien qui plus est :p
La version actuelle est pour Windows seulement mais je sais de fait que faire la version Linux (ou carrément directement multiplateforme) serait un jeu d'enfant.
Personnellement, ça m'arrive encore assez bien souvent de m'endormir sur une musique de relaxation pour m'aider mais une fois n'est pas coutume, la musique que je voulais écouter était un flux continu (radio en ligne) donc VLC ne se serait jamais arrêté et mon PC ne ce serait jamais mis en veille, il aurait continué à chanter toute la nuit en utilisant ma bande passante pour rien qui plus est :p
La version actuelle est pour Windows seulement mais je sais de fait que faire la version Linux (ou carrément directement multiplateforme) serait un jeu d'enfant.
Very usefull PHP hacksheet!
Ça serait bien si pour certains astuces il pouvait donner la source :/
Un truc sympa avec la boucle for :
Au lieu de sortir le compteur de la boucle, sortez le juste de la condition.
Donc au lieu de passez de :
for($i = 0; $i < count($array); $i++)
À :
$count = count($array);
for($i = 0; $i < $count; $i++)
Faites plutôt :
for($i = 0, $count = count($array); $i < $count; $i++)
Beaucoup ignorent qu'on peut initialiser plusieurs variables dans la boucle for :)
Un truc sympa avec la boucle for :
Au lieu de sortir le compteur de la boucle, sortez le juste de la condition.
Donc au lieu de passez de :
for($i = 0; $i < count($array); $i++)
À :
$count = count($array);
for($i = 0; $i < $count; $i++)
Faites plutôt :
for($i = 0, $count = count($array); $i < $count; $i++)
Beaucoup ignorent qu'on peut initialiser plusieurs variables dans la boucle for :)
Ah pas mal, j'ignorais cette histoire de wrapper avec file_get/put_contents :)
"file_put_contents("compress.zlib://$filename", $content); # Écrire et compresser en une ligne
$content = file_get_contents("compress.zlib://$filename"); # Lire un fichier compressé en une ligne"
Thanks
Tiens c'est où sur la doc ? :(
EDIT: Trouvé : http://www.php.net/manual/en/wrappers.php (pas très clair je trouve)
"file_put_contents("compress.zlib://$filename", $content); # Écrire et compresser en une ligne
$content = file_get_contents("compress.zlib://$filename"); # Lire un fichier compressé en une ligne"
Thanks
Tiens c'est où sur la doc ? :(
EDIT: Trouvé : http://www.php.net/manual/en/wrappers.php (pas très clair je trouve)
Aaah, l'optimisation ^^
On devrait en parler plus souvent pour tout un tas de raison :x
Que ça soit à propos de la vrai optimisation de certaines codes :p (#troll (et #pas-troll en même temps))
Mais autant de l'optimisation elle-même. Car elle n'est plus anodine. C'est un champ d'étude complet, avec ses avantages et désavantages. C'pas juste une finalité :| … Ou une excuse !
Très chouette article de notre amis Bronco :D Yeay
"Thx a lot mon pote !" :P
On devrait en parler plus souvent pour tout un tas de raison :x
Que ça soit à propos de la vrai optimisation de certaines codes :p (#troll (et #pas-troll en même temps))
Mais autant de l'optimisation elle-même. Car elle n'est plus anodine. C'est un champ d'étude complet, avec ses avantages et désavantages. C'pas juste une finalité :| … Ou une excuse !
Très chouette article de notre amis Bronco :D Yeay
"Thx a lot mon pote !" :P
Fulltextrssfeed vous connaissez ?
C'est un chouette service qui permet de transformer vos RSS "tronqués" en leur version complète :) Très pratique surtout lorsque l'admin du site ne répond pas à vos demandes par email ^^'
Mais voilà, les malotrus ont décidé de ne pas respecter leur neutralité et de modifier légèrement de façon subreptice le flux rss "complet" qu'ils nous renvoient en y introduisant un tracker >:(
Alors certes, il existe sûrement des alternatives (que je vais devoir trouvé, car, en plus de ça, ils invalident le flux RSS et, même si d'habitudes ça ne pose pas problème, KrISS, quant à lui ne supporte les flux non conformes (et il a raison !! http://tontof.net/?2013/03/22/10/13/16-mise-a-jour-kriss-feed-passe-deja-en-version-6 ))
… mais vu que créer un ptit script pour enlever le tracker fut très facile à mettre en place, je vous livre donc le code :) ou vous pouvez aussi directement utiliser ma version online (mais je ne promet pas qu'elle restera disponible, voilà pourquoi je vous donne le code en plus ^^)
C'est un chouette service qui permet de transformer vos RSS "tronqués" en leur version complète :) Très pratique surtout lorsque l'admin du site ne répond pas à vos demandes par email ^^'
Mais voilà, les malotrus ont décidé de ne pas respecter leur neutralité et de modifier légèrement de façon subreptice le flux rss "complet" qu'ils nous renvoient en y introduisant un tracker >:(
Alors certes, il existe sûrement des alternatives (que je vais devoir trouvé, car, en plus de ça, ils invalident le flux RSS et, même si d'habitudes ça ne pose pas problème, KrISS, quant à lui ne supporte les flux non conformes (et il a raison !! http://tontof.net/?2013/03/22/10/13/16-mise-a-jour-kriss-feed-passe-deja-en-version-6 ))
… mais vu que créer un ptit script pour enlever le tracker fut très facile à mettre en place, je vous livre donc le code :) ou vous pouvez aussi directement utiliser ma version online (mais je ne promet pas qu'elle restera disponible, voilà pourquoi je vous donne le code en plus ^^)
"Faire mumuse avec un langage sans installer son runtime ou son compilateur ? C'est possible !" - sebsauvage
Wow j'aime beaucoup :o
Miam, miam, miam :D
(via http://sebsauvage.net/links/?Gczvlw )
Wow j'aime beaucoup :o
Miam, miam, miam :D
(via http://sebsauvage.net/links/?Gczvlw )
Ouais mais y a une raison au fait que Cryptocat "impose" l'utilisation d'une extension.
Du moins, voilà ce que je comprend de la chose : ça permet entre autre, d'éviter, par exemple, une attaque DNS ou au cas où le serveur principal serait corrompu.
D'ailleurs, ça me fait penser que de pouvoir une version locale de zerobin serait chouette :) qui enverrait à un serveur distant de notre choix (ça a ptet déjà été proposé ? Faudrait que je jette un oeil ^^). En ayant l'appli à domicile - un simple .html suffirait non ? (avec un peu de js dedans) - je suis sûr que l'hôte zerobin ne peut corrompre l'application client, et que même si l'hébergeur est corrompu, il ne recevra que des données encryptées.
Mais, en même temps, je suis bien d'accord avec toi, je vois où le bat blesse mais … selon moi c'est un mal nécessaire. C'est juste dommage qu'on doit en arriver là et perdre en accessibilité pour, pour une fois, un peu plus de sécurité (le seul moyen restant pour que l'app client soit corrompue est d'être hacké personnellement).
PS: J'utilise Cryptocat tous les jours :DD
Du moins, voilà ce que je comprend de la chose : ça permet entre autre, d'éviter, par exemple, une attaque DNS ou au cas où le serveur principal serait corrompu.
D'ailleurs, ça me fait penser que de pouvoir une version locale de zerobin serait chouette :) qui enverrait à un serveur distant de notre choix (ça a ptet déjà été proposé ? Faudrait que je jette un oeil ^^). En ayant l'appli à domicile - un simple .html suffirait non ? (avec un peu de js dedans) - je suis sûr que l'hôte zerobin ne peut corrompre l'application client, et que même si l'hébergeur est corrompu, il ne recevra que des données encryptées.
Mais, en même temps, je suis bien d'accord avec toi, je vois où le bat blesse mais … selon moi c'est un mal nécessaire. C'est juste dommage qu'on doit en arriver là et perdre en accessibilité pour, pour une fois, un peu plus de sécurité (le seul moyen restant pour que l'app client soit corrompue est d'être hacké personnellement).
PS: J'utilise Cryptocat tous les jours :DD
(Suite de mon précédent shaarlink)
En faite, Il existe bien des techniques pour créer des "Décorateurs" en PHP (aka surcharger une fonction) à base de POO mais … meh, j'accroche pas perso, j'trouve ça lourd.
http://www.croes.org/gerald/blog/le-decorateur-decorator-en-php/44/
https://fr.wikipedia.org/wiki/D%C3%A9corateur_%28patron_de_conception%29#Exemple_en_PHP
(merci à debetux pour les liens, je ne sais plus si tu as un site ou un blog l'ami ?)
En faite, mon but initiale était de tenter d'adapter une app (KrISS) sans aller modifier son code. Charger son code, puis le mien afin de modifier dynamiquement ce dont j'aurais besoin.
En espérant que cela minifierait la quantité de modifications manuelles requise à chaque update.
Timo m'a répondu qu'il existait bien quelques fonctions PHP pour faire ce que je cherchais mais à cela je rétorquerais qu'il y a un manque d’inter-portabilité car ce ne sont malheureusement pas des fonctions standards en PHP :/ ce qui nécessite donc un module. (Le shaarlink de Timo: http://lehollandaisvolant.net/index.php?mode=links&id=20130327133011 d'ailleurs reshaarlinker par sebsauvage http://sebsauvage.net/links/?rpwfvg :))
Il me resterait bien la solution que je voulais éviter de modifier le code via une petite regex:
<?php
$newFunc = 'function troll()
{
# Do some weird stuff ꔆ
old_troll(); # Calling the old troll
}';
# La nouvelle fonction peut-être déclarée avant l'ancienne et la nouvelle peut quand même référencer l'ancienne sans problème BECAUSE PHP!! OK? Faut bien que PHP ait quelques avantages #PHP_troll_forever
file_put_contents($_SERVER['DOCUMENT_ROOT'].'/originalCode.php', str_replace('function troll(', $newFunc."\n".'function old_troll(', file_get_contentst($_SERVER['DOCUMENT_ROOT'].'/originalCode.php')));
?>
Désolé, j'aime les longues lignes, ça va pour la lecture ??
Je pense que ça serait sûrement la solution la plus simple à mettre en place sans devoir ennuyer le développeur pour adapter son code :/
En faite, Il existe bien des techniques pour créer des "Décorateurs" en PHP (aka surcharger une fonction) à base de POO mais … meh, j'accroche pas perso, j'trouve ça lourd.
http://www.croes.org/gerald/blog/le-decorateur-decorator-en-php/44/
https://fr.wikipedia.org/wiki/D%C3%A9corateur_%28patron_de_conception%29#Exemple_en_PHP
(merci à debetux pour les liens, je ne sais plus si tu as un site ou un blog l'ami ?)
En faite, mon but initiale était de tenter d'adapter une app (KrISS) sans aller modifier son code. Charger son code, puis le mien afin de modifier dynamiquement ce dont j'aurais besoin.
En espérant que cela minifierait la quantité de modifications manuelles requise à chaque update.
Timo m'a répondu qu'il existait bien quelques fonctions PHP pour faire ce que je cherchais mais à cela je rétorquerais qu'il y a un manque d’inter-portabilité car ce ne sont malheureusement pas des fonctions standards en PHP :/ ce qui nécessite donc un module. (Le shaarlink de Timo: http://lehollandaisvolant.net/index.php?mode=links&id=20130327133011 d'ailleurs reshaarlinker par sebsauvage http://sebsauvage.net/links/?rpwfvg :))
Il me resterait bien la solution que je voulais éviter de modifier le code via une petite regex:
<?php
$newFunc = 'function troll()
{
# Do some weird stuff ꔆ
old_troll(); # Calling the old troll
}';
# La nouvelle fonction peut-être déclarée avant l'ancienne et la nouvelle peut quand même référencer l'ancienne sans problème BECAUSE PHP!! OK? Faut bien que PHP ait quelques avantages #PHP_troll_forever
file_put_contents($_SERVER['DOCUMENT_ROOT'].'/originalCode.php', str_replace('function troll(', $newFunc."\n".'function old_troll(', file_get_contentst($_SERVER['DOCUMENT_ROOT'].'/originalCode.php')));
?>
Désolé, j'aime les longues lignes, ça va pour la lecture ??
Je pense que ça serait sûrement la solution la plus simple à mettre en place sans devoir ennuyer le développeur pour adapter son code :/
-.- En Python, c'est super simple :/
En PHP faudrait que chaque fonction soit référencée dans un array du style array('functionName' => 'functionName'); mais j'ignore quel serait l'impact sur les performances :/
Et quand bien même, ça a encore des limitations.
En Python:
L'application:
def a():
pass
# And you can call it normally
Le patch:
def a():
# Do some more stuff
a() # Then call "a" normally
(C'est le principe d'un décorateur quoi, mais je pourrais aussi simplement remplacer la fonction sans appeler l'ancienne fonction)
En PHP:
function lol()
{
}
$functions = array('lol' => 'lol');
# And you call it using $functions['lol']();
Le patch:
$functions['lol'] = function() use($functions)
{
static $lol;
if($lol === null) $lol = $functions['lol'];
# Do some more stuff …
$lol();
};
# To call it, it's the same than before $functions['lol']();
EDIT: Il existe bien des techniques pour créer des "Décorateurs" en PHP (aka surcharger une fonction) (à base de POO) mais ... meh. J'accroche pas perso, j'trouve ça lourd.
En PHP faudrait que chaque fonction soit référencée dans un array du style array('functionName' => 'functionName'); mais j'ignore quel serait l'impact sur les performances :/
Et quand bien même, ça a encore des limitations.
En Python:
L'application:
def a():
pass
# And you can call it normally
Le patch:
def a():
# Do some more stuff
a() # Then call "a" normally
(C'est le principe d'un décorateur quoi, mais je pourrais aussi simplement remplacer la fonction sans appeler l'ancienne fonction)
En PHP:
function lol()
{
}
$functions = array('lol' => 'lol');
# And you call it using $functions['lol']();
Le patch:
$functions['lol'] = function() use($functions)
{
static $lol;
if($lol === null) $lol = $functions['lol'];
# Do some more stuff …
$lol();
};
# To call it, it's the same than before $functions['lol']();
EDIT: Il existe bien des techniques pour créer des "Décorateurs" en PHP (aka surcharger une fonction) (à base de POO) mais ... meh. J'accroche pas perso, j'trouve ça lourd.
Hop, juste histoire de me garder ça sous la main si jamais j'en ai besoin.
Et je vais remettre le commentaire de sebsauvage à propos de ce lien ici afin que si jamais je (ou vous) fais une recherche avec les bons mots, vous tombiez aussi sur ce lien :)
" En php, pour l'upload de fichiers vous êtes soumis aux paramètres de votre hébergement (upload_max_filesize et post_max_size). Mais si vous n'êtes pas maître du serveur, vous ne pouvez peut-être pas les modifier.
A défaut, vous pouvez utiliser ces libs qui permettent l'upload de fichier de manière pratiquement illimitée, en procédant par morceaux (chunks), mais de manière transparente pour l'utilisateur. Elles sont constituées d'une lib javascript et d'un bout de php côté serveur.
https://code.google.com/p/ax-jquery-multiuploader/
http://www.plupload.com/ (https://github.com/moxiecode/plupload) "
Et je vais remettre le commentaire de sebsauvage à propos de ce lien ici afin que si jamais je (ou vous) fais une recherche avec les bons mots, vous tombiez aussi sur ce lien :)
" En php, pour l'upload de fichiers vous êtes soumis aux paramètres de votre hébergement (upload_max_filesize et post_max_size). Mais si vous n'êtes pas maître du serveur, vous ne pouvez peut-être pas les modifier.
A défaut, vous pouvez utiliser ces libs qui permettent l'upload de fichier de manière pratiquement illimitée, en procédant par morceaux (chunks), mais de manière transparente pour l'utilisateur. Elles sont constituées d'une lib javascript et d'un bout de php côté serveur.
https://code.google.com/p/ax-jquery-multiuploader/
http://www.plupload.com/ (https://github.com/moxiecode/plupload) "
Wow, les REGEX (en plus de pouvoir être très casse-têtes) peuvent être très puissantes :o
Ici, par exemple les regex récursives (dont j'ignorais l'existence jusqu'à aujourd'hui) combinées à d'autres astuces permettent d'émuler un script permettant de détecter les palindromes (mots qui se lisent dans les 2 sens), c'est impressionnant Oo
Mais bon, les techniques regex puissantes et méconnues sont nombreuses (parmi les plus pratiques: les lookarounds, les conditional subpatterns, …).
Ce blog est vraiment chouette pour vous apprendre plein de choses ± poussées sur les REGEX: http://www.asiteaboutnothing.net/regex/
Ici, par exemple les regex récursives (dont j'ignorais l'existence jusqu'à aujourd'hui) combinées à d'autres astuces permettent d'émuler un script permettant de détecter les palindromes (mots qui se lisent dans les 2 sens), c'est impressionnant Oo
Mais bon, les techniques regex puissantes et méconnues sont nombreuses (parmi les plus pratiques: les lookarounds, les conditional subpatterns, …).
Ce blog est vraiment chouette pour vous apprendre plein de choses ± poussées sur les REGEX: http://www.asiteaboutnothing.net/regex/
Un captcha "morale" :o Il vous pose une question "morale" (dénonçant souvent quelque chose se passant dans le monde) et vous demande ce que ça vous fait éprouver. Pas mal comme idée :)
Ça changerait du captcha à la con de Google (dont j'ai bien envie de me débarrasser). Malheureusement ce n'est qu'en anglais pour le moment :/
Et de toutes façons, dans un cas comme dans l'autre va aussi falloir qu'on se build une alternative locale (simple et pas "spéciale") pour ne plus dépendre de sites externes. Si jamais ils tombent ou arrêtent leurs services, on serait bien bien embêté :x
Ça changerait du captcha à la con de Google (dont j'ai bien envie de me débarrasser). Malheureusement ce n'est qu'en anglais pour le moment :/
Et de toutes façons, dans un cas comme dans l'autre va aussi falloir qu'on se build une alternative locale (simple et pas "spéciale") pour ne plus dépendre de sites externes. Si jamais ils tombent ou arrêtent leurs services, on serait bien bien embêté :x
Haha gotta love this thing !
J'adore :)
J'adore :)
Une liste de quelques exercices (à difficulté croissante) pour s'entrainer à Python (+ liste de liens externes connu ou non, tels que le projet Euler)
Article intéressant sur un ensemble de méthodes pour débogue/test un programme avant realese (en anglais)
Site qui propose de dire quelle fonction utiliser en Python à partir d'une fonction PHP.
Le concept est juste sensationnel :)
Le concept est juste sensationnel :)
Magnifique wiki très complet et pratique.