Archive for août, 2009

28
août

Combien de casquettes avez-vous ?

   Posted by: freshdaz    in Divers

Un article de mon ami Julien Pauli, qui traite du grand écart entre les compétences requises et demandées pour un projet web et les salaires proposés…

Le Web est un ensemble de métiers. Je suis étonné de voir qu’on en demande toujours plus à des personnes ayant principalement un profil de développeur Web, mais à la fin du mois, c’est pas toujours plus. Allons, le métier de Webmaster n’est plus le même qu’il y a 10 ans, réveillons nous !

Soyons raisonnables, 2 personnes ne peuvent assurer la gestion d’un projet Web complet, orienté MVC (disons à 15 contrôleurs)
De la conception, en passant par l’architecture, la modélisation et le traitement des données, jusqu’au développement, testé, documenté, sécurisé, l’hébergement du projet et le dimensionnement matériel; on peut compter déjà une bonne dizaine de corps de métiers différents, pouvant chacun être composé de plusieurs personnes.

Saurez-vous analyser le besoin ? Le modéliser sous forme d’objets, en utilisant UML et ses nombreux schémas ? L’architecturer façon patterns de manière à rendre l’application évolutive, testable et compréhensible ?
Saurez vous créer un modèle ? A savoir modéliser les données métiers, créer des procédures stockées, des déclencheurs, des patterns d’accès ?
Si l’application nécessite scalabilité, saurez-vous la faire monter en charge ? Partitionner vos tables ? Répliquez vos données et balancez votre charge correctement ? Serez-vous capables de développer ce projet, en écrivant bien sûr des tests, tout en gérant des caches. Etes-vous d’attaque pour présenter des données avec xHTML et CSS de manière valide ? Maitrisez-vous Javascript et Ajax pour offrir une expérience utilisateur poussée ?

Vous avez le droit de répondre oui, à ce moment là j’envie réellement votre salaire ! On peut savoir tout faire, mais ouvrons les yeux sur les métiers du Web : on ne peut pas savoir tout faire bien, déja parce que le Web est trop complexe pour cela, et ensuite parce qu’une journée ne compte que 24h dans laquelle on travaille en moyenne 8h (officiellement payées).

Alors restons raisonnables. Il existe beaucoup de projets dans lesquels les responsabilités sont clairement définies, et les colles que sont les chefs de projets, très compétents.
En parallèle il existe aussi trop de projets dans lesquels seules 2 à 4 personnes sont comptées, et doivent à elles seules tout gérer, le tout en un temps record.

Une compétence se paye, si vous les additionnez, vous additionnez donc les paies qui vont avec, sinon lâchez vite l’affaire (en tout cas moi c’est ce que je ferai). On ne peut pas demander à quelqu’un de savoir (bien) faire du SQL, du PHP, du CSS et mettre en place un serveur de production. C’est affolant les offres d’emplois qu’on retrouve demandant ces savoir-faire combinés, mais avec des salaires qui ne sont souvent pas à la hauteur.
D’un autre coté les offres Java (Web), elles, sont bien plus précises, et en général un projet se compose de sommes de compétences très pointues et très distinctes. Pourquoi pas en PHP ?

Moralité : un projet sera beaucoup plus abouti (et coutera donc moins cher, en partant de la conception jusqu’à la maintenance) s’il est la somme de quelques compétences très qualifiées et poussées dans un domaine restreint, plutôt que la somme de beaucoup plus de compétences mais trop variées et disparates.

http://blog.developpez.com/julienpauli/p7994/dev-web-generaliste/combien-de-casquettes-avez-vous/

Tags: , ,

28
août

The Linux Foundation Video Site:: Linux pub

   Posted by: freshdaz    in Divers

Dans quelques heures c’est le week-end qui commence :) Pour fêter cela, voici une petite pub pour la linux fondation, qui vente les mérites de tux.

Cette pub n’est pas récente mais est assez sympathique. A voir ou à revoir :)

http://video.linuxfoundation.org/video/1057

Tags:

26
août

Oracle-Sun : c’est validé… côté américain

   Posted by: freshdaz    in Divers

Si la justice américaine a donné son feu vert à l’acquisition de Sun Microsystems par Oracle, les deux entreprises attendent encore celui de la Commission européenne.

Le suspens a pris fin (si tant est qu’il y en eut un). La Justice américaine (le DoJ) a validé l’acquisition de Sun Microsystems par Oracle signée en avril dernier, selon un communiqué (laconique) d’Oracle. Après moultes négociations avec IBM, Sun s’était finalement laissé séduire par la proposition d’Oracle en échange d’un chèque de 7,4 milliards de dollars, dette comprise.

