iPod nano redémarre en boucle infinie

Bon, c’est bien intéressant ce qui vient d’arriver. J’avais placé mon iPod nano pour qu’il recharge, mais après un certain temps, il semble y avoir eu un problème puisque mon Mac Book Pro s’est réveillé (je rechargeais avec l’ordinateur éteint). Je viens voir ce qui se passe. Rien à l’écran. Je regarde par la suite mon iPod… L’écran passait de la pomme à rien puis à la pomme et à rien, etc. Comme toute bonne personne je me suis dit : “Qu’est-ce ça!”. Bon, je passe le reste des détails, voici un petit vidéo de à quoi ça ressemblait:

En gros, pour régler le problème, il faut passer en mode disque. Tenez bien le bouton du centre et pesez sur le bouton play de la roulette en même temps. Après 5 secondes environ, votre iPod devrait passer en mode disque. À ce moment, vous le ré-attachez à votre ordinateur et vous faites une restoration de celui-ci.

Un peu de lecture

L’été qui commence, j’ai enfin du temps libre pour passer du temps sur le sujet qui me passionne: l’informatique. Prochaine session, je me retrouve en génie logiciel, suite à mon changement d’orientation. La session teminée, je me suis dit pourquoi ne pas se mettre dans le bain? Je suis passé faire un tour à la bibliothèque de mon quartier pour y trouver deux livres qui me semblent de niveau et d’intérêt. Voici donc mes deux premières lectures:

Halte aux hackers linux par Brian Hatch, George Kurtz et James Lee


L’objectif du livre est de conscientiser le lecteur aux différentes manières par lesquels un “hacker” serait en mesure d’accéder à un système, profiter de ses droits pour faire du grabuge ou simplement démolir le système dans son ensemble, ou encore d’insérer quelques lignes de codes dans une applications afin d’en recevoir les informations par email (troyen). C’est un livre qui nécessite des connaissances avancés de Linux, toutefois, la majorité des concepts sera compris des débutants ayant connaissances des bases. Pour le moment, j’en ai lu 3 chapitres dans lesquels on nous introduits premièrement à la sécurité Linux, que ce soit en termes de permissions fichiers, quotas, ports, mémoire virtuelles, cpu, etc. Deuxième chapitre, une bonne introduction sur comment prévenir les attaques et quoi faire après une attaque (restauration). Le troisième chapitre s’attaque au comment un hacker fait pour découvrir le plus d’information à propos d’une machine, tel un voleur qui tourne autour d’une maison qu’il veut cambrioler. Dans le prochain chapitre, le livre abordera le social engineering, qui est selon mon opinion, un sujet très important du hacking puisqu’il n’est pas rare que le hacker découvre plusieurs informations à l’aide de ressources ‘humaines’.

Systèmes d’exploitation, 2e édition par Andrew Tanenbaum


Cette brique me semble digne d’un ingénieur ou d’une personne qui souhaîte en apprendre sur les systèmes d’exploitation. On y passe de la gestions des processus (threads) à la gestion de la mémoire en passant aux systèmes multiprocesseurs. Le livre aborde même vers la fin la création de son propre système d’exploitation. De plus, il passe une partie importante sur deux système important de notre époque soit Unix et Linux et Windows (2000).

Je n’ai pas encore attaqué cette brique mais j’ai bien hâte d’en découvrir plus sur le sujet. Je voudrais vous promettre d’écrire deux messages supplémentaires pour vous en faire les résumés et appréciations après leur lecture respective mais je ne suis pas certain que je leur passerait de travers d’un seul coup.

Vaisseaux

Comme tout bon élève qui se respecte, je n’écoutais pas toujours durant mes cours au secondaire. Cela a eu pour effet de me porter à dessiner dans les notes de cours… Je ne suis pas très bon dans le dessin réalistique (personnes, objets de dimension raisonnable), mais j’ai toujours apprécié mes propres dessins de véhicules, spécialement les vaisseaux que je dessinais. Je vous fait donc part d’une partie de ces dessins, espérant en découvrir d’autre au fil du temps pour les partager avec vous :)

