C’est un problème que nous, les enseignants, faisons souvent face. Des Flash disque ou clés USB d’étudiants qui sont corrompus par des virus, et leurs fichiers deviennent inaccessibles à l’utilisation. Je crois qu’il est utile et nécessaire d’écrire un petit article avec une vidéo explicative pour faire apprendre aux étudiants la manière à faire pour contourner ce problème. La première chose à prendre en considération est de comprendre le fonctionnement du virus. Dans la plupart des cas, lorsqu’un virus va compromettre une clé USB, il ne va pas supprimer les fichiers déjà existants, mais il va plutôt les faire cacher, et ensuite créer des raccourcis trompeurs avec les mêmes noms des fichiers, qui vont lancer ou exécuter le code du virus si l’utilisateur appuie dessus. Ainsi, la première chose à faire, c’est de supprimer ces raccourcis. C’est très simple de distinguer un fichier ou un dossier raccourci, Il est distingué par une petite flèche, en bas de l’icône du fichier ou du dossier, et généralement il a la taille d’un kilo-octet. Après ça, il faut chercher dans le système d’exploitation à faire afficher les fichiers cachés. Ça dépend du système d’exploitation, mais généralement c’est assez simple de chercher dans les options de Windows “option des dossiers” et faire afficher les fichiers cachés et les fichiers système. Et voilà, maintenant vous pouvez accéder à vos fichiers et dossiers que le virus a fait disparaître, et vous pouvez même changer leurs propriétés pour redevenir les fichiers normaux, fichiers non cachés. La vidéo en bas est une vidéo en arabe, elle permet d’expliquer plus en détail ce processus de récupération des fichiers corrompus dans une clé USB.
Articles sur Blog
Guru99, L’immense portail de tutoriels en informatique
Je viens de découvrir ce site web Guru99 presque par hasard. Par la magie de l’internet, j’ai fait la connaissance de l’un des administrateurs de ce site web, en raison que nous proposons presque le même continu sur le Net. Après avoir fait un bref détour sur le site, j’ai pu constater que c’était un site énorme, et pour lui rendre justice, je dois clairement le qualifier de portail au lieu de sites web. Il contient énormément de tutoriel, fait par différents enseignants, Incluant différents thèmes. D’ailleurs, je n’arrive même pas à inclure tout le contenu dans cet article, ainsi je vais lister ici-bas les partis qui me semblent les plus intéressantes :

