samedi 28 mars 2009

Kubuntu Jaunty Bêta - Partie 1 Installation

J'ai installé la bêta de Kubuntu Jaunty Jackalope sur mon ordinateur afin de tester ce que la nouvelle version de mon système d'exploitation favori avait à montrer. Je l'ai installée sur une partition réelle afin de voir si tout mon matériel était supporté ainsi que pour comparer les performances avec mon système actuel.

J'ai téléchargé le disque d'installation (version desktop pour amd64) par torrent et je l'ai ensuite gravé sur un disque. Lorsqu'on démarre sur le disque, on a une fenêtre de dialogue qui nous invite à choisir la langue de notre choix. Ensuite le système démarre et on a droit au bureau par défaut de kde4. On peut maintenant lancer l'assistant d'installation de Jaunty en sélectionnant une icône sur le bureau. L'installation se passe en six étapes.

La première étape est un message de bienvenue permettant de changer la langue sélectionnée lors du démarrage.


La deuxième page permet de sélectionner notre fuseau horaire. Il est à remarquer que l'affichage du fuseau sélectionné est incorrect.


Ensuite, on peut sélectionner la disposition clavier voulue. Encore là, il n'y a rien de bien sorcier.


Nous sommes maintenant rendus à l'étape la plus cruciale de l'installation : le choix des partitions sur lesquelles faire l'installation. J'ai trouvé que l'affichage de cette étape est particulièrement long. Étant donné le pêle-mêle de mes partitions, j'ai choisi le partitionnement manuel. Aussi, j'ai choisi de tester le système de fichier ext4.


L'avant-dernière étape permet la création de l'utilisateur par défaut ainsi que le choix du nom de l'ordinateur.


La dernière étape est un résumé des options d'installation choisies. On a accès à une boîte de dialogue afin de changer certains paramètres avancés comme le gestionnaire d'amorçage.


L'installateur procède ensuite au formatage des partitions ainsi qu'à la copie des fichiers. Après un temps de copie d'une dizaine de minutes, l'installateur télécharge et installe les paquets contenant les traductions pour la langue sélectionnée.


À la fin de l'installation, une fenêtre nous invite à redémarrer l'ordinateur. Le processus d'installation a pris environ 35 minutes sur mon ordinateur. Les seuls problèmes que j'ai eus avec l'installateur étaient l'affichage incorrect du fuseau horaire sélectionné ainsi que la présence de quelques textes qui était encore en anglais.

À venir : mes premières impressions et les différences de performance...

lundi 23 mars 2009

[Truc C++] Faire un bon singleton

Dans le cadre d'un projet à l'université, il a fallu que j'implémente le patron de conception (design pattern) singleton. Puisque je n'ai jamais fait cela en C++, j'ai parcouru la Toile afin de trouver un exemple qui semblait correct. J'ai implémenté un des exemples semblables que j'ai trouvés. Cependant, le professeur m'a dit que cela n'était pas correct parce qu'il pouvait faire fuir des ressources. Il m'a donné le lien vers son site où il expliquait une implémentation correcte. J'ai décidé de le partager puisque la plupart des exemples sur internet ne sont pas corrects.

samedi 21 mars 2009

Les jeux sont faits

Lundi soir passé, j'ai reçu les cotes des employeurs à propos des entrevues pour le stage de cet été. Je crois que je ne suis pas très habile en entrevues, j'ai souvent été coté deuxième et même j'ai été coté 0 à un poste. Néamoins, je vais officiellement faire mon stage de l'été chez Aurora MSC au centre-ville de Montréal. Comme la plupart ne connaissent pas cette compagnie, voici la description de l'entreprise écrite dans l'offre qui était affichée.

Aurora MSC est un pionnier dans le développement de solutions de gestion et visualisation d'images numériques complexes pour le secteur de la santé. Nos solutions assistent les médecins dans la recherche de traitements et le diagnostic de maladies afin d'améliorer l'état de santé des patients.

Il s'agit de la première fois que je vais travailler à Montréal et même la première fois que je vais vivre dans la métropole. Je sens que je vais avoir du plaisir à essayer de trouver un appartement (déjà meublé en plus!). Je compte profiter des quatre mois que je vais passer là-bas pour me faire une idée de la ville (ville béton ou ville en vie). En quatre mois, je crois que je vais être capable de me faire une idée de Montréal afin de savoir si je voudrais travailler là-bas plus tard.

lundi 16 mars 2009

Cabane à sucre

Hier, il y avait une sortie à la cabane à sucre organisée par les résidences. Nous sommes allés à la cabane "Au bec sucré" à Valcourt.

