Geeklab Le refuge de mes découvertes

3juin/120

Explication graphique des algorithmes de PathFinding

Illustration graphique de la recherche du chemin le plus court avec l'algorithme A*

Le PathFinding est présent dans bon nombre de domaines, en particulier chez les jeux vidéos qui nécessitent de doter les bots d'une intelligence artificielle afin qu'ils puissent se déplacer, par exemple, sur une carte le plus efficacement possible.

Les deux principaux algorithmes de recherche de chemin sont l'algorithme de Dijkstra et l'algorithme A*. Il ne faut pas chercher à savoir lequel est meilleur, mais lequel est le plus efficace dans une situation précise.

Pour avoir une idée de leurs fonctionnements, un projet posté sur GitHub propose de créer notre propre plan en nous permettant de déplacer le point de départ et d'arrivé, et d'ajouter ou supprimer des obstacles. Vous pourrez ensuite choisir quel algorithme (ou sous-algorithme) utiliser, sélectionner diverses options comme l'utilisation des diagonales, et enfin appuyer sur "Start" pour voir l'algorithme en action.

Un petit timer en bas à droite précisera également le temps et le nombre d'actions qui ont été nécessaires afin de mener à bien la recherche du chemin. Avec tout ça, vous devriez pouvoir trouver l'algorithme optimal pour votre utilisation.

[source]

22mai/120

Découvrez tout un tas de modules pour Python

Comme une extension pour Firefox ou un mod pour Skyrim, un des gros points forts de Python est les nombreux modules qu'il propose.

Vous pouvez y ajouter tout un tas de modules plus ou moins pratiques pour vos projets tels que ceux pour récupérer facilement les informations de votre système, manipuler les adresses IP, générer un mot de passe, etc.

Si vous ne savez pas vraiment ce que vous recherchez, je vous conseille de faire un tour sur cette page qui regroupe une bonne tripotée de modules susceptibles de vous intéresser.

[source]

19avr/120

Déboguez efficacement avec la méthode du canard en caoutchouc

Développer un logiciel demande du temps et de l'organisation. Lorsqu'on l'a terminé, il est extrêmement rare qu'il se lance du premier coup et que tout fonctionne à merveille. Il faut alors relire le code, voir où se trouve le petit défaut. Toutefois il arrive que même après une revue complète du code source on n'arrive pas à situer le bug.

Un canard en Caoutchouc

Dans ce cas là, je vous conseille d'essayer la méthode du canard en caoutchouc. Celle-ci consiste à expliquer à voix haute les différentes étapes du code à un collègue et, faute de mieux, à un objet inanimé, afin de se rendre compte d'une erreur la plupart du temps évidente qui nous avait échappé la première fois. Et franchement, même si on peut avoir l'air ridicule, c'est très efficace !

[source]

25mar/120

Trouvez Charlie grâce aux mathématiques

"Où est Charlie" ("Where's waldo" en inegliche) est ce fameux jeu qui consiste à trouver notre ami Charlie, perdu parmi une foule de monde, voire dans une foule de sosies. Pour y jouer vous deviez maitriser l'art de la patience et posséder un oeil de lynx.

Vous finissiez enfin par le retrouver, là, juste sous votre nez depuis le début, mais obteniez tout de même la satisfaction de pouvoir embêter les prochains aventuriers qui partiraient à sa recherche. Certains winners gagnaient même une visite chez l'ophtalmo après une épreuve oculaire aussi intense.

Un script qui permet de trouver Charlie

Mais s'en est finit ! Les maths, cette matière que vous trouviez toujours inutile et qui vous faisait dire "c'est pas comme si j'allais utiliser le théorème d'Al-Kashi pour acheter une baguette !" devient enfin pratique. C'est une bonne âme de Stackoverflow qui a trouvé un algorithme pour pouvoir premièrement exclure les personnes qui possèdent un T-Shirt rouge, puis enfin d'isoler notre camarade Charlie.

A long terme, les nerds gagneront toujours !

[source]

12mar/120

Une interface de développement qui donne le résultat en instantané et bien plus encore !

Qui n'a pas râlé à chaque fois qu'il faut compiler le programme en cours de développement, juste pour voir si la petite modification qu'on a effectué a réellement eu le résultat attendu ?

Il existe évidemment d'excellents outils pour tester en temps réel la modification d'un html et css. On remarque toutefois que dès qu'on cherche le même outil pour tester rapidement son programme, c'est déjà une toute autre histoire.