Langages de programmation :
- Java
- VBScript
- Python
- Perl
- Linux
- Javascript
- Apache
- PHP
- AngularJS
- Node.js
- JSP
- Web Services
- C#
- ASP.Net
- Android
- C++
- CodeIgniter
- Kotlin
- ReactJS
- Ruby & Rails
- Scala
- UML
- WPF
Diverses ressources :
- Web Development
- Online Courses
- Reviews
- Excel Tutorials
- Accounting
- Ethical Hacking
- Cloud Computing
- Photoshop CC
- Business
- Informatica
- Project Management
- VBA
- CCNA
- Jenkins
- Software Engineering
- Blockchain
- Cloud Mining Sites
- Go Programming
- Networking
- Operating System
- Compiler Design
- COBOL
- Embedded Systems
- Algorithms
- Salesforce
- eCommerce Platforms
- Website Monitoring Tools
- IP Blocker Apps
- Best VPNs
- VPN for iPhone
Bases de données :
Apprendre l’électronique avec Arduino
Personnellement, je trouve la plateforme Aduino, l’un des meilleurs moyens pour permettre aux étudiants et aux initiés de faire une introduction aux systèmes embarqués. Pour faire simple, les systèmes embarqués sont des systèmes qui nécessitent des connaissances en électronique pour construire la plateforme physique, et en informatique pour programmer la plateforme. Ainsi, pour pouvoir faire du système embarqué, il faut au minimum avoir des connaissances dans les 2 disciplines.
J’ai déjà à plusieurs reprises écrit sur Arduino. Mais cette fois-ci, je suis tombé sur une vidéo très approfondie sur le sujet. Parce que, Premièrement, la vidéo ne nécessite de l’étudiant aucune connaissance préalable en informatique et en électronique. Et Deuxièmement, ce qui est le plus intéressant, c’est que l’étudiant n’est pas obligé d’avoir une carte Arduino matérielle pour pouvoir suivre ce cours. Car on retrouve sur la vidéo une référence à un simulateur qui arrive à faire la simulation d’Arduino et de l’électronique avec en plus une superbe interface bien agréable. C’est le simulateur online tinkercad.
La vidéo en question est celle de la chaîne YouTube du site web éducatif www.freecodecamp.org, et comme vu précédemment dans d’autres blogs, c’est un excellent site plein de nombreux cours et tutoriels en informatique.
Projet du weekend : Angry Birds-like en Python
Il n’y a pas plus fun et amusant dans la programmation que la programmation des jeux vidéo, le but étant de créer un univers vidéoludique dans lequel les joueurs peuvent s’amuser, et même parfois apprendre, ou être projeté dans un univers imaginaire et suivre une histoire, ou faire la connaissance et socialiser avec d’autres joueurs. Malgré son aspect jovial, la programmation des jeux vidéo n’est pas une tâche si facile. Contrairement à d’autres types d’application, la programmation des jeux vidéo nécessite la maitrise de nombreux aspects très différents les des autres. Comme par exemple, la programmation procédurale, la programmation objet, la programmation événementielle, la programmation concurrentielle, la simulation physique comme sur le tutoriel en bas, la programmation réseaux, la maitrise de quelques notions en algèbre et en géométrie, l’intelligence artificielle, systèmes d’exploitation pour le portage et la distribution sur différentes plateformes, une bonne base d’algorithmes et de structures de données, et surtout l’infographie (ou en Anglais computer graphics)…etc.
Sur la vidéo en haut, de l’excellente chaîne Youtube Tech With Tim, il est possible de suivre un petit tutoriel sur comment on peut développer avec Python une simulation physique similaire à la simulation utilisée dans le jeu Angry Birds. La vidéo ne se focalise pas réellement sur l’aspect jeu vidéo, mais plutôt sur l’aspect simulation physique. Il y a beaucoup de jeux dont leur gameplay se base sur la physique, mais dans la plupart du temps, ce n’est pas si facile pour un étudiant ou un débutant avec des connaissances basiques de la programmation de passer à la programmation des jeux vidéo utilisant la physique. En réalité, ce que vous allez voir sur la vidéo est une petite introduction au framework graphique PyGame, qui est utilisée le plus souvent pour le développement de petits jeux vidéo (dit jeux indé). Il est utilisé conjointement avec une autre bibliothèque appelée PyMunk dédiée à assurer la simulation physique du jeu. Normalement pour maîtriser le tout, le développeur doit investir beaucoup de son temps, mais la vidéo ici représente juste une petite introduction pour ce type de programmation pour avoir un pas de départ.
Les arbres binaires comme structure de données
Il est évident que les structures de données en informatique font partie des mécanismes de programmation les plus importantes à maîtriser pour la programmation. Une structure de données est la manière d’organiser la donnée à l’intérieur d’un programme pour que celle-ci soit le plus efficacement possible facile à accéder et à utiliser. Les structures de données, il y en a de tous genre, du plus simple au plus compliqué, comme les tableaux, les vecteurs, les listes chaînées, les piles, les files, les anneaux, les arbres, les graphes…etc.
Sans surprise, les arbres binaires (appelées en Anglais Binary Tree, Bi-Tree ou B-Tree) s’inspirent d’une schématisation arborescente, qui est considérée comme une structure de données relativement plus ou moins complexe. On peut l’imaginer simplement comme une arborescence généalogique d’une famille avec plusieurs générations. Il y a le nœud qui représente l’individu, chaque individu peut posséder plusieurs enfants, les enfants ont leurs propres enfants, et ainsi de suite. Et l’arrière-grand-père le plus haut dans la hiérarchie est appelé la racine de l’arbre, c’est celui qui représente l’arbre. Pour les arbres dits binaires, un individu ne peut posséder plus de 2 enfants. Les arbres binaires sont très utilisés, peut-être le cas le plus probable est celui de la recherche dichotomique. C’est un algorithme très efficace pour la recherche de données dans une grande base de données.
La vidéo en haut de la chaîne YouTube du site web éducatif www.freecodecamp.org illustre cette structure de donnée sous format d’un tutoriel de courte durée pour espérant apprendre à l’intégrer dans ses propres programmes.
Le premier code de Wozniak pour Apple-1
Pour ceux qui ne le savent pas encore, Steve Wozniak avec Steve Jobs sont les cofondateurs de la célèbre firme technologique Apple. Avant la création de cette firme, Steve Wozniak à l’aide de son ami Steve Jobs, ont conçu dans un garage leur première machine Apple-1. Et on soupçonne que le premier code que Wozniak a développé pour cette machine soit son Monitor System. Au tout début, Apple-1 n’avait pas de système d’exploitation (même que Apple-1 officiellement n’a jamais reçu de Système d’Exploitation), ainsi Wozniak a imaginé le développement d’un petit moniteur pour cette machine, appelé Woz Monitor. Par principe, le moniteur est un outil de débogage et de configuration matérielle, en sachant que son principal rôle est de donner la capacité à l’utilisateur d’accéder et de modifier directement la mémoire et les périphériques de la machine. Le moniteur que Wozniak a développé est très simple, il se comporte que de 256 octets, écrit en assembleur 6502, et son code est entièrement disponible et bien expliqué sur Internet (sur cette page) et sur GitHub. Le code du moniteur est très populaire pour les machines faite maison.
La vidéo en haut et celle de Ben Eater. Personnellement, moi j’en raffole des vidéos de Ben Eater, parce qu’ils sont très académiques, bien clairs, et très bien expliquées. Sur la vidéo, il explique l’utilisation du moniteur pour sa propre machine faite maison.
La programmation d’un émulateur
Étant actuellement un enseignant en architecture des ordinateurs, et un enseignant de programmation et structures de données dans le passé. Je peux sereinement suggérer aux étudiants en informatique, que le meilleur exercice pour maitriser les 2 disciplines est de développer soi-même un émulateur. Alors c’est quoi un émulateur ? L’émulateur par définition est un logiciel qui va reproduire ou répliquer exactement le même comportement d’une machine donnée sur une machine hôte différente. Vous pouvez par exemple émuler une console du type Nintendo sur un PC de bureau. L’émulateur va se comporter exactement comme une console Nintendo le ferait réellement. Vous aurez ainsi l’équivalent d’une console installé sur un PC et vous pourrez jouer à cette console.
Le fait de programmer un émulateur est très enrichissant pour un étudiant. Ça va premièrement, le faire investir en programmation sur un projet relativement de grande envergure, à la différence des petits exercices et travaux pratiques qu’il a l’habitude de faire dans lequel il doit planifier au préalable et construire une architecture logicielle qu’il doit suivre et soutenir tout au long du projet. Et deuxièmement, il doit bien maîtriser l’architecture de la machine à émuler. Il doit effectivement reproduire en logiciel les composantes hardwares de la machine. Ainsi, il va reconstruire le processeur avec toutes ses instructions et ses caractéristiques, il doit aussi reproduire les mémoires de la machine, le système vidéo, le système de son, les entrées/sorties… etc. Sur la vidéo en bas de la chaîne YouTube Computerphile, un émulateur pour la célèbre machine Atari 2600 est grossièrement décrit par le docteur Steve Bagley.
Il faut savoir que les consoles de jeux sont principalement les émulateurs les plus connus parmi les émulateurs de toutes les machines. Pour la simple raison que ça va permettre aux utilisateurs de jouer à ces machines sur leurs propres ordinateurs. Malheureusement, ces consoles de jeux sont parmi les machines les plus dures à émuler, en raison de la complexité de leur système graphique. Cependant, pour un étudiant avec un bon niveau en programmation et en architecture des ordinateurs, Il lui est possible de développer des émulateurs jusqu’à la 4e génération des consoles de jeux, même si que pour faire tourner de simple démo ou homebrew, incluant ainsi des consoles comme la Nintendo NES, SNES, Sega Mega Drive, Master System…etc. Ce qu’on appelle les consoles à 16 bits. À partir de la 5e génération, ou les consoles dites 32 bits, ça devient difficile pour un simple étudiant de développer tout seul un émulateur pour une machine de ce type, en raison que ces machines sont devenues beaucoup plus puissantes que les précédentes, principalement à cause de l’intégration de la technologie 3D. On peut compter parmi ces consoles, la Sony Playstation 1, La Sega Saturn, La Nintendo 64. Jusqu’aux dernières générations de consoles.
Brève introduction à l’électronique
Les bienfaits de l’électricité dans notre vie quotidienne sont énormes et innombrables. Pour beaucoup de monde l’électricité est l’invention la plus marquante pour l’être humain tout au long de son existence. Au tout début de son appréhension par l’humain, ça a été surtout utilisées comme un moyen de transmission d’énergie. Ça permettait, et ça permet jusqu’à nos jours, d’alimenter les systèmes d’éclairage et à être une source d’énergie pour les différents appareils et moteurs se trouvant dans les dispositifs électroménagers, comme les réfrigérateurs ou les machines à laver, ou même les moteurs se trouvant dans les usines et les ateliers d’industrie. Mais plus que ça, et c’est ça ce qui nous intéresse en informatique, l’électricité est utilisée comme un moyen de transmission de l’information. L’exemple le plus concret est sans doute l’internet. Mais aussi à l’intérieur de nos ordinateurs car l’information est transmise sous forme d’impulsion électrique en utilisant les différents circuits électroniques composant l’essentiel du hardware informatique. Et tout ça principalement pour sa simplicité d’utilisation, sa disponibilité, et sa rapidité de transmission. Peut-être un jour la lumière va remplacer l’électricité pour le traitement automatique de l’information, mais pour l’instant la lumière est suffisamment plus difficile à manier en comparaison à l’électricité.
La vidéo en haut est celle de la chaîne YouTube Engineering Mindset, est une simple introduction au courant électronique. Le contenu de cette chaîne est excellent pour comprendre comment fonctionnent les circuits électroniques, que normalement tout étudiant en informatique doit au moins maîtriser les bases de cette discipline d’ingénierie magnifique.
Les processeurs RISC vs CISC
Toute personne parcourant l’évolution historique des processeurs à travers le temps, serait sûrement appelée sur une période dans le début des années 80, concernant un débat dans la communauté scientifique et industrielle autour l’évolution des processeurs dans les années à venir. Il y avait pratiquement 2 camps, un camp qui pensait que les avancées en électronique permettraient de créer des processeurs plus évolués et plus capables et que les processeurs devraient être plus complexes et plus riches. Le 2-ième camp n’approuvait pas cette idée, et suggérait que les processeurs devraient rester plus simples, et que la complexité des applications doit être léguer au Software. Après plusieurs débats houleux, il s’est avéré que c’est le 2-ième camp malgré un nombre d’adhérents réduit et un raisonnement semblant contre intuitif, les années à la suite leur ont donné raison.
Ce 2-ième camp est principalement représenté par les 2 figures bien connu dans le domaine des architectures des ordinateurs, David Patterson et John L. Hennessy, ils sont actuellement désignés comme les parrains de l’architecture des ordinateurs. Ils sont très célèbres dans le domaine académique par leurs 2 livres références Computer Organization and Design et Computer Architecture: A Quantitative Approach. Ils ont eux aussi l’honneur d’avoir le prix équivalant au prix Nobel en informatique qui est le prix Turing en 2017. David Patterson se charge actuellement du développement du très prometteur nouveau processeur open source RISC-V, et John L. Hennessy est bien connu pour être le cofondateur du célèbre processeur MIPS. Sur la vidéo en haut, on a une partie de l’interview de David Patterson par le célèbre académicien Lex Fridman, sur laquelle David Patterson va relater les faits et les événements qui se sont déroulés à cette époque.
Le moteur de jeu Godot 4.0
Pour un programmeur en quête de créer des jeux vidéo, Il aura à choisir entre plusieurs solutions. La première, est l’utilisation des bibliothèques bas niveau, ou les API, comme par exemple OpenGL, DirectX, ou Vulkan. Malgré que l’utilisation de ces bibliothèques offre une puissance énorme pour le jeu, ils restent rarement utilisés pour ce cas car ils sont très difficiles à utiliser. C’est comme l’assembleur, c’est un langage bas niveau très puissant, mais trop difficile pour être utilisé dans la programmation quotidienne. Ils sont généralement réservés pour des applications plus spécifiques, ou la création de plateformes graphiques ou les moteurs de jeux vidéo.
Le 2-ième choix est les frameworks ou les plateformes. Ils sont généralement vus comme une conglomération de bibliothèques visant à faciliter la programmation des jeux. Ils sont très populaires parmi les développeurs, puisque contrairement aux API, ils offrent une certaine aisance pour l’utilisation directe des fonctions et des routines Intrinsèques aux jeux vidéo. Comme par exemple le dessin direct sur l’écran, le chargement des images et des objets en 3D et des fichiers son, la capture de l’interface utilisateur comme le clavier ou la souris ou la manette, le scrolling, le bit blitting,le clipping, les sprites, le networking…etc. Ça peut Inclure les plateformes comme, SDL, Allegro, PyGame, SFML, ou Raylib.
Et dernièrement, les moteurs de jeux vidéo. Ces derniers sont totalement différents des 2 précédents dans le sens où ils ne tournent pas autour d’un langage de programmation qui va les utiliser comme des bibliothèques comme pour les solutions précédentes. Dans les moteurs de jeu, généralement le langage de programmation est, comme parmi d’autres, un simple outil utilisé pour la création de jeux vidéo. Ainsi le plus souvent les objets créés à l’extérieur du langage de programmation, sont utilisés pas plusieurs outils du moteur. Les outils sont concrètement des petits logiciels de haut niveau destinés à l’implémentation des opérations beaucoup plus complexes que de simples opérations graphiques. Comme par exemple les éditeurs de niveaux, les éditeurs de maps, moteurs physiques, éditeurs d’animation, éditeurs de particules…etc. On peut citer quelques moteurs de jeux les connus comme Godot, Unity, Unreal Engine, ou encore Game Maker. La vidéo en haut est une introduction au moteur Godot, et plus précisément sa nouvelle version 4 qui offre beaucoup d’améliorations par rapport aux versions précédentes.