Après un rallye digne de la petite école où il fallait remplir une dictée trouée à l'aide de charades (voir nos réponses à la fin de ce billet), on a mangé de la tire (surprise!). À l'heure du souper, nous avons eu droit à un copieux repas digne d'une cabane à sucre. Tout au long de la journée, on pouvait lâche son fou en glissant sur une pente aménagée pour la cause.

Bref, ce fut une journée hors de l'ordinaire qui a permis de recharger nos piles avec le soleil qui régnait cette journée-là.

Voici la transcription de nos réponses à la dictée trouée (merci Mathieu). On n'a pas gagné de prix, mais on a eu la mention des réponses les plus drôles.

Il y a très longtemps, dans un pays merveilleux, vivait une chef de parti prénommée Pauline. Elle vivait dans son château avec ses deux serviteurs André et Bernard qui avaient les cheveux bleus.

Elle avait obtenu ce mandat de luxe en se moquant de son père qui aimait se faire masser.

Un jour en dansant le chachacha avec son amoureux René Lévesque sous un champignon elle sortit une pépine de la poche de sa robe et lui piquâ le bras. Il en mourut.

Les lois de son Québec natal lui donnèrent un châtiment exemplaire, c'est-à-dire de mourir à l'assemblée nationale activé par un bleuet.

Charest eut beau demander de l'aide de ses amis avocats Gagliano et Jean Chrétien, mais ceux-ci n'eurent aucun recours valable.

Pauline, durant qu'elle récitait son manifeste dans la chambre des communes, il y eu dérogation, un référendum et une question pas claire. Suite à cette débandade, elle eut un char de marde et fut libérée.


Finalement, voici un exemple de charade qui nous aidait à remplir les trous.

dimanche 15 mars 2009

Fiérement emballé (sic)

Ayant terminé de manger les mandarines que j'avais achetées, je me suis résous à jeter leur emballage. En accomplissant ce geste, j'ai remarqué quelque chose qui clochait sur l'emballage. En effet, le texte en français était tellement en mauvais état que j'ai tout de suite pensé qu'il a été traduit par un traducteur automatique que l'on trouve sur internet. J'ai d'abord commencé l'enquête avec le service de Google sans succès. Malgré que le texte est maltraité, il ne correspond pas à celui de l'emballage. J'ai ensuite continué l'investigation sur le site de traduction de Yahoo, BabelFish (qui en passant tire son nom du livre de Douglas Adam) : la traduction boiteuse vient effectivement de ce site.

Une image vaut mille mots, je vous laisse le soin de faire une règle de trois pour savoir combien en valent trois...

L'emballage :

