jeudi 3 décembre 2009

Activités de photographie

Au cours du mois de novembre, j'ai décidé de participer à deux projets de photographie. Ces activités vont stimuler ma créativité et me permettre de passer plus de temps à faire de la photographie qui était un passetemps mis de côté pendant mes études. Sans plus tarder, voici une courte description des activités.

Projet 52
C'est un projet qui semble assez prometteur qui a été proposé par un ami de l'université. Chaque semaine, un thème est choisi et des photos doivent être prises à propos de ce thème. Les photos sont ensuite ajoutées dans le pool du groupe sur flickr. D'une à sept photographies sont publiées par semaine. Trois de mes amis participent aussi à cette activité de photographie.

Bac bleu


365Days
Ce projet consiste à avoir une photo de soi chaque jour. Je trouve que c'est un peu de narcissisme, mais ça laisse place à l'originalité. En effet, c'est un vrai défi d'avoir une photographie différente pour tous les jours. Les photos de ce projet sont regroupées dans un album sur flickr.

Ces activités ont pour effet d'augmenter mon désir de me procurer un nouvel appareil photo, en occurrence un DSLR. Finalement, j'attends les résultats finaux de ces projets avec impatience!

samedi 20 juin 2009

Installer Skype sur une ubuntu 64bits

Skype est disponible en version 64bits pour ubuntu, il n'est pas nécessaire d'utiliser les librairies 32bits. Il suffit de suivre ces étapes :
  1. Ne pas suivre les tutoriels sur internet qui demande le téléchargement de scripts et de paquetages provenant de sources non vérifiées ou d'utiliser les librairies 32bits.
  2. Télécharger le paquetage 64bits pour ubuntu. Il est à noter qu'il n'est pas visible dans la page de téléchargement.
  3. Installer le fichier "*.deb" tout juste téléchargé.
Une entrée dans le menu va être automatiquement ajoutée.

mercredi 17 juin 2009

Montréal en photos

Voici une compilation de photos comiques prises depuis mon arrivée à Montréal.


Vente de rénovation dans une quincaillerie : ça fait concept. (rue St-Laurent près de Rachel)


Combat de gangs de rue. En réalité, c'est les "grandeur nature" au Mont-Royal. (parc du Mont-Royal)


Maman, le vendeur de glaces à l'air d'un pédophile... (parc du Mont-Royal)


Les vêtements gossés qui épousent les formes de votre corps, maintenant avec 33% moins d'échardes! (rue St-Laurent près de Rachel)


Dépêchez-vous, les déjeuners fondus sont en "spécial" avant 16h. (cartier chinois)


Sans commentaire. (Ave Mont-Royal près du métro)


La terrace du Jean-Coutu (Ave Mont-Royal près du métro)


Jawa Auto 2. Qu'est-ce qu'il est arrivé au Jawa Auto 1? Aussi, est-ce que je peux avoir un droïde? (rue Lajeunesse près du métro Crémazie, à côté du Sandcrawler)


Cette affiche me fait vraiment penser au logo de tqs, même si en réalité il est assez différent. (coin Laurier/ St-Denis)


Fôtes d'ortografes sur une affiche pour un événement culturel (place des arts)


L'enfer du stationnement, surtout que c'est à recommencer cinq mètres plus loin... (Vieux-Montréal)


Interdiction d'arroser les plantes. (Parc Jean-Drapeau)


HiPhone. (coin St-Denis/Sherbrooke)


Enfin il y a une place de stationnement là-bas, humm attends une minute... (rue Villeneuve près de la rue St-Laurent)

lundi 1 juin 2009

Montées de lait

Provigo, Loblaws, Maxi, et cie...
Comment avoir l'air plus vert tout en empochant plus d'argent?
Charger nos sacs d'épicerie 5¢ tout en ne "récompensant" plus ceux qui amènent leurs sacs réutilisables.

STM
Wow la nouvelle carte OPUS est vraiment extraordinaire, profitons-en pour couper les tarifs réduits (sauf pour la carte mensuelle) sans trop que ça paraisse.

