21 novembre 2023

Qu'est-ce qu'un hashrate ? suite d'un dossier blockchain…

Après avoir tenté () une explication de la blockchain à ma grand-mère dans un métavers probabablement idoine ;-) le dossier à constituer (pour un projet blockchain) exigeait ensuite une réponse à cette question plus pointue : Qu'est-ce qu'un hashrate ?

Ici encore, écrire une réponse m'ayant plu, la voici.
Elle requiert une apréhension technique des blockchains…

I- Définition

Note liminaire : quand j'ai terminé ma réponse, je l'ai soumise à ChatGPT, où j'avais déjà entamé une conversation sur ce sujet. Il m'a été suggéré de l'enrichir avec cette phrase de définition :
"le hashrate est une unité de mesure qui quantifie le nombre de calculs qu'un réseau blockchain peut effectuer par seconde, ce qui est essentiel pour valider les transactions et sécuriser le réseau."

Schématiquement, le terme hashrate appliqué aux techno blockchain évalue ainsi la puissance de calcul (d'une machine, d'un réseau) nécessaire au minage des blocs. En proportion, cette valeur est corrélée à la dépense d'énergie impliquée par les calculs.
Ces calculs sont des calculs de hachage.

II- Approfondissement par ma démarche pour élaborer une réponse

Pour répondre à cette question, j'avais ainsi commencé par dialoguer avec ChatGPT (1). Une fois la notion de hashrate posée, le lien entre valeur élevée du hashrate et sécurité du réseau a rapidement émergé. Si le succès d'une attaque doit en effet reposer sur une consommation excessive d'énergie, pour cause de hashrate élevé, le réseau se trouve sécurisé et robuste.

En demandant ensuite à ChatGPT de comparer le hashrate du Bitcoin (2) et celui de Cardano, j'ai pu voir que l'importance du hashrate apparaît liée aux preuves de type Proof of Work.

En soumettant finalement l'ensemble de ma réponse à ChatGPT, il m'a été suggéré l'ajout de la phrase que j'ai, alors, posée en note liminaire.

III- Point de vue du mineur et dynamique générale

Le hashrate est aussi à considérer du point de vue du mineur. Par exemple, le halving du Bitcoin (événement cyclique divisant la récompense du minage) pourrait en théorie affecter négativement le hashrate : si les mineurs en viennent à considérer la récompense comme insuffisante et se désengagent, une baisse du nombre de mineurs dégradera le hashrate - et, par là, la robustesse du réseau.

Jusqu'à présent, l'inflation du Bitcoin consécutive aux halving a compensé ce phénomène.
En outre, une baisse du hashrate induisant une dépense de minage moins importante, cela sera alors susceptible d'attirer de nouveaux mineurs - d'où, à terme, un ajustement à la hausse du hashrate.

IV- Pour conclure

Le terme hashrate recouvre donc une notion très concrète, très "hardware", en relation avec la spécificité de sécurité de la blockchain, et en interaction avec le marché du Bitcoin, l'une de ses applications essentielles.

Notes

(1) Chat disponible sur demande.

(2) D'où cette valeur du hashrate du Bitcoin, via le plugin WebPilot : 434.231 Ehash/s ("E" pour exa, càd 10^18.)

Comment expliqueriez-vous la blockchain à votre grand-mère ?

Comment expliqueriez-vous la blockchain à votre grand-mère ? C'est à cette question que j'ai répondu en constituant un dossier pour un projet blockchain. J'ignore la valeur de ma réponse, mais l'écrire m'a plu… La voici.

La blockchain est semblable à un grand registre commun. Par exemple, tous les notaires auraient décidé de fusionner leurs registres, afin que chacun ait un exemplaire de ce grand registre partagé. Cela renforcera la sécurité et la confiance car si, curieusement, un acte déjà signé était modifié, les autres notaires s'en rendraient compte par comparaison : tu vois, l'information inscrite sur la blockchain est définitive.

Dans ce registre électronique, tout est authentifié avec autant de force qu'avec les actes papier. Tu ne te poses plus du tout la question de la confiance. Si ton notaire perd par exemple son exemplaire dans un incendie, ce n'est pas grave, les autres notaires en retrouveront toutes les données sur leur exemplaire du grand registre commun. Dans la plupart des blockchains (en fait, il y en plusieurs), ce registre appartient à tout le monde et à personne en particulier.

