1311 private links
Analyse intéressante, dont la conclusion est que les DNS Google ne sont pas particulièrement plus rapides, et qu'on peut lire beaucoup de conneries un peu partout.
Bon par contre, il y a d'autres solutions que OpenDNS/Orange qui font du filtrage DNS, et Google qui fait du beurre sur vos infos perso.
J'utilise deux serveurs du projet OpenNIC, ça fonctionne très bien, pas de filtrage et normalement pas de logs.
Jeu de stratégie en temps réel multijoueur en HTML5 assez bien fichu.
Je me suis fait rétamer, mais si j'ai bien compris :
- vous avez une croissance de « soldats » sur une case chaque seconde.
- plus vous possédez de cases, plus vous gagnez de soldats.
- il en faut plus que les autres pour les écrabouiller.
Oksana Sevastidi, une vendeuse ambulante âgée alors de de 38 ans résidant à Sotchi, écrit à un ami géorgien qu’elle vient de voir passer un train chargé de tanks se dirigeant vers l’Abkhazie. Le mois suivant, une guerre éclair entre la Géorgie et la Russie débouche sur une déroute géorgienne et une quasi-annexion des deux régions par Moscou.
Sept ans plus tard, Sevastidi est arrêtée par le FSB (ex-KGB) et condamnée dans le plus grand secret à sept ans de prison le 3 mars 2016. L’affaire fait surface aujourd’hui après que les proches de Sevastidi se sont décidés à contacter des ONG russes.
Chiffrez. Maintenant.
This “props vs. state” question is pretty common for new React devs - they look so similar, but are used differently. So what’s going on there?
Un juge espagnol a demandé à 12 journaux européens de cesser de publier sur les "Football leaks"- des informations sur un réseau de fraude fiscale dans le milieu du football professionnel.
Normal.
Bolloré applique sa méthode habituelle. Il s'incruste petit à petit jusqu'à devenir majoritaire.
Après je ne vais pas pleurer sur la perte d'autonomie et de « création artistique » d'Ubisoft, dont le motto est d'user des franchises vieilles comme le monde jusqu'à la corde.
(Bon OK, Child of Light était génial, mais ça reste l'exception).
Petite réflexion sur la sécurité des objets connectés. Ils sont de plus en plus nombreux, généralement peu sécurisé, et de toute façon presque jamais mis à jour, etc.
Le problème se pose quand il s'agit d'objets critiques, comme une voiture, un ascenseur d'hôpital, etc.
J'ai fait une grosse erreur de conception sur un projet sur lequel je bosse actuellement. Je partage donc dans le cas où certains bossent ou ont l'intention de bosser sur une application utilisant OAuth.
J'autorise deux modes d'authentification :
client_credentials
: c'est l'application qui s'authentifie avec son ID et sa clé secrète.authorization_code
: un peu à la Twitter, c'est l'utilisateur qui autorise le service être attaché à son compte.
Je suis parti du principe que le client était unique, et lui aie rattaché un certain nombre de données utilisateurs. Sauf que dans le cas d'une authentification par authorization_code
, tous les utilisateurs utilisant le même client se partagent l'identifiant du client (c'est logique, quand on y pense), et il n'est donc en aucun cas unique pour un utilisateur !
Bingo, revue du modèle de données et quelques jours de réécriture de code.
Timezone, DST, et companie.
J'ai eu quelques soucis avec Travis CI pour des tests de bout en bout d'un outil qui manipule des images en PHP.
En gros, j'ai :
- un dossier avec des images attendues
- un dossier avec les images sources
- des tests unitaires qui passent les images sources dans la moulinette, et s'assurent qu'elles ressortent identiques aux images attendues.
Tout marchait bien en local, mais lors de l'exécution des tests Travis, toutes les images étaient différentes. À l’œil nu, c'était bien les même, mais les binaires n'étaient pas identiques.
Il s'avère qu'il suffit d'avoir une version légèrement différente de php-gd
pour que les images générées soient différentes, par exemple une amélioration de l'encodage. Merci cet article du blog de Piwik pour m'avoir mis sur la piste.
De fait, la solution est assez simple : recréer à la volée les images attendues avec PHP GD (et donc la même version que celle utilisée par la moulinette). Attention, il faut bien ré-utiliser toutes les fonctions utilisée dans la manipulation des images pour arriver au bon résultat.
En bonus, un petit snippet :
/**
* Duplicate expected images using the current GD version.
*
* Different versions of GD will result in slightly different images,
* which would make the comparaison test fail. By regenerating expected thumbs,
* the expected and actual result should be the same.
*
* @param string $image relative path of the expected thumb inside the expected thumb directory.
* @param bool $crop Set to true to apply the crop function.
*
* @throws \Exception couldn't create the image.
*/
public function regenerate($image, $crop = false)
{
$targetFolder = dirname(self::$regenerated . $image);
if (! is_dir($targetFolder)) {
mkdir($targetFolder, 0755, true);
}
$content = file_get_contents(self::$expected . $image);
$sourceImg = @imagecreatefromstring($content);
$width = imagesx($sourceImg);
$height = imagesy($sourceImg);
$targetImg = imagecreatetruecolor($width, $height);
if (! imagecopyresized(
$targetImg, $sourceImg,
0, 0, 0, 0,
$width, $height, $width, $height
)
) {
@imagedestroy($sourceImg);
@imagedestroy($targetImg);
throw new \Exception('Could not generate the expected image from source image.');
}
if ($crop) {
$targetImg = imagecrop($targetImg, [
'x' => 0,
'y' => 0,
'width' => $width,
'height' => $height
]);
}
$target = self::$regenerated . $image;
imagedestroy($sourceImg);
imagepng($targetImg, $target);
imagedestroy($targetImg);
}
J'ai écrit un plugin pour Shaarli qui permet de publier automatiquement ses shaares vers Twitter.
Je ne l'ai pas mis dans le repo principal, parce que c'est un peu galère à configurer (il faut un numéro de téléphone, 4 tokens...), et que je m'appuie sur un wrapper tiers de l'API Twitter, mais n'hésitez pas à l'utiliser si ça vous intéresse.
J'en ai profité pour mettre à jour mon thème avec Shaarli v0.8.0: https://github.com/ArthurHoaro/shaarli-launch
WOT est compromis, merde.
Il y a quelques jours, j'ai vu ça passer : https://twitter.com/mightyshakerjnr/status/793454101774360576
L'extension Chrome Chromebleed compte 130k utilisateurs, et certains ont proposé $13.000/mois à son auteur pour profiter de sa base utilisateur. Alors, pour WOT avec ses millions d'utilisateurs, je suis certain qu'il y a un très gros chèque qui se cache derrière. Tout le monde a un prix, je suppose...
Container is a small but powerful dependency injection container that allows you to decouple components in your application in order to write clean and testable code.
C'est bon à savoir. La fonction uniqid()
de PHP s'appuie sur l'heure. Pour éviter les collisions, elle met donc le thread en pause avec une microseconde (usleep(1)). Si vous savez un peu comment fonctionne un CPU, ça peut en fait être un peu plus, en fonction de sa fréquence, ce qu'il fait à côté, etc. Du coup, dans une boucle, une pause de ce genre peut commencer à avoir un impact non négligeable sur les performances.
Conclusion, il faut toujours appeler cette fonction avec le paramètre $more_entropy
pour éviter de passer par cette pause.
Avis aux amateurs.
Il n'y a pas d'ancre, mais au milieu de la page il y a la liste des flags utilisés pour l'URL Rewriting Apache, que je galère à retrouver chaque fois que j'en ai besoin.
Je suis assez surpris : plus de la moitié des bénéfices d'Amazon proviennent du cloud AWS, $718m au deuxième trimestre, contre $567m pour le reste. Alors qu'AWS ne représente que 10% de leur chiffre d'affaire.
La construction d'une page, étape par étape, pour apprendre le web design. J'ai survolé le contenu, mais j'aime bien le format.
Un groupe de hacker a réussi à avoir un contrôle distant complet sur les serveurs Pornhub en découvrant deux failles 0-day sur PHP ; sachant que c'est un secteur qui ne lésine pas sur la sécurité vu que la concurrence n'est pas toujours très réglo.
Pour résumer :
Ils ont découvert qu'il était possible de définir un cookie, qui fait appel à la fonction PHP unserialize()
, via une simple requête. À partir de là, ils ont utilisé un fuzzer pour détecter d'éventuelles anomalies dans le comportement de unserialize()
. Ils en ont trouvé et, suite à analyse, ils ont découvert un bug dans l'algorithme du garbage collector de PHP.
Ce bug, appelée faille « use-after-free » (utilisation de la mémoire après qu'elle soit libérée), leur a permis d'exécuter du code à distance directement sur le serveur, via des techniques de manipulation de mémoire auxquelles je ne comprends pas tout. Et résultat des courses, ils ont pu faire un dump complet de la base de données et accès au code source de pornhub.
Sacrément balaise ! Ils ont bien mérité leur prime de $20.000.
C'était en juin, vérifiez que vos versions de PHP sont à jour.
via http://lehollandaisvolant.net/?id=20160725122057 - Rien à voir avec la gestion des fichiers par contre.