Microsoft
Comment rétrécir le nombre de failles de sécurité entre notre produit (Internet Explorer) et celui d'un compétiteur (Firefox)?
Installer une faille sur le navigateur concurrent.

GM
Merci GM d'avoir détruit le transport en commun dans un grand nombre de métropoles américaines en faisant des magouilles avec l'industrie du pétrole et des pneumatiques. Merci d'être entêté à construire de grosses voitures pour gros américains. J'espère que tu vas avoir ce que tu mérites.

mercredi 27 mai 2009

Promesses de stages

Ceux qui ont déjà fait des stages coops à l'université connaissent les promesses de stages. Il s'agit des promesses que l'on fait au début du stage en prenant en compte que durant les stages on a plus de temps libre que lors des sessions de cours. Cependant, les quatre mois du stage passent sans que ces promesses ne soient réalisées. Pour ce stage-ci, j'ai décidé de publier ma liste de promesses de stage sur ce blog afin de m'encourager à les respecter. Ainsi, à la droite vous allez voir trois listes qui correspondent respectivement à la liste des promesses à faire, celles en cours et celles terminées. Les objets de la première liste sont classés en ordre de priorité tandis que les autres listes sont classées par ordre de réalisation des promesses, les plus récentes étant au début. On va savoir si la publication de telles listes va améliorer le nombre de promesses réalisées.

dimanche 10 mai 2009

Première semaine de stage

Les paragraphes qui suivent vont résumer les premières impressions que j'ai eues lors de ma première semaine de travail.

Entreprise
Premièrement, je fais mon stage dans une petite entreprise (~15 employés) nommée Aurora MSC. Aurora oeuvre dans le domaine médical en fournissant aux médecins un portal web leur permettant de transférer des cas vers des spécialistes ou faire du "peer review". Aussi, Aurora développe une application permettant de transférer et de visualiser des images d'échantillons numérisés à l'aide d'un microscope numérique. Puisque ces images peuvent atteindre plusieurs gigaoctets de taille, il faut utiliser une méthode efficace pour les transférer en chargeant seulement les morceaux de l'image qui sont utiles. De plus, Aurora offre un portal éducation permettant aux étudiants en médecine d'avoir des exemples de cas, porter un diagnostic et de répondre à des quiz. Aurora est situé sur le boulevard René-Lévesque Ouest à Montréal, à la hauteur du métro Lucien-L'allier, donc près du centre-ville et très près de la rue Crescent.

Environnement de travail
L'environnement de travail est beaucoup plus décontracté que de ce j'ai été habitué à voir lors de mes stages précédents. En effet, pas besoin d'avoir un badge avec photo en permanence sur soi ou d'avoir une autorisation de sécurité pour entrer dans l'aire de travail. Aussi, je n'avais pas besoin de remplir une foule de documents d'une utilité douteuse. De plus, on est libre de choisir notre horaire pourvu qu'on soit là de 11h à 15h. Aussi, on est maître de notre ordinateur : on choisit le système d'exploitation sur lequel on veut travailler, l'environnement de développement (IntelliJ IDEA est fortement recommandé) et les autres logiciels que l'on veut installer. Cela fait une grande différence avec les postes de travail "standardisés" du gouvernement où il n'est pas permis d'installer des logiciels autres que ceux certifiés par la direction générale de l'informatique. En résumé, mon système est un Core 2 Duo @ 2.67Ghz avec 4G de RAM qui roule sur une ubuntu 9.04 sur lequel j'ai installé l'environnement KDE et configuré un bureau étendu sur mes deux écrans de 19 et 20 pouces.

Les bureaux de travail sont disposés dans une aire ouverte où il est facile de communiquer avec nos collègues. Il y a une cuisinette sur place ainsi qu'une table de baby-foot afin de se détendre de temps en temps. Il y a une grande diversité dans les employés. Environ la moitié parle en anglais et nous avons un Allemand et deux Arabes. La cohésion du groupe est vraiment grande et certaines personnes ajoutent beaucoup de dynamisme grâce à leur grand sens de l'humour. Deux fois par semaine, il y a un stand-up meeting où chaque employé se lève dans le bureau et à tour de rôle explique ce sur quoi il travaille et les problèmes rencontrés. Ceci permet de savoir les tâches effectuées par les autres employés et permet d'apporter notre avis/aide. Finalement, une fois par semaine il y a un "code review" où chaque employé présente ce qu'il a fait pendant la semaine et reçoit les commentaires des autres employés.

