Catégorie : geek

Sam Agnew bidouille le bon vieux Zelda à la PyCon 2017

Je vous laisse découvrir qui est Sam Agnew, mais dans la vidéo :

  • il fait un peu de LUA pour hacker et analyser le code de Zelda ;
  • il met en place le fait de discuter entre twitter et le code qui écrit en direct dans Zelda ;
  • cela écrit en direct dans Zelda pendant qu’on joue !

Enorme. Et en plus vous verrez du code sur comment lire les notifications twitter en quelques lignes de Python

Ergofip : il est sur le point de sortir !

Ergofip - international  ergonomic mechanical hightech customizable keyboard
Ergofip – international ergonomic mechanical hightech customizable keyboard

Après avoir…
– passé le site en https, https://www.ergofip.com,
– travaillé jour et nuit sur les photos
– travaillé plusieurs week ends sur le tournage

il est sur le point de sortir !

Ergofip - international  ergonomic mechanical hightech customizable keyboard
Ergofip – international ergonomic mechanical hightech customizable keyboard

Clavier mécanique, entièrement configurable, international et LEDs RGBs.

Merci à mes étudiants qui ont accepté ces photos :

Licence Pro / IUT Aix en Provence :

Ergofip - etudiants LP/IUT 2016-2017
Ergofip – etudiants LP/IUT 2016-2017

Et Ecole d’ingénieur ISEN Toulon :

Ergofip - etudiants ISEN 2016-2017
Ergofip – etudiants ISEN 2016-2017

vim – astuces

Vim

Séparation par fenêtres

:split Split horizontal
:vsplit Split vertical
:res XX Hauteur fenêtre = XX lignes
:vertical resize XX Largeur fenêtre courante = XX caractères
:30winc > Vertical : 30 caractères à droite
:30winc < Vertical : 30 caractères à gauche
:30winc + Horizontal : 30 caractères à droite
:30winc - Horizontal : 30 caractères à gauche
30[CTRL]W > Décaler de 30 caractères à droite
30[CTRL]W < Décaler de 30 caractères à gauche

Macros

:%s/\%(^ *\)\@<= /\&nbsp;/g Remplacer tous les espaces de début par &nbsp;

lua : avantages et inconvénients

Résumé

Je viens de créer ma première application Web en lua.

Pour ceux qui ne savent pas ce que c’est : google est votre ami, mais pour résumer :

Je commence par les inconvénients parce qu’ils sont tellement particuliers qu’il faut les avoir en tête avant d’aller plus loin. Si jamais ça ne vous rebute pas trop, lisez les avantages et ce sera à vous de juger, si, en mettant le tout sur votre balance, ça penche plus vers le positif ou vers le négatif.

En résumé, tous les avantages qui suivent font que, même s’il faut pas mal se débrouiller au début parce qu’il manque beaucoup d’outils « déjà faits », au final le langage est tellement lisible qu’on arrive assez rapidement à se faire ses outils, et en allant un peu plus loin, la maintenance (qui est la chose la plus coûteuse sur les grosses applications) se retrouve améliorée au lieu d’être dégradée. Après, c’est un constat qui n’engage que moi, mais de très grosses applications, notamment nmap tournent d’ores et déjà avec une liste faramineuse de plugins, tous écrits en lua, et facilement compréhensibles.

Inconvénients

Voici les inconvénients de base, qui ne sont pas propres au langage :

  • il faut tout faire soi-même :
    • aucune gestion avancée des fichiers (de base, sans aucun module complémentaire, il ne sait même pas dire si un fichier existe ou pas)
    • côté Web, aucune gestion des sessions
    • côté Web, rien de base en ce qui concerne le json (j’ai plus d’une demi journée à chercher une implémentation entièrement potable de json)

Voici les inconvénients du langage même :

  • Il ne connait pas les classes d’origine, il faut faire un hack pour « simuler » des classes
  • Par conséquence, il n’y a aucune notion d’héritage, à moins de hacker là aussi.
  • Tous les entiers sont des flottants par défaut
  • Aucune possibilité de trace simple. Si on veut remonter dans la pile d’appels, on ne peut sortir qu’une seule ligne (on précise le niveau de la pile)
  • Toutes les variables sont globales par défaut, sauf si on précise systématiquement local
  • La syntaxe permet des horreurs innommables : si jamais on ne passe qu’un seul paramètre, les parenthèses ne sont pas obligatoires, ce qui donne quelque chose de possible comme : mafonction{a=12,b=13}
  • Les séparateurs ne sont pas clairement définis – et c’est volontaire pour permettre plus de liberté, donc on peut écrire ceci : local a = { b=15; c=23 } ou ceci : local a = { b=15, c=23 }. Imaginez le problème… On voit déjà qu’en Php, en laissant un peu de liberté, on arrive à un bazar gigantesque à l’échelle planétaire, je vous raconte même pas ce qu’il est possible de faire ici
  • Les packages en tant que tel n’existent pas, et il faut là aussi faire des bidouilles pour « simuler » des packages
  • Il y a ici aussi, comme en JavaScript, la notion de « closure » afin de pouvoir faire sortir des variables hors d’un contexte d’où elles ne sont pas censées sortir. Certains voient les closures comme un avantage, moi qui ait programmé en C – et un peu en C++ – je vois les closures comme une solution pour pallier à un défaut du langage, en bidouillant.
  • Le signe différent n’existe pas sous la forme classique <> ou encore != mais il s’écrit ainsi : ~=
  • Pour supprimer une variable (unset() en Php), il faut la mettre à nil. Bizarre. Supprimer l’indice 12 : a[12] = nil
  • Attention tenez vous bien j’ai gardé le pire pour la fin : les indices des tableaux commencent à 1. Ce n’est pas une blague. En C, C++, Java, JavaScript, Python, bref, dans tous les langages que je connais, les indices de tableau commencent à 0, et là non, ils commencent à 1. C’est à la limite la seule et unique chose qui me rebute énormément tellement c’est problématique, car, de plus, une des grosses forces mises en avant du lua, c’est le fait qu’il gère extrêmement bien les tables. Oui, mais les indices des tableaux commencent à 1.

