614 shaares
121 results
tagged
programming
J'aime bien ce talk :)
Je l'ai vu il y a longtemps mais je suis retombé dessus récemment ^^
Je l'ai vu il y a longtemps mais je suis retombé dessus récemment ^^
Je sens que je vais oublier ça …
"Python looks up special methods only on the class, ignoring anything defined on the instance."
"Python looks up special methods only on the class, ignoring anything defined on the instance."
Interesdasting
Ça y est, je me sers de mon shaarli pour envoyer des messages aux personnes offlines maintenant …
Désolé buddy j'avais pas vu ton message j'étais en mode veille.
Du coup, si tu (ou d'autres) sont intéressés par un projet Python, n'hésite pas à check :
https://github.com/JeromeJ/Devutopia
http://devutopia.net/
Je préviens que le design est pas encore fait :p
(Et pour la licence on va sûrement passer en CopyLeft)
(Wink, wink, les tags ;) à ta demande expresse :D)
Désolé buddy j'avais pas vu ton message j'étais en mode veille.
Du coup, si tu (ou d'autres) sont intéressés par un projet Python, n'hésite pas à check :
https://github.com/JeromeJ/Devutopia
http://devutopia.net/
Je préviens que le design est pas encore fait :p
(Et pour la licence on va sûrement passer en CopyLeft)
(Wink, wink, les tags ;) à ta demande expresse :D)
Commen j'ai pas moyen de te mailer ou autres, je poste ça ici et ptet qu'ainsi tu verras mon message.
J'ai plus simple que ce que la solution que je t'avais proposé.
À savoir, ça : [k for k in myDict if k in myOtherDict] mais avec des .keys() en plus inutile.
En fait c'était tout con, on peut faire ça :
>>> {"a":22, "b":33, "c":24}.keys() & {"a":33, "b":57, "d":78}
{'a', 'b'}
.keys() renvoit une view qui se comporte comme un set, d'où la possibilité d'utiliser l'opérateur "&" normalement propre aux sets. ( http://www.python.org/dev/peps/pep-3106/ )
Et pas vraiment besoin d'utiliser .keys sur le dico de droite (je pense pas que ça impacte les performances), le "set-like" returner par .keys() sait effectuer l'opération "&" sur un dict (car par défaut quand tu itères un dict, ça itère sur les clés, faut utiliser .items() ou .values() sinon).
(Wink, wink, les tags ;) )
J'ai plus simple que ce que la solution que je t'avais proposé.
À savoir, ça : [k for k in myDict if k in myOtherDict] mais avec des .keys() en plus inutile.
En fait c'était tout con, on peut faire ça :
>>> {"a":22, "b":33, "c":24}.keys() & {"a":33, "b":57, "d":78}
{'a', 'b'}
.keys() renvoit une view qui se comporte comme un set, d'où la possibilité d'utiliser l'opérateur "&" normalement propre aux sets. ( http://www.python.org/dev/peps/pep-3106/ )
Et pas vraiment besoin d'utiliser .keys sur le dico de droite (je pense pas que ça impacte les performances), le "set-like" returner par .keys() sait effectuer l'opération "&" sur un dict (car par défaut quand tu itères un dict, ça itère sur les clés, faut utiliser .items() ou .values() sinon).
(Wink, wink, les tags ;) )
So, what do you think? ;)
(I'd also like to bring those advantages to everybody, not only programmers and nerd ;D aha)
(I'd also like to bring those advantages to everybody, not only programmers and nerd ;D aha)
DO WANT ;D
Je veux coder en Piet !
Je veux coder en Piet !
Hop ! Je garde sous le coude !
Source: http://lehollandaisvolant.net/index.php?d=2013/09/20/22/09/18-quelques-rapides-codes-php-js-ou-html#id5ce348
Source: http://lehollandaisvolant.net/index.php?d=2013/09/20/22/09/18-quelques-rapides-codes-php-js-ou-html#id5ce348
Intéressant. Surtout lorsqu'on sait que 3/4 des flux (chiffre arbitraire) base leur Atom ID sur le permalink. Shaarli lui même fait ça.
J'avais au début penser à une simple info à rajouter dans le lien après l'ancre (avec la clé de déchiffrement) mais je pense qu'on peut mieux faire.
* En effet, voyez-vous, ça induit un problème :
Si j'envoie un lien "Burn After Reading" sur un réseau non fiable, disons par exemple Skype, mais que l'information sur quand il expire serait elle-même contenue dans l'URL.
Alors, le méchant réseau (ça pourrait très bien être chez vous, à votre boulot, etc. = tout ce qui n'est pas chiffré bout-à-bout) pourrait éventuellement récupérer cette date d'expiration et tenter de l'ouvrir juste avant expiration.
De cette manière si vous avez oublié de l'ouvrir, il peut aisément savoir le moment le plus propice pour l'ouvrir sans risquer de se faire chopper.
En effet il est très peu probable que vous parveniez à l'ouvrir entre le moment où il l'a ouvert et le moment où il a expiré, tout au plus, cela vous laisserait seulement avec un doute qu'il se peut qu'il y ait eu un lag ou que les horloges entre vous et le serveur soient un peu décalées mais qu'au final, dans tous les cas, vous êtes peut-être arrivé un peu trop tard (Fin bref ça reste quand même extrême).
* SOLUTION:
La solution serait, je pense, et afin de ne pas être obligé de garder la métadonnée (quand ce paste était censé expiré) même après suppression du contenu des pastes expiré (pour clean up) d'avoir une clée privée côté serveur et d'avoir l'information de quand le paste devait expiré chiffré dans l'URL du paste et envoyé au serveur lors de la tentative de récupération du paste. Alors, si le serveur ne peut pas servir ce paste, il déchiffre l'information stockée dans l'URL (seul lui le peut, car elle aura été chiffré par sa clé publique) et il affichera l'information.
De cette manière on garde la fonctionnalité sans donner un moyen facile pour un réseau espion d'exploiter une faille potentielle.
(Seule faiblesse que je vois c'est que la clé privée privée du serveur est unique, y aurait-il moyen de, plutôt, la lier à l'id du paste ?
Genre peut-on créer une paire de clé à partir de "salt du serveur (privé, unique) + id du past" qui servirait à chiffrer l'info de façon unique pour chaque paste ?)
* En effet, voyez-vous, ça induit un problème :
Si j'envoie un lien "Burn After Reading" sur un réseau non fiable, disons par exemple Skype, mais que l'information sur quand il expire serait elle-même contenue dans l'URL.
Alors, le méchant réseau (ça pourrait très bien être chez vous, à votre boulot, etc. = tout ce qui n'est pas chiffré bout-à-bout) pourrait éventuellement récupérer cette date d'expiration et tenter de l'ouvrir juste avant expiration.
De cette manière si vous avez oublié de l'ouvrir, il peut aisément savoir le moment le plus propice pour l'ouvrir sans risquer de se faire chopper.
En effet il est très peu probable que vous parveniez à l'ouvrir entre le moment où il l'a ouvert et le moment où il a expiré, tout au plus, cela vous laisserait seulement avec un doute qu'il se peut qu'il y ait eu un lag ou que les horloges entre vous et le serveur soient un peu décalées mais qu'au final, dans tous les cas, vous êtes peut-être arrivé un peu trop tard (Fin bref ça reste quand même extrême).
* SOLUTION:
La solution serait, je pense, et afin de ne pas être obligé de garder la métadonnée (quand ce paste était censé expiré) même après suppression du contenu des pastes expiré (pour clean up) d'avoir une clée privée côté serveur et d'avoir l'information de quand le paste devait expiré chiffré dans l'URL du paste et envoyé au serveur lors de la tentative de récupération du paste. Alors, si le serveur ne peut pas servir ce paste, il déchiffre l'information stockée dans l'URL (seul lui le peut, car elle aura été chiffré par sa clé publique) et il affichera l'information.
De cette manière on garde la fonctionnalité sans donner un moyen facile pour un réseau espion d'exploiter une faille potentielle.
(Seule faiblesse que je vois c'est que la clé privée privée du serveur est unique, y aurait-il moyen de, plutôt, la lier à l'id du paste ?
Genre peut-on créer une paire de clé à partir de "salt du serveur (privé, unique) + id du past" qui servirait à chiffrer l'info de façon unique pour chaque paste ?)
Lolilol PHP !
Ah tiens bizarre … Chez moi ça s'exécute ! T'as essayé de me hacker ? :p lol
Bizarre, bizarre. Tu as quelle version de PHP ? Un gestionnaire d'erreur personnalisé ?
Moi j'ai 5.5 …
EDIT: À moins que là tu l'aies fait sur une donnée sanitized ?
EDIT: Apparemment Bronco aurait un ptit plugin en local qui le protège :p ahaha
Bizarre, bizarre. Tu as quelle version de PHP ? Un gestionnaire d'erreur personnalisé ?
Moi j'ai 5.5 …
EDIT: À moins que là tu l'aies fait sur une donnée sanitized ?
EDIT: Apparemment Bronco aurait un ptit plugin en local qui le protège :p ahaha
Allez ! On continue dans notre série "PHP c'est vraiment n'importe quoi !".
#poop, une faille XSS built-in. Une !
Afficher les erreurs en prod, c'est mal ? Non, c'est bien pire que ça ! C'est exposer son site à des failles XSS. Enjoy cette merde.
Pfff
https://bugs.php.net/bug.php?id=55139
Et évidemment, le plus beau c'est qu'ils ne veulent pas réparer ça, c'est pas un bug selon eux.
Si tu affiches les erreurs, alors tu renonces à la sécurité, selon eux.
(Ça leur fendrait trop le cul d'ajouter un htmlspeacialchars ? Genre …)
Bon, ok, on peut log les erreurs même en dev, mais de là à être obligé (faut-il encore le savoir que c'est dangereux à ce point)…
Même en dev, je pourrais extraire des données utilisateur d'un site externe et me faire piéger par un beau script JavaScript.
Bande de cons. -.-
#poop, une faille XSS built-in. Une !
Afficher les erreurs en prod, c'est mal ? Non, c'est bien pire que ça ! C'est exposer son site à des failles XSS. Enjoy cette merde.
Pfff
https://bugs.php.net/bug.php?id=55139
Et évidemment, le plus beau c'est qu'ils ne veulent pas réparer ça, c'est pas un bug selon eux.
Si tu affiches les erreurs, alors tu renonces à la sécurité, selon eux.
(Ça leur fendrait trop le cul d'ajouter un htmlspeacialchars ? Genre …)
Bon, ok, on peut log les erreurs même en dev, mais de là à être obligé (faut-il encore le savoir que c'est dangereux à ce point)…
Même en dev, je pourrais extraire des données utilisateur d'un site externe et me faire piéger par un beau script JavaScript.
Bande de cons. -.-
Au delà de la thématique de WSGI et, d'ici, l'introduction de WSGI Lite, il y a de chouettes information pour ceux, qui comme moi ignorait ces choses là, dans cet article.
Il parle notamment de The Game Theory, il évoque l'expression bikeshedding et le point de Schelling. Je vous invite à lire l'article et/ou aller sur Wikipédia pour vous renseigner sur ces termes que j'ai personnellement trouvés enrichissants.
"something to collaborate on, instead of something to compete over."
Il parle notamment de The Game Theory, il évoque l'expression bikeshedding et le point de Schelling. Je vous invite à lire l'article et/ou aller sur Wikipédia pour vous renseigner sur ces termes que j'ai personnellement trouvés enrichissants.
"something to collaborate on, instead of something to compete over."
Ce n'est pas où je veux en venir mais, c'est de ma faute, j'ai volontairement peu dit dans mon message initiale pour voir si des gens seraient intéressés par l'idée dans un premier temps :) puis j'ai discuté avec eux.
Mon cher ami,
Le Web le sera. Il se doit de l'être, de franchir le cap.
Tu n'as hélas sûrement pas vu ces _success stories_ similaires mais pas aussi ambitieuses. Il y a beaucoup d'espoir.
Ça pourrait changer le monde.
Le Web passera par là, avec ou sans moi, il n'a plus le choix.
Alors, tâchons juste d'aider son accomplissement comme il se doit, faisons en sorte que ça soit beau, et ooh ça le sera.
Merci pour les liens. (J'viens de finir de re-re-regarder Cyrano de Bergerac - cela explique peut-être ma plume)
Le Web le sera. Il se doit de l'être, de franchir le cap.
Tu n'as hélas sûrement pas vu ces _success stories_ similaires mais pas aussi ambitieuses. Il y a beaucoup d'espoir.
Ça pourrait changer le monde.
Le Web passera par là, avec ou sans moi, il n'a plus le choix.
Alors, tâchons juste d'aider son accomplissement comme il se doit, faisons en sorte que ça soit beau, et ooh ça le sera.
Merci pour les liens. (J'viens de finir de re-re-regarder Cyrano de Bergerac - cela explique peut-être ma plume)
Mais ils se foutent de la gueule du monde ou quoi ? Des décisions comme ça, ça me fait vraiment vraiment peur :(
J'peux plus juste désactiver l'anti-clic droit (et on peut uniquement désactiver tout le javascript via la console et si on a au moins la version 24, perso j'ai l'a 23 et il me dit que je suis à jour), pourquoi est-ce que ces options de bases ne sont plus disponibles à tout le monde ? C'est vrai quoi merde ! Une fonctionnalité aussi nulle, chiante et stupide ne devrait même pas exister.
(EDIT: on peut faire ça pour désactiver le JS manuellement dans Firefox 23 http://www.computertechtips.net/32/re-enable-firefoxs-aboutconfig-warning-message/)
Où est-ce qu'on se plaint ?
Faut être nombreux à se plaindre, sinon ils vont laisser passer ça … raaaah!
J'peux plus juste désactiver l'anti-clic droit (et on peut uniquement désactiver tout le javascript via la console et si on a au moins la version 24, perso j'ai l'a 23 et il me dit que je suis à jour), pourquoi est-ce que ces options de bases ne sont plus disponibles à tout le monde ? C'est vrai quoi merde ! Une fonctionnalité aussi nulle, chiante et stupide ne devrait même pas exister.
(EDIT: on peut faire ça pour désactiver le JS manuellement dans Firefox 23 http://www.computertechtips.net/32/re-enable-firefoxs-aboutconfig-warning-message/)
Où est-ce qu'on se plaint ?
Faut être nombreux à se plaindre, sinon ils vont laisser passer ça … raaaah!
Personnes intéressées pour rendre les avantages des systèmes décentralisés en informatique accessibles à tout le monde ? :D
Anyone interested to give to everyone the advantages of decentralized systems (especially in the programming world, for instance like git, …)?
Contact-me ^-^
Anyone interested to give to everyone the advantages of decentralized systems (especially in the programming world, for instance like git, …)?
Contact-me ^-^
Mais c'est génial :DDDD
Je me demandais pourquoi mon tableau ne voulait pas remplir l'espace qui lui était réservé et ce malgré le fait que j'ai bien préciser que sa hauteur soit de 100% à lui et tous ses parents.
Ce que j'ignorais c'est que dans ce cas-ci, vu que je ne voulais pas qu'il remplisse un conteneur mais bien body lui même (c'est son conteneur), je devais alors également préciser que body a une taille de 100% AINSI que la balise html. Et ça je l'ignorais. Et ça sauve ma journée. Génial.
Je me demandais pourquoi mon tableau ne voulait pas remplir l'espace qui lui était réservé et ce malgré le fait que j'ai bien préciser que sa hauteur soit de 100% à lui et tous ses parents.
Ce que j'ignorais c'est que dans ce cas-ci, vu que je ne voulais pas qu'il remplisse un conteneur mais bien body lui même (c'est son conteneur), je devais alors également préciser que body a une taille de 100% AINSI que la balise html. Et ça je l'ignorais. Et ça sauve ma journée. Génial.
Plein de chouettes conseils ☺
Notamment, le debug mode pour les REGEX que j'ignorais. Really neat. (J'espère ne pas l'oublier celui là :p)
Dommage que la question soit fermées, certaines réponses auraient, je trouve, méritées des commentaires ou éditions.
EDIT: Woah, y a carrément 7 pages Oo
Je n'avais jamais vu ça, c'est excellent : http://stackoverflow.com/a/4602518/1524913
>>> first,second,*rest = (1,2,3,4,5,6,7,8)
>>> first
1
>>> second
2
>>> rest
[3, 4, 5, 6, 7, 8]
Et
>>> first,*rest,last = (1,2,3,4,5,6,7,8)
>>> first
1
>>> rest
[2, 3, 4, 5, 6, 7]
>>> last
8
Notamment, le debug mode pour les REGEX que j'ignorais. Really neat. (J'espère ne pas l'oublier celui là :p)
Dommage que la question soit fermées, certaines réponses auraient, je trouve, méritées des commentaires ou éditions.
EDIT: Woah, y a carrément 7 pages Oo
Je n'avais jamais vu ça, c'est excellent : http://stackoverflow.com/a/4602518/1524913
>>> first,second,*rest = (1,2,3,4,5,6,7,8)
>>> first
1
>>> second
2
>>> rest
[3, 4, 5, 6, 7, 8]
Et
>>> first,*rest,last = (1,2,3,4,5,6,7,8)
>>> first
1
>>> rest
[2, 3, 4, 5, 6, 7]
>>> last
8