Nuit Du Hack
Creative Commons License
.

Aller au contenu | Aller au menu | Aller à la recherche | Voir les modalités d'utilisation des travaux de l'auteur

Page d'accueil rss Sélection Geekstories.fr La Boite à Vomi

vendredi 30 juillet 2010

The SysAdmin Day

[ Partager : Partager sur Digg ]

Encore une info pompée à TimGau... Today is the SysAdmin Day!

http://fashionablygeek.com/wp-content/uploads/2008/03/de-evolution-of-man-shirt.jpg
Happy SysAdmin Day!

mercredi 28 juillet 2010

Mon interpréteur BrainFuck perso

[ Partager : Partager sur Digg ]
Salutations!

Pour ceux qui ne connaissent pas ce merveilleux langage de programmation, il y a dans la note précédente, quelques exemples de code brainfuck. Le brainfuck, conceptuellement, c'est trop cool. Un seul registre, un jeu d'instruction tres réduite, et une utilisation tres proche des systèmes logiques. Et bien, en attendant d'avoir le courage de bidouiller un ordinateur brainfuck, j'ai décidé de coder ma propre version de ce langage!

Voilà, donc j'ai commencé par programmer un interpréteur simple, qui supportait toutes les instructions du brainfuck, pour ensuite le modifier. J'ai déjà implémenté deux ou trois fonctionnalités tres pratiques qui rendent bien service, comme le support des boucles imbriquées, et un incrément numérique des valeur du registres. Prochain étape, l'adressage "direct" du registre. Finalement, ça va s'apparenter à ce que je voulais faire (voir le billet sur mes projets en cours). Le brainfuck est vraiment tout indiqué, et est bien plus facile à interpréter que le BASIC (la conversion "langage->code" c'est trop la merde, et ca dépends trop de la finalité.).

Là, je pense être sur la bonne voie pour créer un langage pratique, rétro-compatible (il peut interpréter un code brainfuck), et léger (moins de répétitions, interpréteur simple=bug--). Je vais poster le code source de l'interpréteur, sous licence GPL (of course) et le langage lui même aussi j'espère.

Et bon surf!

lundi 26 juillet 2010

It's BrainFucking time !

[ Partager : Partager sur Digg ]
Salutations!

Grace à TimGau, qui a posté une de ses sources BrainFuck sur le réseau social totalitaire et bleu, j'ai eu le plaisir de re-goûter à ce merveilleux langage qu'est le BrainFuck. J'ai alors demandé à mon entité cérébrale nerd de me remettre en RAM les vicissitudes de ce dernier. Quel miracle, un langage si simple, et si poétique à la fois! Il regorge de concepts tout à fait intéressants d'ailleurs.

Pour rappel, le brainfuck permet de manipuler UN registre, d'afficher la valeur d'une cellule de ce registre, et de demander la saisie d'une valeur de cellule. Il dispose aussi de la formidable "[]" qui est une boucle conditionnelle.

Quelque petits codes BrainFuck

Signature Brainfuck
+++++ +++++ +++++ ++++
[>+++++<-]
+++[>----<-]>+.
<+++[>+++++++<-]>.     
<+++[>+++++<-]>.
<+++[>----<-]>.
<++[>---<-]>-.
++.
--..
<++[>+++<-]>.
Un petit compte à rebours avec retour-chariot
>+++++ +++
[<+++++ ++>-]<+
>>+++
[<+++>-]<+
>++++++++++.<
[<.->->.<]
Et son homologue, le compteur
>+++++ +++
[<+++++ +>-]<
>>+++
[<+++>-]<+
>++++++++++.<
[<.+>->.<]
Un petit programme mignon tout plein pour les sensibleries geekesques:
>++++++++++
[>+++++++<-]>+++.
<++[>-----<-]>---.
<++[>-----<-]>+.
<++++[>++++++++<-]>++.

Hm... Et c'est tout pour le moment. Je vais avoir le temps de brainfucker, je vous tiens au courant!

Vidéo de la Nuit Du Hack 2010

[ Partager : Partager sur Digg ]
Salutations!

Voici la vidéo résumant la nuit du hack de cette année :

Encore une fois, et, sans me répéter encore, Tres bonne soirée! Bien organisé, malgré la foule impénétrable s'agglutinant dans les salles de conférence, et l'absence de wifi la plupart du temps.

Surprise! Mes bras et mon PC (DooWeee) apparaissent sur la vidéo! J'étais alors entrain de bricoler mon framework graphique pour points d'accès, juste à coté de types qui tentaient de cracker une livebox (je ne leur ai été d'aucune aide... C'est frustrant ;) ) Et juste en face de moi, il y avait Korben (le brun/roux en polo rouge)