ship-8.png
ship-11.png
ship-13.png
ship-21.png
ship-17.png
ship-12.png
ship-22.png
ship-6.png
ship-3.png
ship-19.png
ship-20.png
ship-2.png
ship-14.png
ship-18.png
ship-23.png
ship-7.png
ship-15.png
ship-9.png
ship-10.png
ship-5.png
ship-16.png
ship-4.png
ship-1.png

La programmation orientée objet

Qu’y a-t’il de plus beau que la programmation orientée objet? Rien.

La programmation orientée objet (ou POO) est un chef d’oeuvre en soi. Pourquoi? Parce que sa simplicité et sa rigueur en font l’une des meilleures façons de concevoir un logiciel, que se soit à l’aide de PHP, de C++ ou de tout autre langage orientée objet.

Mais qu’est-ce qu’ont les programmes orientés objets de si orgasmiques? Et bien, un ensemble de choses. Je ne ferais qu’en citer quelques-uns :
La possibilité d’écrire des classes réutilisables dans d’autres projets.
La possible de partager du code avec d’autres tout en ayant la capacité de retravailler sur son code sans affecter celui des autres.
La possibilité d’avoir des variables internes qui ne peuvent être travaillées par des processus externes.
La liste continue…

Bon, commençons donc avec les rudiments de la POO, en langage C++.

Qu’est-ce qu’un objet? Et bien, il s’agit d’une classe, ou d’un ensemble d’information à propos d’un concept. Par exemple, la classe voiture pourrait être définie comme suit :

class Voiture
{
	public:
		Voiture(int position_x = 0, position_y = 0);
		void avancer(int distance);
		void reculer(int distance);
		pair<int , int> obtenirPosition() const; 

	private:
		int position_x_;
		int position_y_;
}

Qu’est-ce que c’est que ce beau tas de code? Et bien, il s’agit de la déclaration de la classe voiture! Eh oui, vous avez découvert votre première classe! Bon, il s’agit ici d’une classe bien banale qui permettra à votre objet Voiture de se déplacer vers l’avant et vers l’arrière. Elle gardera les positions en x et en y (bien que puisque la voiture se déplace actuellement seulement selon l’axe des x, la position y nous est inutile).

Maintenant, attaquons-nous au code qui fera en sorte qu’il y ait de l’action. Premièrement, il faut un constructeur, c’est-à-dire que tout objet Voiture doit être construit avant de pouvoir fonctionner.

Voiture::Voiture(int position_x, int position_y)
: position_x_(position_x), position_y_(position_y)
{
}

Ici, on utilise le même nom que la classe pour déclarer ce constructeur. Vous noterez l’utilisation de : avant position_x_ et position_y_. Il s’agit d’une liste d’initialisation, c’est-à-dire que ces valeurs seront initialisées avec les valeurs dans les parenthèses. Pourquoi donc faire cela?

En C++, la création d’objet ce fait de cette façon : premièrement, on crée les attributs (les variables private), puis on appelle le constructeur qui se charge alors de construire l’objet. S’il arrivait qu’un objet A était inclus dans un autre objet B, cela aurait pour effet d’initialiser l’objet A avec des paramètres par défaut. Or, faire cela implique créer un objet avec des paramètres qu’on va changer quelques instants après, ce qui est une perte d’efficacité et une preuve de manque d’intelligence (vous ne voudriez pas paraître stupide non?).

Bon, avec ce constructeur, votre objet peut être créé. Mais rien de plus. Faisons à présent les deux fonctions de déplacement :

void avancer(int distance)
{
	position_x_ += distance;
}
void reculer(int distance)
{
	position_x_ -= distance;
}

Code très simple. Ajoute ou enlève à la valeur de position_x_, un de nos attributs internes.

Finalement, il nous faut une fonction qui sera en mesure de nous donner notre position en x et en y!

pair <int , int> obtenirPosition() const
{
	return make_pair(position_x_, position_y_);
}

Avec ça, vous pouvez déjà faire une Voiture, la faire avancer et reculer et même obtenir sa position! Wow, vous avez presque le début d’un jeu de course entre les mains! À vous de repousser les limites maintenant.

Circuits électriques – Filtres actifs

Je veux vous faire part d’une partie intéressante de mon cours de circuits électriques : la conception de filtres actifs.

