<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Anis Berejeb</title>
	<atom:link href="http://www.berejeb.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.berejeb.com</link>
	<description>Actualités sur l&#039;architecture et le développement web, ainsi que la gestion d&#039;équipe </description>
	<lastBuildDate>Thu, 23 May 2013 02:02:41 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Communication 101 : dites moi de quelle couleur vous êtes, je vous en dirai plus sur vous!</title>
		<link>http://www.berejeb.com/2013/05/communication-101-dites-moi-de-quelle-couleur-vous-etes-je-vous-en-dirai-plus-sur-vous/</link>
		<comments>http://www.berejeb.com/2013/05/communication-101-dites-moi-de-quelle-couleur-vous-etes-je-vous-en-dirai-plus-sur-vous/#comments</comments>
		<pubDate>Thu, 23 May 2013 01:59:35 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[COMMUNICATION]]></category>
		<category><![CDATA[GESTION DU CHANGEMENT]]></category>
		<category><![CDATA[analytique]]></category>
		<category><![CDATA[communication 101]]></category>
		<category><![CDATA[couleur de personnes]]></category>
		<category><![CDATA[humain]]></category>
		<category><![CDATA[modes de pensee]]></category>
		<category><![CDATA[Ned Herrmann]]></category>
		<category><![CDATA[realiste]]></category>
		<category><![CDATA[visionnaire]]></category>

		<guid isPermaLink="false">http://www.berejeb.com/?p=2392</guid>
		<description><![CDATA[Non, ce n&#8217;est pas la couleur de votre peau, ni celle de votre chemise. C&#8217;est plutôt la couleur métaphorique de votre cerveau, qui permet de determiner votre profil individuel, ou de votre équipe. Ce profil est developpe par Ned Herrmann est en fait un outil de connaissance de soi visant à identifier les modes préférentiels de traitement de l&#8217;information des individus. Herrmann divise le traitement des [...]]]></description>
				<content:encoded><![CDATA[<div></div>
<p>Non, ce n&rsquo;est pas la couleur de votre peau, ni celle de votre chemise. C&rsquo;est plutôt la couleur métaphorique de votre cerveau, qui permet de determiner votre profil individuel, ou de votre équipe. Ce profil est developpe par <em><strong><a title="Modele de Ned Herrmann" href="http://www.herrmann-europe.com/" target="_blank">Ned Herrmann</a></strong></em> est en fait un outil de connaissance de soi visant à identifier les <i>modes préférentiels de traitement de l&rsquo;information</i> des individus.</p>
<p>Herrmann divise le traitement des informations en 4 modes principales. L&rsquo;hemisphere gauche du cerveau, designé comme &laquo;&nbsp;Raison et Methode&nbsp;&raquo; est representé par deux modes (A. Analytique et B. Raison), tandisque l&rsquo;hemisphere droit &laquo;&nbsp;Sentiment et Imagination&nbsp;&raquo; est representeé en deux modes D. Visionnaire et C. Humain.</p>
<h2><span style="color: #3366ff;">1. Le Mode de pensée Analytique</span></h2>
<p>Le mode de pensée Bleu represente une personne Logique, Factuelle, Critique, Technique et Quantitative. Cette personne compile les faits, analyse et argumente, raisonne et travaille a partir de chiffres précis.</p>
<h2><span style="color: #99cc00;">2. Le Mode de pensée Sequentielle (Raison)</span></h2>
<p>Les personnes vertes sont des personnes structurées, organisées, detaillées et planifiées. Elles remarquent les defauts et ont une approche pratique des problèmes. Elles vont jusqu&rsquo;au bout des choses et developpent des plans détaillées. Ce sont des personnent qui envisagent les problèmes en terme de Planning.</p>
<h2><span style="color: #ff0000;">3. Le Mode de pensée Humain</span></h2>
<p>Ces personnes, représentées par la couleur Rouge, sont des personnes émotionnelles et sensibles, mais aussi Spirituelles et qui ont de l&rsquo;empathie. Elles comprennent les comprend les difficultés relationnelles et anticipent souvent le ressenti des autres. Elles perçoivent des éléments non verbaux issus du stress. Ces personnes sont persuasifs, concilient et enseignent, mais aussi prennent en compte les valeurs et comprennent les éléments émotionnels.</p>
<h2><span style="color: #ffcc00;">4. Le Mode de pensée Imaginatif et Visionnaire</span></h2>
<p>Si vous êtes jaune, vous êtes probablement Intuitif, intégratif, synthétique et conceptuel. Vous avez donc une vue globale des choses et vous tolérez l&rsquo;ambiguité. Vous intégrez les idées et les concepts et défiez les regles établies. Vous avez le talent d&rsquo;inventer de nouvelles solutions et vous résolvez les problèmes de manière intuitive.</p>
<p>&nbsp;</p>
<h2>Et si vous étiez <span style="color: #ff0000;">mul</span><span style="color: #ffcc00;">tic</span><span style="color: #99cc00;">olo</span><span style="color: #0000ff;">re</span> ?</h2>
<p>En effet, ce ne sont pas toutes les personnes qui ont une seule couleur, bien au contraire. Selon les statistiques:</p>
<ul>
<li><span style="line-height: 13px;">7% des gens ont une seule couleur</span></li>
<li>60% ont 2 couleurs</li>
<li>30% ont 3 couleurs</li>
<li>3% sont équilibrés</li>
</ul>
<p>Essayez l&rsquo;exercice et vous verrez que vous êtes probablement dans les 60% <img src='http://www.berejeb.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Maintenant, pourquoi parle-t-on de tout ca? La réponse est dans la premiere partie du titre de ce post : &laquo;&nbsp;Communication&nbsp;&raquo;. En effet, connaitre le profil de votre destinataire :les membres de votre equipe, votre public, votre boss etc. vous permet d&rsquo;avoir une communication &laquo;&nbsp;efficace&nbsp;&raquo;.</p>
<p>Quand vous parlez par exemple a des financiers (des bleus <img src='http://www.berejeb.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  ), vous n&rsquo;allez certainement pas argumenter en vous focalisant sur la &laquo;&nbsp;vision&nbsp;&raquo; et donner des images abstraites, mais au contraire, arriver avec des chiffres exacts et des données et des graphiques.</p>
<p>Si vous présentez plutôt un concept a votre Votre Lead de departement Design,  vous allez plutôt donner une vue &laquo;&nbsp;enthousiaste&nbsp;&raquo; et ensembliste.</p>
<p>Ou encore, si vous parlez a une Personne &laquo;&nbsp;Humaine&nbsp;&raquo; en annonçant votre projet, vous allez presenter la chaleur positive de ce projet sur les individus et souligner la façon dont ca aidera les autres.</p>
<h3><span style="font-size: 1.5em;">Quelques astuces pour passer un bon message</span></h3>
<p>si vous vous adressez à une personne :</p>
<ul>
<li><span style="color: #0000ff;">Analytique</span>
<ul>
<li><span style="color: #0000ff;">Fournir des données </span></li>
<li><span style="color: #0000ff;">Appuyer avec des preuves (Etudes ou graphiques)</span></li>
<li><span style="color: #0000ff;">Avoir une approche logique</span></li>
<li><span style="color: #0000ff;">Maitriser le sujet</span></li>
</ul>
</li>
<li><span style="color: #ff0000;">Humaine</span>
<ul>
<li><span style="color: #ff0000;">Manifester de l&rsquo;ouverture </span></li>
<li><span style="color: #ff0000;">Souligner l&rsquo;impact positif sur les autres</span></li>
<li><span style="color: #ff0000;">Favoriser la discussion, l&rsquo;interaction et le travail en groupe</span></li>
</ul>
</li>
<li><span style="color: #99cc00;">Realiste</span>
<ul>
<li><span style="color: #99cc00;">donner des points clés</span></li>
<li><span style="color: #99cc00;">Enoncer les benefices et les couts</span></li>
<li><span style="color: #99cc00;">Presenter les étapes suivantes</span></li>
<li><span style="color: #99cc00;">Utiliser des listes</span></li>
<li><span style="color: #99cc00;">Etre logique et concis</span></li>
</ul>
</li>
<li><span style="color: #ffcc00;">Visionnaire</span>
<ul>
<li><span style="color: #ffcc00;">Donner une vue d&rsquo;ensemble</span></li>
<li><span style="color: #ffcc00;">Souligner les défis</span></li>
<li><span style="color: #ffcc00;">Etre enthousiaste</span></li>
<li><span style="color: #ffcc00;">utiliser des images</span></li>
</ul>
</li>
</ul>
<h2>Affichez votre couleur au travail</h2>
<p>Un exercice que vous pourrez faire pour favoriser la communication, est d&rsquo;afficher votre couleur. Faites l&rsquo;exercice et determiner votre (vos) couleur(s), et Affichez la (les) sur votre bureaux. L&rsquo;exercice est valable aussi au niveau de votre equipe. Croyez moi, ceci sauvera pas mal d&rsquo;heures de d&rsquo;obstination <img src='http://www.berejeb.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.berejeb.com/2013/05/communication-101-dites-moi-de-quelle-couleur-vous-etes-je-vous-en-dirai-plus-sur-vous/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Gestion du changement : Comment gérer les preoccupations de votre équipe</title>
		<link>http://www.berejeb.com/2013/05/gestion-du-changement-comment-gerer-les-preoccupations-de-votre-equipe/</link>
		<comments>http://www.berejeb.com/2013/05/gestion-du-changement-comment-gerer-les-preoccupations-de-votre-equipe/#comments</comments>
		<pubDate>Wed, 22 May 2013 02:55:52 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[GESTION DU CHANGEMENT]]></category>
		<category><![CDATA[gestion de changement]]></category>
		<category><![CDATA[preoccupation]]></category>
		<category><![CDATA[sept phases du changement]]></category>

		<guid isPermaLink="false">http://www.berejeb.com/?p=2387</guid>
		<description><![CDATA[Dans mon post précedent, j&#8217;ai détaillé les differentes reactions qu&#8217;un employé suite à l&#8217;annonce d&#8217;un changement quelconque, et expliqué pourquoi le changement derange les gens et les préoccupe. Toutefois, il existe des actions que les deux parties prenantes (employé et gestionnaire) peuvent faire pour gérer ces situations, et c&#8217;est le sujet de ce post. Il existe 7 phases de préoccupation concernant le changement, durant ces [...]]]></description>
				<content:encoded><![CDATA[<p>Dans mon <a title="La courbe de changement" href="http://www.berejeb.com/2013/05/la-courbe-de-changement-ou-votre-recette-de-cuisine-face-aux-reactions-contre-le-changement/">post précedent</a>, j&rsquo;ai détaillé les differentes reactions qu&rsquo;un employé suite à l&rsquo;annonce d&rsquo;un changement quelconque, et expliqué pourquoi le changement derange les gens et les préoccupe.</p>
<p>Toutefois, il existe des actions que les deux parties prenantes (employé et gestionnaire) peuvent faire pour gérer ces situations, et c&rsquo;est le sujet de ce post.</p>
<p>Il existe 7 phases de préoccupation concernant le changement, durant ces phases, les responsabilités du gestionnaire et de l&rsquo;employé se détaillent comme suit :</p>
<h2>Phase 1 : L&rsquo;immobilité, la continuité des projets habituels et le manque d&rsquo;importance accordée au changement.</h2>
<p>Lors de cette phase, l&rsquo;expression courante est du genre &laquo;&nbsp;Je doute que ce changement m&rsquo;affecte&nbsp;&raquo;. Dans ce cas, le Gestionnaire doit communiquer de façon précise et donner de l&rsquo;importance au changement annoncé, Tandis que l&rsquo;employé doit plutôt confronter sa position a celle des autres et se poser des questions et le mieux, rechercher des faits et des données vérifiables et ne pas être subjectif.</p>
<h2>Phase 2 : L&rsquo;inquiétude et l&rsquo;insécurité</h2>
<p>L&rsquo;employé commence a s&rsquo;inquiéter, le changement pourrait avoir un impact sur son travail (perte d&rsquo;emploi, de patron, de collègues , mais aussi une perte de pouvoir ou de competences, un changement des outils de travail ou de l&rsquo;organisation de travail. L&rsquo;expression clé est : &laquo;&nbsp;Que va t&rsquo;il m&rsquo;arriver?&nbsp;&raquo;</p>
<p>Dans cette phase, le role du gestionnaire est crutial pour écouter  mais surtout pour soutenir l&rsquo;employé. L&rsquo;employé doit exprimer ses inquietudes aux bonnes personnes pour chercher les bonnes réponses  L&rsquo;employeé doit aussi accepter que l&rsquo;information ne soit pas disponible.</p>
<h2>Phase 3 : Légitimité et pérennité du changement</h2>
<p>Dans cette phase, l&rsquo;employé se pose la question &laquo;&nbsp;Est ce que le changement est la pour durer?&nbsp;&raquo;. Il est inquiet quand aux consequences organisationnelles du changement a moyen et long terme, et se questionne surtout sur la légitimité et la capacite de l&rsquo;entreprise de mener a terme le changement.</p>
<p>Le gestionnaire doit ici démontrer le sérieux et les raisons du changement et illustrer les moyens engages par l&rsquo;entreprise pour la réussite du changement. L&rsquo;employé quand à lui, doit comprendre les raisons qui motivent le changement et se positionner par rapport a ceci, entre autre la question qu&rsquo;il devrait s&rsquo;investir ou plutôt rester passif.</p>
<h2>Phase 4 : Scénario et mise en oeuvre du changement</h2>
<p>L&rsquo;employé se questionne sur la qualité de la mise en oeuvre du changement, aux ressources et efforts alloués, et s&rsquo;inquiete quand au scenario de déroulement de ce dernier. &laquo;&nbsp;Que signifie ce changement?&nbsp;&raquo; et &laquo;&nbsp;Comment fait-on?&nbsp;&raquo; sont généralement les expressions qui se posent dans cette phase.</p>
<p>Le gestionnaire doit communiquer le plan d&rsquo;action et les ressources allouées pour ce changement, et faire participer l&rsquo;employé. L&rsquo;employeé doit répondre aux questions Qui, Quand, Comment, Avec qui et échanger avec d&rsquo;autres personnes ayant eu le meme type de changement.</p>
<h2>Phase 5 : Capacité de faire face au changement</h2>
<p>L&rsquo;employé se demande quand à sa capacité de faire face aux changement ainsi qu&rsquo;au soutien et la comprehension de son superieur. La question qu&rsquo;il se pose est &laquo;&nbsp;Est ce que je vais être capable de &#8230;&nbsp;&raquo;.</p>
<p>Dans ce cas, le gestionnaire doit faciliter le transfert des nouveaux acquis, travailler sur l&rsquo;accompagnement et le temps d&rsquo;adaptation avec l&rsquo;employé. Ce dernier doit clarifier les attentes de son gestionnaire, et exprimer ses besoins spécifiques sur le plan technique, afin de réduire ses zones d&rsquo;inconfort.</p>
<h2>Phase 6 : échange et collaboration</h2>
<p>L&rsquo;employé se préoccupe par rapport aux occasions de collaboration avec les autres equipes ou service, ainsi que les occasions d&rsquo;échange. L&rsquo;expression clé est &laquo;&nbsp;Comment l&rsquo;ensemble des concernés peuvent collaborer?&nbsp;&raquo;.  Dans cette phase, le gestionnaire devrait faciliter l&rsquo;échange entre les différents destinataires et apprendre du changement. L&rsquo;employé peut s&rsquo;impliquer dans les comité afin de mettre a profit ses connaissances.</p>
<h2>Phase 7 : Amélioration</h2>
<p>&laquo;&nbsp;Comment pouvons nous faire mieux?&nbsp;&raquo;, c&rsquo;est ce qui préoccupe l&rsquo;employé dans cette phase, ce dernier cherche a s&rsquo;améliorer continuellement. Le gestionnaire doit être ouvert pour laisser les pistes de solution émerger des employés et équipes. L&rsquo;employé doit innover, oser et agir.</p>
<h3>Conclusion</h3>
<p>Lors de ces 7 phases, les roles de Gestionnaire et d&rsquo;employeé doivent se completer pour mener a terme et réussir le changement. Les reactions et les efforts de chacun des deux parties sont cruciaux pour une réussite du changement.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.berejeb.com/2013/05/gestion-du-changement-comment-gerer-les-preoccupations-de-votre-equipe/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>La courbe de changement, ou votre recette de cuisine face aux reactions contre le changement</title>
		<link>http://www.berejeb.com/2013/05/la-courbe-de-changement-ou-votre-recette-de-cuisine-face-aux-reactions-contre-le-changement/</link>
		<comments>http://www.berejeb.com/2013/05/la-courbe-de-changement-ou-votre-recette-de-cuisine-face-aux-reactions-contre-le-changement/#comments</comments>
		<pubDate>Tue, 21 May 2013 01:03:14 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[GESTION DU CHANGEMENT]]></category>
		<category><![CDATA[4c]]></category>
		<category><![CDATA[change management]]></category>
		<category><![CDATA[courbe de changement]]></category>
		<category><![CDATA[featured]]></category>
		<category><![CDATA[gestion de changement]]></category>
		<category><![CDATA[preoccupation]]></category>

		<guid isPermaLink="false">http://www.berejeb.com/?p=2379</guid>
		<description><![CDATA[Annoncer un changement de poste à votre employé, Faire accepter une nouvelle façon de travailler à un membre d&#8217;équipe, ou encore changer les habitudes des gens dans une entreprise centenaire, obéissent aux memes regles du &#171;&#160;Changement&#160;&#187;. Les reactions des gens face au Changement sont toujours les memes, peu importe la complexité, la durée ou le contexte de l&#8217;operation du changement. [...]]]></description>
				<content:encoded><![CDATA[<p>Annoncer un changement de poste à votre employé, Faire accepter une nouvelle façon de travailler à un membre d&rsquo;équipe, ou encore changer les habitudes des gens dans une entreprise centenaire, obéissent aux memes regles du &laquo;&nbsp;Changement&nbsp;&raquo;. Les reactions des gens face au Changement sont toujours les memes, peu importe la complexité, la durée ou le contexte de l&rsquo;operation du changement. C&rsquo;est drôle, mais vous verrez, suite a cette lecture, que c&rsquo;est presque une recette de cuisine que tout le monde applique spontanément.<br />
Dans ce qui suit, nous donnerons des exemples appliquées en entreprise, mais ceci s&rsquo;applique dans n&rsquo;importe quel autre scenario de changement.<span id="more-2379"></span></p>
<h3>La courbe de changement</h3>
<p>Il existe en fait ce qu&rsquo;on appelle <em><strong>&laquo;&nbsp;la Courbe de changement&nbsp;&raquo;</strong></em>. Cette courbe détaille les differentes reactions émotives dans le temps, suite a l&rsquo;annonce d&rsquo;un changement.</p>
<div id="attachment_2381" class="wp-caption aligncenter" style="width: 718px"><a href="http://www.berejeb.com/wp-content/uploads/2013/05/reactions-changement.png"><img class="size-full wp-image-2381" alt="La courbe de changement" src="http://www.berejeb.com/wp-content/uploads/2013/05/reactions-changement.png" width="708" height="338" /></a><p class="wp-caption-text">La courbe de changement</p></div>
<ol>
<li><em><strong>La stabilité</strong></em>: Dans ce stade, l&rsquo;employé est dans un état stable, il maitrise généralement son travail, possède des habitudes, mais surtout une maitrise et une expertise dans ce qu&rsquo;il fait.</li>
<li><em><strong>La confusion</strong></em> : Le changement est annoncé, par exemple, un changement de poste, de technologie ( utiliser un nouvel, un nouveau langage de programmation , une nouvelle methodologie de travail etc.). L&rsquo;employé est immobile à ce stade, et ne croit pas encore a la nouvelle annonce.</li>
<li><em><strong>Le rejet</strong></em> : L&rsquo;employé essaye systématiquement de défendre l&rsquo;ancienne façon de faire et rejette la nouvelle.</li>
<li><em><strong>L&rsquo;agressivité</strong> </em>: Passant par un sentiment d&rsquo;amertume, et parfois de colère, l&rsquo;employé peut devenir agressif.</li>
<li><em><strong>La négociation</strong></em> : L&rsquo;employé tente par la suite de négocier pour minimiser les impacts sur sa situation actuelle.</li>
<li><em><strong>La frustration</strong></em> : L&rsquo;employé passe par un sentiment de frustration, puisque la négociation ne donne pas de resultats.</li>
<li><em><strong>Le test</strong></em> : L&rsquo;employé essayé la nouvelle solution (techno, language etc.) de façon limitée.</li>
<li><em><strong>L&rsquo;acceptation</strong></em> : L&rsquo;employé accepte le changement, mais toujours avec une perception negative.</li>
<li><em><strong>L&rsquo;engagement</strong> </em>: L&rsquo;employé perçoit les avantages du changement, et agit positivement.</li>
</ol>
<p>Maintenant, Sérieusement, essayez d&rsquo;appliquer ces états durant votre journée, que ce soit sur des scenarios microscopiques (par exemple quand vous voulez instaurer un nouveau pattern de programmation avec un collègue, ou encore quand vous demandez à votre enfant de ranger sa chambre <img src='http://www.berejeb.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> . Ca marche!</p>
<h3>Les 4C et les préoccupation contre le changement</h3>
<p>Mais pourquoi le changement derange t&rsquo;il les gens?<br />
Le changement perturbe car:</p>
<ol>
<li>Il oblige les gens à laisser leur zone de <em><strong>CONFORT</strong></em> ou une situation à laquelle ils étaient habitués.</li>
<li>Il fait perdre la <em><strong>CONFIANCE</strong></em> que des individus avaient en leur moyen, ou envers des autres.</li>
<li>Il fait douter les gens de leurs <em><strong>COMPETENCES</strong></em> ou il les force a en avoir de nouvelles.</li>
<li>Il risque de faire perdre le pouvoir et la reconnaissance, et donc le <em><strong>CONTROLE</strong></em> que les employees avaient dans leur fonction.</li>
</ol>
<p>Mais il existe des solutions pour gérer ces préoccupations. ce que j&rsquo;expliquerai dans un prochain article sur la gestion de Changement.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.berejeb.com/2013/05/la-courbe-de-changement-ou-votre-recette-de-cuisine-face-aux-reactions-contre-le-changement/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Les iterateurs en PHP, Comment ca marche!</title>
		<link>http://www.berejeb.com/2013/01/les-iterateurs-en-php-comment-ca-marche/</link>
		<comments>http://www.berejeb.com/2013/01/les-iterateurs-en-php-comment-ca-marche/#comments</comments>
		<pubDate>Thu, 24 Jan 2013 11:44:04 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[WEB]]></category>
		<category><![CDATA[iterators]]></category>
		<category><![CDATA[programming with anthony]]></category>

		<guid isPermaLink="false">http://www.berejeb.com/?p=2330</guid>
		<description><![CDATA[Cet article est une traduction de la vidéo &#171;&#160;Iterators&#160;&#187; de la série &#171;&#160;Programming With Anthnoy&#160;&#187; de Anthony Ferrara. Le lien de la vidéo est en bas de l&#8217;article. En Général, un itérateur n&#8217;est rien d&#8217;autre qu&#8217;un générateur de séquence. A la base, une séquence est une liste ordonnée de valeurs. Ces valeurs peuvent être répétées dans la liste plusieurs fois, [...]]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.berejeb.com/wp-content/uploads/2013/01/Capture-d’écran-2013-01-21-à-08.08.361.png"><img class="aligncenter size-full wp-image-2348" alt="Capture-d’écran-2013-01-21-à-08.08.36" src="http://www.berejeb.com/wp-content/uploads/2013/01/Capture-d’écran-2013-01-21-à-08.08.361.png" width="678" height="443" /></a><br />
<em>Cet article est une traduction de la vidéo &laquo;&nbsp;Iterators&nbsp;&raquo; de la série &laquo;&nbsp;Programming With Anthnoy&nbsp;&raquo; de Anthony Ferrara. Le lien de la vidéo est en bas de l&rsquo;article.</em></p>
<p>En Général, un itérateur n&rsquo;est rien d&rsquo;autre qu&rsquo;un générateur de séquence.</p>
<p>A la base, une séquence est une liste ordonnée de valeurs. Ces valeurs peuvent être répétées dans la liste plusieurs fois, et il n&rsquo;est pas nécessaire qu&rsquo;elle soient ordonnées.</p>
<p>Le type le plus basique de séquence en programmation est le tableau. Les éléments d&rsquo;un tableau peuvent avoir de n&rsquo;importe quelle valeur, et peuvent etre positionnees arbitrairement. Toutefois, une fois ils sont placées, le tableau a un ordre défini.</p>
<p>Si on parcoure ce tableau, chaque boucle aura l&rsquo;élément prochain dans la séquence, jusqu&rsquo;à ce que l&rsquo;on arrive à la fin de ces éléments.</p>
<pre>    foreach ($array as $key =&gt; $value) {
        echo $value;
    }</pre>
<p>Si nous aurions parcouru ce tableau manuellement, nous aurions écrit une boucle for :</p>
<pre>    for ($i = 0; $i &lt; count($array); $i++) {
        echo $array[$i];
    }</pre>
<p>A la première itération, la valeur de $i est 0,<br />
On teste ensuite si $i est inferieure à la taille du tableau.<br />
On execute par la suite le corps de la boucle.<br />
Finalement, on incremente $i, et on retourne à l&rsquo;itération 2.</p>
<p>Sans le réaliser, chaque fois que vous écrivez une boucle for comme ceci, vous construisez un itérateur.</p>
<p>Un itérateur n&rsquo;est rien que l&rsquo;abstraction de la boucle for.<br />
Nous avons une méthode &laquo;&nbsp;rewind()&nbsp;&raquo;, qui est la même chose qu&rsquo;initiaiser $i a 0<br />
Nous avons une méthode &laquo;&nbsp;valid()&nbsp;&raquo;, qui joue le même rôle que le test si $i est inférieure à la taille du tableau.<br />
Nous avons une méthode &laquo;&nbsp;next()&nbsp;&raquo; qui est la même chose qu&rsquo;incrèmenter $i.<br />
Et finalement, nous avons deux fonctions qui sont utiles dans le corps de la boucle :<br />
la méthode &laquo;&nbsp;key()&nbsp;&raquo;, qui joue le role de recuperer la valeur de $i.<br />
et la méthode &laquo;&nbsp;current()&nbsp;&raquo; qui recupere la valeur de l&rsquo;élément a l&rsquo;index $i.</p>
<p>Donc, si on réécrivait notre boucle avec les itérateurs, ca ressemblerait à quelque chose du genre :</p>
<pre>    for ($it-&gt;rewind(); $it-&gt;valid(); $it-&gt;next()) {
        $current = $it-&gt;current();
        echo $current;
    }</pre>
<p>En réalité, c&rsquo;est tout ce que la boucle &laquo;&nbsp;foreach&nbsp;&raquo; fait à l&rsquo;interne! À l&rsquo;exception que foreach expose $key et $value automatiquement pour nous.<br />
Donc, notre code original de foreach devient :</p>
<pre>    foreach ($it as $key =&gt; $value) {
        echo $value;
    }</pre>
<p>Notez bien qu&rsquo;il est presque identique que le premier foreach!<br />
Lorsqu&rsquo;on utilise foreach, les tableaux et les itérateurs sont interchangeables.</p>
<p>Construisons donc notre premier vrai itérateur. Construisons notre boucle for comme un itérateur :</p>
<pre>    class ForLoopIterator implements Iterator {
        protected $array;
        protected $i = 0;
        public function __construct(array $array) {
            $this-&gt;array = $array;
        }
        public function rewind() {
            $this-&gt;i = 0;
        }
        public function valid() {
            return isset($this-&gt;array[$this-&gt;i]);
        }
        public function next() {
            $this-&gt;i++;
        }
        public function key() {
            return $this-&gt;i;
        }
        public function current() {
            return $this-&gt;array[$this-&gt;i];
        }
    }</pre>
<p>Premièrement, Notre classe doit implémenter l&rsquo;interface Iterator. Cette interface définit les 5 méthodes que nous avons besoin. Mais aussi, elle offre une logique (implémentée dans le langage) qui nous permet d&rsquo;utiliser l&rsquo;itérateur dans les construits foreach.</p>
<p>A part ça, cette classe ressemblerait à une facon plus expressive d&rsquo;une boucle for.</p>
<p>Il est important aussi de noter qu&rsquo;en pratique, nous n&rsquo;allons pas écrire cette classe. Nous allons plutôt utiliser la classe core ArrayIterator qui fait essentiellement la même chose.</p>
<p>Donc, maintenant que nous avons notre concept d&rsquo;itérateur basique, nous pouvons voir comment l&rsquo;utiliser.</p>
<p>L&rsquo;un des bénéfices d&rsquo;utiliser un itérateur est qu&rsquo;on peut optimiser l&rsquo;utilisation de memoire en generant uniquement les valeurs dont on a besoin, lorsqu&rsquo;elles sont necessaires.</p>
<p>Par exemple, essayons de generer une séquence Fibonacci.</p>
<pre>    class Fib implements Iterator {
        protected $a = 0;
        protected $b = 1;
        protected $i = 0;
        public function rewind() {
            $this-&gt;a = 0;
            $this-&gt;b = 1;
            $this-&gt;i = 0;
        }
        public function next() {
            $tmp = $this-&gt;b;
            $this-&gt;b = $this-&gt;a + $this-&gt;b;
            $this-&gt;a = $tmp;
            $this-&gt;i++;
        }
        public function valid() {
            return true;
        }
        public function key() {
            return $this-&gt;i;
        }
        public function current() {
            return $this-&gt;b;
        }
    }</pre>
<p>Vous pouvez construire un itérateur qui va uniquement générer une valeur à chaque fois.<br />
Le gros bénéfice est qu&rsquo;on peut produire un nombre infini de valeurs, sans que la consommation mémoire augmente au fure et a mesure.</p>
<p>Un autre bénéfice d&rsquo;utiliser un itérateur est que nous pouvons décorer ce dernier pour fournir des fonctionnalités additionnels.</p>
<p>Par exemple, si nous voulons itérer sur les valeurs paires sur le tableau precedent. Avec les tableaux, nous devons utiliser array_filter et donc dupliquer le tableau.<br />
Par contre, avec les itérateurs, nous pouvons simplement utiliser la Classe core CallbackFilterIterator.</p>
<pre>    $it = new CallbackFilterIterator($it, function($value) { return $value % 2 == 0; });</pre>
<p>La partie cool ici est que la structure du tableau original n&rsquo;est jamais changée ou dupliquée. L&rsquo;Itérateur va uniquement utiliser la méthode next() sur l&rsquo;itérateur core jusqu&rsquo;à trouver la valeur voulue.</p>
<p>La librairie SPL de PHP contient un nombre interessant de ce type de décorateurs que vous pouvez utiliser pour optimiser le comportement de vos itérateurs.</p>
<p>Maintenant, vous avez peut etre remarqué que les itérateurs ne sont pas typiquement des petites classes, leur implementation est assez verbeuse.</p>
<p>Par ailleurs, vous pouvez donner le comportement &laquo;&nbsp;traversable&nbsp;&raquo; a votre classe dans une boucle foreach en implémentant IteratorAggregate :</p>
<pre>    interface IteratorAggregate extends Traversable {
        public function getIterator();
    }</pre>
<p>L&rsquo;interface IteratorAggregate permet d&rsquo;instancier un itérateur different de votre classe. Supposons que votre classe a un tableau que vous voulez boucler dessus.</p>
<p>Au lieu de construire un nouvel itérateur dans votre classe, il faut simplement implementer IteratorAggregate :</p>
<pre>    class MyClass implements IteratorAggregate {
        protected $myArray = array();
        public function getIterator() {
            return new ArrayIterator($this-&gt;myArray);
        }
    }</pre>
<p>Maintenant, nous pouvons utiliser une instance de notre classe dans un foreach!<br />
Les itérateurs sont un concept tres puissant qui, si utilisé comme il faut, permettre d&rsquo;avoir un code propre et flexible!</p>
<p>La video originale d&rsquo;Anthony Ferrara (Anglais) : <a href="http://www.youtube.com/watch?v=tW6GcZjBc3E&amp;feature=share&amp;list=PLM-218uGSX3DQ3KsB5NJnuOqPqc5CW2kW">http://www.youtube.com/watch?v=tW6GcZjBc3E&amp;feature=share&amp;list=PLM-218uGSX3DQ3KsB5NJnuOqPqc5CW2kW</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.berejeb.com/2013/01/les-iterateurs-en-php-comment-ca-marche/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Query Translator : traduit vos requetes SQL en requetes Mongo</title>
		<link>http://www.berejeb.com/2013/01/query-translator-traduit-vos-requetes-sql-en-requetes-mongo/</link>
		<comments>http://www.berejeb.com/2013/01/query-translator-traduit-vos-requetes-sql-en-requetes-mongo/#comments</comments>
		<pubDate>Wed, 23 Jan 2013 13:12:08 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[MYSQL]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[mongo]]></category>
		<category><![CDATA[query mongo]]></category>
		<category><![CDATA[query translator]]></category>
		<category><![CDATA[sql]]></category>

		<guid isPermaLink="false">http://www.berejeb.com/?p=2327</guid>
		<description><![CDATA[Query Translator est un outil Web gratuit qui traduit vos requetes SQL standard en requetes Mongo. Excellent outil pour apprendre les dessous du systeme de requetes Mongo ou pour les newbies de Mongo. Vous avez juste a ecrire vos requetes et il generera la chaine JSON Mongo relative. site web : http://www.querymongo.com/]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.berejeb.com/2013/01/query-translator-traduit-vos-requetes-sql-en-requetes-mongo/query_translator/" rel="attachment wp-att-2328"><img class="aligncenter size-full wp-image-2328" alt="query_translator" src="http://www.berejeb.com/wp-content/uploads/2013/01/query_translator.png" width="400" height="367" /></a></p>
<p><a href="http://www.querymongo.com/">Query Translator</a> est un outil Web gratuit qui traduit vos requetes SQL standard en requetes Mongo. Excellent outil pour apprendre les dessous du systeme de requetes Mongo ou pour les newbies de Mongo. Vous avez juste a ecrire vos requetes et il generera la chaine JSON Mongo relative.</p>
<p>site web : <a href="http://www.querymongo.com/">http://www.querymongo.com/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.berejeb.com/2013/01/query-translator-traduit-vos-requetes-sql-en-requetes-mongo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>L&#8217;injection de dependances</title>
		<link>http://www.berejeb.com/2013/01/linjection-de-dependances/</link>
		<comments>http://www.berejeb.com/2013/01/linjection-de-dependances/#comments</comments>
		<pubDate>Fri, 18 Jan 2013 13:20:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[dependency injection]]></category>
		<category><![CDATA[dependency injection container]]></category>
		<category><![CDATA[inversion]]></category>
		<category><![CDATA[programming with anthony]]></category>

		<guid isPermaLink="false">http://www.berejeb.com/?p=2320</guid>
		<description><![CDATA[Cette semaine, c&#8217;est au tour de la notion d&#8217;injection de dependances d&#8217;être expliquée en vidéo dans les séries  &#171;&#160;Programming with Anthony&#160;&#187;. Voici la traduction en Francais de cette explication. et la video ci-bas Qu&#8217;est ce que l&#8217;injection de dependances? Litéralement, cela veut dire : injecter des des dependances. Commençons par definir ce qu&#8217;est une dependance. Une dependance est en effet [...]]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.berejeb.com/wp-content/uploads/2013/01/Capture-d’écran-2013-01-18-à-08.13.15.png"><img class="aligncenter size-full wp-image-2321" title="Capture d’écran 2013-01-18 à 08.13.15" alt="" src="http://www.berejeb.com/wp-content/uploads/2013/01/Capture-d’écran-2013-01-18-à-08.13.15.png" width="365" height="307" /></a></p>
<p>Cette semaine, c&rsquo;est au tour de la notion d&rsquo;injection de dependances d&rsquo;être expliquée en vidéo dans les séries  <a href="http://blog.ircmaxell.com/2013/01/todays-programming-with-anthony-vidéo.html#more">&laquo;&nbsp;Programming with Anthony&nbsp;&raquo;</a>.</p>
<p>Voici la traduction en Francais de cette explication.</p>
<p><a href="#video">et la video ci-bas</a></p>
<p>Qu&rsquo;est ce que l&rsquo;injection de dependances?<br />
Litéralement, cela veut dire : injecter des des dependances.<br />
Commençons par definir ce qu&rsquo;est une dependance. Une dependance est en effet un objet que votre classe necessite pour fonctionner.<br />
Si nous avons une classe modele qui recupere des données depuis un objet Database, nous pouvons dire que ce la classe modele a une dependance a l&rsquo;objet Database.<br />
Maintenant que nous savons ce qu&rsquo;est une dependance, voyons ce que veut dire d&rsquo;injecter des dependances.<br />
Injecter des dependances veut juste dire que la dependance est poussée dans la classe depuis l&rsquo;exterieur.</p>
<p>Tout ce que cela veut dire est que vous ne devez pas instancier vos dependances (avec le construit new) a l&rsquo;interieur de vos classes, mais plutôt les récupérer comme un paramètre de constructeur ou un setter.</p>
<p>C&rsquo;est tout ce que c&rsquo;est par rapport a l&rsquo;injection de dependances. Vous n&rsquo;avez pas besoin d&rsquo;un &laquo;&nbsp;container&nbsp;&raquo; super cool ou d&rsquo;une classe pour faire de l&rsquo;injection de dependances. C&rsquo;est sur que votre vie sera meilleure si vous les utilisez, mais ils ne sont pas &laquo;&nbsp;necessaires&nbsp;&raquo;.</p>
<p>Mais pourquoi devons nous injecter des dependances ?</p>
<p>Let&rsquo;s imagine for a minute that you&rsquo;re programming a house building robot.<br />
Imaginons que nous avons comme tache de programmer un robot de construction de maisons. Nous commençons par une pile de briques, et nous devons construire des murs. Nous arrivons par la suite a mettre la porte de notre maison. Que faisons nous dans ce cas? Est ce que nous construisons une porte a partir de matières premieres? ou que nous programmons notre robot pour récupérer une porte deja prete (qu&rsquo;un autre fournisseur a construite) et nous ne faisons que l&rsquo;installer?</p>
<p>La solution la plus flexible, évidemment, serait de récupérer la porte depuis un fournisseur externe.<br />
Et c&rsquo;est exactement ce que l&rsquo;injection de dependances fait. Elle decouple la construction de vos classes de la construction de ses dependances.</p>
<p>La raison derriere cette importance est le principe d&rsquo;Inversion de dependances.<br />
Le principe d&rsquo;inversion de dependances est le fait que le code doit dépendre d&rsquo;abstractions. En dépendant d&rsquo;abstractions, nous découplons nos implementations.<br />
Ce que cela veut dire, c&rsquo;est qu&rsquo;en PHP, votre code doit dépendre d&rsquo;interfaces. Vous pourrez alors substituer les differentes dependances, du moment qu&rsquo;ils satisfont l&rsquo;interface requise.<br />
En utilisant l&rsquo;injection de dependances, nous découplons le code de l&rsquo;implementation bas-niveau, ce qui rend le code beaucoup plus elegant, plus facile a modifier et a réutiliser.</p>
<p>Maintenant que nous avons adopté l&rsquo;injection de dependances, nous avons un autre problème. Chacune de nos classes necessite des dependances. Donc, pour construire chaque classe, nous devons trouver quels sont les dependances dont elles ont besoin et trouver un moyen pour récupérer ces derniers dans la ligne qui les instancie.</p>
<p>Heureusement qu&rsquo;il ya une solution pour résoudre ce problème : Le conteneur d&rsquo;injection de dependances, ou plus communèment connu sous &laquo;&nbsp;Dependency Injection Container&nbsp;&raquo;.</p>
<p>Au root de votre application, le container n&rsquo;est rien d&rsquo;autre qu&rsquo;une &laquo;&nbsp;carte&nbsp;&raquo; des dependances que votre classe necessite, avec la logique necessaire pour les creer si elles ne sont pas encore créées.<br />
A chaque fois que vous demandez une interface &laquo;&nbsp;DatabaseInterface&nbsp;&raquo;, la carte des dependances indiquera quelle dependance utiliser, le container vérifie par la suite si l&rsquo;objet a été instancié auparavant, et le réutilisé si c&rsquo;est le cas. Sinon, il va creer l&rsquo;instance Database, la sauvegarde et la fournit a votre classe.<br />
Donc, au lieu de creer la classe par vous meme, vous demander au container de creer l&rsquo;instance. Il va résoudre les dependances, construire l&rsquo;objet et le retourner pour vous.</p>
<p>La meilleure partie est que le container peut résoudre des dependances complexes et c&rsquo;est transparent! Si vous voulez changer la dependance pour une autre, ou par exemple la mocker dans un test unitaire, tout ce que vous avez a faire est de mettre a jour la dependance dans le container, c&rsquo;est a une seule place.</p>
<p>Ecrivez donc un code plus propre et plus modulaire, utilisez l&rsquo;injection de dependances.</p>
<p><a name="video"></a>La video<br />
<iframe src="http://www.youtube.com/embed/IKD2-MAkXyQ?list=PLM-218uGSX3DQ3KsB5NJnuOqPqc5CW2kW" height="315" width="560" allowfullscreen="" frameborder="0"></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://www.berejeb.com/2013/01/linjection-de-dependances/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Les Closures : Fonctionnement en PHP et en Javascript</title>
		<link>http://www.berejeb.com/2013/01/les-closures-fonctionnement-en-php-et-en-javascript/</link>
		<comments>http://www.berejeb.com/2013/01/les-closures-fonctionnement-en-php-et-en-javascript/#comments</comments>
		<pubDate>Mon, 07 Jan 2013 17:18:30 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[JAVASCRIPT]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[anthony ferrara]]></category>
		<category><![CDATA[closures]]></category>
		<category><![CDATA[ircmaxell]]></category>

		<guid isPermaLink="false">http://www.berejeb.com/?p=2313</guid>
		<description><![CDATA[Dans la dernière serie de &#171;&#160;Programming with Anthony&#171;&#160;, Anthony Ferrara explique le fonctionnement des Closures en Javascript, ainsi que la difference avec PHP. Excellente presentation comme d&#8217;habitude. La traduction en francais du discours est en bas de la video. La première chose intéressante à propos des closures en JavaScript est qu&#8217;ils ne sont pas différents des fonctions normales. Toutes les [...]]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.berejeb.com/wp-content/uploads/2013/01/Capture-d’écran-2013-01-07-à-12.13.28.png"><img class="aligncenter size-full wp-image-2314" title="Capture d’écran 2013-01-07 à 12.13.28" alt="" src="http://www.berejeb.com/wp-content/uploads/2013/01/Capture-d’écran-2013-01-07-à-12.13.28.png" width="487" height="426" /></a><br />
Dans la dernière serie de &laquo;&nbsp;<a title="Programming with anthony" href="https://www.youtube.com/playlist?list=PLM-218uGSX3DQ3KsB5NJnuOqPqc5CW2kW&amp;feature=view_all">Programming with Anthony</a>&laquo;&nbsp;, <a href="http://blog.ircmaxell.com/">Anthony Ferrara</a> explique le fonctionnement des Closures en Javascript, ainsi que la difference avec PHP. Excellente presentation comme d&rsquo;habitude.<br />
La traduction en francais du discours est en bas de la video.<span id="more-2313"></span></p>
<p><iframe src="http://www.youtube.com/embed/R_ZvxMyFSCU" height="315" width="560" allowfullscreen="" frameborder="0"></iframe></p>
<p>La première chose intéressante à propos des closures en JavaScript est qu&rsquo;ils ne sont pas différents des fonctions normales. Toutes les fonctions JavaScript sont des fermetures.</p>
<p>Mais qu&rsquo;est ce que les closures ? Simplement, une closure vient du mot anglais &laquo;&nbsp;close&nbsp;&raquo;, qui veut dire &laquo;&nbsp;fermer&nbsp;&raquo;. Donc une closure ferme le contexte d&rsquo;une fonction.</p>
<p>Cela signifie que le scope de la closure contient automatiquement toutes les informations de ses parents.</p>
<p>Pour comprendre ce que cela signifie, nous devons d&rsquo;abord parler de le scope des variables.</p>
<p>Regardons un autre language : PHP.</p>
<p>PHP dispose de deux principaux scopes pour les variables : le scope Global et le scope de fonction.</p>
<p>le scope par défaut est toujours le scope de fonction (si on ignore les super globales).</p>
<p>Donc, si nous attribuons une variable de l&rsquo;intérieur d&rsquo;une fonction, cette variable sera définie uniquement dans le scope de la fonction.</p>
<p>Si l&rsquo;on voulait que la variable soit plutôt dans le scope global, nous aurions besoin de déclarer notre intention avec le construit &laquo;&nbsp;global&nbsp;&raquo;.</p>
<p>Donc, en PHP, quand nous déclarons une closure, nous avons besoin d&rsquo;indiquer explicitement les variables à importer à partir de le scope parente.</p>
<p>Ce qui est important a noter ici est que les variables sont imscopes. Les variables sont en fait copiées dans le scope de la closure.</p>
<p>Par ailleurs, dans PHP, chaque scope est complètement indépendant de n&rsquo;importe quel autre scope. Le seul moyen de lier deux scopes et d&rsquo;utiliser les references.</p>
<p>Javascript, Par contre, gere les scopes imbriquées. Les scopes s&rsquo;imbriquent la ou elles sont definies.</p>
<p>Donc, si on definit une closure a l&rsquo;interieur d&rsquo;une fonction, le scope de la closure va etre imbriquee dans le scope de la fonction.</p>
<p>Ceci signifie que l&rsquo;acces a la variable traverse la chaine des scopes parentes jusqu&rsquo;a ce qu&rsquo;il trouve le scope la ou la variable a ete definie.</p>
<p>Et du coup, toutes les fonctions qui ont ete definies dans les scopes des autres fonctions sont toujours des closures, meme si ils ont les noms de functions. Et en considerant que le scope racine est le scope global, toutes les fonctions sont imbriquees dans le scope global.</p>
<p>Et donc, toutes les fonctions dans Javascript sont automatiquement des closures!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.berejeb.com/2013/01/les-closures-fonctionnement-en-php-et-en-javascript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Le fonctionnement des références en PHP : démystification</title>
		<link>http://www.berejeb.com/2013/01/le-fonctionnement-des-references-en-php-demystification/</link>
		<comments>http://www.berejeb.com/2013/01/le-fonctionnement-des-references-en-php-demystification/#comments</comments>
		<pubDate>Thu, 03 Jan 2013 18:27:51 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[francais]]></category>
		<category><![CDATA[memoire]]></category>
		<category><![CDATA[pointeur]]></category>
		<category><![CDATA[reference]]></category>
		<category><![CDATA[variables]]></category>

		<guid isPermaLink="false">http://www.berejeb.com/?p=2306</guid>
		<description><![CDATA[&#160; Dans le cadre d&#8217;une serie de videos tres bien presentés, Anthony Ferrara Demystifie le fonctionnement des references en PHP. Bravo pour cette excellente explication. Vous pouvez trouver ci-bas la traduction en Francais de cette superbe explication! Pour explorer comment les références fonctionnent en PHP, dous devons d&#8217;abord prendre un peu de recul et jeter un oeil à la façon [...]]]></description>
				<content:encoded><![CDATA[<p>&nbsp;</p>
<p><a href="http://www.berejeb.com/wp-content/uploads/2013/01/Capture-d’écran-2013-01-03-à-13.32.18.png"><img class="aligncenter size-full wp-image-2310" title="Capture d’écran 2013-01-03 à 13.32.18" alt="" src="http://www.berejeb.com/wp-content/uploads/2013/01/Capture-d’écran-2013-01-03-à-13.32.18.png" width="366" height="324" /></a></p>
<p>Dans le cadre d&rsquo;une serie de videos tres bien presentés, Anthony Ferrara Demystifie le fonctionnement des references en PHP. Bravo pour cette excellente explication.</p>
<p>Vous pouvez trouver ci-bas la traduction en Francais de cette superbe explication!<br />
<iframe width="560" height="315" src="http://www.youtube.com/embed/_YZIBWQr_yk" frameborder="0" allowfullscreen></iframe></p>
<p>Pour explorer comment les références fonctionnent en PHP, dous devons d&rsquo;abord prendre un peu de recul et jeter un oeil à la façon dont les variables fonctionnent en PHP.<br />
Typiquement, on nous apprend à visualiser une variable un récipient pour une valeur nommée. Mais nous nous trouvons souvent dans une situation où nous avons besoin de copier une variable.</p>
<p>Les copies peuvent être aussi simples comme affecter une variable à l&rsquo;autre. Mais les copies peuvent également se produire dans d&rsquo;autres situations, tels que lors du passage d&rsquo;une variable à une fonction,lors du retour d&rsquo;une variable à partir d&rsquo;une fonction<br />
Ou lors de l&rsquo;itération sur un tableau.</p>
<p>Alors, quand on copie une variable, on copie la valeur contenue aussi bien. Et cela fait sens. Si nous avons deux variables différentes avec des noms différents, nous nous attendons a avoir des conteneurs différents.</p>
<p>Donc, si nous éditons un conteneur, nous nous attendons que l&rsquo;autre reste le même. Mais cela a des problèmes aussi, chaque fois que nous copions une variable, nous avons besoin de dupliquer la valeur contenue.</p>
<p>Cela peut conduire à une duplication grave de zones mémoire, ce qui peut entraîner des problèmes de performances.<br />
PHP résout ce problème en séparant la variable du conteneur valeur. Les variables deviennent alors des pointeurs vers une valeur. Quand on copie une variable, nous copions tout simplement ce pointeur.<br />
Cela introduit un nouveau problème: lorsque nous supprimons une variable, Comment pouvons-nous savoir si nous pouvons supprimer la valeur?</p>
<p>La façon dont PHP résout ce problème est de maintenir un comptage du nombre de références à une valeur. Ainsi, le conteneur valeur, dispose désormais de deux champs: La valeur elle-même,et un compteur de référence, aussi connu comme un &laquo;&nbsp;refcount&nbsp;&raquo;. Chaque fois que nous copier une variable, nous augmentons le refcount, et chaque fois que nous supprimons une variable, nous diminuons le refcount. Si le refcount arrive a 0, on peut sans risque supprimer la valeur.<br />
Mais nous avons aussi un autre problème. Si nous modifions la copie d&rsquo;une variable, nous faisons aussi éditer l&rsquo;original puisqu&rsquo;ils utilisent le conteneur même valeur.</p>
<p>Heureusement, nous avons déjà une façon de régler ce problème. Le &laquo;&nbsp;refcount&nbsp;&raquo; peut nous indiquer quand nous pouvons modifier ou quand nous avons besoin de copier la valeur.</p>
<p>Ainsi, lorsque nous éditons une valeur, si le refcount est 1, nous pouvons modifier directement la valeur.</p>
<p>Si le refcount est supérieur à 1, nous avons besoin de copier la première valeur, et puis, nous pouvons modifier la copie.</p>
<p>Ceci est également connu sous le nom &laquo;&nbsp;copy on write&nbsp;&raquo;.</p>
<p>Jusqu&rsquo;ici tout va bien.</p>
<p>Maintenant, qu&rsquo;est-ce qui se passe lorsque nous voulons deux variables pour pouvoir les éditer ensemble en même temps?<br />
En PHP, nous allons utiliser l&rsquo;opérateur de référence eperluette.</p>
<p>Mais qu&rsquo;est ce qui est fait que sous le capot?<br />
Eh bien, pour mettre en œuvre cette fonctionnalité, tout ce que nous devons faire est de désactiver la copie-sur-écriture.<br />
Mais nous ne voulons le désactiver que pour les valeurs référencées.</p>
<p>La façon pour atteindre ce but est d&rsquo;ajouter un champ supplémentaire dans le récipient valeur. Il s&rsquo;agit d&rsquo;une valeur booléenne simple, que nous appellerons &laquo;&nbsp;is_ref&nbsp;&raquo;.</p>
<p>Si is_ref est vrai alors que nous éditons un varible, nous ne copions pas la première valeur.</p>
<p>Mais maintenant qu&rsquo;est ce qui se passe si nous essayons de faire une copie normale d&rsquo;une valeur de référence?<br />
Nous ne pouvons pas augmenter le refcount, car alors nous ferions une référence à la place.</p>
<p>Nous avons donc besoin de faire une copie complète de la valeur. Par conséquent, à chaque fois que nous utilisons des références,<br />
Nous perdons tous les avantages que copy-on-write nous donne.<br />
En PHP4, c&rsquo;est ainsi que toutes les variables sont gerees.</p>
<p>A partir de PHP5, les objets sont traités d&rsquo;une manière légèrement différente. Au lieu de stocker l&rsquo;objet sur la meme valeur,<br />
il ya une deuxième couche d&rsquo;abstraction. Les objets sont stockés dans leur propre conteneur et pointés par la valeur.<br />
Qu&rsquo;est-ce que cela signifie pour nous, c&rsquo;est que même si on copie une variable objet, tous les contrôles vont encore à la même place.<br />
Donc, nous n&rsquo;avons pas besoin d&rsquo;utiliser des références variables du tout lorsqu&rsquo;il s&rsquo;agit d&rsquo;objets.<br />
Si nous voulons faire une copie d&rsquo;une valeur de l&rsquo;objet, nous avons besoin d&rsquo;utiliser le &laquo;&nbsp;clone&nbsp;&raquo; de l&rsquo;opérateur.</p>
<p>Lors de l&rsquo;écriture moderne du code PHP, il ne faut donc pas essayer de déjouer le système.<br />
L&rsquo;utilisation de références pour tenter de sauver la mémoire finira en général par vous coûter plus de mémoire.<br />
Laissez PHP manipuler des variables pour vous, Il est plus intelligent que vous le pensez.</p>
<p>&nbsp;</p>
<p><a title="Programming with Anthony" href="https://www.youtube.com/playlist?list=PLM-218uGSX3DQ3KsB5NJnuOqPqc5CW2kW&amp;feature=view_all">La liste des sessions &laquo;&nbsp;Programming with Anthony&nbsp;&raquo;</a></p>
<p><a href="http://blog.ircmaxell.com/">Le blog de Anthony Ferrara</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.berejeb.com/2013/01/le-fonctionnement-des-references-en-php-demystification/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Applications Collaboratives et Temps reel avec Derby MVC</title>
		<link>http://www.berejeb.com/2012/12/applications-collaborativs-et-temps-reel-avec-derby-mvc/</link>
		<comments>http://www.berejeb.com/2012/12/applications-collaborativs-et-temps-reel-avec-derby-mvc/#comments</comments>
		<pubDate>Tue, 25 Dec 2012 16:49:24 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[WEB]]></category>
		<category><![CDATA[apps]]></category>
		<category><![CDATA[collaboration]]></category>
		<category><![CDATA[derby]]></category>
		<category><![CDATA[node.js]]></category>
		<category><![CDATA[offline]]></category>
		<category><![CDATA[realtime]]></category>

		<guid isPermaLink="false">http://www.berejeb.com/?p=2302</guid>
		<description><![CDATA[Derby MVC framework permet d&#8217;ecrire des applications collaboratifs en realtime, qui fonctionnent sur node.js ainsi que sur les navigateurs clients. Le framework offre un engin de synchronisation de donnees appelé Racer, qui synchronise automatiquement les donnees entre les navigateurs et les serveurs, ainsi qu&#8217;une base de donnees. Les modeles souscrivent a des objets specifiques, permettant ainsi le controle granulaire sur la [...]]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.berejeb.com/wp-content/uploads/2012/12/derby.jpg"><img class="aligncenter size-full wp-image-2303" title="derby" src="http://www.berejeb.com/wp-content/uploads/2012/12/derby.jpg" alt="" width="580" height="357" /></a></p>
<p><a title="Derby" href="http://derbyjs.com/" target="_blank">Derby MVC framework</a> permet d&rsquo;ecrire des applications collaboratifs en realtime, qui fonctionnent sur node.js ainsi que sur les navigateurs clients. Le framework offre un engin de synchronisation de donnees appelé Racer, qui synchronise automatiquement les donnees entre les navigateurs et les serveurs, ainsi qu&rsquo;une base de donnees. Les modeles souscrivent a des objets specifiques, permettant ainsi le controle granulaire sur la propagation de donnees sans definir des canaux de transfert.</p>
<p>Racer permet l&rsquo;utilisation offline et la resolution de conflits, ce qui offre un grand plus. Les applications <a href="http://derbyjs.com/">Derby</a> peuvent etre indexés par les moteurs de recherche puisque les templates s&rsquo;affichent sur le serveur et le client. De plus, les templates definissent les &laquo;&nbsp;bindings&nbsp;&raquo;, ce qui permet de mettre a jour instantanement la vue suite au changement de modele et vice-versa.</p>
<p>Requirements: Node.js Framework<br />
Demo: <a title="demo" href="http://derbyjs.com/" rel="nofollow" target="_blank">http://derbyjs.com/</a><br />
License: MIT License</p>
]]></content:encoded>
			<wfw:commentRss>http://www.berejeb.com/2012/12/applications-collaborativs-et-temps-reel-avec-derby-mvc/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Deployd : Un serveur pour une api client / serveur unique!</title>
		<link>http://www.berejeb.com/2012/10/deployd-un-serveur-pour-une-api-client-serveur-unique/</link>
		<comments>http://www.berejeb.com/2012/10/deployd-un-serveur-pour-une-api-client-serveur-unique/#comments</comments>
		<pubDate>Sat, 13 Oct 2012 10:00:17 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[JAVASCRIPT]]></category>
		<category><![CDATA[WEB]]></category>
		<category><![CDATA[deployd]]></category>
		<category><![CDATA[featured]]></category>

		<guid isPermaLink="false">http://www.berejeb.com/?p=2163</guid>
		<description><![CDATA[Deployd est une platforme qui facilite la creation d&#8217;APIs REST. Avec Deployd, vous pouvez creer une API exploitable en quelques minutes! vous n&#8217;avez aucun serveur a installer, aucune configuration a faire.  faites simplement installer Deployd, et vous etes pret pour votre premiere API. A part la creation de ressources via une interface graphique, Deployd expose aussi un objet Javascript du coté [...]]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.berejeb.com/wp-content/uploads/2012/10/deployd.jpeg"><img class="aligncenter size-full wp-image-2172" title="deployd" src="http://www.berejeb.com/wp-content/uploads/2012/10/deployd.jpeg" alt="" width="580" height="358" /></a></p>
<p><a title="Deployd" href="http://www.deployd.com/" target="_blank">Deployd</a> est une <strong>platforme qui facilite la creation d&rsquo;APIs REST</strong>. Avec Deployd, vous pouvez creer une API exploitable en quelques minutes! vous n&rsquo;avez aucun serveur a installer, aucune configuration a faire.  faites simplement installer Deployd, et vous etes pret pour votre premiere API.</p>
<p>A part la creation de ressources via une interface graphique, Deployd expose aussi un objet Javascript du coté client, qui facilite l&rsquo;inspection du code. le tout est sous license gratuite apache.</p>
<p>Nécessite : -<br />
Demo: <a title="demo" href="http://www.deployd.com/" rel="nofollow" target="_blank">http://www.deployd.com/</a><br />
License: Apache License</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.berejeb.com/2012/10/deployd-un-serveur-pour-une-api-client-serveur-unique/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
