Tixlegeek's DevBlog Code, Gringo, Silicium

qrcode

Une LootTable en BASH, pour vos jeux... En bash.

Salut!

Je suis un gros fan de BASH. Il ne se passe pas une journée sans que je trouve une bonne raison de scripter quelque-chose. Parfois, je me lance des petits défis un peu ridicule, comme, écrire un jeu...

C'est exactement ce genre de petit projet qui m'a amené à créer, il y'a quelque jours, un algorithme de LootTable en BASH, que voici:


#!/bin/bash
# fonction qui s'utilise comme ceci:
# loot ./itemlist.csv $player_level
function loot() {
  # déclaration d'un tableau qui va stocker les items
  declare -a lt
  # on lit la variable csv "$1"
  while read i; do
    # On parse le CSV: n=nom, c=chances, l=niveau
    IFS=',' read -r n c l <<<"$i"
    # Si le niveau du joueur est compatible avec celui de l'item
    if [[ $l -le $2 ]];then
      # On l'ajoute $c fois au tableau
      for j in `seq 0 $c`;do lt+=("$n");done
    fi
  done <<< "$1"
  # On choisi un item au hasard dans le tableau.
  echo ${lt[$RANDOM % ${#lt[@]} ]}
}

Comme vous pourrez peut-être le remarquer, sa taille est minimale, mais, ne vous y trompez pas; sa distribution est mathématiquement juste. Pour le prouver, faisons un petit test:

Alors, en premier lieu, on génère une variable qui contiens les informations sur les items qu'on souhaite lootDropper. Le format, est celui précisé en commentaire, à savoir: nom, chances, niveau requis.(c'est donc du csv...)

#!/bin/bash
test_loot=$(cat <<EOF
rien,200,1
capsule,50,1
bouteille,10,2
pièce en argent,20,2
pièce en or,5,3
gemme,5,3
EOF
)

On peut alors utiliser trivialement la fonction comme ceci: loot test_loot 10 .

Du coup, pour faire notre test, on va réaliser 100 tirages sur ce set, et analyser les résultats. et, pour ça, on va continuer a utiliser du BASH, parce que, on est velu.

#!/bin/bash

# On jette les dés 100 fois
for i in `seq 0 100`; do
# On enregistre le résultat dans /tmp/results
loot "$test_loot" 10 >> /tmp/results
done;
# On dresse les statistiques de distribution pour chaque item.
cat /tmp/results | sort | uniq -c

Ce qui nous donne un résultat qui ressemble à celui là:

      7 bouteille
     18 capsule
      2 gemme
      8 pièce en argent
      3 pièce en or
     63 rien

Et on constate que la distribution est bonne.

Voilà.

HppHckng!

qrcode

[ARCHIVE 04/07/15] Tixlegeek's Workshop : Touche externe pour clavier QWERTY en layout AZERTY

Salutations,

Je n'ai pas retrouvé l'article qui allait avec cette vidéo, mais, j'ai encore un github qui héberge le code source, alors, je le met ce que j'ai sur ce projet ici! J'espère que ça vous plaira ;)
 

** Attention! ** Sur ces vieux articles, certaines images font référence à "Tixlegeek.com" qui est mon ancien nom de domaine, qui a été racheté. Je n'ai rien à voir avec ce que le site "tixlegeek.com" publie maintenant. Il est tenu par un type que je ne connais pas. 

Les petits dongles que j'avais utilisés ressemblent à ceci:

Comme je le dit dans la vidéo, il ne faut pas s'y fier: les PADs du AT90USB162 ne sont pas toutes disponibles sur les pads visibles sur la photo. En fait, je crois que j'avais du virer une LED pour y mettre mon bouton, mais, c'était il y a longtemps.

Le repo contenant le code source ( C, pour AT90USB162) se trouve ici:

qrcode

[ARCHIVE 04/03/13] Tixlegeek's Workshop : Trottinette électrique du futur Part.I

** Attention! ** Sur ces vieux articles, certaines images font référence à "Tixlegeek.com" qui est mon ancien nom de domaine, qui a été racheté. Je n'ai rien à voir avec ce que le site "tixlegeek.com" publie maintenant. Il est tenu par un type que je ne connais pas. 

Salutations!

L'ami Jojo m'a donné, il y a quelque temps de cela, quelque pièces d'un vieux scooter électrique. Parmi ces pièces, un moteur MY1016 de 250W (24V). Les années passèrent, et il y a quelque mois, j'ai enfin ressorti la bète du placard pour en faire quelque chose de stupéfiant.

J'ai d'abord entrepris d'en faire un micro-buggy un peu chelou, j'ai même commencé les plans. Mais, l'ami Bada, qui est un féru de mécanique, à proposé de me faire une étude statique complète du système. Le couperet tombe: Si je fais un buggy avec ce moteur, je devrais pédaler pour qu'il avance.

Trop lourd, trop de frottements, démultiplication trop faible. Oublié le buggy! J'ai alors décidé, l'aire de rien, d'en faire une trottinette électrique. Ni une ni deux, je traine le père au "Troc de l'ile", un dépôt-vente pas trop loin. Là bas, je tombe sur LA trottinette. Modèle "Obscure" pour être exact, avec de bonnes grosses roues montées sur roulement à aiguilles:

Cette trottinette, en dehors du diamètre des roues, dispose de plusieurs avantages qui ont facilité sa conversion: La forme du corps (en alu, creux, avec deux petites ailettes sur les bords), le système de direction (pliable, et réglable en hauteur).

Partie moteur

J'ai donc attaqué directement la construction du châssis supportant le moteur, la roue arrière, et la transmission. Pour ça, j'ai commencé par aller faire un tour chez csmoto, site français spécialisé dans la conversion et la construction de scooters électriques. Et oui! il y a aussi un buisness là dedans!

J'ai du commander plusieurs trucs chez eux:

  • Un pignon moteur 12 dents pour remplacer le pignon d'origine. Avantage: Plus facile à monter, et normes européennes.

  • Un bout de chaine + maillon rapide (type chaine de vélo (normes EU). J'aurai pu récupérer ça, mais, j'ai préféré faire dans le propre et net)

  • Une couronne 27 dents Usiné spécialement, que j'ai du adapter à la roue de la trottinette. De toute beauté.

  • Deux batteries 12V 7Ah Indispensable pour faire avancer la trottinette! En plus, les gars de Cs moto m'ont fait 10%

 

Résultat des courses:

  • x1 Pignon 12 dents 3.3 pas 12.7mm avec vis de blocage : 11€

  • x1 Couronne 27 dents : 14€

  • x2 mètre de chaine 3.3 1/2" + 1 attache rapide : 12€

  • x2 Batterie NP7-12 : 46€ - remise 10% = 41.40€

  • Frais de port : 13€

  • Sous total : 78.40€

  • Total avec commission Paypal : 81.15€

Bref... pas trop trop cher. C'est un investissement non-négligeable, mais, honnêtement, j'aurai pas pu trouver moins cher ailleurs, avec le service-client dont j'ai bénéficié. (rien que pour les batteries et la couronne)

 

En passant, csmoto, vraiment super sympa, et super pro. Je leur ai dit ce que je voulait, ils m'ont conseillés, et trois jours après, mon petit carton de 10Kg m'attendait devant la porte.

Le plan d'action est le suivant:

 

Quelque jours de boulot plus tard, j'ai enfin terminé le support, la transmission, et tout et tout. Pour le tenseur de chaine, j'ai récupéré une roue sur un vieux dérailleur de vélo, et ai fabriqué une pièce permettant de l'orienter selon 3 axes. Mais avant d'en dire plus; photo:

Ouf! les cotes étaient exactes. J'ia du prendre quelque libertés par rapport au plan initial pour rattraper quelques imprécisions, mais l’essentiel est bien là. A noter pour plus tard: Utiliser un vrai logiciel de CAO, et pas inkscape qui est définitivement fait pour TOUT, sauf pour ÇA. :)

D'ici ce soir, détails du reste, et la suite des hostilités

La suite, c'est par ici!

qrcode

[ARCHIVE 04/08/11] Tixlegeek's Workshop : Badge/Boucle de ceinture Matrice de led 8×8 à PIC

** Attention! ** Sur ces vieux articles, certaines images font référence à "Tixlegeek.com" qui est mon ancien nom de domaine, qui a été racheté. Je n'ai rien à voir avec ce que le site "tixlegeek.com" publie maintenant. Il est tenu par un type que je ne connais pas. 

Salutations!

Sur un coup de tete, samedi je crois, j’ai décidé de me bricoler un petit badge/boucle de ceinture pour affirmer la “G33k Touch’ “! On ne saurait trouvé plus inavouable comme méthode… Pas de schéma, pas de plan, juste les docs des principaux composants et deux ou trois chinois dans la tete…

Pour le moment, le prototype à été verroboardé au feeling sur du CI de prototypage (veroboard..) à pastilles. Le principe est simple, et, c’est celui de beaucoup de matrices à led :

Un 4017, commandé par deux I/Os du PIC16Fxx, drive par l’intermédiaire d’un ULN2803, les masses de chaque colonnes de huit LEDs, et huit autre I/Os du PIC commandent l’anode des lignes, à raison de 20mA par I/Os… Ca économise du transistor et ca use les fonds de tiroirs dirons nous !

L’ULN2803 est donc tout indiqué, puis-ce qu’il à deux vocations ici : Il drive pres de 500mA par masse (je crois me souvenir), et il inverse les signaux en provenance du 4017 (pour que la différence de potentiel se fasse dans le bon sens, si j’ose m’exprimer ainsi…)

Photos du proto testé et fonctionnel :

Je porte votre attention sur l’arrière de la matrice à proprement parler… Que jamais l’un d’entre vous n’essaye de faire un tel boulot sur du verroboard, c’est du suicide mental…

qrcode

-

Scripts bash, et goodies CLI
** Attention! ** Cet article n'est pas terminé, il sortira début 2023, je le met là pour ne pas l'oublier :D (désolé, vous n'êtes pas un voyageur du futur)

Salutations!

Aujourd'hui, je me suis dit que j'allais vous partager certains des scripts BASH que j'utilise, que ce soit pour rigoler ou pour améliorer un peu mon confort de technicien.

Lire la suite...

qrcode

CoolKid'sBadge

Nouvelles: Le CoolKid'sBadge

Pour LeHack2023, après plusieurs déconvenus les années précédentes, j'avais décidé de designer et produire en toute indépendance un badge de conférence électronique. L'idée était celle-ci:

  • Un joli badge bien décoré
  • Qui puisse se connecter à un flipperZero
  • Qui puisse fonctionner tout seul, ou avec un flipper, ajoutant ainsi des fonctionnalités sympas:
    • NRF24L01 pour la communication 2.4Ghz (et permettre des attaques sur des périphériques sans fil mal sécurisés, genre attaques MouseJack)
    • ESP32 qui controle l'intégralité des autres fonctions, disposant d'un serveur WEB et de tout ce qu'il faut pour développer et explorer.
    • Des alimentations propres et des pads qui permettrait le développement rapide et l'analyse des signaux

Ce projet, c'est donc le CoolKid'sBadge, dont tous les détails sont disponibles ici: https://tixlegeek.io/coolkidsbadge

J'ai récement repris la r&d et la production (j'espere pour cette année) et je fais ça en live sur twitch! https://twitch.tv/tixlegeek

qrcode

LightMessenger: Partenariat avec LAB401

Salutations!

Hey! Aujourd'hui, je vous parle du dernier gros projet auquel j'ai pu participer, en partenariat avec LAB401. En effet, depuis un an et demi, on travaille main dans la main avec les gars de LAB401 pour inventer, et créer des addons pour FlipperZero. Vous connaissez?

Le Flipper Zero

flipper

Le Flipper Zero est un outil multifonction open-source taillé pour l’exploration et l’exploitation des protocoles NFC, RFID, infrarouge, Sub-GHz et bien plus. Porté par une communauté ultra-active et doté d’un arsenal technique taillé pour le pentest physique, il repose sur un STM32WB55 avec une stack hardware parfaitement intégrée, en faisant une plateforme de développement et de bidouille sans équivalent. Son boîtier robuste, son écran LCD monochrome soigné et son environnement logiciel dynamique en font bien plus qu’un simple gadget : c’est un véritable laboratoire de poche, extensible, modifiable et conçu pour partager facilement ses créations avec le monde entier.

Bon, moi, je suis fan. J'en ai pris un dès qu'il est sorti, j'ai bricolé avec de manière intensive.... Jusqu'a ce que je croise la route de Lab401...

Partenariat avec LAB401

Pour LeHack2023, j'avais préparé le CoolKid'sBadge, un badge de conférence électronique contenant un ESP32, et pouvant être branché à un flipperZero, un peu comme un module externe.