Tout d’abord, voyons quelques termes techniques:
lm741Ampli-op : Amplificateur opérationnel : Il s’agit d’une composante électronique qui renferme un paquet de transistors. Il a la capacité de faire diverses opérations mathématiques, tel que son nom l’indique : amplificateur OPÉRATIONNEL.
Condensateur : Permet de garder une charge électrique.

L’avantage de construire des filtres actifs comparativement à des filtres passifs est que l’on ne se sert pas de bobines, qui sont chères, difficilement miniaturisables et imparfaites (point de vue pratique). Les circuits qu’on construit se réduisent donc alors à des résistances, des condensateurs et des ampli-op.

Filtre passe-bas actif de Chebychev

Filtre passe-bas actif de Chebychev
Premièrement, passons au filtre “simple”. Ici, nous avons un circuit qui nous permet d’obtenir un filtre nommé de Chebychev dû à la nature du filtre lui-même. Non, Chebychev n’a pas fait le schéma, mais il a développé une méthode pour obtenir des filtres dont la partie à l’extérieur de la bande passante est plus atténué. Bande passante? Atténué? La bande passante, c’est les fréquences qu’on souhaîte laisser passer, et donc qui ne sont pas filtré (ou atténué). Atténué, c’est lorsque la tension à la sortie de notre filtre est diminué de 3dB. Ça devient rapidement complexe, mais disons que lorsque la tension (en volt) de sortie est de 0.707 comparativement au maximum qu’elle peut atteindre, on considère le signal comme atténué et inexistant (Vout = 0.707 x Vout MAX).

Commençons avec l’ampli-op. Comme vous pouvez le constater sur le schéma, ce ne sont pas toutes ses entrées et sorties qui sont employés. Nous utilisons en général la 2 (inverseuse), 3 (non-inverseuse), 4 (V-), 6 (sortie) et 7 (V+). Les bornes 4 et 7 sont employés pour polariser les transistors qui se trouvent à l’intérieur de l’ampli-op. L’entrée 2 est extrêmement importante. Avec cette entrée connectée à la sortie, nous obtenons ce qu’on appelle du feedback négatif, ce qui permet à l’ampli-op d’ajuster sa sortie pour qu’elle soit toujours constante. L’entrée 3 est l’entrée du signal même. Nous obtenons notre signal amplifié à la sortie, soit à la borne 6.

Ici, il s’agit d’un filtre passe-bas actif du deuxième degré avec un filtre passe-bas passif du premier degrée (composé des éléments R3 et C2).

À ce moment, vous n’avez probablement aucune idée de ce que fait ce circuit. Et bien, il faut demander à Bode de nous faire un graphique (Bode n’étant pas un logiciel mais une personne à qui on doit ces graphiques). On voit ici que toutes les fréquences avant 500 et des plumes sont à zéro (non atténué) et que plus on augmente la fréquence, plus le signal est attenué. Donc, vers l’infini, plus de signal!

Filtre passe-bande actif de Butterworth

Deuxièmement, voici le filtre de Butterworth. “Légèrement” plus complexe, il nous permet d’obtenir un filtre passe-bande, donc qui laisse passer certaines fréquences. Celui-ci est conçu pour faire passer des fréquences entres 8500 Hz et 10500 Hz.

Il faut ici créer un filtre actif qui se compose de 3 filtres actifs mis en étages. Cela a l’avantage d’être facile à synthétiser, c’est-à-dire de passer d’un format demandé avec des paramètres exigés à un filtre sous forme de circuit.

Une fois de plus, on fait appel à Bode qui nous montre le genre de filtre que l’on vient de créer. Victoire, on obtient un passe-bande, c’est-à-dire que les fréquences passent où il y a le pic (environ 10 kHz)!

Mais bon, à quoi ça sert toute cette marde là? Et bien, sans cette “marde” là, on ne pourrait pas avoir de télévision, ni de radio. En fait, probablement tout ce qui est de nature sonore et visuelle doit être traité afin de s’afficher ou de s’exprimer de façon correcte sans contenir de bruits. Merci à la science des filtres, certains élèves auront mal à la tête des jours durant et préfèreront s’abstenir de fréquenter un laboratoire d’électronique.

NOTE: Il manque probablement beaucoup d’explications, ça viendra au cours des semaines à suivre :)

Categories