Entre réfléchir au code, modifier et tester/compiler on perd finalement pas mal de temps et ça devient rapidement frustrant surtout aux débuts lorsqu'on veut "tâter" les possibilités du langage.

Une interface de développement dynamique en HTML5/Javascript

Heureusement un certain super-héro nommé Bret Victor a conçu une incroyable interface de programmation qui permet de tester instantanément son code javascript. Celui-ci sera immédiatement retranscrit en HTML5 (à l'aide des canvas) afin de savoir tout de suite si on n'a pas fait une bêtise.

Mieux encore, cette interface permet la gestion de variables avec une extrême facilité. En effet, et particulièrement pour les jeux de plateforme,  il est souvent nécessaire de régler minutieusement la hauteur des sauts, la puissance d'une attaque, la vitesse du personnage, etc. au millimètre près. Si vous n'êtes pas convaincu, regardez cette vidéo qui a réussi à me donner des frissons d'impatience :

Comme le dit un commentaire sur Youtube : Bret Victor a réussi à transformer la programmation d'un jeu en un jeu elle-même.

[Source]

21fév/120

L’argot dans les langages de programmation

Le plus connu : le fait de mettre la constante avant la variable

Le plus connu : le fait de mettre la constante avant la variable

Lorsqu'on apprend à programmer, tout semble extrêmement carré, la moindre virgule (voire point virgule) pouvant faire foirer la compilation. Peu à peu on remarque comment fonctionne la compilation et on peut alors choisir son propre style pour programmer. Je parle là du style "contenant" le code.  Celui qui peut être plus facilement modelé chez certains langages (souvent haut niveau)  que d'autres (par exemple le Python qui doit être forcement structuré par les indentations).

Je suis tombé sur cet article qui nous présente toute une liste de ces habitudes qu'on peut prendre en programmant et j'avoue en reconnaitre plusieurs chez moi. Celui qui m'a l'air le plus répandu est l'Egyptian brackets qui consiste à placer les accolades qui délimitent les blocs complètement à l'opposé, le nom étant inspiré par la position des mains des dessins de profil des égyptiens.

Une dernière qui m'a assez surpris et amusé est l'utilisation de "apt-get" (instruction issue de Unix qui sert principalement à télécharger des mises à jour) à la place de "télécharger" dans une phrase. Ces néologismes couplés au langage "gamer" pourrait rendre vraiment pas mal durant une discussion.

[source]

4jan/120

Deviens un hardcore programmeur !

WordPress-Quellcode als Gestaltungselement

Que vous n'ayez jamais codé de votre vie (évitez les trolls : "Mais si, je code en html/css") ou que vous connaissiez déjà quelques langage, vous pouvez avoir envie d'apprendre plus, plus et plus. Je pense que cette étape arrive chez la plupart des gens : on a l'impression de stagner, de ne rien apprendre de réellement nouveau. Et donc on s'ennuie.

C'est bien ça qui m'a donné envie à mes tout débuts d'apprendre un langage de programmation. Sauf que nous, les vrais futurs Motherfucker Programmers, on ne veut pas faire dans la dentelle en suivant des cours qui sont zolis, ou des tutos sur internet qui sont bien présentés avec des zimages. Non. Nous on la fait à la brutasse, à la old-school. On veut faire le parcours du combattant et s'approcher le plus possible de l'enseignement qu'on eu les pionniers de l'informatique.

Et c'est là qu'arrive le site Programming, Motherfucker. Un site qui regroupe une énorme liste de E-books (gratuits dans leurs version Web) et de sites où vous pourrez apprendre tous les langages dignes de ce nom et même à utiliser quelques outils et frameworks bien pratiques.

Alors si vous avez le temps : lancez-vous ! Choisissez un langage qui pourrait vous intéresser (vous pouvez toujours chercher sur internet quelques comparatifs et voir quel langage est le plus adapté à vos besoins) et même si ça pourra vous sembler difficile à certains moments, pour ceux qui commencent principalement (ou si vous apprenez à programmer à l'Assembleur ^^), ne vous découragez pas ; c'est normal puisque c'est nouveau pour vous. Prenez votre temps et surtout, PRATIQUEZ ! C'est le meilleur moyen pour véritablement absorber ces connaissances.

 

[Source]