Voilà pour le deuxième post de la journée :)

Coder les fonctions usuelles des librairies standard du C

[ Partager : Partager sur Digg ]
Salutations.

Souvent, quand on est amené à manipuler de la mémoire en C, par exemple, lors que l'on a des chaines de caractères, ou que l'on doit analyser une structure "complexe" de données (images, etc...), on aimerait pouvoir résoudre de petits problèmes simples avec élégance... Si les librairies standard offrent de bons moyens de ne pas avoir à savoir coder, il est en revanche un constat accablant à faire: apprendre à bien coder éviteraient parfois de belles bourdes.

Je n'ai pas la prétention d'avoir des leçons a donner. Mais finalement, pourquoi ne pas diffuser un peut ce qui me semble utile?

Je propose donc de donner quelques exemples commentés de fonctions usuelles codées dans un style élégant, qui pourraient vous permettre d'enfin apprécier de faire un code découlant d'une logique implacable. Et le code logique et pur, c'est beau.

Strlen

strlen (string lenght) est une fonction définie dans le header de la librairie standard string.h, et ayant pour prototype "size_t strlen(const char *s);". Son role est de renvoyer la taille d'une chaine de caractères (nombres de caractères contenus dans la chaine). Une chaine correspond en réalité à un pointeur, donnant accès à une plage de caractères, et dont la fin est déterminée par un \0 (valeur à 0). Le pointeur donne l'emplacement mémoire du premier caractère de la chaine.

Comme je le disait plus haut, le C permet une manipulation de la mémoire très propre, et bien intégrée. On pourra donc coder notre fonction de strlen en utilisant les pointeurs et leur syntaxe:


/* (c)Tixlegeek 2010 - GPLv3  */
int strlen(char *str)
{
   int i=0;
   while(*(str+i)){i++;}
   return i;
}

Malgré qu'il puisse etre un peut intimidant pour les débutants (et c'est normal, ya des pointeurs :) ) on peut aisément l'expliquer et le comprendre:


