Cette vidéo m’a particulièrement plu pour sa simplicité et son aisance à faire comprendre la mécanique des voitures au commun des mortels, en à peine dix minutes l’essentiel de la mécanique automobile est exposé, et cela même en touchant des mécanismes externes au moteur, comme le freinage, le refroidissent et la boîte à vitesses. Bon visionnage.
Étiquette : vidéo
L’IA qui programme
Il est clair et bien observé dans la communauté scientifique que la technologie qui produit des avancées considérables et importantes est sans doute l’IA (l’intelligence artificielle), tous les jours il y a des publications scientifiques de partout dans le monde, et tous les jours des barrières qui semblaient au préalable infranchissables pour l’IA tombent actuellement l’une après l’autre. Pas encore dans le domaine public, mais dans le monde de la recherche, on sait bien que l’IA peut rivaliser avec les meilleurs artistes dans pratiquement tous les domaines artistiques, l’IA bat haut la main les meilleurs joueurs de jeux de plateau comme le jeu d’échec ou le jeu Go, dans les jeux vidéo aussi l’IA peut rivaliser avec les meilleurs joueurs professionnels. L’IA est aussi très avancé dans la compréhension et le traitement du langage naturel humain, dans la vision et la reconnaissance des objets dans des images ou des vidéos, aussi dans la simulation des phénomènes physiques réputés difficiles par les méthodes classiques, le deepfake…etc. Mais il y avait deux domaines où l’IA aurait du retard par rapport à l’intelligence humaine, c’est les mathématiques et la programmation, deux exercices de réflexion où selon les chercheurs exige un grand degré abstraction par l’humain. Mais apparemment, c’est plus le cas selon la vidéo en bas, la vidéo présente une revue sur l’IA nommé Codex, très bien présenté par un chercheur et un scientifique très actif sur Youtube, ça chaîne est nommée Two Minute Papers.
Jeux vidéo sur le thème des Systèmes embarqués
Les ingénieurs en systèmes embarqués sont les ingénieurs responsables de la conception et la réalisation de la quasi-totalité des appareils électroniques modernes, comme par exemple, les appareils d’électroménager, incluant la machine à laver, l’aspirateur, le réfrigérateur, le micro-onde…etc. Ou encore le consommable électronique, comme les smartphones, les caméscopes, les téléviseurs, les consoles de jeux…etc. Ou bien encore l’électronique enfouie à l’intérieur des machines, comme l’électronique dans les voitures, les véhicules de transport, dans des machines industrielles…etc. Ou l’électronique des équipements de bureau, comme les imprimantes, les scanners, fax, photocopieuses…etc. Il y a beaucoup d’exemples, c’est quasiment tous les appareils comportant de l’électronique, mis à part les PCs, les ordinateurs et les machines informatiques. Essayer de comprendre la définition des systèmes embarqués peut mener à confusion, puisque dans les exemples ci-dessus c’est l’électronicien qui doit normalement réaliser la partie électronique de la machine, mais l’électronique des appareils moderne a beaucoup changé en comparaison avec la pure électronique d’il y a 20 ans, dans les systèmes embarqués modernes, l’électronique repose sur un processeur ou un microcontrôleur que l’ingénieur non seulement doit le concevoir électroniquement mais aussi de pouvoir le programmer, en ajoutant à cela des connaissances en programmation et en informatique pour ce dernier. La vidéo en bas est une petite présentation du jeu.
Le jeu en question s’appelle Shenzhen I/O, en référence à la ville en Chine de Shenzhen, et comme décrit dans Wikipédia, c’est la métropole pilier du high-tech et des semi-conducteurs de la Chine, c’est l’équivalente et la concurrente de la Silicon valley au États Unis. Le jeu fait la simulation d’un ingénieur dans un future proche qui immigre vers Shenzhen, pour travailler dans la conception d’appareils électroniques. Le plus intéressant dans le jeu c’est que le joueur aura comme principale tâche la résolution de puzzles sous format de construction de circuits électroniques, et de faire leurs programmations en langage assembleur, il a aussi la possibilité d’utiliser les datasheets et l’oscilloscope. Les circuits sont simplistes et la programmation en assembleur est rudimentaire, mais les concepts utilisés sont réels directement inspirés de systèmes authentiques, et ce qui m’a encore le plus surpris c’est que j’ai trouvé des travaux de recherche scientifique sur ce jeu, c’est considéré comme une nouvelle forme d’apprentissage des technologies modernes en utilisant les jeux vidéo. Le lien du Shenzhen I/O est par ici pour plus d’informations. Il y a aussi en bas la vidéo d’un joueur qui a réussi à crée le jeu de Tetris sur le simulateur de Shenzhen I/O.
Instruments de tests des réseaux informatiques
Il est bien connu qu’il existe une panoplie d’outils logiciels pour tester et diagnostiquer les réseaux informatiques, les outils logiciels à connaître et à plus ou moins maîtriser pour diagnostiquer un réseau sont ping, traceroute, ipconfig (ou ifconfig sur linux), nslookup, netstat, ça va vous aider à chercher et de trouver les problèmes logiques dans votre réseau, le plus commun des anomalies, c’est les mauvaises configurations sur l’une des couches TCP/IP, ou le mal fonctionnement de l’un des services réseaux. Par contre le problème devient plus difficile à détecter si ça vient du matériel, en l’occurrence, du câblage, des ports, des switchs, des routeurs, des hubs, des passerelles…etc, dans ce cas de figure, il faut utiliser les outils physiques matériels pour faire le diagnostic. Plusieurs instruments sont exposés sur la vidéo suivante, c’est une très bonne vidéo de la chaîne de PowerCert Animated, le fonctionnement des outils est très bien expliqué ainsi que leurs principes de fonctionnement.
Un instrument qui m’a particulièrement attiré l’attention, et que je ne connaissais pas l’existence auparavant, est le TDR (Time Domain Reflectometer), c’est un outil apparemment très puissant par rapport autres, son principe de fonctionnement est d’envoyer un signal généré par l’instrument sur le câble, et ensuite d’écouter le reflet du signal sur le câble, le TDR en analysant le reflet il peut détecter les malfonctions sur le câble. Il faut savoir que les défauts physiques d’un câble sont parfois très difficiles à détecter, même si le câble fait passer le courant électrique normalement, il y a des cas où il va détériorer le signal pour une raison ou pour une autre, les autres outils ne permettent pas de faire la détection ce genre de défaut.
Le spyware Pegasus
Tout le monde en parle ces jours-ci, c’est le malware ou plutôt le spyware Pegasus, il a fait un tollé dans le monde politique, mais pour cet article on ne va pas s’attarder sur les clivages politiques, et plutôt essayer d’analyser et de comprendre ses aspects technologiques, du moins essayer de faire de la vulgarisation et la prévention dans ce qu’on appelle la cybersécurité.
Le malware Pegasus est comme tout autre logiciel malveillant, est utilisé pour infecter les machines informatiques en s’installant furtivement à l’insu de l’utilisateur de la machine et nuire d’une manière ou d’une autre à ce dernier, ce type de logiciel est généralement contrecarré par les antivirus. Dans le cas de Pegasus c’est différent, c’est un logiciel espion, non détectable par les antivirus, il est même jusqu’à maintenant difficilement détectable même par les experts en sécurité informatique, il cible particulièrement les smartphones d’Apple et ceux avec Android, et permet de subtiliser les données des principales applications installées, d’écouter les conversations téléphoniques, déclencher la caméra ou le microphone, utiliser la géolocalisation, saisir les mots de passe…etc. La vidéo en bas donne une bonne explication sur comment Pegasus fonctionne, et comment au mieux s’en prévenir.
Le principal danger de ce malware c’est qu’il a permis récemment l’espionnage d’un chef d’État, des hauts responsables d’état, des journalistes, des magistrats, des défenseurs des droits de l’homme, des activistes…etc. Il est plutôt utilisé à des buts néfastes contrairement à ce qu’il a été promulgué par la société en charge de son développement et sa vente NSO, comme un dispositif pour combattre le terrorisme et la criminalité. La bonne nouvelle c’est que le malware est si cher qu’il ne peut viser qu’une partie très réduite de la population, à savoir les personnes importantes. La mauvaise nouvelle c’est qu’il est quasiment impossible de s’en prévenir puisqu’il arrive même à utiliser des attaques dites zéro-cliques (voir la vidéo en haut pour plus d’informations), ça veut dire qu’il peut infecter un smartphone même si l’utilisateur ne fait aucune erreur, la principale erreur d’un utilisateur pour infecter son smartphone étant de cliquer sur un lien suspect.
Comment parler académiquement
Je suis tombé sur une excellente vidéo faite par un enseignant en MIT (La chaîne de MIT sur YouTube), dont laquelle il fait des explications et des conseils aux étudiants et aux enseignants pour comment communiquer académiquement. Académiquement, ça veut dire dans le cadre de l’éducation, ça inclut l’enseignement pour les enseignants et l’exposition pour les étudiants.
J’ai trouvé la vidéo très intéressante, même qu’il faut bien se mettre dans l’esprit que ce type de contenu n’est pas de la science exacte, malgré que vous allez voir l’utilisation d’une équation dans la vidéo, ça reste toujours des avis subjectifs et une perception personnel. Quand même le fait d’avoir un aperçu sur la communication académique selon la vision d’une personne avec une longue expérience et surtout à très haut niveau, reste très très enrichissant.
Le père des livres du langage C
La perspective d’un étudiant pour le langage C, en tout cas c’était le cas pour moi lorsque j’étais étudiant, c’est que c’est un langage différent très puissant, dans le sens où il contient des mécanismes qui ouvrent la porte sur d’innombrables possibilités, comme par exemple la dualité pointeur/tableau, ou-bien la structuration de la boucle for, les unions, les pointeurs de fonctions, le nombre variable d’arguments dans les fonctions…etc. C’était des mécanismes certes parfois difficiles à apprendre mais le potentiel acquit met le langage à des années-lumières des autres langages qu’on étudiais à la même époque en algorithmique, comme le Pascal et le Basic. J’étais toujours intrigué par l’ingéniosité des développeurs de ce langage, et la réalité comme vous allez le voir sur la vidéo en bas, c’est que le langage historiquement a passé par différentes étapes, de réussite et d’échec dans les locaux de la compagnie de recherche Bell Labs, et avec le temps le langage petit à petit a mûri et devenu ce qu’on connaît maintenant comme le langage C.
La personne sur la vidéo s’appelle Brian Kernighan, c’est le coauteur du livre en question pour cet article, mais avant d’en parler du livre il vaut mieux revoir un peu l’historique du langage C. Alors ce langage était développé par Dennis Ritchie quand il était dans les laboratoires de Bell Labs dans le but de développer avec Ken Thompson le système d’exploitation UNIX, et le rendre portable sur plusieurs machines dont le PDP11, le langage C et le système d’exploitation UNIX auront une grande influence après respectivement sur les langages de programmation et les systèmes d’exploitation. Le langage C comme mentionné préalablement, n’a pas était inventé du néant, on peut tracer sommairement son évolution en commençant par le langage CPL, suivi par BCPL, ensuite du langage B, et finalement le langage C.
The-C-Programming-Language-First-EditionLe livre en question est appelé The C Programming Language écrit conjointement avec Brian Kernighan, la personne interviewée sur la vidéo, et Dennis Ritchie le développeur du langage C, le livre est parfois nommé K&R d’après les initiales des noms des deux auteurs. Ce livre a été pour très longtemps un best-seller et jusqu’à maintenant ça reste un livre intéressent pour apprendre le langage C, la plupart des livres en C qui ont suivi se sont fortement inspirés de lui, moi personnellement j’ai appris le C sur deux livres en français qui sont quasiment identiques dans leurs structures à original K&R. La bonne nouvelle c’est que le livre par son âge (première édition en 1978) est tombé dans le domaine public et il est devenu accessible gratuitement sur internet, d’ailleurs je vous ai mis juste en haut la version PDF à lire sur le site, il y a aussi la version sur les archives d’internet.
Fonctionnement d’un transistor
Dans l’électronique numérique le transistor prend une importance capitale concernant la conception et la création des circuits intégrés, tous les composants informatiques électroniques dans les PC et ordinateurs actuels sont dans la quasi-totalité constitués que de transistors, comprendre son fonctionnement devient primordial pour un informaticien même-s’il faut bien savoir que l’utilisation du transistor dans les circuits numériques reste basique, puisqu’il est utilisé comme un simple interrupteur électrique. La vidéo suivante de la chaîne YouTube d’électronique The Engineering Mindset donne une explication très pédagogique de l’utilisation d’un transistor.
De l’autre côté, la compréhension du fonctionnement du transistor pour un électronicien représente une étape importante et conséquente dans sa maîtrise du domaine, car il faut savoir que le transistor et souvent pointé comme un obstacle intimidant lors de l’apprentissage de l’électronique, c’est comme les pointeurs en programmation, ils sont difficile à comprendre mais leurs maîtrises est aperçue comme un essor important en habilité de programmation.
Différence entre CPU et GPU
Le CPU (Central Processing Unit) est communément ce qu’on appel processeur, et GPU (Graphical Processing Unit) est le processeur spécifique de la carte graphique. La principale différence entre les deux, c’est le CPU est un processeur générique, et théoriquement il peut exécuter n’importe quel algorithme, de l’autre côté le GPU est spécifique pour le rendu graphique et la 3D, il n’est pas générique mais il est très puisant, beaucoup plus puisant que le processeur pour les rendus graphiques. La vidéo en bas est celle de la chaîne YouTube Computerphile est la différence entre ces deux unités de calcul est plus détaillée.
Il existe quelques types d’applications qui sont adaptées pour l’exécution sur GPU, et il même possible d’exécuter ces types de programmes qui ne sont pas graphiques sur le GPU, cette manière de programmer s’inclut dans l’appellation connue sous GPGPU (General Purpose GPU), dans laquelle le programme en question est exécute sur le GPU et pas sur le CPU. Pour le faire, les constructeurs de cartes graphiques comme Nvidia et AMD fournissent des API (des bibliothèques) aux programmeurs leurs permettant la déportation de leurs programmes du CPU vers le GPU. C’est sûr que pas tous les programmes sont adaptés pour l’exécution sur GPU, les plus adaptés sont généralement les programmes hautement parallélisables, comme par exemple la Crypto-monnaie, l’Imagerie, la Simulation Physique, une partie de l’Intelligence Artificiel…etc.
Algorithme de Dijkstra
L’algorithme de Dijkstra est un algorithme très connu dans le milieu académique informatique, à un certain niveau il n’existe pas un étudiant qui ne connaisse pas l’algorithme de Dijkstra ou n’avoir jamais entendu parler, la raison est que c’est un algorithme très utilisé en pratique, la manifestation de son utilisation la plus simple est sans doute la recherche du plus court chemin sur les navigateurs GPS des voitures ou sur Google map, il est surtout aussi bien connu dans son utilisation dans les protocoles de routage dans les réseaux informatiques, ça permet aux données de prendre le plus court chemin sur la toile d’internet.
La vidéo de la chaîne YouTube Computerphile est une explication de la manière dans l’algorithme fonctionne, l’algorithme de Dijkstra est un algorithme qui permet de trouver le plus court chemin dans un graphe, d’une manière simple, mathématiquement un graphe peut représenter des villes avec le chemin entre ces villes, il peut représenter les routeurs sur un réseau avec leurs connexions…etc. Malgré que les étapes par lesquelles l’algorithme passe semblent informes et compliqués ils sont aux contraires cohérents, consistants et logiques, supposons on demande à une personne de trouver le plus court chemin entre deux villes sur une carte avec de multiples villes et multiples chemins, il va intuitivement suivre les mêmes étapes de l’algorithme, ainsi il va commencer par choisir le chemin le plus court vers les villes voisines, garder la trace de tous les chemins et avancer d’une ville à l’autre, revenir sur un supposé long chemin s’il s’avère qu’il peut mener vers une ville donnée par un autre cours chemins et ainsi de suite. La façon de revenir vers d’anciens chemins est bien connue en algorithmique, ça s’appelle le backtracking, et l’algorithme de Dijkstra d’en fait parti ces algorithmes.