Le développeur, un artisan ?

Bonjour,

On me pose souvent cette question, quel est mon métier, qu’est-ce que je fais toute la journée, assis sur ma chaise, devant mon écran, et moi-même j’ai toujours du mal à y répondre clairement, qu’est ce qu’un développeur ?

J’ai toujours eu un amour particulier pour celui ou celle qui fait quelque chose de ses mains. Je suis fasciné par le souffleur de verre, qui joue avec le verre chaud et liquide, le façonne au bout de sa tige de métal, par l’ébéniste, qui crée un meuble dans une pièce de bois brute, par le peintre qui capte un paysage et le fige dans le temps, tel est l’artisan. La définition de l’artisan est : « Personne qui pratique un métier manuel selon des normes traditionnelles ». Peut-on définir le développement comme un métier manuel ? Je ne sais pas… Mais je me suis toujours vu comme un artisan, comme lui je crée quelque chose d’unique, comme lui je peux choisir la matière que je vais modeler (le langage), comme lui je n’ai pas de cadre précis, une boucle se fait de mille façons, on coupe, on colle, on affine, on inspecte.

Le développement est aussi utilisé comme simple outil, dans les grandes entreprises. Fini l’artisanal, c’est la production qui règne. Cahier des charges et unités jours hommes, mise en production ou cahier d’intégration : plus de place pour l’art. Comme dans de grandes usines de boites de conserve et de calibrage de tomate, il faut avancer vite, faire de la rentabilité. On produit du code pour le client, personne ne s’arrête pour regarder le produit, est-il beau, est-il bien fait ? Il est opérationnel et c’est ce qui compte.

Finalement, qu’adviendra-t-il de ce métier dans 10, 20, 100 ans ? Si on regarde derrière nous, il ne reste plus grand-chose des métiers artisanaux, la tendance est à la production et à la rentabilité. Le cordonnier, le souffleur de verre, la tisseuse… laissent peu à peu leur art se perdre. Le développement doit encore se définir, métier nouveau, saura-t-il s’élever un jour au niveau d’art ?

Microsoft innove et double ses concurrents.

Bonjour,

Microsoft se lance enfin dans la course folle des tablettes, avec trois produits : La surface RT, la surface PRO et Windows 8. Je dois dire qu’au premier abord j’étais assez sceptique par le virage net entreprit par Microsoft, réunir le monde du tactile et de la souris, pour moi c’était perdu d’avance. Je possède un MacBook et un ipad, deux produits que je consomme de manières différente, les deux produits sont bien réalisés et tiennent bien leur rôle. Mais voilà que Apple, il y a quelques mois, décide lui aussi d’essayer d’unifier ces appareils, mon MacBook se dote des « applis » et de certaines caractéristiques de ma tablette… Mais voilà, ça sonne faux, je n’aime pas, ça me dérange, « laissez mon MacBook tranquille ! » ai-je envie de dire, « arrêtez tout ! »…

En même temps, Windows 8 apparaît, je me dis que Windows est fini, une installation de fortune sur mon PC de la béta ouverte ne me convainc pas.

Les jours passent, finalement, je me rends compte qu’il manque quelques choses entre ma tablette et mon mac, l’unification par le logiciel en tout cas ne m’a pas convaincu, pire, cette transformation de mon mac ne me plait pas.

J’ai déjà vu de loin quelques ultrabooks transformable, moitié pc, moitié tablette, mais le système d’exploitation n’est pas adapté. Je commence alors à réaliser et à comprendre ce que Microsoft s’apprête à faire, il essaye tout simplement de doubler Apple, d’environs 3 ou 4 ans… C’est énorme !