int strlen(char *str)
{
   int i=0;   Déclaration de la variable i et initialisation à 0
   while(*(str+i)){i++}  Tant que la valeur *(str+i) (=valeur à l'adresse str+i) est supérieure à 0, on incrémente i.
   return i;   On est arrivé à un 0, on retourne donc la valeur de i, qui correspond au nombre de caracteres parcouru dans la boucle précédente.
}

ltrim

OOPS! L'ami Mathedit m'a fait remarqué à juste titre que ma fonction ne marchait pas! (je flagellerai ma chaire impure avec une courge molle ce soir, c'est promis) Et m'en a fait la démonstration. Je ne suis pas encore certain des circonstances du bug, mais à l'évidence, ca plante. Ce n'est que partie remise! Et merci à mathedit

Voilà. Ces deux fonctions permettent de comprendre un peut mieux l'utilité des pointeurs, et en quoi ils peuvent nous changer la vie. Ce ne sont que des exemples, mais le haut niveau n'empêche pas d'avoir à savoir programmer un minimum!

vendredi 23 juillet 2010

[Reverse engineering d'enseigne lumineuse] Idée pour la suite: la boite à lambert

[ Partager : Partager sur Digg ]

Salutations!

Je viens de recevoir mon nouveau programmateur de PIC, et suis en passe de le faire marcher sous GNU/Linux. J'ai donc commencé à m'intéresser sérieusement à ce que j'allais faire de l'enseigne lumineuse dont j'ai fait la description ce moi ci. Et j'ai eu une idée tres intéressante: La boite à lambert.

Tout est partit de cette vidéo:

Hohoho

Et donc j'ai trouvé ce dont j'avais besoin, l'entregistrement ultime, retravaillé à partir d'une vidéo de youtube, avec ffmpeg (extraction de la bande sonore) et Audacity (troncature et amélioration)

Je vais donc m'atteler à trouver un PIC en DIP8 avec un oscillateur interne, et une sortie PWM matérielle... Pour pouvoir envoyer le fichier ré-échantillonné dans la mémoire du chip. La PWM, un aop, et un condo feront le reste. Bref!

La suite au prochain épisode.

jeudi 22 juillet 2010

Un petit peu de PUB sur mon blog.

[ Partager : Partager sur Digg ]
Salutations!

Je me suis rendu compte que, mine de rien, mon petit Blog plaisait à quelque personnes. Et ça se traduit en particulier par une fréquentation de plus en plus soutenue. J'ai décidé de tenter deux expériences:

  • Installation d'un bandeau publicitaire en haut de page: Voir s'il me serait possible de financer l'entretien du blog (Hébergement, nom de domaine, sauvegarde) et/ou, quelque projets. J'essaye de faire en sorte que ça ne gêne pas la lecture, et que es lecteurs (vous =) ) ne soient pas agressés par des tracts religieux ou politiques. Entant qu'utilisateur, je sais à quel point c'est chiant.
  • Un bouton d'intégration facebook sur le site, et les articles: Si des gens aiment ce blog, j'aimerai le savoir. Je sais que beaucoup de personnes viennent voir mon blog, et qu'un bon tiers d'entre eux sont des "habitués". Mais connaitre vos opinons, ca m'intéresse, et je sais qu'on ne pense pas forcément à laisser un commentaire, ou qu'on en a pas forcément envie.
  • Voilà! Faites moi part de vos impressions en utilisant le boutton "j'aime", et n'hésitez pas à utiliser les bandeaux publicitaires!

dimanche 18 juillet 2010

Les Chips asiatiques

[ Partager : Partager sur Digg ]

Oui, comme tous les bidouilleurs, je suis une victime du système.

vendredi 9 juillet 2010

Reverse engineering: Les enseignes lumineuses : Contre temps ù__ù

[ Partager : Partager sur Digg ]
image

Je me suis rendu compte, hier, en avançant un peut dans mon reverse d'enseigne lumineuse, que mon programmateur de PIC chinois ne supportait pas les 12F508 !!!!!! et ce, même après quelques modifications... J'en ai commandé un autre pour voir, espérons que je ne sois pas obligé de tout bonnement changer le µC pour une version mieux supportée u___u...

Mais je crois avoir réussi à dumper le firmware, vous en saurez plus d'ici quelques jours!

vendredi 2 juillet 2010

Interlude musical

[ Partager : Partager sur Digg ]

Aujourd'hui, un ptit peut de musique pour se détendre, et oublier la chaleur torride de cet été de montagnard. Waaaahaannnn, black betty!!!! bam a lam...

Creative Commons License
Les travaux signés "Tixlegeek" by DUBIEF Gery sont mis à disposition selon les termes de la licence Creative Commons Paternité-Pas d'Utilisation Commerciale-Partage des Conditions Initiales à l'Identique 2.0 France.

Pour toute modifications apportées, ou diffusion, merci de mentionner l'auteur d'origine, et l'adresse de ce blog.