Travail à faire
Aurora utilise l'approche de programmation extrême (Extreme programming) qui consiste à découper une tâche de développement en plusieurs itérations durant habituellement deux semaines. À la fin de l'effort de développement, il y a une phase de stabilisation où le développement de nouvelles fonctionnalités est interrompu afin de corriger les bogues restant avant la sortie du produit final. Mon stage a débuté durant cette période de stabilisation, donc j'ai eu surtout des bogues à corriger durant la première semaine. Ceci m'a permis de comprendre comment fonctionne le système tout en faisant de quoi utile pour l'entreprise. Un peu plus tard, je vais participer au développement de nouvelles fonctionnalités dans les portails web pour ensuite, vers la moitié du stage, axer les efforts sur le visualisateur d'image.

Durant ma première semaine seulement, j'ai travaillé avec les technologies suivantes : Hibernate, WebWork, JSP, JBoss, MySQL, YUI, Java, EJB, JIRA, Confluence et d'autres qui ne me reviennent pas en tête.

Conclusion
Si j'avais à qualifier ma première semaine de stage par un seul mot, j'utiliserais le mot "Liberté" grâce à ce que j'ai expliqué précédemment et aussi par le fait que mon superviseur de stage est très ouvert aux suggestions qui pourraient influencer les tâches que j'aurais à accomplir. Finalement, je crois que c'est vraiment bien de travailler dans une petite entreprise, puisqu'on peut influencer le groupe et on se sent moins une unité de production qui n'a pas de nom, mais un numéro d'employé.

samedi 2 mai 2009

Fin de session et début de stage

La fin de session est maintenant arrivée. Après le sprint final des travaux, j'ai eu quatre examens qui suivaient un horaire assez correct. Les examens se sont bien passés malgré le manque de motivation que j'avais lors de leur préparation.

La fin de session rime avec la fin des études pour certains. En effet, la plupart de mes collègues du baccalauréat ont terminé leurs études cette session-ci et un party a été organisé afin de souligner cet événement. C'est un sentiment vraiment bizarre que dire au revoir à un si grand nombre de personnes en même temps. Aussi, aux résidences certaines personnes ont terminé leurs études ou leur séjour au Canada. Après avoir passé de bons moments en leur compagnie au cours des derniers mois, les adieux ont été assez émouvants.

Mon déménagement s'est bien passé, j'ai mis la plupart de mes effets personnels à l'entrepôt des résidences et une amie m'a fait un lift pour Montréal (merci Sophie!). La première impression que j'ai eue de mes colocs français est vraiment bonne, ils m'ont même fait des crêpes à mon arrivée! Ils sont en stage en mécanique à la Polytechnique jusqu'à la fin du mois de juillet.

lundi 6 avril 2009

Recherche d'appartement

Comme vous le savez déjà, j'ai un stage à l'été à Montréal et il fallait donc que je me trouve un endroit où habiter pendant ces quatre mois. Au début, je voulais prendre un appartement avec certains de mes voisins des résidences qui ont eux aussi un stage dans la région de Montréal. Cependant, je me suis vite rendu compte que les offres pour les appartements meublés, disponibles pour seulement quatre mois et près de nos endroits de travail respectifs étaient plutôt rarissimes, je me suis résolu à commencer les recherches pour une chambre seule. Contrairement aux appartements, les offres pour les chambres abondaient. Il me fallait entre une demie-heure et une heure pour faire le tour des annonces du jour sur le site de kijiji. Il y avait environ une nouvelle annonce aux quinze minutes dont certaines étaient douteuses comme une qui annonçait un logement à 1000$/mois ou gratuit pour les femmes. Après l'épluchage de plusieurs offres et quelques échanges de courriels, je me suis planifié une journée de visite en gardant en tête que je pourrais y retourner plus tard si les logements visités ne me convenaient pas. Trois visites étaient planifiées lors de cette journée.