Imagine que je sois importateur de riz. Mes cargaisons font halte dans un port où mon intermédiaire a peut-être pris l'habitude d'en détourner une partie en falsifiant les papiers de transport. Mais la blockchain va tout changer car, en vrai, je ne pourrai plus être grugé. La quantité de riz inscrite au départ sur la blockchain ne sera plus modifiable et donc, au moindre détournement dans mes stocks, je m'en rendrai compte.

Ce qu'il y a de bien, c'est que le registre blockchain reste ouvert à toute heure. Je peux y accéder pour le lire juste en demandant à le consulter. Et je peux aussi y accéder en écriture, c'est-à-dire pour y inscrire de nouvelles informations - en payant bien sûr le "notaire" càd un acteur technique de la blockchain… - mais pas pour modifier les informations déjà existantes, tu l'as compris…

L'on peut dire, avec tout cela, que la blockchain est accessible mais infalsifiable. Comme on ne peut pas la faire disparaître ni l'effacer, on peut dire aussi qu'elle est pérenne.
Et vu qu'elle accueille également de nouvelles informations, on dit qu'elle est "incrémentale". On rajoute en effet un "BLOC" en le "CHAÎNANT" au précédent… Ça devient technique, rassure-toi je m'arrête ;-)
Voilà, et le Bitcoin dont tu entends parler, c'est la monnaie créée avec la blockchain grâce à ces principes.

20 novembre 2023

Photoshop : niveau "avancé" à la certification Tosa

À la certification Tosa du logiciel Photoshop, j'ai obtenu 860 sur 1000. 16 points encore, et, d'"avancé", je passais à "expert".

Avant d'être théoriques, mes connaissances sont largement pratiques. Depuis les retouches d'images pour le développement web, le goût que j'ai toujours pris à la manipulation d'images sur Photoshop m'a amené à être actif dans la création d'images numériques et créatif en photomontage - heureux de "photomonter", même à distance des maîtres en la matière.

Variation impromptue sur le thème "affiche de film" (sans aucun filtre IA of course) : Variation impromptue sur le thème d'une affiche de film d'horreur à partir un cliché d'Emma Llamas : Photo originale d'Emma Llamas

C'est dans le cadre des cours de Losako Yeye organisés par le GRETA des Hauts-de-Seine que j'ai consolidé ma pratique, mes connaissances, et pu passer le Tosa.

Mes activités suivent une orientation vers le développement blockchain ; en même temps, je joins mon goût pour l'image à un intérêt pour les œuvres d'art liées aux NFT.

La version LinkedIn de ce billet

31 janvier 2023

Vœux 2023

Vœux 2023, carte réalisée par Gaëtan Langhade
© Gaëtan Langhade

09 novembre 2022

Un Master 2 en business intelligence

Me voilà depuis un mois diplômé de Paris 3 en business intelligence, ou informatique décisionnelle si l'on préfère. Comme mon clavier fatigué de longues nuits d'étude peut en témoigner, c'est "haut la main" que j'ai passé le Master 2 intitulé E-COSIM.

En parallèle, j'ai travaillé chez Action contre la Faim dans le service de la collecte. Ma mission était d'extraire et d'analyser les data pour accompagner les campagnes de don.
L'on ne ressort pas indifférent d'une immersion, fut-elle technique, dans une telle ONG. C'est en outre ma quatrième activité dans le secteur de l'économie sociale et solidaire depuis 2019.

PS : je continue à "photo-monter" et à me regaler avec Photoshop, mais beaucoup moins à publier sur IG où la tendance éditoriale est devenue incongrûment marketing.

20 février 2020

De la formation 2019 : les suites début 2020

Achevant en juin 2019 une formation de Développeur web et web mobile (DWWM) chez WebForce3, je pensais me remettre à D3.js. C'était sans compter sur l'offre faite par le centre de formation de rester en tant que stagiaire. J'ai eu la chance de me consacrer alors à un projet passionnant : une interface web de suivi financier.
Des données tabulaires, des calculs entre elles, une interface aux petits oignons (responsive, accessible, valide), du JavaScript "orienté objet" (exploité dans sa base prototypale), du back PHP, une persistance MySQL, des API…

C'est ce projet que j'ai soutenu pour obtenir le titre professionnel.

