<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2enclosuresfull.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:media="http://search.yahoo.com/mrss/" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>Curiosité de vie</title><link>http://curiositedevie.blogspot.com/</link><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/CuriositeDeVie" /><description>Une fois qu on a goûté au futur on ne peut pas revenir en arrière.</description><language>en</language><managingEditor>noreply@blogger.com (Brice)</managingEditor><lastBuildDate>Sun, 27 Nov 2011 16:52:08 PST</lastBuildDate><generator>Blogger http://www.blogger.com</generator><openSearch:totalResults xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/">33</openSearch:totalResults><openSearch:startIndex xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/">1</openSearch:startIndex><openSearch:itemsPerPage xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/">25</openSearch:itemsPerPage><feedburner:info uri="curiositedevie" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><itunes:owner><itunes:email>noreply@blogger.com</itunes:email></itunes:owner><itunes:explicit>no</itunes:explicit><itunes:subtitle>Une fois qu on a goûté au futur on ne peut pas revenir en arrière.</itunes:subtitle><feedburner:feedFlare href="http://www.podnova.com/add.srf?url=http%3A%2F%2Ffeeds.feedburner.com%2FCuriositeDeVie" src="http://www.podnova.com/img_chicklet_podnova.gif">Subscribe with Podnova</feedburner:feedFlare><feedburner:feedFlare href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2FCuriositeDeVie" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.feedburner.com%2FCuriositeDeVie" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2FCuriositeDeVie" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><feedburner:feedFlare href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Ffeeds.feedburner.com%2FCuriositeDeVie" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare href="http://odeo.com/listen/subscribe?feed=http%3A%2F%2Ffeeds.feedburner.com%2FCuriositeDeVie" src="http://odeo.com/img/badge-channel-black.gif">Subscribe with ODEO</feedburner:feedFlare><feedburner:feedFlare href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2FCuriositeDeVie" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare href="http://www.plusmo.com/add?url=http%3A%2F%2Ffeeds.feedburner.com%2FCuriositeDeVie" src="http://plusmo.com/res/graphics/fbplusmo.gif">Subscribe with Plusmo</feedburner:feedFlare><feedburner:feedFlare href="http://www.thefreedictionary.com/_/hp/AddRSS.aspx?http%3A%2F%2Ffeeds.feedburner.com%2FCuriositeDeVie" src="http://img.tfd.com/hp/addToTheFreeDictionary.gif">Subscribe with The Free Dictionary</feedburner:feedFlare><feedburner:feedFlare href="http://www.bitty.com/manual/?contenttype=rssfeed&amp;contentvalue=http%3A%2F%2Ffeeds.feedburner.com%2FCuriositeDeVie" src="http://www.bitty.com/img/bittychicklet_91x17.gif">Subscribe with Bitty Browser</feedburner:feedFlare><feedburner:feedFlare href="http://www.live.com/?add=http%3A%2F%2Ffeeds.feedburner.com%2FCuriositeDeVie" src="http://tkfiles.storage.msn.com/x1piYkpqHC_35nIp1gLE68-wvzLZO8iXl_JMledmJQXP-XTBOLfmQv4zhj4MhcWEJh_GtoBIiAl1Mjh-ndp9k47If7hTaFno0mxW9_i3p_5qQw">Subscribe with Live.com</feedburner:feedFlare><feedburner:feedFlare href="http://mix.excite.eu/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2FCuriositeDeVie" src="http://image.excite.co.uk/mix/addtomix.gif">Subscribe with Excite MIX</feedburner:feedFlare><feedburner:feedFlare href="http://www.webwag.com/wwgthis.php?url=http%3A%2F%2Ffeeds.feedburner.com%2FCuriositeDeVie" src="http://www.webwag.com/images/wwgthis.gif">Subscribe with Webwag</feedburner:feedFlare><feedburner:feedFlare href="http://www.podcastready.com/oneclick_bookmark.php?url=http%3A%2F%2Ffeeds.feedburner.com%2FCuriositeDeVie" src="http://www.podcastready.com/images/podcastready_button.gif">Subscribe with Podcast Ready</feedburner:feedFlare><feedburner:feedFlare href="http://www.wikio.com/subscribe?url=http%3A%2F%2Ffeeds.feedburner.com%2FCuriositeDeVie" src="http://www.wikio.com/shared/img/add2wikio.gif">Subscribe with Wikio</feedburner:feedFlare><feedburner:feedFlare href="http://www.dailyrotation.com/index.php?feed=http%3A%2F%2Ffeeds.feedburner.com%2FCuriositeDeVie" src="http://www.dailyrotation.com/rss-dr2.gif">Subscribe with Daily Rotation</feedburner:feedFlare><item><title>Planifier une surveillance de mon serveur</title><link>http://feedproxy.google.com/~r/CuriositeDeVie/~3/U5ADUaqgBfM/planifier-une-surveillance-de-mon.html</link><category>server</category><category>linux</category><category>shell</category><author>noreply@blogger.com (Brice)</author><pubDate>Wed, 22 Jun 2011 05:27:07 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2610825294716456148.post-1840186572236699556</guid><description>Voici un petit exemple pour Linux pour surveiller la présence d'un serveur avec un shell et une tâche planifiée (crontab) :     &lt;h3&gt;Fichier checkMyServerIsRunning.sh&lt;/h3&gt;      &lt;br /&gt;&lt;pre style="color:black; background-color:lightgrey;"&gt;&lt;br /&gt;#!/bin/bash &lt;br /&gt;# vers qui envoyer l'alerte ? &lt;br /&gt;DIFFUSION=&lt;a href="mailto:toto@yoyo.fr"&gt;toto@yoyo.fr&lt;/a&gt; &lt;br /&gt;# fichier ProcessId du serveur &lt;br /&gt;PID_FILE=/appli/MyServer/MyServer.pid &lt;br /&gt;# rapport d'alerte &lt;br /&gt;CHECK_REPORT=/tmp/checkMyServer.log &lt;br /&gt;# le serveur est-il actif O/N ? 1/0 &lt;br /&gt;SERVER_RUNNING=0 &lt;br /&gt;echo - RAPPORT $0 DU `date` - `hostname`  &amp;gt;&amp;gt; ${CHECK_REPORT} &lt;br /&gt;# si un fichier pid est present on teste la présence du processus &lt;br /&gt;if [ -e "${PID_FILE}" ]&lt;br /&gt;then&lt;br /&gt;         SERVERPID=`cat ${PID_FILE}`&lt;br /&gt;         MSGPID="PID is ${SERVERPID}"&lt;br /&gt;         SERVER_RUNNING=`ps xaf | grep ${SERVERPID} |grep -v grep|wc -l`&lt;br /&gt;fi&lt;br /&gt;if [ "${SERVER_RUNNING}" == "1" ]&lt;br /&gt; then &lt;br /&gt;# le serveur est actif on ne fait rien &lt;br /&gt;         echo server is running ${MSGPID} &amp;gt;&amp;gt; ${CHECK_REPORT} &lt;br /&gt;        exit&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;echo server is not running ... so restart it &amp;gt;&amp;gt; ${CHECK_REPORT} &lt;br /&gt;&lt;br /&gt;# redémarrage du serveur &lt;br /&gt;/etc/init.d/myServer status &amp;gt;&amp;gt; ${CHECK_REPORT} &lt;br /&gt;/etc/init.d/myServer start  &amp;gt;&amp;gt; ${CHECK_REPORT} &lt;br /&gt;# mail avec PJ avec mutt &lt;br /&gt;echo FICHIERS DE LOG MODIFIES CE JOUR EN PJ &amp;gt;&amp;gt; ${CHECK_REPORT} &lt;br /&gt;zip lesLogsDuJour.zip `find . -name "*.log" -mtime -1` &amp;gt;&amp;gt; ${CHECK_REPORT} &lt;br /&gt;mutt -s "`hostname` : serveur MyServer" -a lesLogsDuJour.zip ${DIFFUSION} &amp;lt; ${CHECK_REPORT} &lt;br /&gt;rm -f lesLogsDuJour.zip &lt;br /&gt;# remise a zero du rapport &lt;br /&gt;echo &amp;gt; ${CHECK_REPORT} &lt;br /&gt;&lt;/pre&gt; &lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;u style="border-bottom: 1px dotted;text-decoration: none"&gt;Explications :&lt;/u&gt;&lt;br /&gt;  Dans un premier temps on paramètre les hypothèses de départ  (emplacement du serveur, des fichiers de rapport, des destinataires)&lt;br /&gt;  Ensuite on vérifie la présence du serveur en contrôlant la présence de  son fichier ".pid" et en vérifiant la présence du processus  correspondant.&lt;br /&gt;  Si le serveur est effectivement démarré, on ne fait rien (si ce n'est  augmenter le rapport de surveillance).                                          &lt;br /&gt;  Si le serveur n'est pas démarré (fichier pid absent ou processus absent) alors on le redémarre :&lt;br /&gt;  &lt;/p&gt;&lt;ul&gt;&lt;li&gt;on constitue une archive ZIP des fichiers de logs modifiés ce jour&lt;/li&gt;&lt;br /&gt;&lt;li&gt;on envoie un email du rapport de surveillance à la liste des destinataires paramétrés&lt;/li&gt;&lt;br /&gt;&lt;li&gt;on remet à zero le rapport de surveillance.&lt;/li&gt; &lt;br /&gt;&lt;/ul&gt;                                                                                                                            &lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Tâche planifiée&lt;/h3&gt;  &lt;br /&gt;&lt;br /&gt;&lt;p&gt;  La prochaine et dernière étape consiste à planifier une tâche toutes les heures pour lancer ce script.&lt;br /&gt; Pour éditer la planification il faut exécuter la commande suivante :  &lt;br /&gt;&lt;/p&gt;  &lt;br /&gt;&lt;pre style="color:black; background-color:lightgrey;"&gt;crontab -e &lt;br /&gt;&lt;/pre&gt; &lt;br /&gt;&lt;p&gt;  &lt;br /&gt;Il faut ajouter les 2 lignes suivantes :  &lt;/p&gt;  &lt;br /&gt;&lt;pre style="color:black; background-color:lightgrey;"&gt;# verification de MyServer toutes les heures &lt;br /&gt;0 * * * * cd /appli/MyServer &amp;amp;&amp;amp; sh checkMyServerIsRunning.sh&lt;br /&gt;  &lt;/pre&gt;    &lt;br /&gt;&lt;p&gt;  &lt;i&gt;Toutes remarques et/ou suggestions d'amélioration sont les bienvenues...&lt;/i&gt;  &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2610825294716456148-1840186572236699556?l=curiositedevie.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/CuriositeDeVie/~4/U5ADUaqgBfM" height="1" width="1"/&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-22T14:27:07.114+02:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://curiositedevie.blogspot.com/2011/06/planifier-une-surveillance-de-mon.html</feedburner:origLink></item><item><title>Mad Waze versus Max ABE : les androïds de la route...</title><link>http://feedproxy.google.com/~r/CuriositeDeVie/~3/1jaVHZnWT2E/mad-waze-versus-max-abe-les-androids-de.html</link><category>application</category><category>route</category><category>gps</category><category>androïd</category><author>noreply@blogger.com (Brice)</author><pubDate>Tue, 14 Jun 2011 07:39:54 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2610825294716456148.post-6666512779070479999</guid><description>&lt;div class="gmail_quote"&gt;&lt;div class="gmail_quote"&gt;&lt;div class="im"&gt;&lt;p&gt;   &lt;a href="http://world.waze.com/guided_tour/french/" target="_blank"&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://world.waze.com/guided_tour/french/" target="_blank"&gt;Waze&lt;/a&gt; comme ABonEntendeur -dite &amp;quot;&lt;a href="http://www.abonentendeur.com/" target="_blank"&gt;ABE&lt;/a&gt;&amp;quot;- sont des communautés gratuites de la route (applications pour l&amp;#39;OS mobile Android). &lt;br /&gt;    &lt;/p&gt;&lt;/div&gt;&lt;p&gt; Je ne pensais pas tout connaître avec ABE, et je ne suis qu&amp;#39;un jeune utilisateur Waze (&amp;quot;baby&amp;quot;), mais voici un petit retour point de vue Waze... &lt;/p&gt;&lt;p&gt;Waze et ses avantages :     &lt;/p&gt;&lt;ul&gt;&lt;div class="im"&gt;&lt;li&gt;le calcul d&amp;#39;itinéraire; il vous propose votre trajet quotidien et il apprend avec le temps // ABE ne comporte pas de calcul d&amp;#39;itinéraire,&lt;/li&gt;&lt;li&gt;une vue en mode GPS // ABE s&amp;#39;arrête à une vue plan,&lt;/li&gt;     &lt;/div&gt;&lt;li&gt;un &amp;quot;back office&amp;quot; de maintenance de la carte sur leur site Web &lt;a href="http://waze.com" target="_blank"&gt;waze.com&lt;/a&gt;  accessible quand on est chez soi pour corriger les routes ! &lt;/li&gt;&lt;div class="im"&gt;&lt;ul&gt;&lt;li&gt;L&amp;#39;éditeur de carte est très bien  réalisé : par exemple, en roulant, je notifie un défaut de carte pour le corriger arrivé chez moi, ou pour qu&amp;#39;un responsable de la zone le corrige,&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;li&gt;très porté sur l&amp;#39;aspect communauté/social : possibilité de tchater (non testé), créer des groupes (je me suis amusé à créer &amp;quot;Travailleurs de Grenoble&amp;quot;),  associer des comptes Twitter ou Facebook // ABE n&amp;#39;aborde que très peu ces aspects : ABE présente une carte - différente de la carte de navigation - de ping des autres usagers à proximité, et permet -pour un niveau 3- de voir les marques à la &amp;quot;petit poucet&amp;quot; laissées par d&amp;#39;autres usagers.&lt;/li&gt;  &lt;div class="im"&gt;  &lt;li&gt;il semble que la communauté waze soit déjà importante... // difficile de jauger du volume des usagers!&lt;br /&gt;&lt;/li&gt;&lt;/div&gt;&lt;li&gt;l&amp;#39;équipe semble très dynamique : waze est en France (a priori) que depuis janvier 2010 // ABE semble également dynamique et n&amp;#39;a de cesse d&amp;#39;évoluer aussi&lt;/li&gt;     &lt;/ul&gt;   Waze et ses limitations :    &lt;ul&gt;&lt;div class="im"&gt;&lt;li&gt;assez gênant, l&amp;#39;application reste encore instable (pour les &amp;quot;premières fois&amp;quot; : premier trajet, premier bouchon, ...) : elle se ferme de temps en temps et ne se rouvre pas forcément correctement. &lt;br /&gt;    &lt;/li&gt;&lt;/div&gt;&lt;li&gt;au niveau des menus, la signalisation d&amp;#39;évènements demande plus de taps (clics) que sous ABE (pas adapté si l&amp;#39;on roule..)&lt;/li&gt;  &lt;/ul&gt;&lt;div class="im"&gt;                En d&amp;#39;autres termes, si vous voulez tout de suite quelque chose de professionnel qui fonctionne pour les radars, ABE semble fait pour vous..&lt;br /&gt;Si par contre vous pariez sur le plus long terme, que vous avez une sensibilité aux côtés ludiques des applications, installez Waze. &lt;br /&gt;     &lt;p&gt; Et vous, lequel utilisez vous ? peut-être en connaissez d&amp;#39;autres ?&lt;/p&gt;&lt;p&gt;            Bonne route  !&lt;/p&gt;&lt;p&gt;&lt;font size="1"&gt;&lt;i&gt;on the ro@d again&lt;/i&gt;&lt;/font&gt;&lt;br /&gt; &lt;/p&gt; &lt;/div&gt;&lt;/div&gt;&lt;br /&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2610825294716456148-6666512779070479999?l=curiositedevie.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/CuriositeDeVie/~4/1jaVHZnWT2E" height="1" width="1"/&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-14T16:39:54.782+02:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://curiositedevie.blogspot.com/2011/06/mad-waze-versus-max-abe-les-androids-de.html</feedburner:origLink></item><item><title>Samsung Wave S8500 bientôt sur Androïd !!</title><link>http://feedproxy.google.com/~r/CuriositeDeVie/~3/8ep8SyGPCT4/samsung-wave-s85000-bientot-sur-android.html</link><category>mobile</category><category>samsung</category><category>s8500</category><category>wave</category><category>androïd</category><author>noreply@blogger.com (Brice)</author><pubDate>Tue, 21 Jun 2011 02:17:13 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2610825294716456148.post-3624436143837082093</guid><description>Après de multiples recherches, rumeurs, (si on lit bcp de forum) demandes de contribution, &lt;br /&gt;&lt;br /&gt;on a toujours un peu de mal à savoir si le &lt;span style="font-weight:bold;"&gt;Samsung Wave S8500&lt;/span&gt; peut booter et surtout être stable et 100% fonctionnel avec &lt;span style="font-weight:bold;"&gt;Androïd &lt;/span&gt;!&lt;br /&gt;  &lt;br /&gt;Au fur et à mesure de mes recherches, je mets à jour &lt;a href="http://www.commentcamarche.net/forum/affich-19978633-android-sur-samsung-wave"&gt;la question qui a été posée sur commentcamarche.net&lt;/a&gt;&lt;br /&gt;Le journal du geek &lt;a href="http://www.journaldugeek.com/2011/03/25/android-2-2-1-samsung-wave/"&gt;nous annonçait en mars&lt;/a&gt; le projet Androbada d&amp;#39;un Polonais.&lt;br /&gt;  On peut suivre les dernières nouvelles du portage sur &lt;a href="http://forum.xda-developers.com/showthread.php?t=1012856"&gt;un post du forum xda-developpers (dernière Màj le 11 mai)&lt;/a&gt;.&lt;br /&gt;Au dernières nouvelles, il a récupéré le schéma du téléphone et pourrait obtenir un noyau 100% fonctionnel (mais c&amp;#39;est du futur ?)&lt;br /&gt;  &lt;br /&gt;&lt;div style="margin-left: 40px;"&gt;&lt;i&gt;05/11/2011 I have full schematic for phone&lt;br /&gt; and &lt;u&gt;we&amp;#39;re ready to get &lt;/u&gt;a fully working kernel&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;Dans les derniers échanges, on constate qu&amp;#39;&lt;a href="http://forum.xda-developers.com/wiki/index.php?title=Androidonwave"&gt;une page du wiki&lt;/a&gt; expose les FAQ sur le projet&lt;br /&gt;  et que le code source est hébergé sur &lt;a href="http://code.google.com/p/badadroid/"&gt;google code&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Peut être bientôt un tutoriel pour flasher le S8500 avec Androïd ?&lt;br /&gt;&lt;br /&gt;A suivre donc !!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;EDIT DU 13 JUIN :&lt;span style="font-weight:bold;"&gt;&lt;/span&gt;&lt;/span&gt; je ne pensais pas si bien dire.. l'équipe fait du bon job.. une version dite "PRE ALPHA" (encore instable) est sortie.&lt;br /&gt;&lt;br /&gt;&lt;iframe width="425" height="349" src="http://www.youtube.com/embed/XGE6Gs48Ebc" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;&lt;small&gt;un tutoriel (encore TRES (surement TROP) RISQUE) est présent &lt;a href="http://www.badaforums.net/forums/general-bada/androbada-project-android-ported-samsung-wave-t3089-470.html"&gt;ici&lt;/a&gt;.&lt;/small&gt;&lt;br /&gt;&lt;br /&gt;La page projet dit au 11 juin : &lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Ce qui fonctionne (partiellement) : lanceur, Market, Paramètres et Wi-Fi.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Ce qui ne fonctionne pas encore : Audio, Modem (3G, Appels, ...) et plusieurs autres fonctions.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;Bravo pour le boulot ! on suit l'affaire ...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2610825294716456148-3624436143837082093?l=curiositedevie.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/CuriositeDeVie/~4/8ep8SyGPCT4" height="1" width="1"/&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-21T11:17:13.651+02:00</app:edited><media:thumbnail url="http://img.youtube.com/vi/XGE6Gs48Ebc/default.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://curiositedevie.blogspot.com/2011/06/samsung-wave-s85000-bientot-sur-android.html</feedburner:origLink></item><item><title>Nouvel onglet à la Google Chrome pour Firefox</title><link>http://feedproxy.google.com/~r/CuriositeDeVie/~3/-s88jR8p35Y/nouvel-onglet-la-google-chrome-pour.html</link><category>firefox</category><category>onglet</category><author>noreply@blogger.com (Brice)</author><pubDate>Wed, 18 May 2011 10:02:25 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2610825294716456148.post-5261814317780077537</guid><description>Malgré les très bonnes performances de la concurrence, &lt;br /&gt;je suis de ceux qui restent très attachés au navigateur Firefox .. allez savoir pourquoi ? son extensibilité peut être ;)&lt;br /&gt;&lt;br /&gt;mais dans un même temps, je regrette de ne pouvoir profiter des bonnes idées de Google Chrome, &lt;br /&gt;  notamment l&amp;#39;onglet d&amp;#39;accueil ou plutôt nouvel onglet présentant sous forme de mini tableau de bord&lt;br /&gt;les sites souvent accédés ou une vue personnalisée de mon historique de navigation..&lt;br /&gt;&lt;br /&gt;Après une petite recherche par mon ami Google (pourquoi n&amp;#39;y ai-je pas pensé avant !!?),&lt;br /&gt;  &lt;a href="http://www.newbtech.com/2009/06/how-to-add-chrome-like-new-tab-and-home-page-to-firefox.html"&gt;je découvre&lt;/a&gt; (évidemment) qu&amp;#39;une extension existe et fait le boulot pour Firefox .. &lt;br /&gt;(elle est au statut expérimental mais semble bien fonctionner pour moi)&lt;br /&gt;  &lt;br /&gt;Je vous invite à tester vous aussi &lt;a href="https://addons.mozilla.org/en-US/firefox/addon/new-tab-jumpstart/"&gt;cette extension nommée &amp;quot;New Tab JumpStart&amp;quot;&lt;/a&gt;. &lt;br /&gt;Très sympa !&lt;br /&gt;&lt;img title="" src="https://static-cdn.addons.mozilla.net/img/uploads/previews/thumbs/48/48708.png?modified=1283381779"&gt;&lt;br /&gt;  &lt;br /&gt;NB : la source indique aussi d&amp;#39;autres exemples comme &lt;a href="https://addons.mozilla.org/en-US/firefox/addon/speed-dial/"&gt;SpeedDial &lt;/a&gt;et &lt;a href="http://www.newtabking.com/"&gt;NewTabKing&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2610825294716456148-5261814317780077537?l=curiositedevie.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/CuriositeDeVie/~4/-s88jR8p35Y" height="1" width="1"/&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-18T19:02:25.843+02:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://curiositedevie.blogspot.com/2011/05/nouvel-onglet-la-google-chrome-pour.html</feedburner:origLink></item><item><title>Google Moderator et nous ?</title><link>http://feedproxy.google.com/~r/CuriositeDeVie/~3/pfjmLlf8AEs/google-moderator-et-nous.html</link><author>noreply@blogger.com (Brice)</author><pubDate>Fri, 15 Apr 2011 02:52:55 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2610825294716456148.post-8126633341130603923</guid><description>Connaissiez-vous Google Moderator ? yet another feedback 2.0 ou bien un outil de démocratie participative ?&lt;br&gt; Il est pourtant déjà disponible depuis 2008..&lt;br&gt;&lt;br&gt;Vous créez un espace (une serie) où une communauté peut avancer des idées, des suggestions, des questions..&lt;br&gt;&lt;br&gt;Le cœur du concept est que chaque idée/suggestion/&amp;quot;post&amp;quot; peut être évalué comme pertinent ou non par le reste de la communauté...&lt;br&gt;   &lt;br&gt;Modérator vous propose les éléments à évaluer et liste en dessous les éléments les plus pertinents présentés en premier&lt;br&gt;- une application existe sur l&amp;#39;app-store (accessible également depuis androïd).&lt;br&gt; - Modérator peut être intégré sur un google site.. &lt;br&gt;&lt;br&gt;Exemple sur la série Freebox recorder &amp;quot;out of the box&amp;quot; :&lt;br&gt;   &lt;a href="http://www.google.com/moderator/#16/e=3bb3"&gt;http://www.google.com/moderator/#16/e=3bb3&lt;/a&gt;&lt;br&gt;  Exemple intégré au site :&lt;br&gt;   &lt;a href="http://sites.google.com/site/freeboxrecorder/suggestions"&gt;http://sites.google.com/site/freeboxrecorder/suggestions&lt;/a&gt;&lt;br&gt;&lt;br&gt;Comme souvent avec Google, le site est assez épuré pour se concentrer sur l&amp;#39;essentiel : le concept.&lt;br&gt;  Un concept qui a déjà fait ses preuves avec par exemple :&lt;br&gt; - (anglais) auto-critique sur &lt;a href="http://www.google.com/moderator/#16/e=3b11d" target="_blank"&gt;les services/produits de google&lt;/a&gt;&lt;br&gt;- (anglais) le jeu &lt;a href="http://www.google.com/moderator/#16/e=1c111" target="_blank"&gt;Minecraft&lt;/a&gt;&lt;br&gt;  - (anglais) la campagne d&amp;#39;Obama &lt;a href="http://www.whitehouse.gov/OpenForQuestions" target="_blank"&gt;whitehouse.gov/OpenForQuestions&lt;/a&gt;&lt;br&gt; - (arabe) &lt;a href="http://www.google.com/moderator/?hl=ar#15/e=581e0&amp;amp;t=581e0.40&amp;amp;f=581e0.144aec" target="_blank"&gt;l&amp;#39;Egypte 2.0&lt;/a&gt; où les égyptiens réfléchissent à leur société de demain (attention ce n&amp;#39;est pas traduit !)&lt;br&gt;   &lt;br&gt;Il semble ne pas percer trop en france ??&lt;br&gt;du moins je trouve qu&amp;#39;il est difficile de recenser/chercher toutes les séries existantes.&lt;br&gt;Il me semble que l&amp;#39;on ne retrouve pas les séries dans une recherche google&lt;br&gt;  &lt;br&gt;Sur les petits sujets, au final j&amp;#39;ai cette impression que chacun fait sa série test dans son coin (avec donc 1 idée 1 vote :)&lt;br&gt;  Je n&amp;#39;ai pas dérogé à la règle en créant une série sur &lt;a href="http://goo.gl/mod/jGVT."&gt;Grenoble&lt;/a&gt;&lt;br&gt;    Mais peut être le référencement des séries est-il plus accessible sous androïd ?&lt;br&gt;&lt;br&gt;Et vous avez-vous votre série google modérator ?&lt;br&gt;connaissez-vous des séries populaires en france ?&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2610825294716456148-8126633341130603923?l=curiositedevie.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/CuriositeDeVie/~4/pfjmLlf8AEs" height="1" width="1"/&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2011-04-15T11:52:55.609+02:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://curiositedevie.blogspot.com/2011/04/google-moderator-et-nous.html</feedburner:origLink></item><item><title>ExtJs Grid Cell : récupérer les classes de style d'une cellule de tableau</title><link>http://feedproxy.google.com/~r/CuriositeDeVie/~3/SDboD5XSuck/extjs-grid-cell-recuperer-les-classes.html</link><category>JavaScript</category><category>ExtJS</category><category>Grid</category><author>noreply@blogger.com (Brice)</author><pubDate>Tue, 08 Mar 2011 11:44:44 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2610825294716456148.post-1071268659785752235</guid><description>En ExtJs, il peut être utile de récupérer le style d'une cellule d'&lt;span style="font-family:courier new,monospace;"&gt;Ext.grid.EditorGridPanel&lt;/span&gt; par exemple.&lt;br /&gt;&lt;br /&gt;voici comment procéder:&lt;br /&gt;&lt;br /&gt;Dans un premier temps, il vous faut une référence vers votre grille (qui possède un attribut id unique bien sûr, ici égal à "myGridId"):&lt;br /&gt;&lt;pre style="font-family:courier new,monospace;"&gt;&lt;br /&gt;var myGrid = Ext.getCmp("myGridId");&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Ensuite, par l'intermédiaire de la vue correspondant à la grille,&lt;br /&gt; il est possible de récupérer l'élément HTML TD correspondant à une cellule (ici ligne 0, colonne 3)&lt;br /&gt;&lt;pre style="font-family:courier new,monospace;"&gt;&lt;br /&gt;var row = 0;&lt;br /&gt;var col = 3;&lt;br /&gt;var myCellHtmlTd = myGrid.getView().getCell(row,col);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Le résultat obtenu (&lt;span style="font-family:courier new,monospace;"&gt;myCellHtmlTd&lt;/span&gt;) est un élémént DOM Html : cf. &lt;a href="http://www.w3schools.com/jsref/dom_obj_all.asp"&gt;référence w3schools&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Il ne vous reste plus qu'a accéder à l'attribut "&lt;span style="font-family:courier new,monospace;"&gt;class&lt;/span&gt;" de votre élément pour obtenir les classes de style appliquées à la cellule.&lt;br /&gt;&lt;pre style="font-family:courier new,monospace;"&gt;&lt;br /&gt;var cellClass = myCellHtmlTd.getAttribute("class");&lt;br /&gt;// pour IE HtmlElement possède les classes dans l'attribut "classname" !&lt;br /&gt;cellClass = (cellClass ? cellClass : myCellHtmlTd.getAttribute("classname"));&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Récupérer le style appliqué à une cellule permet par exemple de distinguer sur une ligne de tableau une cellule modifiée d'une cellule non modifiée par exemple (&lt;span style="font-family:courier new,monospace;"&gt;MyGridView::isDirty(r,c)&lt;/span&gt; n'ayant pas été implémenté ?)&lt;br /&gt;&lt;br /&gt;enjoy ! ^^&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2610825294716456148-1071268659785752235?l=curiositedevie.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/CuriositeDeVie/~4/SDboD5XSuck" height="1" width="1"/&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2011-03-08T20:44:44.411+01:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://curiositedevie.blogspot.com/2011/03/extjs-grid-cell-recuperer-les-classes.html</feedburner:origLink></item><item><title>Devenir employeur d’une assistante maternelle</title><link>http://feedproxy.google.com/~r/CuriositeDeVie/~3/b3mUSAphfL8/devenir-employeur-dune-assistante.html</link><category>employeur</category><category>assistantematernelle</category><category>parent</category><category>enfant</category><category>cdi</category><author>noreply@blogger.com (Brice)</author><pubDate>Sat, 19 Feb 2011 07:19:35 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2610825294716456148.post-7986742234789648771</guid><description>&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;" id="internal-source-marker_0.26384762696417885"&gt;Lorsque  l’on devient parent, une seconde vie commence. Avec cette nouvelle vie  vient très vite la question du mode de garde de notre petit. Voici  quelques informations pour devenir employeur d’une assistante  maternelle.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;h4 style="text-align: justify;"&gt;&lt;span style="font-size: 12pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: bold; font-style: normal; text-decoration: none; vertical-align: baseline;"&gt;La recherche d’une assistante&lt;/span&gt;&lt;/h4&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"&gt;La  liste des assistantes maternelles est maintenue soit par le pôle petite  enfance de la mairie soit par le relais assistantes maternelles.  Le  plus simple est de prendre contact directement avec eux pour obtenir une  liste à jour (inutile de payer les sites dédiés aux recherches de  nounous avant !).&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;h4 style="text-align: justify;"&gt;&lt;span style="font-size: 12pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: bold; font-style: normal; text-decoration: none; vertical-align: baseline;"&gt;La visite des assistantes&lt;/span&gt;&lt;/h4&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"&gt;A  partir de la liste, et après pré-sélection par téléphone, le mieux est  de rencontrer plusieurs assistantes proches du domicile et/ou du futur  lieu de scolarisation de l’enfant. Une rencontre d’une petite heure en  dit déjà pas mal sur les échanges entre l’assistante et l’enfant, entre  l’assistante et vous les parents. On peut préparer une petite liste de  points à aborder sans en faire un formulaire trop formel pour être sûr  de ne pas oublier les éléments non négociables : ie. méthode  d’éducation, nombre d’enfants gardés, journée type, déplacements dans la  journée, activités de l’enfant, contexte de vie (ie. cigarette,  animaux..).&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"&gt;N’oubliez pas de tenir informé le relais ou la mairie sur votre choix pour la mise à jour des informations centralisées.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;h4 style="text-align: justify;"&gt;&lt;span style="font-size: 12pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: bold; font-style: normal; text-decoration: none; vertical-align: baseline;"&gt;Le CDI&lt;/span&gt;&lt;/h4&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"&gt;Le CDI est un document à réaliser en coordination entre les parties. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: italic; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: italic; text-decoration: none; vertical-align: baseline;"&gt;Personnellement, via l’allocation PAJE de ma femme du site de la CAF, j’ai pu m’inscrire sur  &lt;/span&gt;&lt;a href="http://www.pajemploi.urssaf.fr/"&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 153); background-color: transparent; font-weight: normal; font-style: italic; text-decoration: underline; vertical-align: baseline;"&gt;pajemploi&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: italic; text-decoration: none; vertical-align: baseline;"&gt; pour obtenir un identifiant employeur PAJEMPLOI (ce n’était pas si simple à trouver). &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"&gt;A partir d’un exemple de CDI pour l’Ain : &lt;/span&gt;&lt;a href="http://www.ain.fr/upload/docs/application/pdf/doc_23ag_contrat_travail_am.pdf"&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 153); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: underline; vertical-align: baseline;"&gt;Document PDF&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"&gt;J’ai réalisé &lt;/span&gt;&lt;a href="https://docs.google.com/document/d/1upGZY4V-EcfXNzoO2AZRvwW8-JXS3ZP3-jhH5RXomMs/edit?hl=fr&amp;amp;authkey=CIqA-NwI"&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 153); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: underline; vertical-align: baseline;"&gt;un exemple de CDI avec Google documents&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"&gt;Mais maintenant l’état propose ses propres modèles&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"&gt;- dans &lt;/span&gt;&lt;a href="http://www.pajemploi.urssaf.fr/pajeweb/docimpr.jsp"&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 153); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: underline; vertical-align: baseline;"&gt;la section documentation&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"&gt; de pajemploi,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"&gt;- voici un &lt;/span&gt;&lt;a href="http://www.pajemploi.urssaf.fr/pajeweb/pdf/1451-PAJE-ContratTravail-GED-simple.pdf"&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 153); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: underline; vertical-align: baseline;"&gt;exemple de CDI (pdf)&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"&gt;Le CDI doit faire apparaître clairement le mode de rémunération, les conditions d’accueil de l’enfant, ...&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;h4 style="text-align: justify;"&gt;&lt;span style="font-size: 12pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: bold; font-style: normal; text-decoration: none; vertical-align: baseline;"&gt;La paie&lt;/span&gt;&lt;/h4&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"&gt;Chaque  fin de mois, l’employeur verse le salaire à l’assistante maternelle. La  paie correspond au salaire net + repas et indemnités. Une déclaration  sur pajemploi (&lt;/span&gt;&lt;a href="https://www.pajemploi.urssaf.fr/pajeweb/login.htm"&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 153); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: underline; vertical-align: baseline;"&gt;espace service employeur&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"&gt;) doit succéder immédiatement le paiement et déclenche l’envoi d’une fiche de paie au salarié.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;h4 style="text-align: justify;"&gt;&lt;span style="font-size: 12pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: bold; font-style: normal; text-decoration: none; vertical-align: baseline;"&gt;La fin de contrat&lt;/span&gt;&lt;/h4&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"&gt;Sans doute l’étape la plus &lt;/span&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: italic; text-decoration: none; vertical-align: baseline;"&gt;sympathique &lt;/span&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"&gt;pour un employeur, il faut rédiger les papiers suivants :&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"&gt;- un certificat d’emploi&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"&gt;- une attestation assedic (comprenez pôle-emploi)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"&gt;- calcul &amp;amp; règlement des indemnités, solde de tout compte et congés payés.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;h6 style="text-align: justify;"&gt;&lt;span style="font-size: 10pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: bold; font-style: normal; text-decoration: none; vertical-align: baseline;"&gt;Attestation assedic&lt;/span&gt;&lt;/h6&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"&gt;Une  fois vos calculs bien effectués et la dernière fiche de paie transmise,  vous aurez l’ensemble des éléments pour produire l’attestation assedic  (notamment l’information sur le dernier salaire brut).&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"&gt;Ce qu’il faut savoir pour établir l’attestation assedic :&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"&gt;- l’attestation peut se faire sur le web après inscription en tant qu’employeur sur pole-emploi&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"&gt;-  l’attestation comporte un récapitulatif des mois travaillés, avec pour  chaque mois un ensemble d’informations : cf. comment remplir &lt;/span&gt;&lt;a href="http://www.pole-emploi.fr/employeur/comment-remplir-une-attestation-pole-emploi--@/suarticle.jspz?id=4110"&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 153); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: underline; vertical-align: baseline;"&gt;une attestation pôle emploi&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"&gt;- l’information “Precompte pôle emploi” pour un mois donné peut être retrouvée comme pour le salaire brut sur l’&lt;/span&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: italic; text-decoration: none; vertical-align: baseline;"&gt;édition d’un bulletin de salaire &lt;/span&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"&gt;(site pajemploi / gérer mes déclarations) et correspond à la “part salarié” pour “assurance chômage”.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;NB: si vous avez des remarques/améliorations, faites le savoir !&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2610825294716456148-7986742234789648771?l=curiositedevie.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/CuriositeDeVie/~4/b3mUSAphfL8" height="1" width="1"/&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2011-02-19T16:19:35.928+01:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><enclosure url="http://www.ain.fr/upload/docs/application/pdf/doc_23ag_contrat_travail_am.pdf" length="73585" type="application/pdf" /><media:content url="http://www.ain.fr/upload/docs/application/pdf/doc_23ag_contrat_travail_am.pdf" fileSize="73585" type="application/pdf" /><itunes:explicit>no</itunes:explicit><itunes:subtitle>Lorsque l’on devient parent, une seconde vie commence. Avec cette nouvelle vie vient très vite la question du mode de garde de notre petit. Voici quelques informations pour devenir employeur d’une assistante maternelle. La recherche d’une assistanteLa lis</itunes:subtitle><itunes:author>noreply@blogger.com (Brice)</itunes:author><itunes:summary>Lorsque l’on devient parent, une seconde vie commence. Avec cette nouvelle vie vient très vite la question du mode de garde de notre petit. Voici quelques informations pour devenir employeur d’une assistante maternelle. La recherche d’une assistanteLa liste des assistantes maternelles est maintenue soit par le pôle petite enfance de la mairie soit par le relais assistantes maternelles. Le plus simple est de prendre contact directement avec eux pour obtenir une liste à jour (inutile de payer les sites dédiés aux recherches de nounous avant !). La visite des assistantesA partir de la liste, et après pré-sélection par téléphone, le mieux est de rencontrer plusieurs assistantes proches du domicile et/ou du futur lieu de scolarisation de l’enfant. Une rencontre d’une petite heure en dit déjà pas mal sur les échanges entre l’assistante et l’enfant, entre l’assistante et vous les parents. On peut préparer une petite liste de points à aborder sans en faire un formulaire trop formel pour être sûr de ne pas oublier les éléments non négociables : ie. méthode d’éducation, nombre d’enfants gardés, journée type, déplacements dans la journée, activités de l’enfant, contexte de vie (ie. cigarette, animaux..). N’oubliez pas de tenir informé le relais ou la mairie sur votre choix pour la mise à jour des informations centralisées. Le CDILe CDI est un document à réaliser en coordination entre les parties. Personnellement, via l’allocation PAJE de ma femme du site de la CAF, j’ai pu m’inscrire sur pajemploi pour obtenir un identifiant employeur PAJEMPLOI (ce n’était pas si simple à trouver). A partir d’un exemple de CDI pour l’Ain : Document PDF J’ai réalisé un exemple de CDI avec Google documents Mais maintenant l’état propose ses propres modèles - dans la section documentation de pajemploi, - voici un exemple de CDI (pdf) Le CDI doit faire apparaître clairement le mode de rémunération, les conditions d’accueil de l’enfant, ... La paieChaque fin de mois, l’employeur verse le salaire à l’assistante maternelle. La paie correspond au salaire net + repas et indemnités. Une déclaration sur pajemploi (espace service employeur) doit succéder immédiatement le paiement et déclenche l’envoi d’une fiche de paie au salarié. La fin de contratSans doute l’étape la plus sympathique pour un employeur, il faut rédiger les papiers suivants : - un certificat d’emploi - une attestation assedic (comprenez pôle-emploi) - calcul &amp;amp; règlement des indemnités, solde de tout compte et congés payés. Attestation assedicUne fois vos calculs bien effectués et la dernière fiche de paie transmise, vous aurez l’ensemble des éléments pour produire l’attestation assedic (notamment l’information sur le dernier salaire brut). Ce qu’il faut savoir pour établir l’attestation assedic : - l’attestation peut se faire sur le web après inscription en tant qu’employeur sur pole-emploi - l’attestation comporte un récapitulatif des mois travaillés, avec pour chaque mois un ensemble d’informations : cf. comment remplir une attestation pôle emploi - l’information “Precompte pôle emploi” pour un mois donné peut être retrouvée comme pour le salaire brut sur l’édition d’un bulletin de salaire (site pajemploi / gérer mes déclarations) et correspond à la “part salarié” pour “assurance chômage”. NB: si vous avez des remarques/améliorations, faites le savoir ! </itunes:summary><itunes:keywords>employeur, assistantematernelle, parent, enfant, cdi</itunes:keywords><feedburner:origLink>http://curiositedevie.blogspot.com/2011/02/devenir-employeur-dune-assistante.html</feedburner:origLink></item><item><title>PHP : sFTP et timeout pour une connexion SSL</title><link>http://feedproxy.google.com/~r/CuriositeDeVie/~3/WS9yMYeD3Tc/php-sftp-et-timeout-pour-une-connexion.html</link><category>développement</category><category>timeout</category><category>connexion</category><category>ssl</category><category>ssh</category><category>php</category><author>noreply@blogger.com (Brice)</author><pubDate>Wed, 26 Jan 2011 10:16:20 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2610825294716456148.post-5885974571689056428</guid><description>En PHP, je cherchais comment mettre en œuvre un timeout plus court pour une connexion ou des commandes sFTP (secure FTP).&lt;br /&gt;&lt;br /&gt;Sur une connexion FTP sans chiffrement, l'option est prévue :&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;  ftp_connect($host, $port, $timeout);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Mais si l'on utilise ssh2 par exemple, on ne retrouve pas l'option "timeout" (du moins je n'ai pas trouvé!)&lt;br /&gt;&lt;br /&gt;Au passage, on peut très vite se perdre dans des options de stream inexistantes :)&lt;br /&gt;J'avais tenté un code dans le genre suivant mais sans succès :&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;    $streamDir = 'ssh2.sftp://'.$stream.$remoteDir;&lt;br /&gt;    $stream_options = array('ssh2' =&amp;gt; array('timeout' =&amp;gt; 1));&lt;br /&gt;    $stream_context = stream_context_create($stream_options);&lt;br /&gt;    $handle = opendir($streamDir, $stream_context);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Du coup j'ai opté pour un test d'ouverture de port préalable à la connexion.&lt;br /&gt;Pour cela, je n'utilise pas un ping fait maison (car le test serait incorrect suivant les conf. de firewall)&lt;br /&gt; mais une ouverture de socket directement avec un timeout réduit.&lt;br /&gt;&lt;br /&gt;voici la fonction préalable à une connexion sFtp que j'utilise :&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;    /**&lt;br /&gt;     * test l'ouverture d'un port sur une hôte distant&lt;br /&gt;     *&lt;br /&gt;    private function __testHostPort() {&lt;br /&gt;        $timeoutsec = 2;&lt;br /&gt;        $fp = @fsockopen($this-&amp;gt;_host, $this-&amp;gt;_port, $errno, $errstr, $timeoutsec);&lt;br /&gt;        if (!$fp) {&lt;br /&gt;             throw new Ftp_Exception("$errstr ($errno)");&lt;br /&gt;        } else {&lt;br /&gt;            @fclose($fp);&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Elle est appelée préalablement à la connexion SSH et lève une exception si le serveur n'a pas le port ouvert avant toute connexion SSH.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;    protected function _connect() {&lt;br /&gt;        if (!$this-&amp;gt;isConnected()) {&lt;br /&gt;            $this-&amp;gt;_logger-&amp;gt;debug("_connect :" . $this-&amp;gt;__tostring());&lt;br /&gt;            $this-&amp;gt;__testHostPort();&lt;br /&gt;            $connexion = @ssh2_connect($this-&amp;gt;_host, $this-&amp;gt;_port);&lt;br /&gt;            (...)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;PS : si vous avez mieux, je suis preneur... j'utilise le module php "openssh".&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2610825294716456148-5885974571689056428?l=curiositedevie.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/CuriositeDeVie/~4/WS9yMYeD3Tc" height="1" width="1"/&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-26T19:16:20.793+01:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://curiositedevie.blogspot.com/2011/01/php-sftp-et-timeout-pour-une-connexion.html</feedburner:origLink></item><item><title>Du temps pour la nature ... dans ce monde de brutes : un renard tapé sur la rocade de grenoble</title><link>http://feedproxy.google.com/~r/CuriositeDeVie/~3/NQ7lOGwvjx4/du-temps-pour-la-nature-dans-ce-monde.html</link><category>grenoble</category><category>insolite</category><author>noreply@blogger.com (Brice)</author><pubDate>Mon, 24 Jan 2011 09:33:25 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2610825294716456148.post-7078586184161189672</guid><description>&lt;p class="mobile-photo"&gt;&lt;a href="http://4.bp.blogspot.com/_rsIW5N5Xrvg/TT2R2sJeASI/AAAAAAAACFQ/_UTDIpgZh2g/s1600/renard-766080.jpg"&gt;&lt;img src="http://4.bp.blogspot.com/_rsIW5N5Xrvg/TT2R2sJeASI/AAAAAAAACFQ/_UTDIpgZh2g/s320/renard-766080.jpg" alt="" id="BLOGGER_PHOTO_ID_5565765083249639714" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;Comme tout le monde ...&lt;br /&gt;assez agacé le lundi matin d'aller au boulot,&lt;br /&gt;quelle ne fut pas ma grande surprise de tomber (encore)&lt;br /&gt;sur un bouchon sur la rocade sud dans le sens chambéry lyon..&lt;p&gt;après avoir laissé passer un camion de pompier, arrive la réduction de&lt;br /&gt;2 à une voie,&lt;br /&gt;en passant à hauteur de l'incident tout le monde a pu observer un&lt;br /&gt;petit renard recroquevillé sur lui-même.&lt;/p&gt;&lt;p&gt;Assez incroyable qu'un être si petit ait pu entraîner un manque à&lt;br /&gt;gagner de cette ampleur, assez incroyable aussi la part de poésie&lt;br /&gt;qu'il amène avec lui après la période d'énervement qu'il a généré dans&lt;br /&gt;le même temps&lt;br /&gt;ainsi va la vie...&lt;/p&gt;&lt;p&gt;est-il encore en vie ? quelqu'un a des nouvelles de lui ?&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2610825294716456148-7078586184161189672?l=curiositedevie.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/CuriositeDeVie/~4/NQ7lOGwvjx4" height="1" width="1"/&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-24T18:33:25.781+01:00</app:edited><media:thumbnail url="http://4.bp.blogspot.com/_rsIW5N5Xrvg/TT2R2sJeASI/AAAAAAAACFQ/_UTDIpgZh2g/s72-c/renard-766080.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://curiositedevie.blogspot.com/2011/01/du-temps-pour-la-nature-dans-ce-monde.html</feedburner:origLink></item><item><title>Le Rappel de l'Orchestre (du jour)</title><link>http://feedproxy.google.com/~r/CuriositeDeVie/~3/2xA7Lf--5ko/le-rappel-de-lorchestre-du-jour.html</link><category>radio</category><category>camille combal</category><category>virgin</category><category>téléphone</category><category>rappel</category><author>noreply@blogger.com (Brice)</author><pubDate>Mon, 24 Jan 2011 09:31:33 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2610825294716456148.post-1389443222626480032</guid><description>Un peu de pub pour Camille Combal et son orcheste, plus précisément la séquence "Le rappel de l'Orchestre" sur &lt;a href="http://www.virginradio.fr"&gt;Virgin Radio&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;le principe est simple, ils vous appellent, enregistrent votre voix, et vous rappellent plusieurs fois jusqu'à vous rendre fou.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://boly38.free.fr/downloads/VirginRappelCamille.wav"&gt;Celui de ce soir&lt;/a&gt; était plutôt sympa ...&lt;br /&gt;&lt;EMBED src="http://boly38.free.fr/downloads/VirginRappelCamille.wav" autostart=true loop=false volume=100 hidden=false&gt;&lt;/EMBED&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2610825294716456148-1389443222626480032?l=curiositedevie.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/CuriositeDeVie/~4/2xA7Lf--5ko" height="1" width="1"/&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-24T18:31:33.623+01:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><enclosure url="http://boly38.free.fr/downloads/VirginRappelCamille.wav" length="12931116" type="audio/x-wav" /><media:content url="http://boly38.free.fr/downloads/VirginRappelCamille.wav" fileSize="12931116" type="audio/x-wav" /><itunes:explicit>no</itunes:explicit><itunes:subtitle>Un peu de pub pour Camille Combal et son orcheste, plus précisément la séquence "Le rappel de l'Orchestre" sur Virgin Radio. le principe est simple, ils vous appellent, enregistrent votre voix, et vous rappellent plusieurs fois jusqu'à vous rendre fou. Ce</itunes:subtitle><itunes:author>noreply@blogger.com (Brice)</itunes:author><itunes:summary>Un peu de pub pour Camille Combal et son orcheste, plus précisément la séquence "Le rappel de l'Orchestre" sur Virgin Radio. le principe est simple, ils vous appellent, enregistrent votre voix, et vous rappellent plusieurs fois jusqu'à vous rendre fou. Celui de ce soir était plutôt sympa ... </itunes:summary><itunes:keywords>radio, camille combal, virgin, téléphone, rappel</itunes:keywords><feedburner:origLink>http://curiositedevie.blogspot.com/2010/10/le-rappel-de-lorchestre-du-jour.html</feedburner:origLink></item><item><title>A Auroville, êtes-vous des citoyens du monde éclairés ?!?</title><link>http://feedproxy.google.com/~r/CuriositeDeVie/~3/RvfFR9t1v1Y/auroville-etes-vous-des-citoyens-du.html</link><category>mondialisation</category><category>société</category><author>noreply@blogger.com (Brice)</author><pubDate>Tue, 31 Aug 2010 11:37:24 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2610825294716456148.post-4575856217516309997</guid><description>&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;" id="internal-source-marker_0.29225818608661824"&gt;Qui  n'a jamais rêvé d'un monde meilleur, refait le monde ou critiqué "le  système" dans lequel on vit... Quelle est la proportion de personnes qui  tentent, de tordre ou de combler les manques, les faiblesses de ce  système ? d'en concevoir un nouveau ? &lt;br /&gt;Parmi elles, combien font bouger  les lignes ? Combien peuvent se projeter dans un système complètement  "alter" ? Enfin combien s'y projettent tellement bien qu'ils arrivent à  vivre avec ?&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"&gt;Après avoir remis en cause l'argent pour du sel (cf. &lt;/span&gt;&lt;a href="http://curiositedevie.blogspot.com/2009/04/du-sel-contre-la-mondialisation.html"&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 153); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: underline; vertical-align: baseline;"&gt;Du sel contre la mondialisation ?&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"&gt; ), on peut également s&amp;#39;intéresser à la communauté d'Auroville, ou "La cité de l&amp;#39;Aurore".&lt;/span&gt;&lt;br /&gt;  &lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"&gt;Née en 68, cette ville expérimentale a été créée par&lt;/span&gt;&lt;a href="http://fr.wikipedia.org/wiki/Mirra_Alfassa"&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"&gt; &lt;/span&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 153); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: underline; vertical-align: baseline;"&gt;Mirra Alfassa&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"&gt;  (compagne spirituelle d'un philosophe indien). Elle a pour vocation  d&amp;#39;être « le lieu d&amp;#39;une vie communautaire universelle, où hommes et  femmes apprendraient à vivre en paix, dans une parfaite harmonie,  au-delà de toutes croyances, opinions politiques et nationalités » (&lt;/span&gt;&lt;a href="http://fr.wikipedia.org/wiki/Auroville"&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 153); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: underline; vertical-align: baseline;"&gt;src&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"&gt;).&lt;/span&gt;&lt;br /&gt;  &lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"&gt;A priori un projet ambitieux soutenu par l'Unesco, où effectivement une communauté multi-nationale réussi à subsister.&lt;/span&gt;&lt;br /&gt;  &lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"&gt;En  lisant l'article Wikipédia, on se projette un peu dans le fabuleux RPG  des bisounours avec différentes "sous-communautés" -pour ne pas dire un  mot interdit- (par exemple les "Aurelec" pour l'informatique), des modes  d'éducation, d'agriculture différents, ...  &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"&gt;Là  où cette société est intéressante c'est qu'a priori elle est censée  s'abstraire des soucis d'argent... Mais difficile de comprendre ce principe, principe selon lequel rien ne vous appartient mais tout ce  que vous produisez appartient à la communauté. &lt;br /&gt;La communauté vous verse  même un petit pécule pour démarrer, ensuite vous ponctionne le salaire  (je ne suis pas sûr d'avoir bien tout compris?).&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"&gt;Existe-t-il des différences sociales ? &lt;/span&gt;&lt;br /&gt;  &lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"&gt;A priori les anciens auraient plus de légitimité que les nouveaux  arrivants, et quelques disparités de niveau de vie seraient quand même  visibles..&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"&gt;Le  plus simple pour comprendre réellement tous ses rouages serait peut-être d'avoir un retour d'expérience d'un de ses membres ou bien d'y faire  un saut.. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"&gt;Qui sait !? &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"&gt;La lumière nous parviendra-t-elle un jour ?&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2610825294716456148-4575856217516309997?l=curiositedevie.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/CuriositeDeVie/~4/RvfFR9t1v1Y" height="1" width="1"/&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2010-08-31T20:37:24.468+02:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://curiositedevie.blogspot.com/2010/08/auroville-etes-vous-des-citoyens-du.html</feedburner:origLink></item><item><title>Agences immobilières : acheter 1 bien à la vente</title><link>http://feedproxy.google.com/~r/CuriositeDeVie/~3/zwOUbnr51WQ/agences-immobilieres-acheter-1-bien-la.html</link><category>immobilier</category><author>noreply@blogger.com (Brice)</author><pubDate>Tue, 24 Aug 2010 09:14:09 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2610825294716456148.post-6972984822820536421</guid><description>Souvent les sites d&amp;#39;agences immobilières (hors grands groupes) possèdent un moteur de recherche de biens qui ne fonctionne malheureusement pas...&lt;br /&gt;&lt;br /&gt;Il faudrait organiser un concours pour trouver les plus insolites !&lt;br /&gt;  &lt;br /&gt;Personnellement, j&amp;#39;ai bien aimé aujourd&amp;#39;hui le suivant :  &lt;a href="http://www.immobilierechartreuse.fr/"&gt;http://www.immobilierechartreuse.fr/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Leur page d&amp;#39;accueil propose 1 bien à la vente&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_rsIW5N5Xrvg/THPvOj4et3I/AAAAAAAACBo/zSbArFGC3FY/s1600/IC_nosoffres.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 256px; height: 246px;" src="http://2.bp.blogspot.com/_rsIW5N5Xrvg/THPvOj4et3I/AAAAAAAACBo/zSbArFGC3FY/s400/IC_nosoffres.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5509009802633590642" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;En cliquant sur &amp;quot;ACHETER&amp;quot;, on se retrouve avec une page plutôt tendance :&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_rsIW5N5Xrvg/THPvGmNoaYI/AAAAAAAACBg/TEiZr4UteZs/s1600/IC_acheter.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 400px; height: 284px;" src="http://4.bp.blogspot.com/_rsIW5N5Xrvg/THPvGmNoaYI/AAAAAAAACBg/TEiZr4UteZs/s400/IC_acheter.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5509009665820223874" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;A partir de là, 2 chemins s&amp;#39;offrent à nous - un peu comme dans un livre dont vous seul êtes le héro - :&lt;br /&gt;  - choix 1) un athlète de haut-vol qui n&amp;#39;a peur de rien et qui ne tiens pas compte du message bleu : &lt;br /&gt;   choisir un type de bien ou pas, une ville ou pas et cliquer sur &amp;quot;Lancer la recherche&amp;quot; : on se retrouve systématiquement sur une page vide.&lt;br /&gt;  - choix 2) un élève modèle qui respecte le message bleu soit clique sur ce dernier et retrouve des animations flash qui ne fonctionnent pas, soit se rend sur &lt;a href="http://www.groupe.agda.fr"&gt;http://www.groupe.agda.fr&lt;/a&gt; et là :&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_rsIW5N5Xrvg/THPvXvq--MI/AAAAAAAACBw/WG1hxGNMt4A/s1600/IC_agda.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 199px;" src="http://2.bp.blogspot.com/_rsIW5N5Xrvg/THPvXvq--MI/AAAAAAAACBw/WG1hxGNMt4A/s400/IC_agda.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5509009960417032386" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;     oh stupeur ! je me retrouve avec un bon vieux 403 doté d&amp;#39;un brin d&amp;#39;humour à la &lt;a href="http://perdu.com"&gt;http://perdu.com&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;EDIT : le post initialement envoyé par email ne comportait pas les images; problème réglé&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2610825294716456148-6972984822820536421?l=curiositedevie.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/CuriositeDeVie/~4/zwOUbnr51WQ" height="1" width="1"/&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2010-08-24T18:14:09.374+02:00</app:edited><media:thumbnail url="http://2.bp.blogspot.com/_rsIW5N5Xrvg/THPvOj4et3I/AAAAAAAACBo/zSbArFGC3FY/s72-c/IC_nosoffres.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://curiositedevie.blogspot.com/2010/08/agences-immobilieres-acheter-1-bien-la.html</feedburner:origLink></item><item><title>ExtJS - la gestion des évènements : les bases</title><link>http://feedproxy.google.com/~r/CuriositeDeVie/~3/WBDcxao2-Sw/extjs-la-gestion-des-evenements-les.html</link><category>JavaScript</category><category>développement</category><category>RIA</category><category>ExtJS</category><category>évènement</category><author>noreply@blogger.com (Brice)</author><pubDate>Thu, 15 Jul 2010 07:05:46 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2610825294716456148.post-1385564167267169307</guid><description>Mini sommaire :&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;&lt;a href="#preamb"&gt;Préambule : les pré-requis&lt;/a&gt;&lt;/li&gt;&lt;br /&gt; &lt;li&gt;&lt;a href="#exemple1"&gt;Exemple n°1 : gestion d'un évènement très simple&lt;/a&gt;&lt;/li&gt;&lt;br /&gt; &lt;li&gt;&lt;a href="#exemple2"&gt;Exemple n°2 : gestion d'un évènement de composant&lt;/a&gt;&lt;/li&gt;&lt;br /&gt; &lt;li&gt;&lt;a href="#exemple3"&gt;Exemple n°3 : création d'un évènement spécifique&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;hr/&gt;&lt;br /&gt;&lt;h2&gt;&lt;a name="preamb"&gt;-&lt;/a&gt;Préambule : les pré-requis&lt;/h2&gt;&lt;br /&gt;J'installe &lt;a href="http://www.sencha.com/products/js/"&gt;ExtJS (Sencha)&lt;/a&gt;; Un serveur Web (au hasard : &lt;a href="http://www.wampserver.com/download.php"&gt;WampServer&lt;/a&gt;);&lt;br /&gt;&lt;br /&gt;Je crée un fichier : une page html simple comportant les pré-requis ExtJS :&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&gt;&lt;br /&gt;&amp;lt;html&gt;&lt;br /&gt;  &amp;lt;head&gt;&lt;br /&gt;    &amp;lt;title&gt;Essai ExtJS&amp;lt;/title&gt;&lt;br /&gt;    &amp;lt;!-- ** Javascript ** --&gt;&lt;br /&gt;    &amp;lt;link rel="stylesheet" type="text/css" href="ext/resources/css/ext-all.css" /&gt;&lt;br /&gt;    &amp;lt;script type="text/javascript" src="ext/adapter/ext/ext-base.js"&gt;&amp;lt;/script&gt;&lt;br /&gt;    &amp;lt;script type="text/javascript" src="ext/ext-all.js"&gt;&amp;lt;/script&gt;&lt;br /&gt;  &amp;lt;/head&gt;&lt;br /&gt;  &amp;lt;body&gt;&lt;br /&gt;        Coucou&lt;br /&gt; &amp;lt;div id="test-div"&gt;&amp;#160;&amp;lt;/div&gt;&lt;br /&gt;  &amp;lt;/body&gt;&lt;br /&gt;&amp;lt;/html&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Les pré-requis sont satisfaits si j'arrive à voir Coucou lorsque je vais sur l'adresse locale de ma page (ie. http://localhost/test.html)&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;&lt;a name="exemple1"&gt;-&lt;/a&gt;Exemple n°1 : gestion d'un évènement très simple&lt;/h2&gt;&lt;br /&gt;Je déclare un bouton, et sur le clic du bouton, j'affiche une alerte :&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;script type="text/javascript"&gt;&lt;br /&gt;Ext.onReady(function(){&lt;br /&gt;  var buttonObject = new Ext.Button({&lt;br /&gt;    id: 'monBeauButton'&lt;br /&gt;    ,text:'Cliquez moi'&lt;br /&gt;    ,handler:function() {&lt;br /&gt;       alert(' you do it !');&lt;br /&gt;    }&lt;br /&gt;    ,applyTo:'test-div'&lt;br /&gt;   });&lt;br /&gt;});&lt;br /&gt;&amp;lt;/script&gt;&lt;br /&gt;&amp;lt;div id="test-div"/&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;i&gt;Dans cet exemple, l'attribut handler comporte une fonction (ou une référence vers une fonction) qui est invoquée lors de l'action sur le bouton.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;&lt;a name="exemple2"&gt;-&lt;/a&gt;Exemple n°2 : gestion d'un évènement de composant&lt;/h2&gt;&lt;br /&gt;Chaque composant ExtJS est décrit &lt;a href="http://www.sencha.com/deploy/dev/docs/"&gt;dans la documentation en ligne&lt;/a&gt;. En dépliant le noeud "Ext" on retrouve bien "Button".&lt;br /&gt;Sur chaque composants, la documentation décrit les évènements que génère ce dernier.&lt;br /&gt;en se rendant sur le paragraphe "events" on constate donc qu'un bouton génère les évènements suivants : added, afterrender, beforedestroy, beforehide, ...&lt;br /&gt;&lt;br /&gt;Dans l'exemple 2 nous allons déclencher un affichage sur réception de l'évènement "mouseover" et "mouseout". Les lignes de documentation relatives à ces évènements précisent les paramètres reçus lors du déclenchement de l'évènement. Ici dans les deux cas nous aurons 2 arguments : le bouton et un event (évènement levé par le navigateur avec notamment la position de la souris).&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;script type="text/javascript"&gt;&lt;br /&gt;  Ext.onReady(function(){&lt;br /&gt;  var buttonObject = new Ext.Button({&lt;br /&gt;      id: 'monBeauButton'&lt;br /&gt;      ,text:'Cliquez moi'&lt;br /&gt;      ,handler:function() {&lt;br /&gt;        alert(' you do it !');&lt;br /&gt;      }&lt;br /&gt;      ,applyTo:'test-div'&lt;br /&gt;   });&lt;br /&gt;   buttonObject.on('mouseover', function(btn, evt) {&lt;br /&gt;      btn.setText("Cliquez-moi :o)");&lt;br /&gt;   });&lt;br /&gt;   buttonObject.on('mouseout', function(btn, evt) {&lt;br /&gt;      btn.setText("Nooon ici ! :o(");&lt;br /&gt;   });&lt;br /&gt;  });&lt;br /&gt;&amp;lt;/script&gt;&lt;br /&gt;&amp;lt;div id="test-div"/&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;&lt;a name="exemple3"&gt;-&lt;/a&gt;Exemple n°3 : création d'un évènement spécifique&lt;/h2&gt;&lt;br /&gt;Une fois le pas pris de coder en mode "évènementiel", de nombreux cas de figure ou applications viennent à l'esprit (si si), et se pose la question alors de gérer ses propres évènements fait maison.&lt;br /&gt;&lt;br /&gt;Voici un petit exemple simple (on ne demande que çà) qui va créer un évènement maison "troisclics" lorsque l'utilisateur en sera à son troisième clic sur le bouton.&lt;br /&gt;&lt;br /&gt;Dans un premier temps il faut déclarer l'évènement du composant : on utilise "addEvents"&lt;br /&gt;Dans un second temps on déclenche l'évènement : on utilise "fireEvent"&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;script type="text/javascript"&gt;&lt;br /&gt;Ext.onReady(function(){&lt;br /&gt;  var buttonObject = new Ext.Button({&lt;br /&gt;      id: 'monBeauButton'&lt;br /&gt;      ,nbclic: 0&lt;br /&gt;      ,text:'Cliquez moi'&lt;br /&gt;      ,handler:function() {&lt;br /&gt;        this.nbclic++;&lt;br /&gt;        if (this.nbclic == 3) {&lt;br /&gt;          this.fireEvent("troisclics", this);&lt;br /&gt;        }&lt;br /&gt;      }&lt;br /&gt;      ,applyTo:'test-div'&lt;br /&gt;   });&lt;br /&gt;   buttonObject.on('mouseover', function(btn, evt) {&lt;br /&gt;      btn.setText("Cliquez-moi :o)");&lt;br /&gt;   });&lt;br /&gt;   buttonObject.on('mouseout', function(btn, evt) {&lt;br /&gt;      btn.setText("Nooon ici ! :o(");&lt;br /&gt;   });&lt;br /&gt;   buttonObject.addEvents("troisclics");&lt;br /&gt;   //&lt;br /&gt;   // (...)&lt;br /&gt;   //&lt;br /&gt;   buttonObject.on('troisclics', function(btn) {&lt;br /&gt;     alert(' you do it 3 times !');&lt;br /&gt;   });&lt;br /&gt;  });&lt;br /&gt;&amp;lt;/script&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2610825294716456148-1385564167267169307?l=curiositedevie.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/CuriositeDeVie/~4/WBDcxao2-Sw" height="1" width="1"/&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2010-07-15T16:05:46.489+02:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://curiositedevie.blogspot.com/2010/07/extjs-la-gestion-des-evenements-les.html</feedburner:origLink></item><item><title>L'environnement en question</title><link>http://feedproxy.google.com/~r/CuriositeDeVie/~3/8AqW3l-u9Hw/lenvironnement-en-question.html</link><category>écologie</category><category>imprimante</category><author>noreply@blogger.com (Brice)</author><pubDate>Fri, 09 Jul 2010 03:39:36 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2610825294716456148.post-7923621411016815028</guid><description>L'environnement, la réduction du coût en CO², plus globalement la diminution de l'impact de nos consommations sur la planète, ...&lt;br /&gt;&lt;br /&gt;Toutes ces questions intéressent les entreprises parce qu'aujourd'hui on tente de réveiller la fibre économie/écologie en chacun de nous.&lt;br /&gt;&lt;br /&gt;Epson n'échappe pas à la règle en affichant clairement un programme environnement sur &lt;a href="http://www.epson.fr/Decouvrez-Epson/Environnement/1223291402627"&gt;epson.fr&lt;/a&gt; :&lt;br /&gt;&lt;blockquote&gt;Epson est engagé pour protéger l'environnement. Nous nous efforçons de créer des produits innovants qui soient fiables, recyclables et économes en énergie&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_rsIW5N5Xrvg/TDb71VlMw5I/AAAAAAAACA0/fJtx1fmCyNc/s1600/encreepson.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 289px;" src="http://2.bp.blogspot.com/_rsIW5N5Xrvg/TDb71VlMw5I/AAAAAAAACA0/fJtx1fmCyNc/s400/encreepson.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5491853689369707410" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Alors je me pose la question suivante : quelle est l'utilité de ce lien "imprimer cette fenêtre" présent sur la popup lorsque les cartouches sont vides ?&lt;br /&gt;  est-ce pour obtenir sur papier les 3 références de cartouche à acheter ? à moins peut-être que ce ne soit pour vider plus vite encore nos cartouches&lt;br /&gt;  et donc participer à ce programme !? ^^ &lt;br /&gt;&lt;br /&gt;Avez-vous une idée ?!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2610825294716456148-7923621411016815028?l=curiositedevie.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/CuriositeDeVie/~4/8AqW3l-u9Hw" height="1" width="1"/&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2010-07-09T12:39:36.219+02:00</app:edited><media:thumbnail url="http://2.bp.blogspot.com/_rsIW5N5Xrvg/TDb71VlMw5I/AAAAAAAACA0/fJtx1fmCyNc/s72-c/encreepson.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://curiositedevie.blogspot.com/2010/07/lenvironnement-en-question.html</feedburner:origLink></item><item><title>De la proximité terrain pour nos politiques...</title><link>http://feedproxy.google.com/~r/CuriositeDeVie/~3/-nnNd_MViWs/de-la-proximite-terrain-pour-nos.html</link><category>téléréalité</category><category>politique</category><author>noreply@blogger.com (Brice)</author><pubDate>Thu, 11 Feb 2010 07:11:32 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2610825294716456148.post-7965444661490950757</guid><description>En Angleterre, 4 députés se prêtent au jeu d'une nouvelle télé-réalité "active" en se plongeant au sein de familles vivant dans les HLM. &lt;br /&gt;&lt;br /&gt;Ils ne disposent que de 64,30 livres par semaine (env. 73€/sem) (&lt;a href="http://teleobs.nouvelobs.com/rubriques/teles-du-monde/articles/des-deputes-anglais-s-installent-dans-des-hlm"&gt;src&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;En France on a bien eu le journaliste Harry derrière les murs (&lt;a href="http://www.tf1.fr/harry-roselmack-derriere-les-murs-de-la-cite/"&gt;src&lt;/a&gt;) mais à quand un Nicolas, une Martine ou un François capable de se rapprocher du terrain à ce point ?&lt;br /&gt;&lt;br /&gt;:)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2610825294716456148-7965444661490950757?l=curiositedevie.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/CuriositeDeVie/~4/-nnNd_MViWs" height="1" width="1"/&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2010-02-11T16:11:32.821+01:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://curiositedevie.blogspot.com/2010/02/de-la-proximite-terrain-pour-nos.html</feedburner:origLink></item><item><title>Des cyclistes encore plus gênants ?</title><link>http://feedproxy.google.com/~r/CuriositeDeVie/~3/ydnr12uIdJk/des-cyclistes-encore-plus-genants.html</link><category>écologie</category><category>innovation</category><author>noreply@blogger.com (Brice)</author><pubDate>Mon, 16 Nov 2009 07:42:07 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2610825294716456148.post-5166553245645785569</guid><description>Des cyclistes encore plus gênants ? Oui en oubliant ce titre un peu provocateur, c'est ce que l'on peut lire dans &lt;a href="http://www.journaldunet.com/hightech/magazine/dossier/dans-la-ville-high-tech-de-demain/la-high-tech-a-la-rescousse-des-cyclistes-urbains.shtml"&gt;le dossier JDN de la Villes high-tech&lt;/a&gt; (source de l'info sur &lt;a href="http://www.ecofriend.org/entry/eco-gadgets-self-powered-laser-makes-bicycling-safe/"&gt;ecofriend.org&lt;/a&gt;.)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Une bonne idée que d'ajouter autour du cycliste un halo lumineux avec un capteur de distance. Le système est alimenté par une dynamo.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://www.instablogsimages.com/images/2009/04/23/manavella-1_cqlEj_69.jpg" border="0" alt="" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Cerise sur le gâteau : si l'automobiliste se rapproche de trop, alors le système klaxonne !&lt;br /&gt;&lt;br /&gt;&lt;img src="http://www.instablogsimages.com/images/2009/04/23/manavella-2_xpa19_69.jpg" border="0" alt="" /&gt;&lt;br /&gt;&lt;br /&gt;Sous réserve que les cyclistes respectent le code de la route... cette innovation semble prometeuse.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2610825294716456148-5166553245645785569?l=curiositedevie.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/CuriositeDeVie/~4/ydnr12uIdJk" height="1" width="1"/&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-16T16:42:07.767+01:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://curiositedevie.blogspot.com/2009/11/des-cyclistes-encore-plus-genants.html</feedburner:origLink></item><item><title>ExtJS - Ext.data.Store - traitement d'exception pour un service JSON</title><link>http://feedproxy.google.com/~r/CuriositeDeVie/~3/1ecZQTU63Gw/extjs-extdatastore-traitement.html</link><category>JavaScript</category><category>développement</category><category>RIA</category><author>noreply@blogger.com (Brice)</author><pubDate>Fri, 13 Nov 2009 00:51:08 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2610825294716456148.post-247485377801900922</guid><description>Aujourd'hui, voici un mini tutoriel permettant de comprendre comment gérer un retour en erreur pour un appel de service JSON depuis un client JavaScript utilisant &lt;a href="http://www.extjs.com"&gt;ExtJS&lt;/a&gt; &lt;sup&gt;&lt;a href="http://www.extjs.com/deploy/dev/docs/"&gt;API doc.&lt;/a&gt;&lt;/sup&gt;.&lt;br /&gt;&lt;br /&gt;Personnellement, je trouve qu'ExtJS est assez bien documenté pour les cas nominaux, mais manque cruellement d'exemples dans le cas des traitements d'exception. C'est dommage car on le sait bien, les cas nominaux ne sont pas toujours au rendez-vous ;)&lt;br /&gt;&lt;br /&gt;Dans ce mini tutoriel, un service "getUsers" permet de retourner une liste d'utilisateurs (il peut être implémenté en PHP par exemple, mais ce n'est pas l'objet de ce tutorial).&lt;br /&gt;&lt;br /&gt;Voici un exemple de retour fait par ce service lorsqu'aucune erreur ne survient :&lt;pre style="background-color:lightgrey;"&gt;{&lt;br /&gt; "results":4,&lt;br /&gt; "rows": &lt;br /&gt;  [{"id":"1",&lt;br /&gt;    "login":"brice",&lt;br /&gt;    "date_inscription":"2009-02-10 14:20:00",&lt;br /&gt;    "fullname":"Brice"},&lt;br /&gt;   {"id":"10",&lt;br /&gt;    "login":"toto",&lt;br /&gt;    "date_inscription":"2009-10-28 08:10:00",&lt;br /&gt;    "fullname":"toto"},&lt;br /&gt;   {"id":"11",&lt;br /&gt;    "login":"toto2",&lt;br /&gt;    "date_inscription":"2009-10-28 08:10:00",&lt;br /&gt;    "fullname":"toto2"},&lt;br /&gt;   {"id":"13",&lt;br /&gt;    "login":"toto4",&lt;br /&gt;    "date_inscription":"2009-10-28 09:10:00",&lt;br /&gt;    "fullname":"toto4"}],&lt;br /&gt; "success":true&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;i&gt;A noter : dans cet exemple, 4 utilisateurs sont retournés sous le noeud "rows", et la propriété "success" vaut "true".&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Voici le retour du même service lorsqu'une erreur survient (ie. Base de donnée injoignable) :&lt;pre style="background-color:lightgrey;"&gt;{&lt;br /&gt; "results":1,&lt;br /&gt; "success":false,&lt;br /&gt; "errors":[&lt;br /&gt;  {"id":"500",&lt;br /&gt;   "msg":"Erreur de connexion à la base de donnée."&lt;br /&gt;  }]&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;i&gt;A noter : dans cet exemple, 1 exception a été levée et traduite sous la forme d'un message d'erreur (id="500", msg="Erreur de connexion à la base de donnée."), et la propriété "success" vaut "false".&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Voici maintenant comment gérer ces 2 types de retour côté client à l'aide d'ExtJS :&lt;pre style="background-color:lightgrey;"&gt;var dateFormat = 'Y-m-d G:i:s';&lt;br /&gt;// ancienne valeur par defaut : 'm/d/Y'&lt;br /&gt;// dateFormat correspond a une date &lt;br /&gt;// de la forme : "2009-10-28 10:10:00"&lt;br /&gt;&lt;br /&gt;var myStore = new Ext.data.Store({&lt;br /&gt;    url: 'http://localhost/getUsers.php5', // URL du service JSON&lt;br /&gt;    title: 'TOTO',&lt;br /&gt;    reader: new Ext.data.JsonReader({ // Reader JSON&lt;br /&gt;      idProperty: 'id',&lt;br /&gt;      root: 'rows',             &lt;br /&gt;      totalProperty: 'results', &lt;br /&gt;      successProperty:'success',&lt;br /&gt;      fields: [&lt;br /&gt;          {name: 'id'},&lt;br /&gt;          {name: 'login'},&lt;br /&gt;          {name: 'date_inscription',&lt;br /&gt;           type: 'date',&lt;br /&gt;           dateFormat: dateFormat},&lt;br /&gt;          {name: 'fullname'}&lt;br /&gt;      ]&lt;br /&gt;    })&lt;br /&gt;});&lt;br /&gt;&lt;/pre&gt;&lt;i&gt;A noter : dans cet exemple, on déclare l'Ext.data.Store&lt;sup&gt;&lt;a href="http://www.extjs.com/deploy/dev/docs/source/Store.html#cls-Ext.data.Store"&gt;doc&lt;/a&gt;&lt;/sup&gt; "myStore" qui va faire appel au service ('getUsers.php5'), et va lire le résultat grâce à un analyseur JSON (JSONReader&lt;sup&gt;&lt;a href="http://www.extjs.com/deploy/dev/docs/source/JsonReader.html#cls-Ext.data.JsonReader"&gt;doc&lt;/a&gt;&lt;/sup&gt;). La lecture sera considérée comme un succès si la propriété "success" vaut "true". La manière d'interpréter les différents champs est également décrite.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;On va également implémenter un analyseur JSON (JSONReader) capable d'interpréter un retour en erreur :&lt;pre style="background-color:lightgrey;"&gt;var errorReader = new Ext.data.JsonReader({&lt;br /&gt;      idProperty: 'id',&lt;br /&gt;      root: 'errors',&lt;br /&gt;      totalProperty: 'results', &lt;br /&gt;      fields: [&lt;br /&gt;          {name: 'id'},&lt;br /&gt;          {name: 'msg'}&lt;br /&gt;      ]&lt;br /&gt;  });&lt;/pre&gt;&lt;i&gt;A noter : dans cet exemple, la structure JSON lue doit posséder le nombre d'erreur sous "results" et les différentes erreurs sous la racine "errors". Ici une erreur comporte 2 champs : un "id" et un "msg".&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Il convient ensuite de déclarer une méthode de traitement d'erreur de la manière suivante :&lt;pre style="background-color:lightgrey;"&gt;myStore.on('exception', usrException);&lt;br /&gt;&lt;/pre&gt;&lt;i&gt;A noter : dans cet exemple, on indique pour myStore que sur réception de l'évènement "exception", un appel à la méthode "usrException(...)" doit être fait. Dans la version 3 d'ExtJS&lt;sup&gt;&lt;a href="http://www.extjs.com/deploy/dev/docs/#Ext.data.Store-events"&gt;doc&lt;/a&gt;&lt;/sup&gt;, l'évènement "loadexception" est indiqué comme obsolète (deprecated) et ne doit donc plus être utilisé.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Voici maintenant comment interpréter le retour en erreur lors de l'appel au service :&lt;pre style="background-color:lightgrey;"&gt;function usrException(dataProxy, type, action, options, response) {&lt;br /&gt;  // alert('usrException type=' + type &lt;br /&gt;  //     + ' action=' + action &lt;br /&gt;  //     + ' response.status=' + response.status);&lt;br /&gt;  if (type == 'response' &amp;&amp; action == 'read' &amp;&amp; response.status == 200) {&lt;br /&gt;    var rs = errorReader.read(response);&lt;br /&gt;    if(rs.records) {&lt;br /&gt;      for(var i = 0, len = rs.records.length; i &lt; len; i++) {&lt;br /&gt;        var r = rs.records[i];&lt;br /&gt;        alert("Erreur de chargement ERR"&lt;br /&gt;              + r.data.id + ":" + r.data.msg);&lt;br /&gt;      }&lt;br /&gt;    }&lt;br /&gt;  } else if (type == 'response' &amp;&amp; action == 'read') {&lt;br /&gt;      alert("Connexion impossible au serveur ("&lt;br /&gt;            + response.status +")");&lt;br /&gt;  }&lt;br /&gt;}&lt;/pre&gt;&lt;i&gt;A noter : dans cet exemple, on traite un cas d'erreur sur lecture du résultat. On utilise l'analyseur d'erreur précédemment évoqué pour interpréter le retour d'erreur de service en JSON et afficher une alerte sur chaque erreur lue.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Enfin, il ne manque plus que l'appel à "myStore" permettant de lancer le service :&lt;pre style="background-color:lightgrey;"&gt;myStore.load();&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Si l'appel au service "getUsers" se passe correctement, alors le store pourra afficher le resultat au sein d'un Ext.grid.GridPanel par exemple, sinon la méthode "usrException" sera invoquée.&lt;br /&gt;&lt;br /&gt;Ce mini tutoriel peut sûrement être complété, ou bien si vous avez une autre solution, je suis preneur !&lt;br /&gt;&lt;br /&gt;En attendant, à vous de jouer!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2610825294716456148-247485377801900922?l=curiositedevie.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/CuriositeDeVie/~4/1ecZQTU63Gw" height="1" width="1"/&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-13T09:51:08.169+01:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><feedburner:origLink>http://curiositedevie.blogspot.com/2009/11/extjs-extdatastore-traitement.html</feedburner:origLink></item><item><title>HTML, IE : window.onload et menu fixe</title><link>http://feedproxy.google.com/~r/CuriositeDeVie/~3/RqI6MB2lZt0/html-ie-windowonload-et-menu-fixe.html</link><category>JavaScript</category><category>IE</category><category>HTML</category><author>noreply@blogger.com (Brice)</author><pubDate>Fri, 06 Nov 2009 02:58:59 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2610825294716456148.post-5181187121719995259</guid><description>Bonjour,&lt;br /&gt; alors aujourd'hui, je vais faire un petit peu de publicité pour 2 sites qui permettent de répondre encore une fois à la problématique de compatibilité entre navigateurs.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;window.onload&lt;/span&gt;&lt;br /&gt; Ce premier point concerne l'appel à une méthode JavaScript lorsqu'une page HTML a été complètement chargée par le navigateur. Je pensais (trop naïvement) que "window.onload" était assez standard pour passer sur tous les navigateurs... ! Et bien il semble que non !&lt;br /&gt;&lt;br /&gt; Alors pour résoudre ce problème, rendez-vous sur &lt;a href="http://dean.edwards.name/weblog/2005/09/busted/"&gt;ce post de septembre 2005&lt;/a&gt; qui m'a été fort utile..&lt;br /&gt;&lt;br /&gt; Vous y trouverez le code à copier dans le HEAD :&lt;br /&gt;&lt;pre style="background-color: lightgrey"&gt;&lt;br /&gt;    &amp;lt;script type="text/javascript"&gt;&lt;br /&gt;       /* for Mozilla */&lt;br /&gt;       if (document.addEventListener) {&lt;br /&gt;           document.addEventListener("DOMContentLoaded", init, false);&lt;br /&gt;       }&lt;br /&gt;    &lt;br /&gt;       /* for Internet Explorer */&lt;br /&gt;       /*@cc_on @*/&lt;br /&gt;       /*@if (@_win32)&lt;br /&gt;           document.write("&amp;lt;script defer src=js/ie_onload.js&gt;&amp;lt;"+"/script&gt;");&lt;br /&gt;       /*@end @*/&lt;br /&gt;    &lt;br /&gt;       /* for other browsers */&lt;br /&gt;       window.onload = init;&lt;br /&gt;&lt;br /&gt;       function init() {&lt;br /&gt;            alert('ok');&lt;br /&gt;       }&lt;br /&gt;    &amp;lt;/script&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Dans cet exemple, il vous faut également mettre la ligne suivante dans le fichier "js/ie_onload.js" :&lt;br /&gt;&lt;pre style="background-color: lightgrey"&gt;&lt;br /&gt; init();&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;menu fixe&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Aujourd'hui, j'ai également découvert une page relatant le problème souvent évoqué que de faire pour une page Web, une portion de page fixe (ie. un menu) quelquesoit le contenu et la position de l'ascenseur.&lt;br /&gt;&lt;br /&gt;Rendez-vous sur &lt;a href="http://css-astuces.batraciens.net/zone-fixe-1.htm"&gt;cette page&lt;/a&gt; composante du &lt;a href="http://css-astuces.batraciens.net/"&gt;site de batra3&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Ses exemples fonctionnent également sous IE. A priori la parade trouvée ne devait pas être simple ! merci à lui!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2610825294716456148-5181187121719995259?l=curiositedevie.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/CuriositeDeVie/~4/RqI6MB2lZt0" height="1" width="1"/&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-06T11:58:59.564+01:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total><feedburner:origLink>http://curiositedevie.blogspot.com/2009/11/html-ie-windowonload-et-menu-fixe.html</feedburner:origLink></item><item><title>Nouveau style du blog</title><link>http://feedproxy.google.com/~r/CuriositeDeVie/~3/Dprj-02LmVk/nouveau-style-du-blog.html</link><category>blog</category><author>noreply@blogger.com (Brice)</author><pubDate>Thu, 29 Oct 2009 07:08:37 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2610825294716456148.post-563003614014915608</guid><description>Aujourd'hui j'ai enfin pris le temps de modifier le thème de présentation de ce blog !&lt;br /&gt;(ce n'est pas une mince affaire étant donné mes goûts en terme d'Art &amp;amp; Déco ;)&lt;br /&gt;&lt;br /&gt;Pour ce faire, j'ai donc fait un tour chez mon ami Google pour lui demander comment faire : recherche de "&lt;a href="http://www.google.fr/search?hl=fr&amp;amp;q=blogger+template"&gt;blogger template&lt;/a&gt;".&lt;br /&gt;&lt;br /&gt;Je prends le premier résultat : &lt;a href="http://btemplates.com/"&gt;http://btemplates.com&lt;/a&gt; : un site référençant de nombreux modèles pour les [B]loggeurs : pour chaque modèle vous retrouvez une petite archive à télécharger ainsi qu'une petite démo : très utile !&lt;br /&gt;&lt;br /&gt;J'ai donc navigué au moins jusque la page 31 pour y trouver le modèle &lt;a href="http://btemplates.com/2009/06/02/bcute/"&gt;BCute&lt;/a&gt;...&lt;br /&gt;Qu'en dites vous !?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Voici comment l'installer :&lt;br /&gt;-Rendez-vous sur votre blog sur la page de mise en page :&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_rsIW5N5Xrvg/SumbidXZjuI/AAAAAAAAB34/NX_joMnltS0/s1600-h/bloggerTemplate.JPG"&gt;&lt;img style="cursor: pointer; width: 400px; height: 143px;" src="http://2.bp.blogspot.com/_rsIW5N5Xrvg/SumbidXZjuI/AAAAAAAAB34/NX_joMnltS0/s400/bloggerTemplate.JPG" alt="" id="BLOGGER_PHOTO_ID_5398016644680879842" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;- Sélectionner le menu "Modifier le code HTML".&lt;br /&gt;- Vous y trouverez en haut de page un lien pour télécharger le modèle actuellement utilisé par votre blog ainsi qu'un formulaire permettant d'envoyer votre nouveau modèle.&lt;br /&gt;- Téléchargez le modèle dans son intégralité : cette action téléchargera le modèle XML actuellement utilisé par votre blog.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Attention&lt;/b&gt; : l'action suivante peut entraîner la perte de certaines informations concernant vos gadgets utilisés. Ne procédez à l'installation d'un nouveau modèle que si vous êtes capables de ré ajouter les gadgets utiles.&lt;br /&gt;&lt;br /&gt;- Dans l'archive que vous avez récupéré de btemplates, sélectionnez sur votre disque dur via "Parcourir..." le fichier XML (ie. Bcute.xml). Et cliquez sur "Tranférer" !&lt;br /&gt;&lt;br /&gt;Bingo, votre blog adopte desormais une nouvelle présentation !&lt;br /&gt;&lt;br /&gt;Il reste quand même quelques personnalisations à apporter. Pour cela, il faut un peu fouiner dans le code HTML/CSS... Sur ce point, je pense que google peut encore améliorer les modèles.&lt;br /&gt;&lt;br /&gt;Voici quelques astuces pour personnaliser son modèle :&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;Pub google&lt;/b&gt; Réajoutez la publicité grace à l'onglet "Monétisation" (NDLR : heu j'ai mis çà moi aussi mais je n'ai encore rien gagné ;))) &lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;Stats GG Analytics&lt;/b&gt; pour retrouver le code HTML à ajouter dans votre blog avant "&amp;lt;/body&amp;gt;", retournez faire un tour sur &lt;a href="https://www.google.com/analytics/"&gt;Google Analytics&lt;/a&gt; et cliquez sur le lien "Modifier" correspondant à votre site. Puis cliquez sur "Vérifier l'état".&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;Partage GG Reader&lt;/b&gt; pour retrouver votre liste de partage &lt;a href="http://www.google.fr/reader"&gt;Google Reader&lt;/a&gt; incluant vos commentaires, rendez-vous dans les préférences de google reader, cliquez sur l'onglet "Dossiers et tags" puis "ajouter un extrait à votre site" de votre "liste de partage".&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;Gadget iGoogle personnalisé&lt;/b&gt; Pour ajouter un gadget iGoogle à votre blog, il suffit dans "Mise en page" / "Éléments de la page" d'"ajouter un gadget". Sélectionnez "HTML/JavaScript". Ensuite vous pouvez y coller un code de votre création ou bien le code fournit par &lt;a href="http://www.gmodules.com/ig/creator?synd=open&amp;url=http%3A//wikipen-gadgets.googlecode.com/svn/wikipen.xml"&gt;cette page permettant l'ajout d'un gadget iGoogle (ie. Wikipen Gadget)&lt;/a&gt; à un site web.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Si le nuage de mots clés de votre blog ne s'affiche plus comme un nuage mais toujours comme une liste, voici le bout de CSS à rajouter (ici "Label1" correspond à l'identifiant de mon gadget comportant les mots-clés) :&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;/* PUCES */&lt;br /&gt;#Label1 li {&lt;br /&gt;padding:2px;&lt;br /&gt;list-style: none;&lt;br /&gt;float:left;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2610825294716456148-563003614014915608?l=curiositedevie.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/CuriositeDeVie/~4/Dprj-02LmVk" height="1" width="1"/&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-29T15:08:37.883+01:00</app:edited><media:thumbnail url="http://2.bp.blogspot.com/_rsIW5N5Xrvg/SumbidXZjuI/AAAAAAAAB34/NX_joMnltS0/s72-c/bloggerTemplate.JPG" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><feedburner:origLink>http://curiositedevie.blogspot.com/2009/10/nouveau-style-du-blog.html</feedburner:origLink></item><item><title>Copier du XML dans un textarea (sous IE6)</title><link>http://feedproxy.google.com/~r/CuriositeDeVie/~3/3G8n5XUX7Is/copier-du-xml-dans-un-textarea-sous-ie6.html</link><category>JavaScript</category><category>IE</category><author>noreply@blogger.com (Brice)</author><pubDate>Thu, 29 Oct 2009 03:39:05 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2610825294716456148.post-1223091863485421975</guid><description>Voici un petit bout de code JavaScript :&lt;br /&gt;- il permet de copier un contenu XML (présent sous une balise &amp;lt;pre&gt;) dans un textarea&lt;br /&gt;- (surtout) il est compatible IE6 !&lt;br /&gt;&lt;br /&gt;// Teste sur Firefox et IE6 //&lt;br /&gt;&lt;br /&gt;&lt;hr/&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;br /&gt;// FIX de getElementById(...) pour MSIE&lt;br /&gt;// &lt;a href="http://labs.pimsworld.org/2009/02/bug-de-la-methode-getelementbyid-dans-ie6-une-solution/"&gt;src&lt;/a&gt;&lt;br /&gt;if (/msie/i.test (navigator.userAgent)) {&lt;br /&gt;  document.nativeGetElementById = document.getElementById;&lt;br /&gt;  document.getElementById = function(id) {&lt;br /&gt;    // Get element using native method&lt;br /&gt;    var elem = document.nativeGetElementById(id);&lt;br /&gt;    if (elem) {&lt;br /&gt;      // If id match, return element&lt;br /&gt;      if (elem.attributes['id'].value == id) {&lt;br /&gt;        return elem;&lt;br /&gt;      }&lt;br /&gt;      // Otherwise look for the right one&lt;br /&gt;      else {&lt;br /&gt;        for (var i = 1; i &lt; document.all[id].length; i++)&lt;br /&gt;        {&lt;br /&gt;          if (document.all[id][i].attributes['id'].value == id)&lt;br /&gt;          {&lt;br /&gt;            return document.all[id][i];&lt;br /&gt;          }&lt;br /&gt;        }&lt;br /&gt;      }&lt;br /&gt;    }&lt;br /&gt;    return null;&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;// Mise a jour d'un textarea avec le contenu d'un &amp;lt;pre&gt;&lt;br /&gt;&lt;br /&gt;var scPRE = document.getElementById('idBalisePreComportantDuXML');&lt;br /&gt;var editTA = document.getElementById('idTextArea');&lt;br /&gt;if (/msie/i.test (navigator.userAgent)) {&lt;br /&gt;  // FIX IE6 Textarea CR bug&lt;br /&gt;  editTA.value = "";&lt;br /&gt;  editTA.setAttribute("value" , scPRE.innerText ) ;&lt;br /&gt;} else {&lt;br /&gt;  editTA.innerHTML = scPRE.innerHTML;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2610825294716456148-1223091863485421975?l=curiositedevie.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/CuriositeDeVie/~4/3G8n5XUX7Is" height="1" width="1"/&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-29T11:39:05.786+01:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://curiositedevie.blogspot.com/2009/10/copier-du-xml-dans-un-textarea-sous-ie6.html</feedburner:origLink></item><item><title>Monopoly City Streets restart</title><link>http://feedproxy.google.com/~r/CuriositeDeVie/~3/SUhK8NRVhzg/monopoly-city-streets-restart.html</link><category>jeu</category><category>google</category><author>noreply@blogger.com (Brice)</author><pubDate>Fri, 18 Sep 2009 09:41:45 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2610825294716456148.post-6542477241869312182</guid><description>Après quelques jours de jeu seulement, Le Monopoly made in Google redémarre...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Il est vrai que j'avais, petit testeur que je suis, remarqué quelques petits problèmes notamment d'un de mes adversaires nommé ARCOCOMPTABILITE possédant certaines rues impossibles à afficher et vous affligeant de 5 bâtiments nuisibles par jour..&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Je conserve une copie du message version "francisée" nous expliquant leur tragique situation... Je le trouve plutôt remarquable..!&lt;br /&gt;&lt;br /&gt;Bon allez les gars réveillez vous ! ;)&lt;br /&gt;&lt;br /&gt;Liens utiles :&lt;br /&gt;&lt;a href="http://www.monopolycitystreets.com"&gt;le jeu&lt;/a&gt; - &lt;a href="http://blog.monopolycitystreets.com/"&gt;le blog&lt;/a&gt; - &lt;a href="http://www.monopolycitystreets-fr.com/"&gt;Forum FR&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;NDLR : le jeu est à nouveau disponible.&lt;br /&gt;&lt;br /&gt;&lt;hr/&gt;&lt;br /&gt;&lt;br /&gt;&lt;div id="copy"&gt;&lt;br /&gt;                &lt;p class="first"&gt;On est entraint de preparer le redemarage de MONOPOLY City Streets.&lt;/p&gt;&lt;br /&gt;                &lt;p&gt;Lorsque nous avons lancé MONOPOLY City Streets la semaine dernière, nous étions ravis que autant d'entre vous avez voulu vous essayer à la domination globale de l'immobilier. Comme beaucoup d'entre vous ont eu l’expérience, la ruée initiale a rendu les serveurs plus lents, qui à son tour, fourni des données hasardées. Vous avons également découvert quelques problèmes pendant que vous appreniez le jeu et nous avons travaillé fort pour corriger ces problèmes.&lt;/p&gt;&lt;br /&gt;                &lt;p&gt;Mais, nous ne redémarreront pas simplement le jeu. Nous avons apporté quelques améliorations à la façon de jouer que nous pensons vont résoudre plusieurs des vos préoccupations que vous aviez porté à notre attention pendant que vous avez joué le jeu.&lt;/p&gt;&lt;br /&gt;                &lt;p&gt;Ce redémarrage signifie que tout le monde recommence avec $3 millions et un monde à découvrir. Nous espérons que vous réussirez à acheter la rue qui est au cœur de votre future empire immobilier et que vous en profiterez d'acheter, construire et négocier comme vous le pouvez dans le nouveau jeu de société Monopoly City.&lt;/p&gt;&lt;br /&gt;                &lt;p&gt;Nous serons bientôt de retour.&lt;/p&gt;&lt;br /&gt;                &lt;a href="http://blog.monopolycitystreets.com/" class="blog"&gt;Veuillez venir découvrir toutes les nouvelles sur notre blog&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;            &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2610825294716456148-6542477241869312182?l=curiositedevie.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/CuriositeDeVie/~4/SUhK8NRVhzg" height="1" width="1"/&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-18T18:41:45.514+02:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://curiositedevie.blogspot.com/2009/09/monopoly-city-streets-restart.html</feedburner:origLink></item><item><title>Axis : No serializer found for class java.lang.Class</title><link>http://feedproxy.google.com/~r/CuriositeDeVie/~3/4rvLmEhOIFw/axis-no-serializer-found-for-class.html</link><category>Serializer</category><category>Java</category><category>Axis</category><author>noreply@blogger.com (Brice)</author><pubDate>Thu, 15 Jul 2010 05:41:53 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2610825294716456148.post-8962618971848454726</guid><description>Juste un petit post (encore bien moins intéressant que le précédent!) pour mémoire...&lt;br /&gt;&lt;br /&gt;Lorsqu'on tente de sérialiser un objet Java avec un serveur Axis 1.4 (pour un Web Service); &lt;br /&gt;&lt;br /&gt;on peut tomber sur l'exception suivante :&lt;br /&gt;&lt;pre style="font-size:10px;color:black;background-color:grey;"&gt;&lt;br /&gt;13:47:33 WARN AttachmentsImpl: Exception:&lt;br /&gt;AxisFault&lt;br /&gt; faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException&lt;br /&gt; faultSubcode:&lt;br /&gt; faultString: java.io.IOException: No serializer found for class java.lang.Class in registry org.apache.axis.encoding.TypeMappingDelegate@16e22da&lt;br /&gt; faultActor:&lt;br /&gt; faultNode:&lt;br /&gt; faultDetail:&lt;br /&gt;        {http://xml.apache.org/axis/}stackTrace:java.io.IOException: No serializer found for class java.lang.Class in registry org.apache.axis.encoding.TypeMappingDelegate@16e22da&lt;br /&gt;        at org.apache.axis.encoding.SerializationContext.serializeActual(SerializationContext.java:1507)&lt;br /&gt;        at org.apache.axis.encoding.SerializationContext.serialize(SerializationContext.java:980)&lt;br /&gt;        at org.apache.axis.encoding.SerializationContext.outputMultiRefs(SerializationContext.java:1055)&lt;br /&gt;        at org.apache.axis.message.SOAPBody.outputImpl(SOAPBody.java:145)&lt;br /&gt;        at org.apache.axis.message.SOAPEnvelope.outputImpl(SOAPEnvelope.java:478)&lt;br /&gt;        at org.apache.axis.message.MessageElement.output(MessageElement.java:1208)&lt;br /&gt;        at org.apache.axis.SOAPPart.writeTo(SOAPPart.java:315)&lt;br /&gt;        at org.apache.axis.SOAPPart.writeTo(SOAPPart.java:269)&lt;br /&gt;        at org.apache.axis.SOAPPart.saveChanges(SOAPPart.java:530)&lt;br /&gt;        at org.apache.axis.attachments.AttachmentsImpl.getAttachmentCount(AttachmentsImpl.java:554)&lt;br /&gt;        at org.apache.axis.Message.getContentType(Message.java:486)&lt;br /&gt;        at org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:775)&lt;br /&gt;        at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)&lt;br /&gt;        at org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:327)&lt;br /&gt;        at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)&lt;br /&gt;        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)&lt;br /&gt;        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)&lt;br /&gt;        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)&lt;br /&gt;        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)&lt;br /&gt;        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:433)&lt;br /&gt;        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)&lt;br /&gt;        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)&lt;br /&gt;        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)&lt;br /&gt;        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)&lt;br /&gt;        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:874)&lt;br /&gt;        at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)&lt;br /&gt;        at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)&lt;br /&gt;        at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)&lt;br /&gt;        at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)&lt;br /&gt;        at java.lang.Thread.run(Thread.java:636)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Une recherche Google sur la phrase exacte "No serializer found for class java.lang.Class" ne donnant qu'un seul résultat peu explicite, je note ici pourquoi j'ai rencontré cette erreur.&lt;br /&gt;&lt;br /&gt;Généralement, si c'est une classe ordinaire que le serveur n'a pas réussi à sérialiser, c'est que la définition du type est manquante dans le descripteur de déploiement (fichier .wsdd). Mais ici, l'erreur indique que le serveur n'arrive pas à sérialiser un objet "Class" !&lt;br /&gt;&lt;br /&gt;Dans mon cas de figure, l'objet que je tentait de sérialiser comportait une énumération. Et voici, ci dessous comment rédiger un "Custom Serializer" pour une Enum Java :&lt;br /&gt;&lt;pre style="font-size:10px; color:black;background-color:grey;"&gt;&lt;br /&gt;    /**&lt;br /&gt;     * Get Custom Serializer&lt;br /&gt;     */&lt;br /&gt; public static org.apache.axis.encoding.Serializer getSerializer(&lt;br /&gt;           java.lang.String mechType, &lt;br /&gt;           java.lang.Class _javaType,  &lt;br /&gt;           javax.xml.namespace.QName _xmlType) {&lt;br /&gt;     log.debug("getSerializer(...)");&lt;br /&gt;        return &lt;br /&gt;          new  org.apache.axis.encoding.ser.EnumSerializer(_javaType, _xmlType); // , typeDesc);&lt;br /&gt;          // new  org.apache.axis.encoding.ser.BeanSerializer(_javaType, _xmlType, typeDesc);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * Get Custom Deserializer&lt;br /&gt;     */&lt;br /&gt; public static org.apache.axis.encoding.Deserializer getDeserializer(&lt;br /&gt;           java.lang.String mechType, &lt;br /&gt;           java.lang.Class _javaType,  &lt;br /&gt;           javax.xml.namespace.QName _xmlType) {&lt;br /&gt;        return &lt;br /&gt;          new org.apache.axis.encoding.ser.EnumDeserializer(_javaType, _xmlType);&lt;br /&gt;          // new  org.apache.axis.encoding.ser.BeanDeserializer(_javaType, _xmlType, typeDesc);&lt;br /&gt;    } &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Vous remarquerez que la ligne en commentaire correspond à un "Serializer" de Classe Java, ici remplacé par un "Serializer" pour une Enum.&lt;br /&gt;&lt;br /&gt;&lt;hr&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Ajout du 15/07/2010 :&lt;/span&gt; après avoir reçu ce jour une question sur comment sérialiser un objet comportant un type Enum (JDK 5), j'ai regardé le projet sur lequel j'avais travaillé à l'époque. &lt;br /&gt;&lt;br /&gt;Et .. j'étais finalement revenu sur l'utilisation du type Enum : semble-t-il un type trop "spécifique" pour le traitement générique par Axis. J'avais alors remplacé les classes type Enum par des classes simples (donc utilisé au final un BeanSerializer).&lt;br /&gt;&lt;br /&gt;Tout çà pour dire que l'exemple cité dans le post ci-dessus n'est certainement pas le mieux choisi (si je reçois un jour la solution, je l'ajouterai..).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2610825294716456148-8962618971848454726?l=curiositedevie.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/CuriositeDeVie/~4/4rvLmEhOIFw" height="1" width="1"/&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2010-07-15T14:41:53.265+02:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://curiositedevie.blogspot.com/2009/05/axis-no-serializer-found-for-class.html</feedburner:origLink></item><item><title>Tomcat et la fameuse "OutOfMemoryError : PermGen space"</title><link>http://feedproxy.google.com/~r/CuriositeDeVie/~3/R1Oeyd8qK1A/tomcat-et-la-fameuse-outofmemoryerror.html</link><category>Java</category><category>Mémoire</category><category>Tomcat</category><category>WebApp</category><author>noreply@blogger.com (Brice)</author><pubDate>Thu, 29 Oct 2009 06:01:29 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2610825294716456148.post-8999959257348836966</guid><description>&lt;span style="font-size:12px"&gt;&lt;br /&gt;&lt;h3&gt;Qu’appelle-t-on "OutOfMemoryError : PermGen space" ?&lt;/h3&gt;&lt;br /&gt;&lt;br /&gt;Cette erreur se rencontre lorsque l'espace de la mémoire permanente (PermGen) de la machine virtuelle Java (JVM) a atteint son niveau maximum (ie. sur une JVM Sun).&lt;br /&gt;&lt;br /&gt;Les définitions de classe sont stockées au sein de la mémoire permanente. Cette erreur est levée lorsque l'espace restant n'est plus suffisant pour accueillir les nouvelles définitions de classe à charger.&lt;br /&gt;&lt;br /&gt;NB: les instances sont stockées dans une zone mémoire différente ("Heap" space) qui correspond à une autre erreur.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Quand rencontre-t-on une "OutOfMemoryError : PermGen space" ?&lt;/h3&gt;&lt;br /&gt;&lt;br /&gt;On rencontre par exemple cette erreur après de multiples redéploiements d'une WebApp Tomcat comportant des "fuites" mémoire... On va redéployer la WebApp 10 fois sans problème, puis on perd Tomcat à la 11ième à cause de cette erreur. Bien souvent cette erreur pose de sérieux problèmes en production où la tendance est plutôt à redémarrer Tomcat tous les soirs pour éviter tout problème (plutôt que de corriger les soucis de fuites).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Un &lt;a href="http://mediacast.sun.com/users/Frank.Kieviet/media/JavaOne07-BOF9982-PermGen.pdf"&gt;excellent papier&lt;/a&gt; rédigé par Franck Kieviet (en anglais, mais très visuel ;) ) explique comment se provoque une fuite mémoire (ie. déchargement impossibles d'objets/de définitions de classes) et cite les exemples les plus courants de fuites mémoire : &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&lt;i&gt;&lt;quote&gt;Dangling thread, Commons logging, java.util.logging.Level, Thread context classloader, new Thread(), Bean util, Details, SQL Driver &lt;/quote&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Quels sont les symptômes d'une "OutOfMemoryError : PermGen space"  ?&lt;/h3&gt;&lt;br /&gt;&lt;br /&gt;Peut-être ne l'avez-vous jamais rencontré, alors comment savoir si votre WebApp est sujette aux fuites de mémoire (donc à terme à cette erreur) ?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Des outils permettent de visualiser l'occupation des différents espaces mémoire :&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;&lt;b&gt;JConsole&lt;/b&gt; : application visuelle qui se rattache à une JVM (un process Java) et qui (entre autres nombreuses fonctionnalités) affiche les courbes : espace occupé par les données (heap), nombre de définitions de classes actuellement en mémoire, total du nombre de classes chargées et déchargées depuis le lancement de JConsole, nombre de thread, etc..&lt;/li&gt; &lt;br /&gt; &lt;li&gt;&lt;b&gt;jmap&lt;/b&gt; : un outil qui se rattache également à une JVM et qui est capable (entre autres) de faire des extractions de la mémoire pour en ressortir des statistiques (ie. liste des définitions de classes en mémoire). Jmap permet également de faire un dump de cette mémoire pour jhat.&lt;/li&gt;&lt;br /&gt; &lt;li&gt;&lt;b&gt;jhat&lt;/b&gt; : un outil capable de lire un dump créé par jmap et de créer un mini serveur Web pour naviguer dans cette mémoire (utilisateurs avertis!!).&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Pour visualiser le problème, je conseille &lt;b&gt;JConsole&lt;/b&gt;&lt;sup&gt;&lt;a href="http://java.sun.com/developer/technicalArticles/J2SE/jconsole.html"&gt;article de sun (en)&lt;/a&gt;&lt;/sup&gt;. &lt;br /&gt;&lt;br /&gt;&lt;h4&gt;Mais comment utiliser JConsole ? &lt;/h4&gt;&lt;br /&gt;&lt;br /&gt;Il faut autoriser JConsole à pouvoir se rattacher à la JVM à osculter. &lt;br /&gt;&lt;br /&gt;Comment ? voici un exemple :&lt;br /&gt;&amp;#160;ajoutez les options suivantes à la JVM de votre application (fonctionne aussi pour Tomcat) : &lt;br /&gt;&lt;pre style="color:black;background-color:grey;"&gt;&lt;br /&gt; -Dcom.sun.management.jmxremote.port=9090&lt;br /&gt; -Dcom.sun.management.jmxremote.authenticate=false&lt;br /&gt; -Dcom.sun.management.jmxremote.ssl=false&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Déterminez ensuite quel est le numéro du processus Java correspondant à votre application (Tomcat correspond à la ligne jps "Bootstrap") :&lt;br /&gt;&lt;pre style="color:black;background-color:grey;"&gt;&lt;br /&gt; $ ps -xaf | grep java&lt;br /&gt; ou&lt;br /&gt; $ jps&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Une fois le numéro de processus récupéré, lancer JConsole (sous un environnement graphique, avec un utilisateur autorisé, (ie. tomcat)...) :&lt;br /&gt;&lt;pre style="color:black;background-color:grey;"&gt;&lt;br /&gt; # jconsole &amp;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Choisissez le menu "New" / "Connexion" puis le processus correspondant à votre application.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Voici un aperçu de JConsole pour plusieurs déploiements d'une WebApp comportant une fuite mémoire (ou mal paramétrée) :&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_rsIW5N5Xrvg/SgLoi2ep7iI/AAAAAAAABkM/PxLeJ8KIlgo/s1600-h/JConsole_LEAK.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 333px;" src="http://1.bp.blogspot.com/_rsIW5N5Xrvg/SgLoi2ep7iI/AAAAAAAABkM/PxLeJ8KIlgo/s400/JConsole_LEAK.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5333080594197376546" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&lt;i&gt;on peut constater (encadré en bas à gauche : mémoire permanente), après de nombreux redéploiements, qu'aucune classe n'a été déchargée. Ce genre de comportement se termine par une erreur.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Voici un aperçu de JConsole pour plusieurs déploiements d'une WebApp ne comportant plus de fuite mémoire (amha) :&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_rsIW5N5Xrvg/SgLpnjTS59I/AAAAAAAABkU/bA0Jxx_6MpY/s1600-h/PermOK_JConsole.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 333px;" src="http://1.bp.blogspot.com/_rsIW5N5Xrvg/SgLpnjTS59I/AAAAAAAABkU/bA0Jxx_6MpY/s400/PermOK_JConsole.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5333081774460430290" /&gt;&lt;/a&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&lt;i&gt;on peut constater (encadré en bas à gauche : mémoire permanente), après de nombreux redéploiements, des classes ont été déchargées.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&amp;#160&amp;#160;&amp;#160;&lt;i&gt;A partir du moment où, malgrès le nombre de redéploiements, la courbe forme une sorte de plateau (nombre de classes maximum impossible à dépasser, ici 16000 classes), on peut &lt;b&gt;supposer&lt;/b&gt; que la WebApp est "stable" au niveau occupation de la mémoire permanente.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&lt;i&gt;PS: il semblerai que sur la SDK de Sun, le déchargement de classe ne soit pas systématique, mais pratiqué que lorsque nécessaire. Cela expliquerai pourquoi le déchargement de classe n'intervient pas lors des tous premiers redéploiements (ie, dans mon cas j'ai constaté une dizaine de redéploiements).&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Comment se protéger de l'"OutOfMemoryError : PermGen space" ?&lt;/h3&gt;&lt;br /&gt;&lt;br /&gt;C'est bien ici la question la plus intéressante de ce post...&lt;br /&gt;&lt;br /&gt;Voici une liste (non-exhaustive) des moyens de se protéger de cette erreur :&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Tenter d'identifier les librairies / classes utilisées qui ont des fuites de mémoire : solution la plus satisfaisante, évidemment, mais qui peut prendre beaucoup de temps...&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Utiliser un autre SDK (ie.IBM) : sans le désir de polémiquer, j'ai déjà remarqué et lu à plusieurs reprises que ce problème était moins fréquent sur une autre JVM ... : solution assez peu satisfaisante&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Augmenter la mémoire allouée : votre serveur ne mettra plus 3j à tomber mais 5 ou 10 ? : voici solution pour les &lt;i&gt;rois de la bricole&lt;/i&gt; (marche aussi pour &lt;i&gt;les hommes pressés&lt;/i&gt;) ...&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Isoler la WebApp dans une JVM dédié: (&lt;a href="http://www.developpez.net/forums/d209747/java/developpement-web-java/tomcat/tomcat-5-out-of-memory/"&gt;post sur le sujet&lt;/a&gt;) ce point n'est pas réellement une mesure de protection sur l'application elle-même, mais peut être une très bonne mesure à prendre pour éviter de contaminer plusieurs applications à cause d'une seule qui pose problème...&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;Identifier les fuites mémoires&lt;/h4&gt;&lt;br /&gt;&lt;br /&gt;Après plusieurs essais avec jmap et jhat, et navigation dans le dump de la mémoire, j'ai perdu un peu mes espoirs de trouver une solution toute faite pour identifier les fuites mémoire. &lt;br /&gt;&lt;br /&gt;En réalité, jmap sera pour moi amplement suffisant..&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;En préambule : lancez votre WebApp et effectuez plusieurs redéploiements (s'arrêter avant l'exception PermGen).&lt;br /&gt;&lt;br /&gt;Sous réserve d'un paramétrage et d'un utilisateur correct (cf exemple de JConsole ci-dessus) la commande suivante affiche les objets chargés en mémoire et enregistre le résultat dans le fichier JVM_MEMORY.&lt;br /&gt;&lt;pre style="color:black;background-color:grey;"&gt;&lt;br /&gt; jmap -histo PID_OF_TOMCAT &gt; JVM_MEMORY&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Suivant le nombre d'objet, la liste retournée peut être très longue. &lt;br /&gt;&lt;br /&gt;Pour chaque définition de classe présente en mémoire, 4 colonnes sont affichées sur une ligne  : un id, un nombre d'instances, une taille occupée (bytes), le nom de la classe.&lt;br /&gt;&lt;br /&gt;Il s'agit de repérer les fuites en isolant les répétitions trop nombreuses de définition de classes (plusieurs lignes avec un même nom de classe). &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Voici des exemples de définitions multiples rencontrées :&lt;br /&gt;&lt;pre style="color:black;background-color:grey;"&gt;&lt;br /&gt; com.mysql.jdbc.VersionedStringProperty&lt;br /&gt; com.mysql.jdbc.SingleByteCharsetConverter&lt;br /&gt; com.mysql.jdbc.Driver&lt;br /&gt; com.mysql.jdbc.log.NullLogger &lt;br /&gt; apache.log4j.helpers.NullEnumeration&lt;br /&gt; org.apache.log4j.DefaultCategoryFactory&lt;br /&gt; org.apache.log4j.or.RendererMap&lt;br /&gt; org.apache.log4j.spi.RootLogger&lt;br /&gt; org.apache.log4j.Hierarchy&lt;br /&gt; org.apache.log4j.Level&lt;br /&gt; org.apache.log4j.ProvisionNode&lt;br /&gt; org.apache.log4j.CategoryKey&lt;br /&gt; org.apache.log4j.Logger &lt;br /&gt; org.apache.commons.dbutils.BasicRowProcessor &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Pour constater un problème de fuite mémoire avec MySQL par exemple, voici une méthode que j'ai utilisé :&lt;br /&gt;&lt;pre style="color:black;background-color:grey;"&gt;&lt;br /&gt; jmap -histo PID_OF_TOMCAT | grep "com.mysql.jdbc.Driver" | wc -l&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Cette commande affiche le nombre de définition en mémoire pour la classe Driver.&lt;br /&gt;&lt;br /&gt;J'effectue un redéploiement de la WebApp et je rejoue la même commande.&lt;br /&gt;&lt;pre style="color:black;background-color:grey;"&gt;&lt;br /&gt; jmap -histo PID_OF_TOMCAT | grep "com.mysql.jdbc.Driver" | wc -l&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Si le nombre retourné augmente d'un, alors c'est qu'aucune classe n'a été déchargée.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;Libérer la mémoire !&lt;/h4&gt;&lt;br /&gt;Voici les différentes solutions que j'ai utilisé pour libérer de la mémoire permanente.&lt;br /&gt;&lt;br /&gt;Tout d'abord, et c'est essentiel, il faut autoriser la JVM à décharger des classes. Ajouter l'option suivante à votre application :&lt;br /&gt;&lt;pre style="color:black;background-color:grey;"&gt;&lt;br /&gt; -XX:+CMSClassUnloadingEnabled&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Ensuite, vous pouvez paramétrer la taille max de votre mémoire permanente (par défaut à 64M je crois, et n'oubliez pas l'unité "M"):&lt;br /&gt;&lt;pre style="color:black;background-color:grey;"&gt;&lt;br /&gt; -XX:MaxPermSize=80M&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Ensuite, libérez la mémoire en détruisant notamment :&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;les drivers JDBC montés en mémoire&lt;/li&gt;&lt;br /&gt; &lt;li&gt;les threads non terminés&lt;/li&gt;&lt;br /&gt; &lt;li&gt;les singletons&lt;/li&gt;&lt;br /&gt; &lt;li&gt;...&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Vous pourrez pour cela ajouter un listener à votre WebApp (cf. &lt;a href="http://www.java-tips.org/java-ee-tips/java-servlet/how-to-work-with-servletcontextlistener-3.html"&gt;java-tips (en)&lt;/a&gt;) et libérer la mémoire lorsque le contexte est détruit ("contextDestroyed(ServletContextEvent event)").&lt;br /&gt;&lt;br /&gt;Sur &lt;a href="http://wiki.apache.org/tomcat/OutOfMemory?highlight=(PermGen)"&gt;le wiki de Tomcat&lt;/a&gt;, le problème est abordé et certaines méthodes sont également évoquées.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Voici les méthodes que j'ai pu retenir.&lt;br /&gt;&lt;br /&gt;Exemple pour libérer les singletons :&lt;br /&gt;&lt;pre style="color:black;background-color:grey;"&gt;&lt;br /&gt;        if (MySingleton.isInstance()) {&lt;br /&gt;      MySingleton.getInstance().destroy();&lt;br /&gt;     }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Exemple pour libérer "common-logging" :&lt;br /&gt;&lt;pre style="color:black;background-color:grey;"&gt;&lt;br /&gt;     // cf. http://wiki.apache.org/jakarta-commons/Logging/FrequentlyAskedQuestions&lt;br /&gt;     System.out.println("Shutdown LogFactory (common-logging) !");&lt;br /&gt;        ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader();&lt;br /&gt;        LogFactory.release(contextClassLoader);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Exemple pour libérer "log4j" :&lt;br /&gt;&lt;pre style="color:black;background-color:grey;"&gt;&lt;br /&gt;     // cf. http://wiki.apache.org/logging-log4j/UsefulCode&lt;br /&gt;     System.out.println("Shutdown LogManager (log4j) !");&lt;br /&gt;     LogManager.shutdown();&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Exemple pour libérer les drivers JDBC :&lt;br /&gt;&lt;pre style="color:black;background-color:grey;"&gt;&lt;br /&gt;     Enumeration&lt;Driver&gt; loadedDrivers = java.sql.DriverManager.getDrivers();&lt;br /&gt;  while (loadedDrivers!= null &amp;&amp; loadedDrivers.hasMoreElements()) {&lt;br /&gt;   Driver d = loadedDrivers.nextElement();&lt;br /&gt;   log.info("Unregister Driver " + d.toString());&lt;br /&gt;   try {&lt;br /&gt;   DriverManager.deregisterDriver(d);&lt;br /&gt;   } catch (SQLException sqle) {&lt;br /&gt;    log.error("Exception while unregister Driver: " + sqle.getMessage());&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Merci de me faire vos remarques si ce sujet comporte des erreurs.. si vous voyez d'autres astuces je les ajoute.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2610825294716456148-8999959257348836966?l=curiositedevie.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/CuriositeDeVie/~4/R1Oeyd8qK1A" height="1" width="1"/&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-29T14:01:29.256+01:00</app:edited><media:thumbnail url="http://1.bp.blogspot.com/_rsIW5N5Xrvg/SgLoi2ep7iI/AAAAAAAABkM/PxLeJ8KIlgo/s72-c/JConsole_LEAK.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">3</thr:total><enclosure url="http://mediacast.sun.com/users/Frank.Kieviet/media/JavaOne07-BOF9982-PermGen.pdf" length="903912" type="application/pdf;charset=utf-8" /><media:content url="http://mediacast.sun.com/users/Frank.Kieviet/media/JavaOne07-BOF9982-PermGen.pdf" fileSize="903912" type="application/pdf;charset=utf-8" /><itunes:explicit>no</itunes:explicit><itunes:subtitle> Qu’appelle-t-on "OutOfMemoryError : PermGen space" ? Cette erreur se rencontre lorsque l'espace de la mémoire permanente (PermGen) de la machine virtuelle Java (JVM) a atteint son niveau maximum (ie. sur une JVM Sun). Les définitions de classe sont stock</itunes:subtitle><itunes:author>noreply@blogger.com (Brice)</itunes:author><itunes:summary> Qu’appelle-t-on "OutOfMemoryError : PermGen space" ? Cette erreur se rencontre lorsque l'espace de la mémoire permanente (PermGen) de la machine virtuelle Java (JVM) a atteint son niveau maximum (ie. sur une JVM Sun). Les définitions de classe sont stockées au sein de la mémoire permanente. Cette erreur est levée lorsque l'espace restant n'est plus suffisant pour accueillir les nouvelles définitions de classe à charger. NB: les instances sont stockées dans une zone mémoire différente ("Heap" space) qui correspond à une autre erreur. Quand rencontre-t-on une "OutOfMemoryError : PermGen space" ? On rencontre par exemple cette erreur après de multiples redéploiements d'une WebApp Tomcat comportant des "fuites" mémoire... On va redéployer la WebApp 10 fois sans problème, puis on perd Tomcat à la 11ième à cause de cette erreur. Bien souvent cette erreur pose de sérieux problèmes en production où la tendance est plutôt à redémarrer Tomcat tous les soirs pour éviter tout problème (plutôt que de corriger les soucis de fuites). Un excellent papier rédigé par Franck Kieviet (en anglais, mais très visuel ;) ) explique comment se provoque une fuite mémoire (ie. déchargement impossibles d'objets/de définitions de classes) et cite les exemples les plus courants de fuites mémoire : &amp;#160;&amp;#160;&amp;#160;Dangling thread, Commons logging, java.util.logging.Level, Thread context classloader, new Thread(), Bean util, Details, SQL Driver Quels sont les symptômes d'une "OutOfMemoryError : PermGen space" ? Peut-être ne l'avez-vous jamais rencontré, alors comment savoir si votre WebApp est sujette aux fuites de mémoire (donc à terme à cette erreur) ? Des outils permettent de visualiser l'occupation des différents espaces mémoire : JConsole : application visuelle qui se rattache à une JVM (un process Java) et qui (entre autres nombreuses fonctionnalités) affiche les courbes : espace occupé par les données (heap), nombre de définitions de classes actuellement en mémoire, total du nombre de classes chargées et déchargées depuis le lancement de JConsole, nombre de thread, etc.. jmap : un outil qui se rattache également à une JVM et qui est capable (entre autres) de faire des extractions de la mémoire pour en ressortir des statistiques (ie. liste des définitions de classes en mémoire). Jmap permet également de faire un dump de cette mémoire pour jhat. jhat : un outil capable de lire un dump créé par jmap et de créer un mini serveur Web pour naviguer dans cette mémoire (utilisateurs avertis!!). Pour visualiser le problème, je conseille JConsolearticle de sun (en). Mais comment utiliser JConsole ? Il faut autoriser JConsole à pouvoir se rattacher à la JVM à osculter. Comment ? voici un exemple : &amp;#160;ajoutez les options suivantes à la JVM de votre application (fonctionne aussi pour Tomcat) : -Dcom.sun.management.jmxremote.port=9090 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false Déterminez ensuite quel est le numéro du processus Java correspondant à votre application (Tomcat correspond à la ligne jps "Bootstrap") : $ ps -xaf | grep java ou $ jps Une fois le numéro de processus récupéré, lancer JConsole (sous un environnement graphique, avec un utilisateur autorisé, (ie. tomcat)...) : # jconsole &amp; Choisissez le menu "New" / "Connexion" puis le processus correspondant à votre application. Voici un aperçu de JConsole pour plusieurs déploiements d'une WebApp comportant une fuite mémoire (ou mal paramétrée) : &amp;#160;&amp;#160;&amp;#160;on peut constater (encadré en bas à gauche : mémoire permanente), après de nombreux redéploiements, qu'aucune classe n'a été déchargée. Ce genre de comportement se termine par une erreur. Voici un aperçu de JConsole pour plusieurs déploiements d'une WebApp ne comportant plus de fuite mémoire (amha) : &amp;#160;&amp;#160;&amp;#160;on peut constater (encadré en bas à gauche : mémoire permanente), après de nombreux redéploiements, des classes ont été déchargées. &amp;#160&amp;#160;&amp;#160;A partir du moment où, malgrès le </itunes:summary><itunes:keywords>Java, Mémoire, Tomcat, WebApp</itunes:keywords><feedburner:origLink>http://curiositedevie.blogspot.com/2009/05/tomcat-et-la-fameuse-outofmemoryerror.html</feedburner:origLink></item><item><title>Correction du gadget iGoogle Wikipen</title><link>http://feedproxy.google.com/~r/CuriositeDeVie/~3/un9qBQgOaUM/correction-du-gadget-igoogle-wikipen.html</link><category>développement</category><category>écrit</category><category>gadget</category><category>wikipen</category><author>noreply@blogger.com (Brice)</author><pubDate>Tue, 28 Apr 2009 06:59:24 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2610825294716456148.post-2276448189430513508</guid><description>&lt;span style="font-size:12px"&gt;Bon, enfin la voilà ! Une petite correction aujourd'hui du gadget Wikipen ... &lt;br /&gt;&lt;br /&gt;En effet, depuis la migration de &lt;a href="http://fr.wikipen.org"&gt;Wikipen&lt;/a&gt; du 9 avril, ce dernier n'affichait plus aucun texte...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Le problème venait de la méthode de récupération d'un texte aléatoire effectué grâce à la page "Special:Random". La nouvelle version de MediaWiki semble plus attentive ;)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Si vous ne connaissez pas encore ce petit gadget ; il s'agît d'un petit bibelot iGoogle qui affiche un texte issu de l'odyssée Wikipen. Chaque jour, vous pouvez découvrir de nouvelles créations. Je vous invite d'ailleurs à proposer vos propres créations en rejoignant &lt;a href="http://fr.wikipen.org/wiki/Wikipen:Accueil"&gt;la communauté Wikipen&lt;/a&gt; ou &lt;a href="http://fr.wikipen.org/wiki/Wikipen:Association"&gt;l'association Wikipen&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href="#gadget"&gt;En bas de cette page&lt;/a&gt;, vous avez une visualisation du gadget en action. Pour plus de détails (ou pour soumettre un bug aussi ;) rendez-vous sur la &lt;a href="http://code.google.com/p/wikipen-gadgets/wiki/Wikipen"&gt;page projet de Wikipen Gadget&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Bonne lecture !&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2610825294716456148-2276448189430513508?l=curiositedevie.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/CuriositeDeVie/~4/un9qBQgOaUM" height="1" width="1"/&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2009-04-28T15:59:24.082+02:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://curiositedevie.blogspot.com/2009/04/correction-du-gadget-igoogle-wikipen.html</feedburner:origLink></item><item><title>JavaScript RegEx Check an Id string</title><link>http://feedproxy.google.com/~r/CuriositeDeVie/~3/PE9Jh4cKzk8/javascript-regex-check-id-string.html</link><category>JavaScript</category><category>astuce</category><category>regex</category><author>noreply@blogger.com (Brice)</author><pubDate>Mon, 27 Apr 2009 06:17:07 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2610825294716456148.post-5629994548932077600</guid><description>&lt;div style="font-size:12px"&gt;&lt;br /&gt;Voici une petite fonction en JavaScript permettant de contrôler une chaîne de caractère par rapport à une expression régulière. &lt;br /&gt;Dans cet exemple, on n'autorise que les chaînes débutant par un caractère alpha (a-zA-Z) et ne comportant que des alphanumériques (l'underscore est également autorisé).&lt;br /&gt;Si la chaîne 'str' passée en argument ne correspond pas aux critères évoqués, alors une boîte de dialogue informe que celle-ci est refusée.&lt;br /&gt;PS: en commentaire des traces peuvent être ajoutées pour comprendre ce qu'il se passe.&lt;br /&gt;&lt;pre style="color:black;background-color:white;"&gt;&lt;br /&gt; function checkIdText(str) {&lt;br /&gt;  // alert('checkIdText(' + str + ')');&lt;br /&gt;  var myFilter=/^(([a-z])([a-z0-9_]*))$/i;&lt;br /&gt;  if (!myFilter.test(str)) {&lt;br /&gt;    alert("IdText : please start with and alpha and then use alphanumerics or underscore only.");&lt;br /&gt;    return false;&lt;br /&gt;  }&lt;br /&gt;  // alert(str + ' is OK');&lt;br /&gt;  return true;  &lt;br /&gt;  }&lt;br /&gt;&lt;/pre&gt;Comment interpréter le filtre de l'expression régulière RegEx :&lt;span style="font-family: "Courier New" Courier monospace; color:black; background-color:white;"&gt; /^(([a-z])([a-z0-9_]*))$/i&lt;/span&gt;&lt;br /&gt;&lt;table cellspacing="0" cellpadding="5" border="0" style="width:70%;"&gt;&lt;br /&gt;&lt;tr&gt;&lt;th&gt;expression&lt;/th&gt;&lt;th&gt;signification&lt;/th&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td style="color:black; background-color:white;"&gt;^&lt;/td&gt;&lt;td&gt;début de la chaîne de caractères&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td style="color:black; background-color:white;"&gt;[a-z]&lt;/td&gt;&lt;td&gt;un caractère alpha&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td style="color:black; background-color:white;"&gt;[a-z0-9_]*&lt;/td&gt;&lt;td&gt;0, 1, ou plusieurs alphanumériques (underscore est également autorisé)&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td style="color:black; background-color:white;"&gt;$&lt;/td&gt;&lt;td&gt;fin de la chaîne&lt;td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td style="color:black; background-color:white;"&gt;i&lt;/td&gt;&lt;td&gt;indépendance vis-à-vis de la casse (majuscule/minuscule)&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2610825294716456148-5629994548932077600?l=curiositedevie.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/CuriositeDeVie/~4/PE9Jh4cKzk8" height="1" width="1"/&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2009-04-27T15:17:07.476+02:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://curiositedevie.blogspot.com/2009/04/javascript-regex-check-id-string.html</feedburner:origLink></item><media:rating>nonadult</media:rating></channel></rss>