La première visite était dans un condo près du métro Frontenac où chaque chambre était louée individuellement. Je n'ai pas apprécié le quartier qui semblait délabré et dans lequel je ne me promènerais pas seul la nuit. De plus, les règlements étaient vraiment stricts en ce qui concerne les espaces communs, par exemple on ne pouvait pas ajouter de plantes dans le salon. Aussi, seulement un petit réfrigérateur était fourni dans notre chambre. Les points forts de ce logement était que les meubles étaient très récents et il qu'un système de climatisation central allait être installé avant mon arrivée (allait-il vraiment être installé?).

Le deuxième logement était situé à 15 minutes du métro Mont-Royal, un peu avant le parc Jeanne-Mance. J'ai eu un peu peur en voyant l'extérieur du bâtiment parce que c'était très vieux comme style, presque délabré. Une fois à l'intérieur, c'est beaucoup mieux même si ça reste un vieux bâtiment. La chambre est un tout-compris, même la vaisselle est incluse. Les autres locataires, un étudiant en musique et un autre qui travaille tout le temps, ont l'air très gentils. La chambre à louée était celle d'un étudiant en physiques à McGill qui part en Colombie-Britannique pour l'été.

Le dernier logement que j'ai visité était sur la rue Christophe Colomb à la hauteur de la rue Bélanger, près du métro Jean-Talon. Il s'agissait d'un 6½ tout inclus dans lequel vivaient deux françaises. Le logement était bien entretenu, meublé et propre cependant je trouvais que son emplacement était un peu trop éloigné du coeur de la ville. Aussi, j'ai trouvé ce logement un peu trop cher (600$/mois).

Après réflexions, j'ai décidé de passer l'été dans le deuxième appartement que j'ai visité (celui proche du Mont-Royal). J'ai vraiment hésité entre celui-ci et celui proche du métro Jean-Talon. Ce qui m'a convaincu était surtout son emplacement (coin Clark et Ave. Mont-Royal). En effet, il est situé entre le métro et le Mont-Royal, proche des rues St-Denis et St-Laurent. De plus, il y a une épicerie, un gym et une SAQ à moins de cinq minutes de marche. Je vais pouvoir aller travailler en métro ou en autobus (~25min), et si je suis courageux, en vélo. C'est sur que ce n'est pas le plus bel appartement de Montréal ni le plus récent, mais je crois qu'il va convenir à mes besoins pour l'été. La seule crainte que j'ai est le bruit qui pourrait y avoir la nuit. Pour finir, voici quelques photos de la chambre que je vais occuper :

mercredi 1 avril 2009

Kubuntu Jaunty Bêta - Partie 2 : Premières impressions

Quelques jours se sont écoulés depuis que j'ai installé la version bêta de Kubuntu 9.04 (Jaunty). Voici mes premières impressions :

Points forts :
  • Le démarrage est très rapide (merci ext4) : il s'écoule seulement 15 secondes entre le démarrage et l'invite de connexion de kdm. Le démarrage complet prend moins de 50 secondes.
  • Les composants de saisie (champs de texte, cases à cocher...) sont maintenant affichés correctement dans firefox.
    Firefox sous intrepidFirefox sous jaunty
  • Lors du premier lancement d'amarok, il demande l'installation des codecs manquants.
  • Le plasmoïde de gestion du réseau. Ce n'est plus une application kde3 qui gère les connexions réseau.
  • Le plasmoïde de gestion de l'énergie. Les options sont mieux disposées que le précédent.
  • Le nouveau gestionnaire de paquetages est vraiment intéressant. Il est très rapide comparé à Synaptic, c'est juste dommage qu'il avertit des dépendances seulement lorsqu'on applique les changements.
  • J'ai enfin réussi à utiliser un écran externe de 22 pouces à sa résolution maximale.
  • La mise en veille et l'hibernation fonctionnent.