Avant de pouvoir, en décembre, ajouter au projet la couche de dataviz que je m'étais promise (D3, quand tu nous tiens…), j'ai intégré une formation faisant suite à DWWM : Concepteur développeur d'applications, chez Simplon (à la fois partenaire et concurrent de WebForce3).
Après PHP, une super immersion dans l'environnement Python. Avec toute l'exigence et le bénéfice d'une pédagogie axée sur l'autonomie et la solidarité.

Entre temps, Rosalie Debesse m'avait fait le grand plaisir de me demander, pour son travail de community manager chez WebForce3, d'allier communication et syntaxe CSS : .web{ top: 100%; }, ou code.experience{ background: gold; }

Du côté de Photoshop enfin, continuant un apprentissage du photomontage entrepris en juin 2018, j'ai repris la publication sur mon compte Instagram 'gaetlan'. En me promettant un montage par semaine.
Je sais le risque de telles promesses ; mais si je l'écris ici, avec beaucoup de chance ça n'aura pas été innocent.

08 juin 2019

2-3 ans après

Retour à D3.js, étant sur le point d'achever une formation full-stack - en complément de mon expérience front-end.

Dans le même temps, un bug que j'avais signalé sur Bugzilla en février 2017, concernant un problème de rendu SVG sur Firefox (rendu en lien avec la taille des caractères ; bug de priorité 3), a trouvé ces jours-ci une solution.

Edit du 8 septembre :
en stage chez WebForce3, d'où je sors en tant qu'étudiant, j'approfondis ma pratique du JavaScript (principalement natif) ainsi que mes compétences dans la réalisation d'une interface en lien avec des données.
Bref, une bonne partie de ce que j'apprécie en front-end, tout en plongeant dans les arcanes du back. Last but not least, l'ambiance y est des meilleures.

21 septembre 2016

Visualisations d'après le principe du "data join" de d3

Une interface avec des visualisations sur le principe "data join" :
démo des opérations de "join" - passant sur Firefox et Chrome Mac.
- version 1 au premier novembre.

Comment

Le bouton "join d3.js" en haut à gauche crée un jeu de données d'une longueur comprise entre 2 et 12. Ce jeu est relié à une liste HTML. En fonction de sa longueur, la liste est mise à jour, rallongée ou rétrécie…
Les data visualisations attenantes ont pour objectif d'illustrer les données quantitatives de ce processus.

Ces données concernent la sélection initiale, la liaison, l'update, la création d'éléments, les éléments déclassés et la sélection finale. Une partie des éléments déclassés est conservée et indiquée comme telle, l'autre est supprimée.

D3.js l'update dans le binding en v. 4 et autres notes

Évolution de l'update

Après liaison de données via .data(), l'ordre des instructions importe en version 3 pour mettre à jour des éléments pré-existants. Cette sélection est en effet enrichie de la création d'éléments via .enter(). L'update doit donc précéder .enter().
En version 4 désormais, la mise à jour devient autonome et n'est plus affectée par .enter(). Elle peut être effectuée en instruction finale.

Le traitement simultané des éléments mis à jour et créés se fait avec .merge() :

Dans la documentation : d3/CHANGES.md at master · d3/d3.
Exemple de merge.

Au sujet de .enter() et .exit()

13 août 2016

D3.js outils pour la version 4

Les différences entre la version 3 et la version 4 de d3 marquent une évolution importante. Outre la modularisation de la librairie, l'évolution du troisième paramètre des fonctions de callback, l'aplatissement des espaces de nom - cf. dans la présentation de Mike Bostock :
d3.scale.linear ↦ d3.scaleLinear
D'où quelques outils et tests - scripts passant sur Firefox Mac.

Terminaux avec les versions 3 et 4

Des interpréteurs d3.js en ligne :

montés grâce au JQuery Terminal Emulator Plugin, afin d'à la volée évaluer des instructions d3.

Adaptation de la version 3 à la version 4

Partant de la démonstration Chained Transitions dont le script fait une quarantaine de lignes, adaptation à la version 4.

05 août 2016

D3.js notes brèves

Notes brèves et pratiques pour d3.js :

03 août 2016

Last version of Chromium on Mountain Lion

According to my tests, version 51.0.2666.0 is the last version of Chromium for Mountain Lion, with "base position" 378843:
Index of chromium-browser-snapshots/Mac/378843/

I followed these steps: Download Chromium - The Chromium Projects
Note: we can find several "base positions" equivalent to the same version - so there are some upper "base position" for versions 51.0.2666.0 which are not Mountain Lion compatible (379000 for instance).