Avantages

Je ne sais pas pourquoi, mais lua me plaît. Et je pense que tous les développeurs qui aiment bien ce langage sont un peu comme moi. Il a énormément d’inconvénients, pourtant il des côtés tellement pratiques qu’au final, on l’aime bien. Un peu comme moi (…).

Parmi les avantages que j’apprécie particulièrement :

  • Pas d’accolades ouvrantes / fermantes, mais juste le début d’une déclaration (function, if, ou for), et la fin avec un end. C’est juste plus lisible qu’ouvrir des accolades et fermer des accolades (et croyez moi, je m’y connais bien dans ce domaine !)
  • Les assignations multiples : il est possible d’assigner plusieurs choses en une seule ligne, et ça reste lisible (j’insiste sur ce dernier point : ça reste lisible). Exemple concret : a, b = b, a;. Ce code va inverser les deux valeurs.
  • Même chose que précédemment mais pour les fonctions : elles peuvent renvoyer plusieurs valeurs, et par là même, on peut faire plusieurs assignations et ça reste lisible. Exemple simple : x, y = getCoordonneesJoueur(); ou plus classique handle, error = ouvrirFichier(nomfichier). Avec ce dernier code, si handle vaut nil alors on affiche error qui est rempli.
  • Machine virtuelle : il tourne systématiquement dans une machine virtuelle, ce qui implique par là même une impossibilité technique de défaillance, et c’est vous-même qui précisez, pour les modules qui tourneront, quelles sont les fonctions sont accessibles – ou pas. Si la NASA se sert activement de LUA ce n’est pas pour rien. Ce qui me permet d’enchaîner sur le point suivant.
  • Un des gros intérêts est de pouvoir créer des plugins, les lire et les interpréter, un peu comme en Php, eval(). Comme ces plugins sont dans une machine virtuelle très stable et éprouvée, vous pouvez mettre en place un système de plugins très performant, efficace et stable. Rien que le fait de pouvoir faire cela peut être une motivation pour apprendre le lua, car il y a très peu de langages qui tournent de manière aussi sécurisée, et aussi rapidement que lua (voire aucun).

8 – Source pour un clavier AZERTY

Je mets en disponibilité mes sources pour la configuration complète d’un clavier AZERTY tel que je l’ai expliqué dans la page de configuration du clavier.

Pour tous ceux qui veulent le récupérer et le compiler, cela se passe par .

Ergodox : le clavier de geek de l’extrême

J’ai terminé la mise en place du clavier de l’extrême, et si vous êtes intéressé(e) par ces claviers de l’extrême, qui proposent, justement, une customisation extrême, n’hésitez pas à poser des question ici, ou aller lire mes pages qui concernent ce clavier de pur geek (dans la section « pages ») :

Image finale

5 – Le silence

Voici la dernière étape de ma recherche concernant le silence. J’ai retrouvé des vis qui servent à soutenir des disques dur, et à amortir leur bruit via un petit morceau en plastique :

Vis amortissantes pour disque dur

J’ai donc pris le petit morceau qui sert à amortir, et j’y ai adjoint un oring rouge :

Vis amortissantes pour disque dur

Vis amortissantes pour disque dur

Ensuite, j’ai fait ma petite « tour » ainsi :

Vis amortissantes pour disque dur

Et je l’ai mise sous le clavier, ainsi :

Vis amortissantes pour disque dur

J’ai fait la même chose pour les 4 coins les plus extrêmes du clavier. Je vous montre les deux de devant :

Vis amortissantes pour disque dur

Ce qui fait que maintenant, dès que je frappe, le son est totalement amorti, et ne suit pas sur le support sur lequel est posé l’Ergodox.

Configuré ainsi, mon clavier est à la fois l’un des plus silencieux que je connaisse, mais aussi un des plus agréables à utiliser. Il ne me reste plus qu’à terminer ma configuration, jour après jour, pour savoir là où sont les touches qui me manquent le plus et les mettre directement en relation là où ma main a envie de taper. Bien sûr, après plus de 15 ans de pratique quotidienne d’un clavier AZERTY, je ne veux pas passer du temps à tout réapprendre, donc je l’ai laissé pour l’instant tel quel, mais j’ai défini pas mal d’autres raccourcis claviers et maintenant, je commence à aller presque aussi vite qu’avec mon autre clavier quand je tape en français. Pour le reste, et surtout pour le développement, qui nécessite beaucoup de mouvements de curseurs, de copier coller, etc, c’est tout de même beaucoup plus difficile de m’adapter, même si je gagne énormément de temps sur toutes les touches bien énervantes à avoir telles que toutes les touches avec ALTGR. Là je gagne un temps énorme. Mais j’en dis plus dans la prochaine page consacrée à l’ergodox, sur ma configuration AZERTY.