Points faibles :
  • Il n'y a pas d'éditeur d'images installé par défaut.
  • Piètres performances graphiques : les effets de kwin sont lents et j'obtiens un score de 323FPS avec glxgears contre 1030FPS sous intrepid. Cela semble un bug auquel plusieurs personnes font face.

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.

samedi 28 février 2009

[Truc C++] Lecture d'un fichier vers un vecteur et l'inverse

Le programme C++ suivant lit un fichier d'entiers et l'emmagasine dans un vecteur. Ensuite le contenu du vecteur est sauvegardé dans un autre fichier.
#include <iostream>
#include <vector>
#include <iterator>
#include <fstream>
using namespace std;

int main()
{
ifstream is("in.txt");
ofstream os("out.txt");

vector<int> v (istream_iterator<int>(is), (istream_iterator<int>()));
copy(v.begin(), v.end(), ostream_iterator<int>(os, "\n"));
return 0;
}

Le constructeur du vecteur appelé est celui qui prend deux itérateurs comme paramètres afin d'initialiser le vecteur, un de début et un de fin. Le premier itérateur correspond à un itérateur sur le fichier alors que le deuxième est un itérateur représentant une erreur de lecture par exemple la fin du fichier.

La fonction "copy" prend trois paramètres :
- Un itérateur de début de lecture
- Un itérateur de fin de lecture
- Un itérateur d'écriture

Finalement, "is" et "os" peuvent être respectivement remplacés par "cin" et "cout" afin de lire ou écrire sur la console au lieu d'un fichier.

La mi-session

Enfin, la mi-session universitaire débute. Il est donc le temps de faire un bilan du début de la session.

Travaux
Après un début de session malheureusement beaucoup trop calme, les travaux ont déboulé en rafale. Le premier point que j'ai à discuter à propos de mes travaux est le fait de ne pas avoir avancé le travail de techniques d'apprentissage plus tôt. Le travail en équipe pendant la fin de semaine de la Saint-Valentin n'est pas très efficace. Aussi, je n'ai pas assez mis de temps sur mon projet, j'ai fait seulement la moitié des heures que j'aurais dû faire en suivant le nombre recommandé d'heures à travailler par semaine (9h).

Étude / examens
Du point de vue de l'étude et des examens, j'ai un peu trop négligé l'étude du cours de techniques d'apprentissage et je n'ai pas toutes faites mes lectures pour le cours de conception de systèmes temps réel. Toutefois, j'ai été à jour dans le cours d'intelligence artificielle et le cours d'infographie. Ce qui est ironique c'est que j'ai eu plus de difficultés dans ces examens intra qu'à celui du cours de techniques d'apprentissage.

Ce qui s'en vient
La seconde moitié de la session ne va pas être tranquille. En effet, j'ai quatre projets et quatre travaux pratiques sur lesquels travailler. En plus de cela, je dois rattraper le retard accumulé sur le projet et dans mes lectures du cours de systèmes temps réel tout en ne négligeant pas le travail à faire dans les autres cours.

vendredi 27 février 2009

Parce que tout ce qui existe a un commencement!

Voilà, je fais mon entrée dans la blogosphère. J'ai longuement réfléchi avant de rejoindre ce monde, car je ne suis pas très à l'aise à écrire des textes et je suis un peu réservé. Cependant, c'est une bonne façon de travailler sur ces points tout en me permettant faire valoir mon opinion sur certains sujets et de partager des connaissances que j'acquière.

Je vais traiter de différents sujets comme la vie à l'université et aux résidences ou tout simplement de la vie en général. Aussi, je vais aborder quelques sujets un peu plus geek comme la programmation et linux. La plupart d'entre vous savent déjà que je ne suis pas du type de personnes qui traitent d'un sujet simple en écrivant des textes interminables, donc vous allez voir des textes qui sont courts et qui vont droit au but, sans pelletage de nuages inutile.

J'accorde une grande importance de la qualité du français écrit, mais je suis loin de la maîtriser. Donc, n'hésitez pas à me signaler les erreurs de français (ainsi que les autres erreurs) lorsque vous en apercevez dans les textes que je rédige. Finalement, vous êtes cordialement invités à donnez votre opinion à propos de ce que j'écrit.

Bonne lecture!