Journal
Ce journal contient 23 entrées.

UserAgentString.com - List of User Agent Strings
Liste d'User-Agent par navigateur. Je n'aurais pas imaginé qu'il puisse en exister autant.
Voir aussi le délirant historique des User-Agent: http://webaim.org/blog/user-agent-string-history

Voir aussi le délirant historique des User-Agent: http://webaim.org/blog/user-agent-string-history
EE Times - 10 FPGA Design Techniques You Should Know
"There are a number of universal design techniques with which FPGA engineers should be familiar -- here are some of the most important."
A lire, ne serait-ce que par curiosité ;)

A lire, ne serait-ce que par curiosité ;)
Blue-Green Deployment
Le déploiement bleu-vert est une technique classique pour déployer une nouvelle version d'un serveur en évitant une interruption de service.
A noter: les tenants de cette technique passent souvent sous silence les problèmes de synchronisation entre les bases de données bleue et verte. La solution la plus radicale consiste à interdire les écritures, pour ne pas avoir à gérer la synchronisation. Ce n'est pas forcément idéal en pratique.
Si l'on souhaite conserver les écritures, alors deux cas se posent:
- le schéma de la base verte est le même que celui de la base bleu : il suffit que le système vert réplique les écritures dans les deux bases.
- le schéma de la base verte est différent de celui de la base bleu : il faut s'assurer que le système vert soit rétro-compatible avec la base bleue, pour pouvoir répliquer les écritures.
Voir aussi: https://www.rainforestqa.com/blog/2014-06-27-zero-downtime-database-migrations/

A noter: les tenants de cette technique passent souvent sous silence les problèmes de synchronisation entre les bases de données bleue et verte. La solution la plus radicale consiste à interdire les écritures, pour ne pas avoir à gérer la synchronisation. Ce n'est pas forcément idéal en pratique.
Si l'on souhaite conserver les écritures, alors deux cas se posent:
- le schéma de la base verte est le même que celui de la base bleu : il suffit que le système vert réplique les écritures dans les deux bases.
- le schéma de la base verte est différent de celui de la base bleu : il faut s'assurer que le système vert soit rétro-compatible avec la base bleue, pour pouvoir répliquer les écritures.
Voir aussi: https://www.rainforestqa.com/blog/2014-06-27-zero-downtime-database-migrations/
Colorful Image Colorization
Cette technique de recolorisation d'image donne des résultats impressionnants