Mais la récupération des actifs de Sun par le géant de la base de données amenait quelques questions autour d’éventuelles positions dominantes sur plusieurs marchés. A commencer par Java.

En mettant la main sur Sun, Oracle s’empare d’une technologie (langage de programmation et environnement d’exécution) utilisée par quelques 7 milliards d’appareils électroniques dont nombre de téléphones mobiles. Comme nombre de ses concurrents, Oracle est notamment un gros utilisateur de Java. Savoir que l’entreprise de Redwood City va désormais décider des développements de Java a effectivement de quoi inquiéter. Il faut croire qu’Oracle a fourni au DoJ des garanties en la matière.

Autre inquiétude, l’avenir de MySQL. Rachetée par Sun à MySQL AB en janvier 2008, la base de donnée open source tombe entre les mains du plus grand éditeur de base de données propriétaire. L’avenir de MySQL aurait donc pu être compromis, Oracle pouvant ainsi écarter une technologie concurrente potentielle notamment utilisée par des millions de services web. L’avenir le dira.

Si les autorités américaines ont donné leur feu vert, l’acquisition n’est pas encore définitive. Oracle attend maintenant l’aval de la Commission européenne. Ce qui pourrait ne pas tarder, Oracle et Sun ayant promis de boucler l’opération avant la fin de l’été. Les actionnaires de Sun avaient, de leur côté, validé l’offre d’Oracle le 16 juillet dernier.

http://www.silicon.fr/fr/news/2009/08/21/oracle_sun___c_est_valide____cote_americain

Récapitulatif de la saga:

http://dasini.net/blog/2009/04/21/oracle-achete-sun-donc-mysql/

http://dasini.net/blog/2009/06/30/oracle-et-sun-sous-la-loupe-de-la-justice-americaine/

http://dasini.net/blog/2009/07/03/rachat-de-sun-par-oracle-la-communaute-reagit-sur-php-tv/

http://dasini.net/blog/2009/08/05/bruxelles-mene-son-enquete-sur-le-rachat-de-sun-par-oracle/

Tags: , ,

18
août

Openstreetmap, la cartographie libre

   Posted by: freshdaz    in Divers

En cette période estivale, un petit coup de projecteur sur un projet de cartographie libre: Openstreetmap

Openstreetmap est un projet destiné à réaliser une carte du monde, sous licence dite “libre”. Cela signifie,  que tout le monde est libre d’utiliser, d’améliorer, de distribuer ou d’effectuer des travaux dérivés à partir de nos cartes, donnant ainsi une liberté bien plus grande que les solutions déjà existantes, telles google maps ou yahoo maps.

Deux articles d’une série de six, pour connaître un peu mieux les aspirations de la communauté Open Street Map:

Les routards du web : « Nous sommes comme des fourmis »

Les routards du web : « Il suffit d’une paire d’yeux »

Lorsque l’on parle de cartographie, on parle souvent de souvent de géo-référencement. Voici OpenRouteService une alternative (encore limitée) à ViaMichelin, Mappy et autres…

OpenRouteService.org est un service européen d’information géo-référencée basé sur des standards (recherche de points d’intérêt, de géocodage inverse, calcul d’itinéraire voiture, vélo, piéton ) et tout cela avec les données libres d’ OpenStreetMap.
Ce service développé par l’Université de Bonn, couvre notamment la France.

Tags: , ,

13
août

!include

   Posted by: freshdaz    in Astuce, MySQL

my.cnf, comme vous le savez certainement est le nom du fichier de configuration de MySQL. Vous pouvez également le retrouver sous le nom de my.ini en environnement MS Windows. Il permet comme son nom l’indique de configurer votre serveur MySQL en y centralisant les options de … configuration. Le but ici n’est pas de détailler la longue liste des paramètres de MySQL, la documentation officielle est (presque) bien faite, mais de mettre le « focus » sur la directive !include (avec un « ! » devant).

Cette dernière permet d’inclure un fichier de configuration dans un autre (sic). Autant je suis un adèpte de la non duplication du code en dévellopement (des require_once en PHP utilisés avec modération ça vous simplifie bien votre code), autant je ne suis pas un grand fan pour éclater la configuration de mon serveur MySQL en plusiseurs endroits. Cependant :) il faut avouer que parfois cela peut servir !

Alors comment ça marche ?

C’est (apparemment) très simple. Mon client mysql va chercher sa configuration dans différents endroits (définit à la compilation):

daz@daz-laptop:~$ mysql –help
Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf


Mon fichier de configuration se nomme  /etc/mysql/my.cnf et il contient simplement la directive !include suivit du « vraie » fichier de configuration:

daz@daz-laptop:~$ cat /etc/mysql/my.cnf
!include /home/daz/sandboxes/msb_5_1_35/my.sandbox.cnf


Et au final dans mon fichier de configuration (au passage j’utilise le très pratique soft développé par Giuseppe Maxia : MySQL Sandbox):

daz@daz-laptop:~$ cat /home/daz/sandboxes/msb_5_1_35/my.sandbox.cnf
[mysql]
prompt=’mysql [\h] {\u} (\d) > ‘
[client]
port = 5135
socket = /tmp/mysql_sandbox5135.sock


Simple non ?

C’est (presque) tout, et ça marche…pas :(

daz@daz-laptop:~$ mysql
ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’ (2)


Une petite vérification s’impose:

daz@daz-laptop:~$ mysql –help
mysql  Ver 14.14 Distrib 5.1.35, for pc-linux-gnu (i686) using readline 5.1
port                              0
socket
(No default value)


Les paramètres ne sont pas prit en compte. (commentaire de l’expert: ça ne peut donc pas fonctionner)



(30 minutes et quelques insultes plus tard…)


En fait, la subtilité,  c’est de rajouter un saut à la ligne, à la fin de la commande !include /home/daz/sandboxes/msb_5_1_35/my.sandbox.cnf

daz@daz-laptop:~$ mysql –help
mysql  Ver 14.14 Distrib 5.1.35, for pc-linux-gnu (i686) using readline 5.1
port 5135
socket /tmp/mysql_sandbox5135.sock


Vérification (au cas où):

daz@daz-laptop:~$ mysql

Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 5
Server version: 5.1.35-log MySQL Community Server (GPL)
Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.
mysql [localhost] {daz} ((none)) >


(commentaire de l’expert: ça fonctionne !)

:)

Giuseppe Maxia

Tags: , ,

10
août

Utiliser XML avec MySQL 5.1 (part 3/5)

   Posted by: freshdaz    in MySQL

(<- précédent)

Interroger un flux XML avec Xpath

L’emploi de XML ne présenterait pas beaucoup d’intérêt sans la possibilité de pouvoir interroger sa structure pour accéder à une information particulière : le langage XPath répond à cette attente et est (en partie du moins) aujourd’hui intégré à MySQL. Mais avant de voir comment utiliser XPath à travers MySQL, il est nécessaire de se pencher sur la syntaxe de ses expressions, dont la construction la plus importante est sans conteste le chemin de localisation (location path).

Le chemin de localisation

De manière similaire à la navigation au sein d’un système de fichiers, un chemin de localisation se compose d’une succession d’étapes, séparées les unes des autres par un /. La description d’un chemin peut se faire de façon absolue ou relative, auquel cas un nœud contexte est utilisé afin de déterminer à partir de quel endroit doit s’effectuer la recherche.

Chaque étape d’un chemin de localisation peut se diviser en trois parties (axe de recherche, test du nœud et ensemble de prédicats), réunies sous la forme suivante :

Axis::Node-Test[Predicate1][Predicate2]…

L’axe de recherche (Axis)

L’axe de recherche permet de spécifier dans quel sens orienter la sélection des nœuds que l’on veut récupérer par rapport au nœud courant. Ainsi, il est possible de choisir de chercher dans l’ensemble des nœuds des descendants, plutôt que de se limiter (par défaut) aux nœuds directement enfants.

Il existe une dizaine d’axes de recherche, dont les plus usités sont :

  • child, qui limite à l’exploration des nœuds éléments directement enfants du nœud contexte,
  • descendant, qui englobe, en plus des nœuds enfants, tous les éléments descendants,
  • descendant-or-self, identique à descendant avec en plus le nœud contexte inclus,
  • ancestor, qui contient tous les nœuds ancêtres,
  • ancestor-or-self, identique à ancestor avec en plus le nœud contexte,
  • following-sibling, qui fait référence aux éléments frères suivants,
  • preceding-sibling, qui fait référence aux éléments frères précédents,
  • attribute, qui se cantonne à la recherche dans les nœuds attributs.

Le test du nœud (Node-Test)

Généralement, le test repose sur le nom du nœud que l’on veut retrouver. Cependant, XPath ne se limite pas à la recherche de simples éléments, mais à tous types de nœuds. Il est donc ainsi possible de préciser le type de nœud que l’on veut atteindre grâce aux fonctions suivantes :

  • node(), qui valide tous types de nœuds,
  • text(), pour les nœuds texte,
  • comment(), pour les commentaires,
  • processing-instruction(), pour les instructions de traitements.