Dans la presse et sur internet, je pense que personne n’a vraiment compris ce qu’est la surface. 90% des articles que j’ai pu lire, enterre la tablette, en cause : premièrement, le prix. Mais la comparaison est fausse… On prend comme comparatif d’autres tablettes, or c’est une erreur, la surface c’est l’unification d’un ultrabook (similaire sur le papier au macbook air) et d’une tablette (type Ipad) avec une troisième composante très importante, son système d’exploitation, qui en fait un objet parfaitement pensé. Pour moi la comparaison se ferait avec un Ipad et un macBook air, les deux réunis, quand vous acheter surface (pro) c’est cela au final que vous avez, donc un rapport qualité prix nettement supérieur à Apple, avec une qualité similaire.

Windows 8 seul, n’est rien, cela ne vaut rien sur un PC. Toute sa puissance vient de Surface, ça donne tout sont sens à la vision de Microsoft, Pour moi, c’est une réussite dans la fusion du tactile, de la mobilité et du PC portable, rendu possible uniquement grâce à Windows 8 et là où c’est fort c’est que toute la concurrence à maintenant quelques années de retard dans ce domaine, Microsoft n’a pas seulement rattrapé ses concurrents, il a misé le tout pour le tout et les a devancé. Reste à savoir si Microsoft saura faire une bonne publicité de son produit, avec une démarche pédagogique, surtout pour faire comprendre que ce n’est pas une simple tablette. On sait que Google a souvent essuyé des revers à cause de produits trop futuristes…

Créer sont propre MVC en PHP

Bonjour,

Dans l’univers des blogs sur le développement, il est difficile de faire le tri et parfois quand on cherche un tutoriel simple sur un sujet en particulier, on s’y perds. Un excellent blog que je vous recommande si vous cherchez à apprendre le PHP c’est le blog http://www.grafikart.fr, c’est pratiquement des cours d’informatique mais en plus cool et à la maison en plus. La qualité est au rendez vous, et c’est un plaisir de suivre ces vidéos, toutes très bien détaillés. J’aime encore plus le fait que l’auteur ne coupe pas au montage les erreurs qu’il fait en codant devant nous, et nous explique quelle est l’erreur qu’il à fait tout en la corrigeant en direct.

Une de ces vidéo explique en détail comment réaliser un MVC en PHP, cela dure environs 40 minutes et si vous avez le temps je vous le conseil vivement, sinon je vous propose un rapide survole du sujet que je trouve très instructif.

Je ne parlerais pas ici du M(Modèle) de MVC mais juste de la partie Vue-Contrôleur.

Le principe est assez simple : il faut tout d’abord rediriger les urls de notre site vers un « dispatcheur », qui va nous diriger vers le bon fichier.

Pour cela on va activer le mode RewriteEngine de php dans un fichier .htaccess

htaccess

Ces deux lignes renverrons toutes les urls vers le fichier index.php qui sera notre dispatcheur.

voyons maintenant ce dispatcheur de plus près :

index

Ce qu’il y a d’important ici, c’est qu’on devine le fonctionnement de notre système MVC, par exemple si vous taper http://mon_site_mvc/employe/new

La variable $controller va avoir comme valeur employe ($param[0]), puis l’action sera new ($param[1]), ensuite on contrôle si l’action existe bien dans notre contrôleur, si oui on l’appel avec $controller->$action() sinon on redirige vers une page 404.

Voyons notre contrôleur :

Mcontrolleur

Ceci est la classe mère, d’ou les autres contrôleur hériterons et voici le contrôleur tutoriels que j’ai créée pour le tutoriel justement et qui hérite de la classe ci dessus :

Control

A partir de ces deux fichiers, que peux on dire ?

La seule page que je pourrait appeler pour l’instant, c’est tutoriels/index puisque je n’ais que le contrôleur tutoriels et l’action index d’implémenté.