Loading models - Vulkan Tutorial
Vulkan (précedemment connu sous le nom d'OpenGL Next) est une interface de programmation graphique destinée à remplacer OpenGL. Plus moderne et plus efficace, il vise à unifier les versions mobiles (OpenGL ES) et bureau (OpenGL).
Je m'y suis mis pour tester, et c'est clairement un gros dépoussiérage d'OpenGL. Tout est plus clair (simplification), plus direct (suppression des fonctionnalités obsolètes ou redondantes), etc.

Je m'y suis mis pour tester, et c'est clairement un gros dépoussiérage d'OpenGL. Tout est plus clair (simplification), plus direct (suppression des fonctionnalités obsolètes ou redondantes), etc.
Seamless Cloning using OpenCV ( Python , C++ ) | Learn OpenCV
Utilisation du Seamless Clone d'OpenCV pour fusionner deux images.

Face Swap using OpenCV ( C++ / Python ) | Learn OpenCV
Je me suis mis à OpenCV récemment pour développer un outil de redimensionnement d'image avec détection de visage. J'en parlerais peut être dans le blog technique, vu que j'ai rencontré pas mal de soucis avec sa compilation et son binding JNI.
Bref, je suis tombé sur cet article décrivant comment faire du "face swapping" avec la librairie.

Bref, je suis tombé sur cet article décrivant comment faire du "face swapping" avec la librairie.
htop-explique | Le blog de Carl Chenet
Traduction française de l'excellent "htop explained": https://peteris.rocks/blog/htop

The Infinite Drum Machine
Une expérience de classification automatique sur des fichiers audio représentant des sons du quotidien. L'algorithme ne reçoit aucune information à priori (non supervisé) hormis les fichiers audio. La technique utilisée dans cette expérience est t-SNE (t-Distributed Stochastic Neighbor Embedding), permettant de réduire un espace à n dimensions vers un espace plus petit (ici 3 dimensions: X, Y, et couleur).
Description de t-SNE: http://jmlr.org/papers/volume9/vandermaaten08a/vandermaaten08a.pdf

Description de t-SNE: http://jmlr.org/papers/volume9/vandermaaten08a/vandermaaten08a.pdf
How to Write Papers So People Can Read Them - POPL 2016
Comment écrire des articles scientifiques compréhensibles (certains principes généraux s'appliquent pour tout travail d'écriture).
Les slides: https://www.mpi-sws.org/~dreyer/talks/talk-plmw16.pdf

Les slides: https://www.mpi-sws.org/~dreyer/talks/talk-plmw16.pdf
CDNs aren't just for caching - Julia Evans
Un CDN ne sert pas qu'à faire du caching, mais aussi à:
- amener le contenu au plus près des clients, donc accélérer l'accès
- accélérer l'ouverture des connexions TLS (https://en.wikipedia.org/wiki/Transport_Layer_Security#TLS_handshake)
- réduire l'impact des attaques par déni de service

- amener le contenu au plus près des clients, donc accélérer l'accès
- accélérer l'ouverture des connexions TLS (https://en.wikipedia.org/wiki/Transport_Layer_Security#TLS_handshake)
- réduire l'impact des attaques par déni de service
DBeaver | Free Universal SQL Client
"Free multi-platform database tool for developers, SQL programmers, database administrators and analysts. Supports all popular databases: MySQL, PostgreSQL, SQLite, Oracle, DB2, SQL Server, Sybase, Teradata, MongoDB, Cassandra, Redis, etc."
Et plus stable que MySQL workbench.
Et plus stable que MySQL workbench.
A Year Without a Byte | code.flickr.com
Quelques techniques utilisées par Flickr pour économiser l'espace de stockage.
- Pour éviter des baisses de performance, on conserve toujours un peu d'espace disque libre (traditionnellement 10%). Toutefois, ce paramètre peut être ajusté empiriquement en fonction de l'usage (ici, réduit à 5%)
- Stocker moins de formats de miniature et laisser les clients (webs et mobiles) ajuster la taille de leur côté. Par exemple, si un client a besoin d'afficher une image en 1024x1024px, il va télécharger la version 2048x2048 et effectuer la réduction de son côté.
- Utiliser des algorithmes de compression d'image plus sophistiqués. Ces techniques consomment plus de CPU, mais peuvent réduire significativement la taille des images. Là encore, c'est à voir en fonction du besoin.

- Pour éviter des baisses de performance, on conserve toujours un peu d'espace disque libre (traditionnellement 10%). Toutefois, ce paramètre peut être ajusté empiriquement en fonction de l'usage (ici, réduit à 5%)
- Stocker moins de formats de miniature et laisser les clients (webs et mobiles) ajuster la taille de leur côté. Par exemple, si un client a besoin d'afficher une image en 1024x1024px, il va télécharger la version 2048x2048 et effectuer la réduction de son côté.
- Utiliser des algorithmes de compression d'image plus sophistiqués. Ces techniques consomment plus de CPU, mais peuvent réduire significativement la taille des images. Là encore, c'est à voir en fonction du besoin.
GitHub - tdebatty/java-string-similarity: Implementation of various string similarity and distance algorithms: Levenshtein, Jaro-winkler, n-Gram, Q-Gr
Une librairie Java pour calculer des distances ou des scores de similarité entre des chaînes de caractères.
Algorithmes implémentés :
Levenshtein O(m*n)
Normalized Levenshtein O(m*n)
Weighted Levenshtein O(m*n)
Damerau-Levenshtein O(m*n)
Optimal String Alignment O(m*n)
Jaro-Winkler O(m*n)
Longest Common Subsequence O(m*n)
Metric Longest Common Subsequence O(m*n)
N-Gram O(m*n)
Q-Gram O(m+n)
Cosine similarity O(m+n)
Jaccard index O(m+n)
Sorensen-Dice coefficient O(m+n)

Algorithmes implémentés :
Levenshtein O(m*n)
Normalized Levenshtein O(m*n)
Weighted Levenshtein O(m*n)
Damerau-Levenshtein O(m*n)
Optimal String Alignment O(m*n)
Jaro-Winkler O(m*n)
Longest Common Subsequence O(m*n)
Metric Longest Common Subsequence O(m*n)
N-Gram O(m*n)
Q-Gram O(m+n)
Cosine similarity O(m+n)
Jaccard index O(m+n)
Sorensen-Dice coefficient O(m+n)
FarmBot
FarmBot, un robot pour contrôler une petite plantation. Il peut planter, contrôler l'arrosage, détecter et tuer les mauvaises herbes, etc.
C'est un bien beau bidule, il faut avouer.
Les plans sont open-source, ce qui est un bon point, mais la fabrication des pièces nécessite d'être bien équipé (imprimante 3D, outil de découpe du métal).
Possibilité de commander un kit de pièces pour 3500$, ce qui est malheureusement beaucoup trop cher :/

C'est un bien beau bidule, il faut avouer.
Les plans sont open-source, ce qui est un bon point, mais la fabrication des pièces nécessite d'être bien équipé (imprimante 3D, outil de découpe du métal).
Possibilité de commander un kit de pièces pour 3500$, ce qui est malheureusement beaucoup trop cher :/
Megaprocessor
Traduction de la page d'accueil du projet:
Qu'est-ce que c'est ? Le Megaprocessor est un microprocesseur, mais construit en plus gros. Beaucoup plus gros.
Comment ? Comme tous les processeurs modernes, le Megaprocessor fonctionne avec des transistors. Par contre, au lieu d'utiliser des transistors gravés sur une minuscule puce en silicium, il utilise des transistors individuels (NB: taille équivalente à un cube de 0.5 cm de côté). Par milliers. Et aussi énormément de LED (NB: diode électro-luminescente).
Pourquoi ? Réponse courte : Parce que je le voulais.
Pourquoi ? Réponse longue : Les ordinateurs sont plutôt opaques, il est impossible de comprendre comment ils marchent en regardant à l'intérieur. Ce que j'ai voulu faire, c'est entrer à l'intérieur et voir ce qui se passe. Le souci, c'est qu'on ne peut pas se rétrécir suffisamment pour marcher à l'intérieur d'une puce de silicium. Par contre, on peut faire le contraire : construire un processeur suffisamment gros pour marcher à l'intérieur. En plus, en ajoutant plein de LEDs, on pourrait VOIR les données circuler et les opérations logiques s'effectuer en temps réel. Ce serait génial.
--
Et je confirme : c'est génial. On peut même le programmer avec un assembleur basique (http://megaprocessor.com/programming.html)

Qu'est-ce que c'est ? Le Megaprocessor est un microprocesseur, mais construit en plus gros. Beaucoup plus gros.
Comment ? Comme tous les processeurs modernes, le Megaprocessor fonctionne avec des transistors. Par contre, au lieu d'utiliser des transistors gravés sur une minuscule puce en silicium, il utilise des transistors individuels (NB: taille équivalente à un cube de 0.5 cm de côté). Par milliers. Et aussi énormément de LED (NB: diode électro-luminescente).
Pourquoi ? Réponse courte : Parce que je le voulais.
Pourquoi ? Réponse longue : Les ordinateurs sont plutôt opaques, il est impossible de comprendre comment ils marchent en regardant à l'intérieur. Ce que j'ai voulu faire, c'est entrer à l'intérieur et voir ce qui se passe. Le souci, c'est qu'on ne peut pas se rétrécir suffisamment pour marcher à l'intérieur d'une puce de silicium. Par contre, on peut faire le contraire : construire un processeur suffisamment gros pour marcher à l'intérieur. En plus, en ajoutant plein de LEDs, on pourrait VOIR les données circuler et les opérations logiques s'effectuer en temps réel. Ce serait génial.
--
Et je confirme : c'est génial. On peut même le programmer avec un assembleur basique (http://megaprocessor.com/programming.html)
98 personal data points that Facebook uses to target ads to you - The Washington Post
Facebook utilise 98 informations vous concernant pour déterminer quelles sont les publicités les plus susceptibles de vous intéresser.
9. Ethnic affinity
...
20. Users in long-distance relationships
...
31. Conservatives and liberals
...
45. How much money user is likely to spend on next car
...
79. Users who are “heavy” buyers of beer, wine or spirits
...
82. Users who buy allergy medications, cough/cold medications, pain relief products, and over-the-counter meds
...
89. Users who are “receptive” to offers from companies offering online auto insurance, higher education or mortgages, and prepaid debit cards/satellite TV
Effrayant.

9. Ethnic affinity
...
20. Users in long-distance relationships
...
31. Conservatives and liberals
...
45. How much money user is likely to spend on next car
...
79. Users who are “heavy” buyers of beer, wine or spirits
...
82. Users who buy allergy medications, cough/cold medications, pain relief products, and over-the-counter meds
...
89. Users who are “receptive” to offers from companies offering online auto insurance, higher education or mortgages, and prepaid debit cards/satellite TV
Effrayant.
How to measure smartphone power usage |
Mesurer la consommation électrique d'un smartphone. Testé et approuvé.


Ce journal est basé sur Ginger, un gestionnaire de lien minimaliste développé dans le cadre d'un stage de perfectionnement. Pour plus d'informations, consulter le wiki consacré à mes projets personnels.