Les prédicats (Predicates)

Les prédicats, délimités par un « [" et un "]« , permettent de filtrer plus finement l’ensemble des nœuds retrouvés par le chemin de localisation, en évaluant l’expression qu’ils contiennent et en ne retenant que les nœuds qui la valident. Plusieurs prédicats peuvent se suivre, filtrant ainsi un peu plus précisément l’ensemble des nœuds à garder.

Les expressions mises en place dans les prédicats peuvent, en plus des quelques fonctions existantes et des opérateurs habituels, exploiter des ensembles de nœuds (node-sets) récupérés grâce à… des chemins de localisation !

Ainsi, il est possible d’adapter la validité d’un chemin de localisation en fonction même de tout élément de l’arborescence du flux XML.

Par exemple, si l’on considère l’expression XPath suivante :

//article[@rubrique = /site/menu/rubrique[2]]

On récupère tous les articles qui possèdent un attribut rubrique ayant la même valeur que la deuxième rubrique du menu du site.

Cet autre exemple :

//article[not( @rubrique = preceding-sibling::article/@rubrique)]

permet de ne sélectionner que les articles qui n’ont pas leur attribut rubrique égal à l’attribut rubrique d’un article précédent. En d’autres termes, on ne récupère ici que le premier article de chaque rubrique.

Quelques raccourcis

Afin de faciliter la lecture et l’écriture de requêtes XPath, il existe bien heureusement un ensemble de raccourcis pratiques:

Raccourcis Xpath

self::node() .
parent::node() ..
attribute::name @name
//descendant-or-self::node()/ //
element[position() = X] element[X]

(à suivre… utiliser XML avec MySQL 5.1 : Les fonctionnalités Xpath de MySQL 5)

Tags: ,

5
août

Bruxelles mène son enquête sur le rachat de Sun par Oracle

   Posted by: freshdaz    in Divers

Après l’annonce du rachat de Sun pour 7,4 milliards de dollars formulée par Oracle au mois d’avril dernier, les autorités antitrust continuent d’analyser les détails de cette acquisition. Ainsi, le 29 juin dernier, aux Etats-Unis, le Département de la Justice s’est penché sur le dossier afin de déterminer si cet accord ne porte pas préjudice à la concurrence sur le marché nord-américain. Les autorités ont ainsi fait remarquer certains aspects flous concernant les licences de droit de la technologie Java créée par Sun et installée sur 800 millions d’ordinateurs à travers le monde.

De son côté la Commission Européenne a récemment été invitée à donner son approbation sur cette acquisition. Les autorités européennes bénéficient d’une période de 25 jours pour donner leur feu vert à cette initiative. Dans le cas contraire, elle pourra demander une enquête plus approfondie de 90 jours.

Bjorn Schotte, fondateur de la société Mayflower GmbH, annonce en effet avoir reçu un email de Vera Pozzato, commissaire à Bruxelles, lui demandant de lui retourner plusieurs informations de contact de sociétés travaillant sur MySQL et d’autres produits Open Source et pouvant apporter leur assistance dans cette enquête.

Par la suite, la Commission devrait leur retourner un questionnaire afin de déterminer de manière plus concrète les éventuels enjeux de cette fusion ou les cas problématiques de monopole.

A suivre…

http://www.neteco.com/292038-bruxelles-antitrust-enquete-rachat-sun-oracle.html

Tags: , ,

3
août

Benchmark MySQL 5.4

   Posted by: freshdaz    in bench, MySQL

Dimitri KRAVTCHUK nous démontre, avec une batterie de tests, les évolutions en matière de performance apportées par MySQL 5.4:

  • Huge performance improvement on InnoDB engine!
  • MySQL 5.4.0 /Perf Version seems to be the most performant InnoDB implementation for the moment! (only except on the Read-Only workload @8cores where InnoDB plugin-1.0.3 is leading!)
  • MySQL is outperforming PostgreSQL on my tests now!
  • Regarding scalability, get a look at 8 vs 16 cores graphs, and you’ll see it’s the big step forward – no performance degradation on 16 cores is a very positive sign! and there is only 3 months distance between tests!
  • LOCK_open needs a fix ASAP! :-)
  • Analyzing my test results, it’s too early to say InnoDB is scaling up to 16 cores, but the test results on 16 cores are already outperforming 8 cores, and I’m absolutely sure now – very quickly it’ll perform even better! so see you soon! :-) )

http://dimitrik.free.fr/db_STRESS_MySQL_540_and_others_Apr2009.html

Tags: ,