Voyons ce qu’il ce passera : j’instancie le tableau $d[‘tuto’] avec mon nom et mon prénom, dans la réalité ça serais sans doute des variables tirés de ma base de donnée et de modèles, mais pour l’exemple j’ai voulu resté simple. Ensuite je fait un $this->set($d); qui fait appel à la fonction set de ma classe mère, qui stock tout ça dans la variable $vars, ensuite j’appèle $this->render(‘index’); qui fait appèle à la méthode render de ma classe mère, celle ci extrait les variables du tableau pour pouvoir les utiliser ensuite dans ma vue (on le verra ensuite) puis va cherccher le fichier avec le nom que j’ai passé en paramètre, c’est à dire index.php dans le répertoire views.

Voyons ce fichier :

views

Je ne peux pas faire beaucoup plus simple… Voila le bout du chemin, mon controlleur va donc charger ce fichier, et comme on a fait un extract($this->vars); avant, je peux me servir de mes variables ainsi : $tuto[‘nom’].

Et voila, la magie du MVC ! simple et efficace.

Bien sûr cela reste un simple tutoriel, ce code n’est pas destiné à être en production mais c’est un bon départ pour comprendre comment les framework MVC fonctionne.

Mon compte Google accédé depuis la chine.

Ce matin j’ouvre ma boite mail, comme tout les jours, pour dépiler mes mails. Une alerte sur font rouge et gras s’affiche alors au dessus de mes mails, m’avertissant que mon compte avait été accédé depuis la Chine !

image

Ce genre d’incident n’est pas isolé, plusieurs billet sur le web en parle, Google est connu pour résister tant bien que mal aux pressions politique chinoise cela pourrais être une raison pour que la Chine cible les services de Google et plus particulièrement Gmail.

Je m’interroge aujourd’hui sur la sécurité de ma boite mail..

Et vous..

  • Aujourd’hui, est il toujours sûr de garder ça messagerie sous Gmail ?
  • Avez-vous déjà été victime de piratage ?
  • Google prend il des mesures efficaces contre ces intrusions ?

Un menu toujours à portée de clic !

Bonjour !

Voici une petite astuce pour ceux qui aimeraient avoir le menu du haut d’un site web toujours à portée de clic (pour l’exemple ça sera le forum de Developpez mais ça fonctionne pour tous les sites web bien sûr).

On s’appuie ici sur Greasemonkey, un plugin devenu relativement célèbre sur le navigateur Firefox, ce plugin permet de changer des éléments à la voleé sur un site web. Pratique quand on souhaite customiser quelques éléments.

Je vous propose tout simplement d’ajouter quelques styles css supplémentaires sur la page, afin de fixer le menu. Dans un premier temps on peut déjà utiliser firebug pour « tester » les modifications du css sur la page en live, c’est très pratique, et aussi pour repérer l’id des éléments HTML que l’on doit modifier. Dans notre cas l’id de la div à modifier est « quicknav ».

Voici le code css qui va nous aider :

#quicknav {  left: 50%; margin-left: -450px; position: fixed; z-index: 2; }

On s’aperçoit sur firebug que l’attribut « position: fixed; » nous fixe bien le menu mais il se colle à gauche et se positionne sous les autres éléments. Pour le re-centrer on utilise une parade avec un left à 50% puis un margin-left à peu près à la moitié de la taille du menu. Et voila ! Le menu n’étant pas conçu pour se balader sur la page, ce n’est pas de toute beauté mais là c’est le côté pratique qu’on recherche ;)

Pour utiliser le script, si vous êtes sur Firefox, vous devez tout d’abord installer le plugin Greasemonkey, ensuite vous pouvez installer n’importe quel script qui est conforme, vous en trouverez tout plein sur le site userscripts.org véritable mine d’or pour les custommer en herbe, sinon sur Chrome c’est utilisable directement ! Il suffit de charger un script, ou de cliquer sur « install » sur le site userscripts.org.

Vous trouverez le script que l’on viens de faire sur cette page.

++

pomodoro draw

pomodoro