La traduction de google :
La traduction par BabelFish (la même que l'emballage) :

samedi 14 mars 2009

Entrevues

Enfin, les semaines d'entrevues sont terminées. Je me compte chanceux d'avoir eu beaucoup d'entrevues ces derniers jours. En effet, certains de mes voisins aux résidences ainsi que certains collègues du bacc ont eu un nombre limité d'entrevues et même j'ai une voisine qui n'a même pas eu une seule entrevue.

Je trouve toujours les semaines d'entrevues éprouvantes puisque je suis tellement stressé à l'idée d'avoir des entrevues que j'en ai de la misère à dormir. Après avoir passé deux semaines à dormir entre deux et cinq heures je me sens relativement fatigué.

Au cours des six entrevues que j'ai eues, voici les questions qui m'ont été le plus souvent posées :

Questions générales :
  • Quel est ton plus grand défaut?
  • Quelle est ta plus grande qualité?
  • S'il y a quelqu'un qui ne travaille pas (ou travaille mal) dans ton équipe, qu'est-ce que tu fais?
  • Si tu rencontres des problèmes que tu n'arrives pas à résoudre, qu'est-ce que tu fais?
Questions informatiques :
  • Qu'est-ce que le polymorphisme?
  • Qu'est-ce que l'héritage?
  • Qu'est-ce qu'une méthode virtuelle (en C++)?
  • Quels sont les avantages de la programmation orientée objet?
  • Quels sont les avantages des approches itératives?
  • Parle-moi du projet dont tu es le plus fier d'avoir fait.
  • Quelles sont tes connaissances en Java/C++/SQL/UML?
J'attends avec impatience la remise des cotes de la part des employeurs afin de savoir où je vais aller en stage à l'été.

jeudi 5 mars 2009

[Truc C++] Opérations mathématiques sur des éléments d'une séquence

La méthode std::accumulate() est utile pour faire des opérations mathématiques sur une suite d'élements délimitée par des itérateurs par exemple les éléments d'un vecteur. Le premier paramètre est l'itérateur de départ, le deuxième paramètre est l'itérateur de fin. Le troisième élement est la valeur de départ, souvent 0 pour une somme et 1 pour une multiplication. Le quatrième paramètre, qui est optionnel, est une opération binaire à appliquer, par défaut c'est la somme. Avec cette méthode, on se rapproche de la programmation fonctionnelle!

#include <iostream>
#include <vector>
#include <iterator>
#include <numeric>
#include <functional> // pour la multiplication

using std::vector;
using std::cout;
using std::accumulate;

int main()
{
vector<int> v;
v.push_back(1);
v.push_back(2);
v.push_back(3);
v.push_back(4);

cout << accumulate(v.begin(), v.end(),0) << std::endl;
cout << accumulate (v.begin (), v.end (), 1,
std::multiplies<int>());

return 0;
}

Tout bon mathématicien du dimanche pourrait prédire que les sorties de ce programme sont 10 et 24.

mercredi 4 mars 2009

Développement durable

Lors d'une entrevue, un interviewer m'a dit que le stagiaire embauché pour l'été allait faire l'analyse et, si le temps le permet, l'implémentation d'un renouvellement d'un système qui avait été en production pendant une vingtaine d'années. Il est à la recherche d'un langage de programmation qui va permettre au nouveau système d'avoir une durée de vie aussi longue que l'ancien système. Ceci m'a amené à me poser la question suivante : quels langages de programmation actuels permettraient de créer un système d'une assez grande amplitude pour une aussi longue durée de vie? Essayons de trouver une technologie qui permettrait cela.

Python
J'ai été surpris que Python ait été abordé par la personne avec qui j'ai eu l'entretien ce matin. Malgré sa popularité croissante, je crois que Python n'a pas encore fait ses preuves comme langage pouvant résister au temps. Un autre point contre l'utilisation de Python comme langage durable est sa grande volatilité. En effet, la version 3 de Python qui est parue récemment n'est pas rétrocompatible avec les anciennes versions. On ne peut pas savoir si ceci va se reproduire à l'avenir. Aussi, puisque le bassin de programmeurs Python actuel est assez limité, les programmeurs Python seront d'autant plus rares dans le futur si le langage est encore fonctionnel, mais moins populaire. D'un autre côté, Python supporte plusieurs plates-formes (possibilité de changer de plate-forme durant la vie du système) et simple à apprendre.

.Net
Avec une nouvelle version tous les deux ans qui assurent une rétrocompatibilité *presque* complète est-ce que les produits créés avec la technologie de Microsoft vont vieillir avec grâce? Laissez-moi en douter. Premièrement, les logiciels vont être confinés sur des ordinateurs qui ont un système d'exploitation Windows. Le support de Microsoft pour Windows n'est pas éternel, mais il tout de même possible de continuer à l'utiliser sans support malgré les risques potentiels. Aussi, dans une vingtaine d'années, est-ce que le framework .Net 3.5 va être encore supporté ou encore utilisable alors qu'une version proche de 10.5 du framework va être sortie? Est-ce que le langage va être aussi éphémère que d'autres en provenance de Microsoft comme VB6 ou le BASIC?

C++
Ce langage de programmation est celui que je crois être en mesure de répondre aux besoins d'un environnement de production pendant une vingtaine d'années. Premièrement, C++ a déjà fait ses preuves et le standard change rarement et les changements apportés ne sont pas majeurs. Cependant, il arrive que le code source doit être modifié afin d'être compilé par un compilateur plus récent (par exemple, la transition entre GCC 3 et GCC 4). Le bassin de programmeur C++ est de grande taille.

Java
Je crois que Java est au même niveau que C++ pour la création d'applications durables : les changements de version passent souvent sans embûches et le nombre de développeurs Java est assez grand pour suffire à la demande pour les futures maintenances. De plus, contrairement aux programmes C++, les applications Java ont moins de dépendances envers des librairies externes qui peuvent être rendues obsolètes pendant la durée de vie du système.

Conclusion
Il se peut que les analystes en poste il y a vingt ans se posaient la même question et qu'ils trouvaient eux aussi que les langages de programmation de leur époque ne semblaient pas être appropriés pour un projet axé sur le long terme. Ils ont toutefois réussi à créer des systèmes qui ont su résister au temps. Peut-être que dans vingt ans, les programmeurs Java vont être une denrée rare et prisée comme le sont les programmeurs Cobol actuels. Finalement, il y a une possibilité que la qualité de l'analyse du système importe plus que le langage de programmation choisi lors de la création d'un système ayant une longue durée de vie.