My branch

Commentaires sur le coding-challenge-d:
Pour effectuer ce challenge, je me suis basée sur le clone du répertoire src fourni sur Github. J’ai ainsi créé deux applications : picture_processor.py et picture_processor_bonuses.py :
•	L’application picture_processor.py couvre toutes les exigences fonctionnelles et non fonctionnelles demandées dans l’énoncé du challenge. Elle utilise le multi-threading pour effectuer de façon concurrente le traitement des images.
•	L’application picture_processor_bonuses.py couvre également toutes les exigences fonctionnelles et non fonctionnelles demandées dans l’énoncé du challenge. Cette application supporte aussi les fonctionnalités relatives au bonus suivant : Additionally scaling along the y axis and cropping along the x. Cette application utilise le multi-processing pour effectuer de façon concurrente le traitement des images.

NB : j’ai respectivement utilisé le multi-threading et le multi-processing dans mes deux applications afin de me familiariser à leur usage dans Python. J’aurais tout aussi bien pu utiliser uniquement le multi-processing pour implémenter le parallélisme dans les deux applications.

Limites de mon travail:
Pour améliorer la qualité de mon code, j’aurais dû :
•	Recourir aux patrons de conception qui auraient pu améliorer la réutilisabilité des classes. J’aurais ainsi pu utiliser le patron stratégie pour créer les classes supportant les différentes façons de traiter une image : scale, crop, blur.
•	Mettre davantage à profit les notions d’encapsulation en utilisant par exemple des accesseurs et des mutateurs
•	Mettre davantage à profit la modularisation qui m’aurait permis de mieux hiérarchiser mes classes à l’aide de packages s’occupant respectivement d’une responsabilité donnée de l’application
Cela étant, le recours aux patrons de conception, a l’encapsulation ou a la modularisation n’ont pas été demandes explicitement dans l’énoncé du challenge, du coup, ils peuvent faire l’objet d’une future refactorisation de mon code.

Remarques générales :
Ce coding-challenge était vraiment intéressant et a constitué pour moi une expérience vraiment enrichissante. En effet, il m’a permis d’œuvrer au développement d’une application supportant le traitement concurrent d’images, et de mettre en pratique plusieurs concepts supportes par Python (héritage, polymorphisme, multi-threading, multi-processing, etc). Ce coding challenge m’a aussi permis de me dépasser. En effet, ce Mardi encore, je connaissais uniquement 3 choses sur Python : c’est un langage interprété, c’est un langage orienté objet et c’est un langage qui utilise des conventions de nommage. Oui, je n’avais jamais écrit ou lu une seule ligne de Python et je crois que cela se remarque assez aisément dans mes premiers commits! Du coup, grâce à ce challenge, j’ai dû apprendre à installer un environnement Python et à me familiariser rapidement avec les concepts de ce langage. J’ai aussi pu réaliser que ce langage était vraiment puissant et relativement facile à apprendre. Et même si faute de temps, je n’ai pas pu réaliser le second bonus permettant d’utiliser tous les cores du cpu, j’ai quand même été à mesure de couvrir tous les exigences fonctionnelles et non fonctionnelles spécifiées dans l’énoncé du challenge.

Références:
1)	https://docs.python.org/2/library/threading.html#module-threading
2)	Apprenez à programmer en Python, de Prolixe
3)	Programmation avec le langage Python de Xavier Dupré