La méthode « pomodoro » est utilisé pour gérer sont temps de travail, il s’agit d’une méthode simple qui consiste à découper ces tâche en « tomate », une tomate étant 25 minutes de temps, au bout de 25 minutes vous devez arrêtez pour prendre une petite pause, et reprendre une autre tomate de 25 minutes, ceci 4 fois de suite. Au bout de 4 tomates vous devez prendre un longue pause d’environs 30 minutes. pour en savoir plus vous pouvez visiter le site officiel, ou alors lire le retour d’expérience de mathieu.agopian sur son blog.

ajax draw

ajax dessin

Un dessin vaut toujours mieux qu’un long discourt ^^
le mécanisme ajax est très rependue maintenant, cela consiste à charger des données dans une page sans recharger la page elle même, ça donne une dimension « client lourd » à la page. ici le mécanisme est illustré avec la bibliothèque Jquery très connue.
j’ai volontairement vulgarisé le code pour en faire un schéma rapidement compréhensif.

Résultat du défi n°2

Bonjour,

Le deuxième défi se termine, avec des participants motivés qui ont bien sûr relevé le défi.

Le défi était donc de trouver une solution au problème du voyageur de commerce, avec une petite variante, qui était que le calcul de la distance entre 2 points se faisait dans l’espace en 3D, et non en 2D, avec donc, 30 points.

Les Golgoths on été très étonnés de la réponse rapide, et efficace de pseudocode.

Il a su utiliser avec génie, un algorithme génétique, ce n’était pas évident pourtant.
Je vous laisse découvrir sa solution sur le forum

Ensuite, Sylvain Togni a livré une version avec un algorithme de type branch & bound, qui a donc confirmé le résultat du meilleur chemin déjà trouvé par pseudocode (89188), tout de même un très bel effort de la part de Sylvain Togni

Les Golgoths tiennent à féliciter ces deux membres, pour leur ingéniosité. Bravo !!

Lire la suite

2ème défi : Le courrier est trop long !

Bonsoir,

Je sens que vous manquez de challenges, mais les Golgoths vous préparent de grands défis, en voici un qui devrait laisser tout votre talent s’exprimer correctement..

Le voyage dans l’espace.

Pour ce défi, j’ai contacté le concepteur des voyages interstellaires (oui, les Golgoths voyagent depuis longtemps de planète en planète…) pour qu’il m’explique un peu plus en détails les modalités.. JoeChip va donc vous expliquer tout ça en détail :

– Aujourd’hui, notre réseau de distribution de courrier ne s’effectue plus dans les délais, et les Golgoths sont de plus en plus mécontents de ne pas avoir de nouvelles de leur voisinage interstellaire. Nous avons actuellement 30 planètes où circule le courrier, et il nous faudrait déterminer quel est le plus court chemin entre ces 30 planètes, en ne passant qu’une fois pour chaque planète.

Voici donc les emplacements de nos planètes :

nom;X,Y,Z

P-1:914,9904,1583;
P-2:2371,7086,9327;
P-3:6266,5886,6028;
P-4:4451,7026,7292;
P-5:1573,6693,8829;
P-6:8875,18,5462;
P-7:1582,6028,8613;
P-8:9426,2272,9831;
P-9:6310,2007,903;
P-10:6896,5130,8681;
P-11:4086,6387,991;
P-12:2897,2825,9816;
P-13:851,5771,2018;
P-14:3020,1260,9760;
P-15:570,5348,766;
P-16:3168,1099,5495;
P-17:4893,9563,7652;
P-18:7634,4480,3935;
P-19:5114,1487,7632;
P-20:1752,6060,5080;
P-21:8425,9370,757;
P-22:7346,365,640;
P-23:6302,8676,3868;
P-24:9013,8025,4246;
P-25:3444,8561,4769;
P-26:8853,8857,6923;
P-27:9065,3143,909;
P-28:5407,2004,5566;
P-29:1030,6451,1908;
P-30:7055,7782,1339;

Aide les Golgoths postiers, à trouver le chemin le plus court !

Venez discuter de vos solutions avec les autres développeurs ici