21 janvier 2016

Croiser des séries de données

De nouveau sur l'établi, une interface que j'avais réalisée en 2014 pour comparer des séries de données numériques.

Je propose de visualiser les ensembles de données communes : les intersections entre les séries, les intersections minimales et maximales, les données partagées sur l'ensemble ou sur une série, les données les plus représentées…
Ainsi que d'introduire ses propres données.

Croiser des séries de données sur Equatorium.

Edit du 11/02 : ce billet a été remanié depuis sa publication le 21 janvier 2016, l'interface ayant encore évolué depuis.
(Mais n'a pas encore été testée sur Internet Explorer 10+.)

Outre l'amélioration du design, une dynamisation de l'interface

07 janvier 2016

Promesses et récursivité : ordonnancer des promesses simultanées

Lorsqu'on lance un groupe de promesses simultanées avec la méthode Promise.all(), l'on peut lier une instruction finale à leur accomplissement. Quand certaines de ces promesses de base dépendent des autres pour atteindre des objectifs intermédiaires, comme la définition d'un objet intermédiaire, il faut en répéter certaines selon la façon dont l'ensemble se synchronise.
L'enjeu est alors de reprendre, en la prolongeant, l'enrichissant ou la raffinant, la promesse itérative ".all()" à laquelle vient se lier l'instruction finale.

14 novembre 2015

React : interface monopage avec timeline

Quelques jours passés sur une interface de type SPA, que j'ai conçue et développée en vue de connaître ReactJS.

Elle interroge l'API de Github et a pour objectif de rechercher des dépôts. Elle va permettre de les trouver via un terme présent dans leur nom ; l'utilisateur est en option.

"Recherche de dépôts sur Github"

C'est une interface monopage qui présente un formulaire de recherche, la liste des résultats, et une information détaillée pour chacun des résultats.

23 juin 2015

Jeux web (5/5) : jeu des milieux

Quatre jeux web éducatifs que j'ai développés chez Ludwik, pour le parc naturel des Alpilles et sur le thème des oiseaux.
Ces jeux sont de type :

Le jeu des milieux

Le jeu des milieux - démo - est un jeu de type exploration-placement. Il propose trois phases : exploration, placement, relecture.

Mutualisation des structures et des développements

Les scripts de ce jeu - déposés sur Github - reprennent des fonctionnalités des jeux précédents :

22 juin 2015

Jeux web (4/5) : puzzle

Quatre jeux web éducatifs que j'ai développés chez Ludwik, pour le parc naturel des Alpilles et sur le thème des oiseaux.
Ces jeux sont de type :

Le puzzle

Le puzzle - démo - est un jeu de type placement. Venu deuxième dans l'ordre du développement des jeux, il est généré à partir de ses propres pièces, qui sont des éléments SVG dispersés sur la page au chargement.

Jeux web (3/5) : cache-cache

Quatre jeux web éducatifs que j'ai développés chez Ludwik, pour le parc naturel des Alpilles et sur le thème des oiseaux.
Ces jeux sont de type :

Le jeu de cache-cache

Le jeu de cache-cache - démo - est un jeu de type exploration. Il faut explorer un paysage avec un "projecteur" pour l'éclairer et trouver les oiseaux. L'on peut ainsi révéler leur nom et entendre leur chant. Il y a à explorer quatre paysages représentatifs du parc des Alpilles.

Jeux web (2/5) : jeu des tailles

Quatre jeux web éducatifs que j'ai développés chez Ludwik, pour le parc naturel des Alpilles et sur le thème des oiseaux.
Ces jeux sont de type :

Le jeu des tailles

Le jeu des tailles - démo - est un jeu de type classement. Il consiste à déplacer quatre oiseaux pour les trier selon leur taille. Le résultat correct déclenche une animation de mise à l'échelle relative des oiseaux.
Ce jeu est présenté en quatre séries.

Jeux web (1/5) : présentation

J'ai développé des jeux web éducatifs chez Ludwik. Le thème en était les oiseaux. Il en a résulté un site responsive, compatible avec une couche ARIA.
Les quatre jeux sont manipulables tactilement et à la souris.

Cette commande, émanant du parc naturel des Alpilles dans le cadre d'une exposition permanente, concernait la livraison de jeux consultables sur destktop, tablette et mobile - les spécifications restant assez générales par ailleurs.

Aperçu technique

Les jeux passent ainsi sur des terminaux iOS et Androïd, de bureau… Le code des pages développées est clair et léger. Les interfaces sont basées sur HTML5, JavaScript orienté prototype - scripts déposés sur Github - SVG, jQuery UI (drag and drop, position).

Les technologies, réserve faite du plugin de drag and drop, sont employées d'une manière native :

  • HTML pour le sens de la structure ;
  • CSS pour la présentation et les effets ;
  • SVG pour les formes sensibles, manipulables ;
  • JavaScript orienté prototype avec des fonctions constructrices conçues selon les instances des éléments de l'interface ;
  • l'url pour accéder aux déclinaisons de chaque jeu.

Notes sur la conception

Ludwik est une société d'ingénierie culturelle, qui se site en-dehors de la production web. La conception finale des jeux provient à la fois ainsi des idées du fondateur de Ludwik, de mes discussions avec lui, de mes versions prototypes et POC, et d'échanges avec le Parc.
A ces tâches de spécification itérative s'est liée une réflexion sur le but pédagogique, l'accès à des informations ornithologiques et écologiques : en savoir plus sur l'apparence, le chant, la taille des oiseaux, aussi bien que sur leur environnement, en particulier dans l'habitat naturel du parc des Alpilles.

Autre axe dans l'élaboration des scénarios, que chaque étape d'un jeu stimule l'envie de poursuivre dans la manipulation et la découverte des oiseaux.

Les quatre jeux

L'ensemble est constitué de quatre jeux de type :

13 avril 2015

Personnaliser un contour sensible via SVG

Un élément HTML contenant un SVG peut tirer profit des <g pour établir des zones sensibles sur mesure : autrement dit, pour redéfinir ses contours. Par exemple, en superposant dans un SVG une image à fond transparent et un <path qui en reprend le contour, il est possible de gérer des événements en fonction du contour précis du vecteur. De l'élément, seul le vecteur bénéficie de la propriété "pointer-events", et il est sans couleur. Sa forme prennd alors la préséance sur la forme rectangulaire de l'élément HTML.

La technique permet d'atteindre un élément situé derrière mais visible via un vide interne - pour le passer en premier plan par exemple - et de gérer la sensibilité au survol, au clic etc. d'un élément selon des contours ainsi totalement redéfinis.
À noter aussi que ces zones sont aisément responsives, peuvent être transparentes ou stylées etc.

Une démo sur Equatorium.

Cela repose aussi partiellement sur JavaScript - gestion des événements, application des classes CSS.

Et s'avère utile pour développer puzzles et autres jeux web, comme je le fais actuellement pour la société Ludwik (ingénierie culturelle).
À noter en passant, outre le caractère responsive des interfaces et de ses composants (voici une loupe), le SVG présente bien d'autres d'autres avantages - dont la génération de la "scène" du puzzle à partir des pièces le constituant.

07 janvier 2015

Chaîne des affectations et chronologie d'exécution en JavaScript

Avec des expressions JavaScript comme :

a = b = 4;
c[i] = c[++i] = 4;

les opérateurs d'affectation sont évalués de droite à gauche, mais chaque opérande est d'abord évalué distinctement de gauche à droite.

Ainsi, dans la chronologie de l'exécution, les opérandes sont individuellement évalués à partir de celui de gauche, avant d'être chaînés à partir de la droite via l'opérateur d'affectation. L'expression est alors globalement évaluée à rebours des évaluations individuelles.

16 décembre 2014

CSS alternatifs aux pseudo-classes avec PHP et Modernizr

PHP paramètre JavaScrit qui charge le cas échéant des CSS alternatifs : eux-mêmes générés via PHP uniquement dans les cas nécessaires…
exemple
.

Il est difficile lors de l'exécution PHP, d'anticiper des particularités telles que la présence de JavaScript, l'interprétation de HTML5, le niveau de CSS supporté etc. Il faut en général générer une page qui s'adaptera aux contraintes du front une fois chargée par le navigateur.

Il reste possible de ne générer de solutions alternatives aux CSS avancés que dans les cas précis où cela soit nécessaire.

20 septembre 2014

Notes d'animation et de stylage

Une interface de losange animé pour rassembler quelques notes :
equatorium.net/e1/an--animations/an-losange.html

Enchaînement de durées "aléatoires" pour 'transition'

Chaîner des transitions CSS de durée pseudo-aléatoire sur le mode 'toggle' sans latence.