<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-4071621315515637689</id><updated>2024-10-24T09:41:12.752+02:00</updated><category term="pentaho"/><category term="Apple"/><category term="Azure"/><category term="MySQL"/><category term="Lion"/><category term="MacOSX"/><category term="Microsoft"/><category term="Netbeans"/><category term="Ruby"/><category term="mdx"/><category term="Cloud"/><category term="Ruby on Rails"/><category term="Snow  Leopard"/><category term="Ubuntu"/><category term="VirtualBox"/><category term="Windows"/><category term="iOS"/><category term="iPad"/><category term="iPhone"/><category term="java"/><category term="olap"/><category term="Linux"/><category term="Mac App Store"/><category term="PostgreSQL"/><category term="Techdays"/><category term="Time Machine"/><category term="Vagrant"/><category term="Veewee"/><category term="Visual Studio"/><category term="jpivot"/><category term="mondrian"/><category term="php"/><category term="tomcat"/><category term="Amazon"/><category term="Android"/><category term="App Engine"/><category term="App Store"/><category term="Back in Time"/><category term="Billet d&#39;humeur"/><category term="CIR"/><category term="Chrome OS"/><category term="Delphi"/><category term="Dropbox"/><category term="Eclipse"/><category term="Google"/><category term="HD"/><category term="JavaFX"/><category term="Leopard"/><category term="Lion Disk Maker"/><category term="MSDN"/><category term="MobileMe"/><category term="MongoDB"/><category term="PDI"/><category term="RVM"/><category term="Rails"/><category term="Recherche et Développement"/><category term="Ruby Version Manager"/><category term="SMB"/><category term="SQL"/><category term="SQL Server"/><category term="SVN"/><category term="binding"/><category term="classe"/><category term="crédit impôt recherche"/><category term="database"/><category term="excel 2007"/><category term="iDisk"/><category term="iTunes Store"/><category term="jBuilder"/><category term="kettle"/><category term="multitache"/><category term="objet"/><category term="serialize"/><category term="session"/><category term="unserialize() expects parameter"/><category term="vb.net"/><category term="wavemaker"/><category term="wpf"/><category term="xCode"/><category term="xlsx"/><category term="zip"/><title type='text'>SNail IT</title><subtitle type='html'>le blog d&#39;un geek pour les geeks.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://snailitblog.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4071621315515637689/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://snailitblog.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/4071621315515637689/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>44</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4071621315515637689.post-108475659532034947</id><published>2013-06-14T10:09:00.005+02:00</published><updated>2013-06-14T10:09:41.050+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="java"/><category scheme="http://www.blogger.com/atom/ns#" term="jpivot"/><category scheme="http://www.blogger.com/atom/ns#" term="pentaho"/><title type='text'>Tip PENTAHO: comment modifier les traductions de l&#39;interface Jpivot?</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
Voilà une astuce qui va être utile pour les développeurs et administrateurs de &lt;a href=&quot;http://www.pentaho.com/&quot; target=&quot;_blank&quot;&gt;pentaho&lt;/a&gt; qui ont mis en place les pivots &lt;a href=&quot;http://jpivot.sourceforge.net/&quot; target=&quot;_blank&quot;&gt;jpivot&lt;/a&gt;.&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
Vous avez surement remarqué &amp;nbsp; comme les traductions étaient des fois limites? Par exemple, la fonction dans la barre des outils de jpivot qui permet de supprimer les lignes vides a été traduite en &quot;Opprimer les lignes blanches&quot;:&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiBHNBrWycY6irYs0uhfWkxWaHO_9iTWTXTeZ9wN51DNuYnVdt1XMYSDl94D26Mb3oVjoaVtvT9vcD3l2IH2ji_DjDA9oj0Of9XqePlc37PApa6Wg3NazQzO4VAHnKT1aT8e3JyHdXfvcIU/s1600/Capture+du+2013-06-14+09:48:36.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiBHNBrWycY6irYs0uhfWkxWaHO_9iTWTXTeZ9wN51DNuYnVdt1XMYSDl94D26Mb3oVjoaVtvT9vcD3l2IH2ji_DjDA9oj0Of9XqePlc37PApa6Wg3NazQzO4VAHnKT1aT8e3JyHdXfvcIU/s1600/Capture+du+2013-06-14+09:48:36.png&quot; height=&quot;124&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;
Pas très compréhensible tout ça...&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Et bien, il y a un moyen pour y remédier, c&#39;est de faire sa propre traduction.&lt;/div&gt;
&lt;div&gt;
Pour cela, il va falloir modifier directement la librairie jpivot:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Allez dans biserver-ce/tomcat/webapps/pentaho/WEB-INF/lib et choisissez le fichier jpivot-XXX.jar&lt;/div&gt;
&lt;div&gt;
Ouvrez-le &amp;nbsp;avec votre gestionnaire d&#39;archives préféré , puis allez dans le répertoire&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
com/tonbeller/jpivot/toolbar/resources&lt;/div&gt;
&lt;div&gt;
Là dedans vous allez trouver l&#39;ensemble des fichiers de ressource qui servent à &amp;nbsp;l&#39;affichage des tooltips dans la barre des outils. Ouvrez le fichier resources_fr.properties&lt;/div&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
nano resources_fr.properties&lt;/blockquote&gt;
&lt;div&gt;
puis modifiez la ligne suivante :&amp;nbsp;&lt;/div&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
toolb.non.empty=Opprimer lignes blanches&lt;/blockquote&gt;
&lt;div&gt;
par :&lt;/div&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
toolb.non.empty=Supprimer lignes vides&lt;/blockquote&gt;
&lt;div&gt;
Il n&#39;y a plus qu&#39;à &amp;nbsp;enregistrer le fichier de propriétés dans le jar et redémarrer PENTAHO et le tour est joué.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://snailitblog.blogspot.com/feeds/108475659532034947/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://snailitblog.blogspot.com/2013/06/tip-pentaho-comment-modifier-les.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4071621315515637689/posts/default/108475659532034947'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4071621315515637689/posts/default/108475659532034947'/><link rel='alternate' type='text/html' href='http://snailitblog.blogspot.com/2013/06/tip-pentaho-comment-modifier-les.html' title='Tip PENTAHO: comment modifier les traductions de l&#39;interface Jpivot?'/><author><name>Emmanuel Pellegrin</name><uri>http://www.blogger.com/profile/15796979517044798282</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiQxP15xYuTox2i46zTaQEVls30AO9aNHLTIpqQjnuwYOkLvJjAAX6qdevKmHfGiBzP_8i5thhTN950NaQcIHeehqxI7ec-etYUdzn3rEix3KSbyMGvXGHarY4go8DSA/s1600/perso_2012_1.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiBHNBrWycY6irYs0uhfWkxWaHO_9iTWTXTeZ9wN51DNuYnVdt1XMYSDl94D26Mb3oVjoaVtvT9vcD3l2IH2ji_DjDA9oj0Of9XqePlc37PApa6Wg3NazQzO4VAHnKT1aT8e3JyHdXfvcIU/s72-c/Capture+du+2013-06-14+09:48:36.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4071621315515637689.post-4488391161404323080</id><published>2013-06-13T16:44:00.001+02:00</published><updated>2013-06-13T16:44:15.939+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="java"/><category scheme="http://www.blogger.com/atom/ns#" term="jpivot"/><category scheme="http://www.blogger.com/atom/ns#" term="pentaho"/><title type='text'>PENTAHO/JPIVOT: erreur à l&#39;export Excel  ou PDF</title><content type='html'>Maintenant que votre pivot est affiché, vous avez&amp;nbsp;peut-être envie de l&#39;exporter sous Excel pour retravailler les données.&lt;br /&gt;
Pour&amp;nbsp;cela&amp;nbsp;vous utilisez le bouton bien connu :&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhX8uyKwb3XCtEuqOg5nLxuzvMVaM4WQg063vAoOa2NNtnIKPB0HljQjBw9C_8fnmFTpTGLYxtfLGxSFcYUZryp6a7qEusUXkdTNhyLgsFqpE-WObbR_s3Q6-AQIb9oWAPWnRm_VwtS4YXr/s1600/Selection_047.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhX8uyKwb3XCtEuqOg5nLxuzvMVaM4WQg063vAoOa2NNtnIKPB0HljQjBw9C_8fnmFTpTGLYxtfLGxSFcYUZryp6a7qEusUXkdTNhyLgsFqpE-WObbR_s3Q6-AQIb9oWAPWnRm_VwtS4YXr/s1600/Selection_047.png&quot; height=&quot;140&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Sauf qu&#39;au lieu de récupérer l&#39;export vous êtes confronté à une erreur &amp;nbsp; du style :&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;mai 25, 2005 12:26:18 PM org.apache.catalina.core.ApplicationContext log&lt;br /&gt;SEVERE: StandardWrapper.Throwable&lt;br /&gt;java.lang.NoClassDefFoundError: org/apache/fop/configuration/Configuration&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; at com.tonbeller.jpivot.print.PrintServlet.init(PrintServlet.java:71)&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1173)&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:809)&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; ../..&lt;br /&gt;Caused by: java.lang.ClassNotFoundException: org.apache.fop.configuration.Configuration&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1645)&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1491)&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ... 14 more&lt;/span&gt;&lt;/blockquote&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Tout cela est dû au problème de compatibilité descendante entre les dernières version de &lt;a href=&quot;http://www.pentaho.com/&quot; target=&quot;_blank&quot;&gt;PENTAHO&lt;/a&gt; et &lt;a href=&quot;http://jpivot.sourceforge.net/&quot; target=&quot;_blank&quot;&gt;jpivot&lt;/a&gt;.&lt;/div&gt;
&lt;div&gt;
Alors que &lt;a href=&quot;http://www.pentaho.com/&quot; target=&quot;_blank&quot;&gt;PENTAHO&lt;/a&gt; intègre la dernière version de la librairie apache &lt;a href=&quot;http://xmlgraphics.apache.org/fop/&quot; target=&quot;_blank&quot;&gt;FOP&lt;/a&gt;, jpivot ( qui n&#39;est plus maintenu depuis des lustres) utilise une version, disons-le, très ancienne.&lt;/div&gt;
&lt;div&gt;
Or, cette version ancienne version utilisait une classe (org.apache.fop.configuration.Configuration) qui n&#39;existe plus dans la dernière version de &lt;a href=&quot;http://xmlgraphics.apache.org/fop/&quot; target=&quot;_blank&quot;&gt;FOP&lt;/a&gt;.&lt;/div&gt;
&lt;div&gt;
Il suffit alors de récupérer la version 0.20.5 sur un site ( maven par exemple) &amp;nbsp;et la copier dans&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
biserver-ce/tomcat/webapps/pentaho/WEB-INF/lib/:&amp;nbsp;&lt;/div&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;background-color: white; font-size: x-small;&quot;&gt;cd&amp;nbsp;biserver-ce/tomcat/webapps/pentaho/WEB-INF/lib/&lt;br /&gt;wget http://mirrors.ibiblio.org/pub/mirrors/maven/fop/jars/fop-0.20.5.jar&lt;/span&gt;&lt;/blockquote&gt;
&lt;div&gt;
Le bug a été&amp;nbsp;référencé&amp;nbsp;sur le JIRA de &lt;a href=&quot;http://www.pentaho.com/&quot; target=&quot;_blank&quot;&gt;PENTAHO&lt;/a&gt; :&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
http://jira.pentaho.com/browse/BISERVER-7286&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Ah oui, dernière chose, &amp;nbsp;n&#39;oubliez pas de déplacer ou supprimer la librairie (fop-0.9XX.jar )fournie par PENTAHO.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://snailitblog.blogspot.com/feeds/4488391161404323080/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://snailitblog.blogspot.com/2013/06/pentahojpivot-erreur-lexport-excel-ou.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4071621315515637689/posts/default/4488391161404323080'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4071621315515637689/posts/default/4488391161404323080'/><link rel='alternate' type='text/html' href='http://snailitblog.blogspot.com/2013/06/pentahojpivot-erreur-lexport-excel-ou.html' title='PENTAHO/JPIVOT: erreur à l&#39;export Excel  ou PDF'/><author><name>Emmanuel Pellegrin</name><uri>http://www.blogger.com/profile/15796979517044798282</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiQxP15xYuTox2i46zTaQEVls30AO9aNHLTIpqQjnuwYOkLvJjAAX6qdevKmHfGiBzP_8i5thhTN950NaQcIHeehqxI7ec-etYUdzn3rEix3KSbyMGvXGHarY4go8DSA/s1600/perso_2012_1.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhX8uyKwb3XCtEuqOg5nLxuzvMVaM4WQg063vAoOa2NNtnIKPB0HljQjBw9C_8fnmFTpTGLYxtfLGxSFcYUZryp6a7qEusUXkdTNhyLgsFqpE-WObbR_s3Q6-AQIb9oWAPWnRm_VwtS4YXr/s72-c/Selection_047.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4071621315515637689.post-4576103799273277108</id><published>2013-05-23T18:34:00.002+02:00</published><updated>2013-06-13T16:19:08.200+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="MySQL"/><title type='text'>Tip MySQL: &quot;innodb_file_per_table&quot; ou comment utiliser des fichiers de table séparés pour éviter le manque d&#39;espace disque!!</title><content type='html'>Bon,&lt;br /&gt;
&amp;nbsp;je suis pas très fier de ce que j&#39;ai fait mais je vous relate mes erreurs et comment je suis arrivé à les résoudre pour vous éviter de faire pareil...&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;
Situation&lt;/h4&gt;
J&#39;installe Mysql sur mon nouveau serveur dédié, monstre de calcul (8 cpu &quot;machin&quot; bridge) et d&#39;espace disque ( 1To). Je configure ma base de données au format &amp;nbsp;Innodb ( le format qui permet les contraintes externes, etc.); je configure les capacités de mémoire, l&#39;espace disque temporaire;&lt;br /&gt;
bref, je crois avoir tout passé en revue...&lt;br /&gt;
&lt;br /&gt;
Puis j&#39;alimente ma base avec des données provenant de réseaux sociaux - autant dire que la volumétrie est importante.&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;
Out of space&lt;/h4&gt;
Au bout de quelques semaines, je m&#39;aperçoit que le fichier ibdata qui est dans le répertoire de données grossit mais ne rétrécit jamais , y compris lorsque je supprime des tables de plusieurs centaines de GigaOctets.&lt;br /&gt;
Finalement&amp;nbsp;j’atteins&amp;nbsp;la taille limite de mon disque et là je suis mal surtout que je dois produire des rapports d&#39;analyse pour avant hier.&lt;br /&gt;
&lt;h4&gt;
L&#39;option de la mort qui tue&lt;/h4&gt;
C&#39;est là &amp;nbsp;que je m&#39;aperçoit que par défaut à &amp;nbsp;l&#39;installation, &amp;nbsp;MySQL et configuré pour gérer toutes les tables et leurs index dans un seul et même fichier - &amp;nbsp;le fameux &quot;ibdata&quot; et que ce fichier &amp;nbsp;est voué a grossir - &amp;nbsp;jamais à &amp;nbsp;réduire !&lt;br /&gt;
Il&amp;nbsp;aurait&amp;nbsp;fallu utiliser l&#39;option &quot;innodb_file_per_table&quot; dans le fichier de configuration (my.cnf) pour que chaque table utilise son propre fichier de stockage des données et d&#39;index.&lt;br /&gt;
Ok, je l&#39;ai pas fait; mais alors comment faire pour rattraper ma bourde ?&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;
Play it like a barbarian&lt;/h4&gt;
Oui, je dirais qu&#39;il faut y aller &quot;à &amp;nbsp;la barbare&quot; c&#39;est à &amp;nbsp;dire faire une réinstallation des bases!&lt;br /&gt;
&lt;br /&gt;
Première chose, faire une sauvegarde complète des bases : &lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
mysqldump -R -q -p --all-databases &amp;gt; 20120402_mysql_all.sql&lt;/blockquote&gt;
&lt;br /&gt;
&lt;br /&gt;
Ensuite,&amp;nbsp;arrêter&amp;nbsp;MySQL et supprimer tous les fichiers du répertoire des bases de données( moi, je fais un move sur un support de sauvegarde):&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
service mysql stop&lt;br /&gt;mv &amp;nbsp;/home/mysql/* /home/backup/mysql_old_dir&lt;/blockquote&gt;
&lt;br /&gt;
Redémarrer Mysql :&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
service mysql start&lt;/blockquote&gt;
Enfin, restaurer les tables :&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
mysql -u root &amp;nbsp;&amp;lt; 20120402_mysql_all.sql&lt;/blockquote&gt;
&lt;h4&gt;
&lt;br /&gt;&lt;/h4&gt;
Je vous cache pas qu&#39;il faut aimer avoir des sueurs froides dans le dos pendant quelques longues minutes.&lt;br /&gt;
&lt;br /&gt;
N&#39;hésitez pas à &amp;nbsp;commenter ce post si vous avez été dans le même cas ! &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://snailitblog.blogspot.com/feeds/4576103799273277108/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://snailitblog.blogspot.com/2013/05/tip-mysql-innodbfilepertable-ou-comment.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4071621315515637689/posts/default/4576103799273277108'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4071621315515637689/posts/default/4576103799273277108'/><link rel='alternate' type='text/html' href='http://snailitblog.blogspot.com/2013/05/tip-mysql-innodbfilepertable-ou-comment.html' title='Tip MySQL: &quot;innodb_file_per_table&quot; ou comment utiliser des fichiers de table séparés pour éviter le manque d&#39;espace disque!!'/><author><name>Emmanuel Pellegrin</name><uri>http://www.blogger.com/profile/15796979517044798282</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiQxP15xYuTox2i46zTaQEVls30AO9aNHLTIpqQjnuwYOkLvJjAAX6qdevKmHfGiBzP_8i5thhTN950NaQcIHeehqxI7ec-etYUdzn3rEix3KSbyMGvXGHarY4go8DSA/s1600/perso_2012_1.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4071621315515637689.post-3265317085318930921</id><published>2013-05-22T14:54:00.003+02:00</published><updated>2013-06-13T16:20:05.108+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="MongoDB"/><category scheme="http://www.blogger.com/atom/ns#" term="Ubuntu"/><title type='text'>Tip MongoDB: dompter MongoDB pour qu&#39;il ne mange pas tout l&#39;espace disque sous ubuntu 64!</title><content type='html'>Ma&lt;a href=&quot;http://bit.ly/Zd3xxv&quot; target=&quot;_blank&quot;&gt; bête de course&lt;/a&gt; est en train de pleurer à cause d&#39;un manque d&#39;espace disque...&lt;br /&gt;
Mais que se passe-t&#39;il donc?&lt;br /&gt;
Bon ok, lorsque j&#39;ai fait l&#39;installation d&#39;Ubuntu 64 bits, j&#39;ai paramétré la partition racine à 9 Gb, ce qui est un peu limite.&lt;br /&gt;
&lt;br /&gt;
En utilisant&amp;nbsp;Baobab, le programme de visualisation d&#39;espace disque , je me suis aperçu que le fautif était MongoDB et plus&amp;nbsp;précisément&amp;nbsp; son &amp;nbsp;système de journalisation:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8aoV8-5G23Tv0eWDq8R3f-YsXb2r9GyjesXo0pbG6NRoMmj0V66k1FND3YiFAz8SIDv-G7HeY8EUH13dMMpKGY87OXFx0wXYXrLDDKRCa7h-Q2AZJ4SwPDwtrY2cnXDp24rVj6h8vC-Rx/s1600/Selection_036.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8aoV8-5G23Tv0eWDq8R3f-YsXb2r9GyjesXo0pbG6NRoMmj0V66k1FND3YiFAz8SIDv-G7HeY8EUH13dMMpKGY87OXFx0wXYXrLDDKRCa7h-Q2AZJ4SwPDwtrY2cnXDp24rVj6h8vC-Rx/s1600/Selection_036.png&quot; height=&quot;143&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Voici donc le moyen pour éviter de consommer de l&#39;espace disque inutilement :&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;arrêter mongodb :&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
sudo service mongodb stop&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;éditer le fichier /etc/mongodb.conf et désactiver la journalisation :
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
# Enable journaling, http://www.mongodb.org/display/DOCS/Journaling&lt;br /&gt;
journal=false&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;supprimer les fichier dans le répertoire /var/lib/mongodb&lt;/li&gt;
&lt;li&gt;redémarrer MongoDB:
&lt;br /&gt;&lt;blockquote class=&quot;tr_bq&quot;&gt;
sudo service mongodb stop&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ol&gt;
Et voilà, votre partition ne va pas être inutilement remplie!&lt;br /&gt;
&lt;br /&gt;
Un autre moyen est de déplacer le répertoire des données de /var/lib/mongodb vers une autre partition (exemple /home/mongodb)
Pour cela éditer le fichier  /etc/mongodb.conf et modifiez la ligne suivante : 
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
# Where to store the data.
dbpath=/var/lib/mongodb&lt;/blockquote&gt;
en
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
# Where to store the data.
dbpath=/home/mongodb&lt;/blockquote&gt;
puis déplacer les fichiers qui étaient initialement dans /var/lib/mongodb vers le répertoire cible : 
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
sudo  cp -rv /var/lib/mongodb /home/mongodb/&lt;/blockquote&gt;
Si vous aussi vous avez eu le même problème et que ce post vous a aidé, vous pouvez laisser un commentaire ! 

</content><link rel='replies' type='application/atom+xml' href='http://snailitblog.blogspot.com/feeds/3265317085318930921/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://snailitblog.blogspot.com/2013/05/tip-mongodb-dompter-mongodb-pour-quil.html#comment-form' title='1 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4071621315515637689/posts/default/3265317085318930921'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4071621315515637689/posts/default/3265317085318930921'/><link rel='alternate' type='text/html' href='http://snailitblog.blogspot.com/2013/05/tip-mongodb-dompter-mongodb-pour-quil.html' title='Tip MongoDB: dompter MongoDB pour qu&#39;il ne mange pas tout l&#39;espace disque sous ubuntu 64!'/><author><name>Emmanuel Pellegrin</name><uri>http://www.blogger.com/profile/15796979517044798282</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiQxP15xYuTox2i46zTaQEVls30AO9aNHLTIpqQjnuwYOkLvJjAAX6qdevKmHfGiBzP_8i5thhTN950NaQcIHeehqxI7ec-etYUdzn3rEix3KSbyMGvXGHarY4go8DSA/s1600/perso_2012_1.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8aoV8-5G23Tv0eWDq8R3f-YsXb2r9GyjesXo0pbG6NRoMmj0V66k1FND3YiFAz8SIDv-G7HeY8EUH13dMMpKGY87OXFx0wXYXrLDDKRCa7h-Q2AZJ4SwPDwtrY2cnXDp24rVj6h8vC-Rx/s72-c/Selection_036.png" height="72" width="72"/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4071621315515637689.post-1117812574000838488</id><published>2013-04-30T16:03:00.000+02:00</published><updated>2013-05-21T20:03:54.180+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="mdx"/><category scheme="http://www.blogger.com/atom/ns#" term="olap"/><category scheme="http://www.blogger.com/atom/ns#" term="pentaho"/><title type='text'>Limitation pentaho/mondrian: ne pas utiliser explicitement les clefs (key) pour les membres de dimensions dans les requêtes MDX</title><content type='html'>Bon, tout est dans le titre... mais, quand même, ça nécessite quelques explications et surtout des solutions de contournement.&lt;br /&gt;
&lt;h4&gt;
La problématique&lt;/h4&gt;
&lt;br /&gt;
Si vous venez, comme moi, du domaine décisionnel &quot;non libre&quot; ( Microsoft Essbase, etc.) , vous avez sûrement l&#39;habitude d&#39;utiliser les clefs de membres des dimensions &amp;nbsp; pour les sélectionner &amp;nbsp;directement &amp;nbsp;dans les requêtes MDX.&lt;br /&gt;
Ok on fait un récap:&lt;br /&gt;
Lorsque&amp;nbsp;vous&amp;nbsp;faites une&amp;nbsp;requête&amp;nbsp;MDX, vous pouvez&amp;nbsp;sélectionner&amp;nbsp;un membre de dimension soit par sa valeur affichée ( en général le nom du membre), soit par la clef utilisée par le moteur OLAP. En général, la clef &amp;nbsp;utilisée et une clef numérique donc plus facile à &amp;nbsp;manipuler.&lt;br /&gt;
&lt;br /&gt;
Un exemple, vite !!&lt;br /&gt;
&lt;br /&gt;
Ok, disons que vous voulez mettre en perspective &amp;nbsp;les ventes &amp;nbsp;deux de vos produits phares :&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;les [casseroles en métal argenté(c)]&amp;nbsp;&lt;/li&gt;
&lt;li&gt;et &amp;nbsp;les [poêles dorées à l&#39;or fin(TM)].&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
La&amp;nbsp;requête MDX ressemblerait&amp;nbsp;à &amp;nbsp;peu près à &amp;nbsp;ça :&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
SELECT {[ProductHierarchy].[casseroles en métal argenté(c)], [ProductHierarchy].[poêles dorées à l&#39;or fin(TM)]} on ROWS,&lt;br /&gt;
{[Measures].[sales]} ON COLUMNS&lt;br /&gt;
FROM [Commercial]&amp;nbsp;&lt;/blockquote&gt;
Jusque là &amp;nbsp;tout va bien, sauf que en fait la même requête doit servir pour deux pays différents. Et pour chaque pays, le nom des produits est différent.&lt;br /&gt;
Plus&amp;nbsp;précisément,&amp;nbsp;en Angleterre les deux produits&amp;nbsp;s’appellent&amp;nbsp;respectivement : [silver metal pan(c)] et [gilded with fine gold pans(TM)]&lt;br /&gt;
Et là on a un problème: &amp;nbsp;la requête&amp;nbsp;précédemment crée ne fonctionne plus telle quelle à &amp;nbsp;condition que les dénominations soient&amp;nbsp;remplacées&amp;nbsp;par leur traduction respective!&lt;br /&gt;
Du coup, en&amp;nbsp;Angleterre&amp;nbsp;la requête qui fonctionne est celle là :&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
SELECT {[ProductHierarchy].[silver metal pan(c)], [ProductHierarchy].[gilded with fine gold pans(TM)]} on ROWS,&lt;br /&gt;
{[Measures].[sales]} ON COLUMNS&lt;br /&gt;
FROM [Commercial]&amp;nbsp;&lt;/blockquote&gt;
Alors, comment faire pour que la requête MDX fonctionne correctement quelque soit le pays (et donc les traductions) ?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;
L&#39;implémentation&lt;/h4&gt;
C&#39;est là &amp;nbsp;qu&#39;en tant que super spécialiste de votre moteur OLAP préféré, vous allez utiliser les fonctions différentiation par la clef .&lt;br /&gt;
Dans notre exemple la casserole en argent a un N° d&#39;identifiant numérique égal &amp;nbsp;à 112 et la poêle en or fin le N° 113, quelque soit les langages.&lt;br /&gt;
&lt;br /&gt;
On utilise le caractère &amp;amp; ( &quot;et commercial&quot; ou &quot;ampersand&quot; en anglais) pour utiliser la clef à &amp;nbsp;la place du nom.&lt;br /&gt;
La requête devient alors :&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
SELECT {[ProductHierarchy].&amp;amp;[112], [ProductHierarchy].&amp;amp;[113]} on ROWS,&lt;br /&gt;
{[Measures].[sales]} ON COLUMNS&lt;br /&gt;
FROM [Commercial]&amp;nbsp;&lt;/blockquote&gt;
Ok, on met tout ça en pratique.&lt;br /&gt;
&lt;br /&gt;
On crée donc &amp;nbsp;la dimension ProductHierarchy dans le cube Mondrian à &amp;nbsp;partir d&#39;une table de dimension&amp;nbsp;dénommée&amp;nbsp;DimProduct avec deux champs &amp;nbsp;ProductKey ( notre clef) &amp;nbsp;et ProductName:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&amp;lt;Dimension type=&quot;StandardDimension&quot; visible=&quot;true&quot; name=&quot;ProductHierarchy&quot;&amp;gt;&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&amp;lt;Hierarchy name=&quot;default&quot; visible=&quot;true&quot; hasAll=&quot;true&quot; primaryKey=&quot;ProductKey&quot;&amp;gt;&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&amp;lt;Table name=&quot;DimProduct&quot; alias=&quot;&quot;&amp;gt;&amp;lt;/Table&amp;gt;&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&amp;lt;Level name=&quot;Product&quot; column=&quot;ProductKey&quot; nameColumn=&quot;ProductName&quot; levelType=&quot;Regular&quot; /&amp;gt;&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&amp;lt;/Hierarchy&amp;gt;&lt;br /&gt;
&amp;lt;/Dimension&amp;gt;&lt;/blockquote&gt;
&lt;br /&gt;
Le fait d&#39;avoir rempli la propriété &quot;column&quot; avec le nom du champ &quot;ProductKey&quot; va permettre un certain nombre de choses, dont l&#39;optimisation des&amp;nbsp;requêtes&amp;nbsp;SQL qui sont effectuées par le moteur de Mondrian, mais aussi la possibilité de faire notre requête sur la base de la clef ProductKey.&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;
Mondrian Error &amp;nbsp;!!&lt;/h4&gt;
Vous&amp;nbsp;exécutez&amp;nbsp;la requête et là, patatras &amp;nbsp;voilà ce que l&#39;interpréteur de&amp;nbsp;requête&amp;nbsp;de Mondrian nous dit :&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;i&gt;Mondrian Error:MDX object &#39;[ProductHierarchy.New Hierarchy 0].&amp;amp;[113]&#39; not found in cube &#39;Commercial&#39;&lt;/i&gt;&lt;/blockquote&gt;
La raison en est simple, Julian Hyde (le créateur de Mondrian ) n&#39;a tout simplement pas prévu cette fonction dans son moteur.&lt;br /&gt;
Voici la preuve: un ticket a été&amp;nbsp;référencé&amp;nbsp;dans le gestionnaire d&#39;incident de Mondrian sous la description :&lt;a href=&quot;http://bit.ly/18jKPmJ&quot; target=&quot;_blank&quot;&gt;Member key treated as member name in WHERE&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Arggh, voilà &amp;nbsp;donc une&amp;nbsp;mauvaise&amp;nbsp;surprise ! &amp;nbsp;Pour enfoncer le clou, ce bug a été ouvert en 2009...&lt;br /&gt;
&lt;br /&gt;
Vous pourriez me dire: &quot;tu n&#39;as qu&#39;à &amp;nbsp;mettre le champ ProductName dans la propriété &#39;column&#39; et on en parle plus !&quot;.&lt;br /&gt;
Oui, en effet ça marche mais :&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;&amp;nbsp;la problématique de l&#39;internationalisation reste entière.&lt;/li&gt;
&lt;li&gt;De plus, il faut savoir que le moteur Mondrian va utiliser la propriété &quot;column&quot; pour créer ses jointures lors des&amp;nbsp;requêtes SQL sous-jaçentes ( rappelons-nous que Mondrian est un moteur ROLAP- &amp;nbsp;donc basé sur le moteur de base de données !). Or en général , il vaut mieux faire les jointure sur des champs de tables qui sont indexés , ne serait-ce que pour des questions &amp;nbsp;de performance et faire un index sur un champ numériques a beaucoup plus d&#39;efficacité que sur un champ de type caractère.&lt;/li&gt;
&lt;/ol&gt;
&lt;br /&gt;
&lt;h4&gt;
Quelle est donc la solution ?&lt;/h4&gt;
On va donc utiliser une&amp;nbsp;fonctionnalité&amp;nbsp; qui ,elle, a été&amp;nbsp;implémentée:&amp;nbsp;&amp;nbsp;les propriétés en conjonction&amp;nbsp;avec&amp;nbsp;les filtres.&lt;br /&gt;
Dans un premier temps on va créer une propriété basée sur le champ &quot;ProductKey&quot;:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&amp;lt;Dimension type=&quot;StandardDimension&quot; name=&quot;ProductHierarchy&quot;&amp;gt;&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&amp;lt;Hierarchy name=&quot;default&quot; primaryKey=&quot;ProductKey&quot;&amp;gt; &amp;nbsp; &amp;nbsp; &lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&amp;lt;Table name=&quot;DimProduct&quot; /&amp;gt;&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&amp;lt;Level name=&quot;Product&quot; column=&quot;ProductKey&quot; nameColumn=&quot;ProductName&quot;&amp;gt;&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;&amp;lt;Property name=&quot;key&quot; column=&quot;ProductKey&quot; type=&quot;Integer&quot; description=&quot;Key product&quot; /&amp;gt;&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&amp;lt;/Level&amp;gt;&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&amp;lt;/Hierarchy&amp;gt;&lt;br /&gt;
&amp;lt;/Dimension&amp;gt;&lt;/blockquote&gt;
&lt;br /&gt;
Et enfin on va utiliser un &lt;a href=&quot;http://bit.ly/1008Xa1&quot; target=&quot;_blank&quot;&gt;filtre&lt;/a&gt; , basé sur cette propriété&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
SELECT {Filter(&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;[ProductHierarchy].[Product].Members,&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;    &lt;/span&gt;([ProductHierarchy].CurrentMember.Properties(&quot;key&quot;)=113)&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;    &lt;/span&gt;OR&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;    &lt;/span&gt;([ProductHierarchy].CurrentMember.Properties(&quot;key&quot;)=111))&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;} ON ROWS,&lt;br /&gt;
{[Measures].[sales]} ON COLUMNS&lt;br /&gt;
FROM [Commercial]&lt;/blockquote&gt;
&lt;br /&gt;
Là -enfin-, vous pouvez utilisez cette requête, quelque soit les traductions des produits utilisées.&lt;br /&gt;
&lt;br /&gt;
Si vous avez déjà &amp;nbsp;été dans cette situation n&#39;hésitez pas à &amp;nbsp;commenter cet article ou à &amp;nbsp;demander des précisions !&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://snailitblog.blogspot.com/feeds/1117812574000838488/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://snailitblog.blogspot.com/2013/04/limitation-pentahomondrian-ne-pas.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4071621315515637689/posts/default/1117812574000838488'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4071621315515637689/posts/default/1117812574000838488'/><link rel='alternate' type='text/html' href='http://snailitblog.blogspot.com/2013/04/limitation-pentahomondrian-ne-pas.html' title='Limitation pentaho/mondrian: ne pas utiliser explicitement les clefs (key) pour les membres de dimensions dans les requêtes MDX'/><author><name>Emmanuel Pellegrin</name><uri>http://www.blogger.com/profile/15796979517044798282</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiQxP15xYuTox2i46zTaQEVls30AO9aNHLTIpqQjnuwYOkLvJjAAX6qdevKmHfGiBzP_8i5thhTN950NaQcIHeehqxI7ec-etYUdzn3rEix3KSbyMGvXGHarY4go8DSA/s1600/perso_2012_1.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4071621315515637689.post-6143140639798375958</id><published>2012-11-16T10:09:00.000+01:00</published><updated>2013-05-21T20:04:33.508+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="kettle"/><category scheme="http://www.blogger.com/atom/ns#" term="PDI"/><category scheme="http://www.blogger.com/atom/ns#" term="pentaho"/><title type='text'>Tip Pentaho/kettle: accélérer le chargement de spoon PDI 4.3 GA</title><content type='html'>J&#39;ai été assez désappointé par la dernière version de &lt;a href=&quot;http://bit.ly/ZFjNEI&quot; target=&quot;_blank&quot;&gt;PDI&lt;/a&gt; ( Pentaho data integration) délivrée par Matt Casters en version 4.3 GA.&lt;br /&gt;
En effet, spoon, qui est&amp;nbsp;l’interface&amp;nbsp;de création des ETL, se charge en plus de 3 minutes montre en main !!!&lt;br /&gt;
Inacceptable dans ce monde speedé!!&lt;br /&gt;
Moi qui pensait que PDI était le seul truc de bien dans pentaho ( avec peut-être Mondrian) et bien j&#39;en suis resté baba...&lt;br /&gt;
&lt;br /&gt;
Et là &amp;nbsp;je me suis aperçu que je n&#39;étais pas le &lt;a href=&quot;http://bit.ly/RXXc3k&quot; target=&quot;_blank&quot;&gt;seul&lt;/a&gt; dans cette situation. Ce qui &amp;nbsp;est assez déprimant c&#39;est que le bug recensé n&#39;est pas attribué, donc ne risque pas d&#39;être résolu. Heureusement, Matt Casters himself , nous donne le &lt;a href=&quot;http://bit.ly/SZGWwm&quot; target=&quot;_blank&quot;&gt;work-around&lt;/a&gt;:&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;Aller dans le répertoire&amp;nbsp;data-integration/plugins/spoon,&amp;nbsp;&lt;/li&gt;
&lt;li&gt;puis supprimer le répertoire&amp;nbsp;agile-bi et tout ce qu&#39;il contient.&lt;/li&gt;
&lt;/ol&gt;
&lt;br /&gt;
Miracle, spoon prend 40 secondes &amp;nbsp;à &amp;nbsp;charger ( ce qui est encore trop long, mais bon...) !&lt;br /&gt;
Par contre, du coup, toutes les fonctionnalités agiles de PDI ne sont plus disponibles (mais comme c&#39;est du pipeau, c&#39;est pas bien grave)&lt;br /&gt;
&lt;br /&gt;
Bon par contre, Matt nous dit dans le forum qu&#39;il travaille à la résolution de ce bug alors que le ticket en cours n&#39;est pas attribué.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Hou, le menteur!!&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://snailitblog.blogspot.com/feeds/6143140639798375958/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://snailitblog.blogspot.com/2012/11/tip-pentahokettle-accelerer-le.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4071621315515637689/posts/default/6143140639798375958'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4071621315515637689/posts/default/6143140639798375958'/><link rel='alternate' type='text/html' href='http://snailitblog.blogspot.com/2012/11/tip-pentahokettle-accelerer-le.html' title='Tip Pentaho/kettle: accélérer le chargement de spoon PDI 4.3 GA'/><author><name>Emmanuel Pellegrin</name><uri>http://www.blogger.com/profile/15796979517044798282</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiQxP15xYuTox2i46zTaQEVls30AO9aNHLTIpqQjnuwYOkLvJjAAX6qdevKmHfGiBzP_8i5thhTN950NaQcIHeehqxI7ec-etYUdzn3rEix3KSbyMGvXGHarY4go8DSA/s1600/perso_2012_1.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4071621315515637689.post-6151136295092612709</id><published>2012-11-14T15:42:00.001+01:00</published><updated>2012-11-14T15:44:56.112+01:00</updated><title type='text'>Vagrant : Mise en place d&#39;une box prête à l&#39;emploi</title><content type='html'>Dans l&#39;article précédent &amp;nbsp;(&lt;a href=&quot;http://snailitblog.blogspot.com/2012/09/veewee-la-creation-dune-boite-vagrant.html&quot;&gt;Veewee : La creation d&#39;une boite Vagrant&lt;/a&gt;), nous avons vu comment créer une machine virtuelle prête pour Vagrant.&lt;br /&gt;
&lt;br /&gt;
Considérons que nous avons avons ajouter la box à l&#39;environnement Vagrant avec la commande :&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;span style=&quot;background-color: #cccccc; font-size: x-small;&quot;&gt;vagrant box add &#39;myubuntubox&#39; &#39;pathto/myubuntubox.box&#39;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
Si vous le souhaitez, je peux vous fournir une box Ubuntu 12.04 server X64.&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
Une fois, cette dernière ajouter à votre environnement, il convient de créer votre machine virtuelle en utilisant les commandes suivantes :&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;span style=&quot;background-color: #cccccc; font-size: x-small;&quot;&gt;vagrant init &#39;myubuntubox&#39;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;span style=&quot;background-color: #cccccc; font-size: x-small;&quot;&gt;vagrant up&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;span style=&quot;background-color: #cccccc; font-size: x-small;&quot;&gt;vagrant ssh&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
Vous vous trouverez alors dans la machine virtuelle, sur laquelle vous pourrez installer vos outils de&amp;nbsp;développement.&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
Le principe de Vagrant est similaire à celui du Cloud, vous avez soit un&amp;nbsp;environnement&amp;nbsp;vierge que vous vous paramétrez, soit un&amp;nbsp;environnement&amp;nbsp;prêt à l&#39;emploi qui vous permet de fournir le même environnement à toute une équipe.&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
Pour ce dernier point, il convient d&#39;utiliser un outil de provisionning, pour ma part, j&#39;ai choisi Chef, mais il y en a d&#39;autres comme Puppet .etc..&lt;br /&gt;
&lt;br /&gt;
Dans le cas de Chef, on trouve de nombreuses recettes sur Github permettant d&#39;installer à peu près tout, avec par exemple le repository officiel d&#39;Opscode (&lt;a href=&quot;https://github.com/opscode-cookbooks&quot;&gt;https://github.com/opscode-cookbooks&lt;/a&gt;).&lt;br /&gt;
&lt;br /&gt;
Afin de simplifier, un peu la vie de ceux qui veulent se lancer, j&#39;ai préparer un petit projet qui vous permet de vous lancer :&amp;nbsp;&lt;a href=&quot;https://github.com/gpsnail/VagrantBox&quot;&gt;https://github.com/gpsnail/VagrantBox&lt;/a&gt;&lt;br /&gt;
Suivez les instructions du README pour commencer.&lt;br /&gt;
&lt;br /&gt;
N&#39;hésitez à me faire part de vos commentaires.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://snailitblog.blogspot.com/feeds/6151136295092612709/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://snailitblog.blogspot.com/2012/11/vagrant-mise-en-place-dune-box-prete.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4071621315515637689/posts/default/6151136295092612709'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4071621315515637689/posts/default/6151136295092612709'/><link rel='alternate' type='text/html' href='http://snailitblog.blogspot.com/2012/11/vagrant-mise-en-place-dune-box-prete.html' title='Vagrant : Mise en place d&#39;une box prête à l&#39;emploi'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4071621315515637689.post-6773395674789717271</id><published>2012-10-09T09:35:00.001+02:00</published><updated>2013-05-21T20:05:09.445+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="pentaho"/><category scheme="http://www.blogger.com/atom/ns#" term="tomcat"/><title type='text'>tip pentaho/déploiements: rafraîchir le repository</title><content type='html'>Le problème est très vite arrivé quand on veut déployer de nouveaux rapports sur plusieurs serveurs différents de façon automatique.&lt;br /&gt;
imaginons que ayez un nouveau rapport de type CDE ( kesako ?)que vous avez fabriqué sur votre serveur local.&lt;br /&gt;
&lt;br /&gt;
Vous avez copié les&amp;nbsp;fichiers&amp;nbsp;physiques du rapports &amp;nbsp;sur le serveur de production grâce à &amp;nbsp;un script shell par exemple.&lt;br /&gt;
Si vous vous connectez sur votre console utilisateur (http://monserveur:8080/pentaho/Home), vous ne voyez pas le nouveau rapport !!&lt;br /&gt;
L&#39;explication est simple, tant que vous n&#39;avez pas&amp;nbsp;rafraîchi&amp;nbsp;la solution , les nouveaux fichiers ne sont pas pris en compte par le moteur Pentaho.&lt;br /&gt;
Sous le capot, Pentaho utilise un indexage des fichiers qu&#39;il enregistre dans la base de données ( tables PRO_FILES &amp;nbsp;et PRO_ACLS_LIST dans la base de données hibernate).&lt;br /&gt;
Tant que l&#39;on a pas commandé à &amp;nbsp;pentaho de&amp;nbsp;rafraîchir&amp;nbsp;le repository, les nouveaux objets qui ont été copiés n&#39;ont pas été enregistrés dans l&#39;index pentaho.&lt;br /&gt;
Comment on peut piloter ce&amp;nbsp;rafraîchissement, par exemple par script shell ?&lt;br /&gt;
La seule façon que j&#39;ai trouvé est de créer une page jsp que je vais installer dans le contexte&amp;nbsp;d’exécution&amp;nbsp;de pentaho.&lt;br /&gt;
Je vais l&#39;appeler RefreshRepository.jsp et voici le code : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: x-small;&quot;&gt;&amp;lt;%@ page language=&quot;java&quot; &lt;br /&gt;import=&quot;org.pentaho.platform.engine.core.system.PentahoSystem,&lt;br /&gt;org.pentaho.platform.api.engine.IPentahoSession,&lt;br /&gt;org.pentaho.platform.web.jsp.messages.Messages,&lt;br /&gt;org.pentaho.platform.api.engine.IUITemplater,&lt;br /&gt;org.pentaho.platform.web.http.WebTemplateHelper,&lt;br /&gt;org.pentaho.platform.util.messages.LocaleHelper,&lt;br /&gt;org.pentaho.platform.api.repository.ISolutionRepository,&lt;br /&gt;org.pentaho.platform.repository.solution.dbbased.DbBasedSolutionRepository,&lt;br /&gt;org.pentaho.platform.web.http.PentahoHttpSessionHelper&quot; %&amp;gt;&lt;br /&gt;&amp;lt;%&lt;br /&gt;response.setCharacterEncoding(LocaleHelper.getSystemEncoding());&lt;br /&gt;IPentahoSession userSession = PentahoHttpSessionHelper.getPentahoSession( request );&lt;br /&gt;String content = &quot;&quot;; &lt;br /&gt;ISolutionRepository solutionRepository = PentahoSystem.get(ISolutionRepository.class, userSession);&lt;br /&gt;solutionRepository.reloadSolutionRepository(userSession, userSession.getLoggingLevel()); &lt;br /&gt;content = &quot;OK refresh&quot;;&lt;br /&gt;%&amp;gt;&lt;br /&gt;&amp;lt;%= content %&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: inherit;&quot;&gt;Je n&#39;ai plus qu&#39;à &amp;nbsp;déployer cette page dans le répertoire suivant :&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: inherit;&quot;&gt;biserver-ce/tomcat/webapps/pentaho/jsp/&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: inherit;&quot;&gt;Une fois fait, je peux maintenant piloter le refresh &amp;nbsp;en faisant &amp;nbsp;:&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: x-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: x-small;&quot;&gt;http://monserveur:8080/pentaho/RefreshRepository?userid=totologin&amp;amp;password=XXXX&lt;/span&gt;&lt;/blockquote&gt;
&lt;br /&gt;
Du coup je peux piloter le refresh &amp;nbsp;par script Shell :&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: x-small;&quot;&gt;&amp;nbsp;wget &amp;nbsp;--quiet &amp;nbsp;-O - &quot;http://monserveur:8080/pentaho/RefreshRepository?userid=totologin&amp;amp;password=XXXX&quot;&amp;nbsp;&lt;/span&gt;&lt;/blockquote&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://snailitblog.blogspot.com/feeds/6773395674789717271/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://snailitblog.blogspot.com/2012/10/tip-pentahodeploiements-rafraichir-le.html#comment-form' title='2 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4071621315515637689/posts/default/6773395674789717271'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4071621315515637689/posts/default/6773395674789717271'/><link rel='alternate' type='text/html' href='http://snailitblog.blogspot.com/2012/10/tip-pentahodeploiements-rafraichir-le.html' title='tip pentaho/déploiements: rafraîchir le repository'/><author><name>Emmanuel Pellegrin</name><uri>http://www.blogger.com/profile/15796979517044798282</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiQxP15xYuTox2i46zTaQEVls30AO9aNHLTIpqQjnuwYOkLvJjAAX6qdevKmHfGiBzP_8i5thhTN950NaQcIHeehqxI7ec-etYUdzn3rEix3KSbyMGvXGHarY4go8DSA/s1600/perso_2012_1.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4071621315515637689.post-8120571543178529156</id><published>2012-10-09T08:44:00.000+02:00</published><updated>2012-10-09T08:44:27.475+02:00</updated><title type='text'>tip trac/ldap : usage de ldap-filter</title><content type='html'>&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Il y a quelques temps j&#39;ai dû ouvrir à des personnes externes un site de gestion d&#39;incidents ( &lt;a href=&quot;http://bit.ly/VHLGJx&quot; target=&quot;_blank&quot;&gt;trac&lt;/a&gt;).&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Il se trouve que nous gérons les clients comme des contacts dans notre système openldap.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;E&lt;/span&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;n gros un client a type a comme structure dans ldap :&lt;/span&gt;&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: x-small;&quot;&gt;dn: cn=jean Filemonpul,ou=clients,ou=Users,dc=masociete,dc=com&lt;br /&gt;cn: jean Filemonpul&lt;br /&gt;givenname: jeanfil&lt;br /&gt;mail: jean.filemonpul@parlespieds.com&lt;br /&gt;mobile: +33473000011&lt;br /&gt;objectclass: inetOrgPerson&lt;br /&gt;objectclass: extensibleObject&lt;br /&gt;objectclass: person&lt;br /&gt;objectclass: mailAccount&lt;br /&gt;objectclass: top&lt;br /&gt;ou: client&lt;br /&gt;sn: filmonpul&lt;br /&gt;uid: jfil&lt;br /&gt;userpassword: {MD5}9x2+54ef34zeLOL4OneqsqsrSUgXUlsdsg==se&lt;/span&gt;&lt;/blockquote&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Par opposition, un utilisateur interne a cette structure:&lt;/span&gt;&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: x-small;&quot;&gt;dn: cn=pikki@masociete.com,ou=Users,dc=masociete,dc=com&lt;br /&gt;cn: pikki@masociete.com&lt;br /&gt;givenname: pikki&lt;br /&gt;mail: pikki@masociete.com&lt;br /&gt;mailbox: /home/vmail/masociete.com/pikki&lt;br /&gt;mailenable: OK&lt;br /&gt;mailuserquota: 1048576&lt;br /&gt;mobile: +336XXXXXXXX&lt;br /&gt;objectclass: inetOrgPerson&lt;br /&gt;objectclass: extensibleObject&lt;br /&gt;objectclass: person&lt;br /&gt;objectclass: mailAccount&lt;br /&gt;objectclass: top&lt;br /&gt;ou: masociete&lt;br /&gt;sn: pikki&lt;br /&gt;uid: pikki&lt;br /&gt;userpassword: {MD5}q09j+fqgfg4645refgzereza33454==&lt;/span&gt;&lt;/blockquote&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&amp;nbsp;L&lt;span style=&quot;text-align: left;&quot;&gt;a grosse différence est donc l&#39;unité organisationnelle ( ou) &amp;nbsp;qui est soit &quot;&lt;/span&gt;masociete&lt;span style=&quot;text-align: left;&quot;&gt;&quot; soit &quot;client&quot;.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;On veut donc autoriser l&#39;accès au gestionnaire d&#39;incident ( trac) à ces deux profils.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Pour cela, dans le fichier de&amp;nbsp;configuration&amp;nbsp;dans /etc/apache2/sites-enabled on va utiliser l&#39;instruction Require ldap-filter dont la doc est à &amp;nbsp;cette &lt;a href=&quot;http://bit.ly/UUGLFm&quot; target=&quot;_blank&quot;&gt;adresse&lt;/a&gt; .&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Le truc est de savoir si la&amp;nbsp;requête&amp;nbsp;ldap va fonctionner ou pas. pour cela j&#39;ai testé cette requete:&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;ldapsearch -W -x -D &quot;cn=moimeme,dc=masociete,dc=com&quot; \&lt;/span&gt;&lt;/span&gt;&lt;code&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: x-small;&quot;&gt;    &#39;(|(ou=&lt;span style=&quot;white-space: normal;&quot;&gt;masociete&lt;/span&gt;)(ou=client))&#39;&lt;/span&gt;&lt;/code&gt;&lt;/blockquote&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif; text-align: left;&quot;&gt;qui veut dire: &amp;lt;&amp;lt; cherche toutes les entrées du ldap ayant comme &quot;ou&quot; soit &quot;masociete&quot;, soit &quot;client&quot; &amp;gt;&amp;gt; .&lt;/span&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif; text-align: left;&quot;&gt;Nickel, il me renvoie bien des entrées. Du coup, je me dis, je vais mettre ça dans mon fichier de config apache :&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Require ldap-filter (|(ou=client) (ou=masociete))&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;span style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;katastrof, en&amp;nbsp;rechargeant&amp;nbsp;apache( service apache2 reload) &amp;nbsp;, impossible de se connecter ni en tant que client , ni en tant qu&#39;utilisateur.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Il suffit juste d&#39;enlever les&amp;nbsp;parenthèses&amp;nbsp;les plus excentrées pour que ça marche ( va comprendre..) .&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif; text-align: left;&quot;&gt;Voici mon fichier de configuration:&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: x-small;&quot;&gt;&amp;lt;VirtualHost *:80&amp;gt; &lt;/span&gt;&lt;/blockquote&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: x-small;&quot;&gt;&amp;nbsp;ServerAdmin admin-system@masociete.com&lt;br /&gt;&amp;nbsp;ServerName tickets.masociete.com&lt;br /&gt;&amp;nbsp;DocumentRoot /var/www/tickets&lt;br /&gt;&amp;nbsp;&amp;lt;Directory /&amp;gt;&lt;br /&gt;&amp;nbsp; Options FollowSymLinks MultiViews&lt;br /&gt;&amp;nbsp; &amp;nbsp;AllowOverride AuthConfig&lt;br /&gt;&amp;nbsp;&amp;lt;/Directory&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;Directory /var/www/tickets&amp;gt;&lt;br /&gt;&amp;nbsp; Options +SymLinksIfOwnerMatch&lt;br /&gt;&amp;nbsp; AllowOverride All&lt;br /&gt;&amp;nbsp; Order allow,deny&lt;br /&gt;&amp;nbsp; Allow from all&lt;br /&gt;&amp;nbsp;&amp;lt;/Directory&amp;gt;&lt;br /&gt;&amp;nbsp;ErrorLog /var/log/apache2/trac/error.log&lt;br /&gt;&amp;nbsp;LogLevel warn&lt;br /&gt;&amp;nbsp;CustomLog /var/log/apache2/trac/access.log combined&lt;br /&gt;&amp;nbsp;ServerSignature On&lt;br /&gt;&amp;nbsp;&amp;lt;Location /&amp;gt; #set up Trac handling&lt;br /&gt;&amp;nbsp; SetHandler mod_python&lt;br /&gt;&amp;nbsp; PythonHandler trac.web.modpython_frontend&lt;br /&gt;&amp;nbsp; PythonOption TracEnv /var/www/tickets&lt;br /&gt;&amp;nbsp; PythonOption TracUriRoot /&lt;br /&gt;&amp;nbsp; PythonPath &quot;sys.path + [&#39;/var/www/tickets&#39;]&quot;&lt;br /&gt;&amp;nbsp;&amp;lt;/Location&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;Location &quot;/login&quot;&amp;gt;&lt;br /&gt;&amp;nbsp; AuthType Basic&lt;br /&gt;&amp;nbsp; AuthName &quot;LDAP auth&quot;&lt;br /&gt;&amp;nbsp; AuthBasicProvider ldap&lt;br /&gt;&amp;nbsp; AuthLDAPUrl ldap://127.0.0.1/ou=Users,dc=masociete,dc=com?uid?sub&lt;br /&gt;&amp;nbsp; AuthLDAPBindDN &quot;cn=rechercheuser,dc=masociete,dc=com&quot;&lt;br /&gt;&amp;nbsp; AuthLDAPBindPassword XXXXXXX&lt;br /&gt;&amp;nbsp; Require ldap-filter |(ou=client) (ou=masociete)&lt;br /&gt;&amp;nbsp;&amp;lt;/Location&amp;gt;&lt;br /&gt;&amp;lt;/VirtualHost&amp;gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://snailitblog.blogspot.com/feeds/8120571543178529156/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://snailitblog.blogspot.com/2012/09/tip-tracldap-usage-de-ldap-filter.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4071621315515637689/posts/default/8120571543178529156'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4071621315515637689/posts/default/8120571543178529156'/><link rel='alternate' type='text/html' href='http://snailitblog.blogspot.com/2012/09/tip-tracldap-usage-de-ldap-filter.html' title='tip trac/ldap : usage de ldap-filter'/><author><name>Emmanuel Pellegrin</name><uri>http://www.blogger.com/profile/15796979517044798282</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiQxP15xYuTox2i46zTaQEVls30AO9aNHLTIpqQjnuwYOkLvJjAAX6qdevKmHfGiBzP_8i5thhTN950NaQcIHeehqxI7ec-etYUdzn3rEix3KSbyMGvXGHarY4go8DSA/s1600/perso_2012_1.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4071621315515637689.post-8080391775261999941</id><published>2012-09-07T11:52:00.000+02:00</published><updated>2012-09-07T14:14:09.105+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Ubuntu"/><category scheme="http://www.blogger.com/atom/ns#" term="Vagrant"/><category scheme="http://www.blogger.com/atom/ns#" term="Veewee"/><category scheme="http://www.blogger.com/atom/ns#" term="VirtualBox"/><title type='text'>Veewee : La creation d&#39;une boite Vagrant</title><content type='html'>Comme je l&#39;abordais dans mon précédent article, l&#39;utilisation de Vagrant pour le&amp;nbsp;développement&amp;nbsp;a été pour moi un gros plus et une superbe découverte.&lt;br /&gt;
&lt;br /&gt;
Mais, vous allez me dire comment créer sa propre Box en effet, il est pas évident de faire confiance à celle que l&#39;on peut trouver sur internet surtout dans le cadre d&#39;une équipe de projet.&lt;br /&gt;
&lt;br /&gt;
C&#39;est à ce titre, que je conseille l&#39;utilisation de Veewee (&lt;a href=&quot;https://github.com/jedi4ever/veewee&quot;&gt;https://github.com/jedi4ever/veewee&lt;/a&gt;)&amp;nbsp;qui permet de créer toutes sortes de Box et qui est surtout d&#39;une simplicité d&#39;utilisation déconcertante.&lt;br /&gt;
&lt;br /&gt;
Le pré-requis pour l&#39;utilisation de veewee est une plate-forme ruby 1.9.2 et la dernière version de VirtualBox (&lt;a href=&quot;http://www.virtualbox.org/&quot;&gt;http://www.virtualbox.org&lt;/a&gt;), là, il faut impérativement installer RVM sur la machine qui va vous servir à créer votre box et cela afin d&#39;avoir la meilleur version possible de ruby à savoir la 1.9.2p290.&lt;br /&gt;
&lt;br /&gt;
Une fois, les pré-requis en place, la meilleure façon de procéder est de cloner veewee à partir de Github, le procédure d&#39;installation est très bien faite :&amp;nbsp;&lt;a href=&quot;https://github.com/jedi4ever/veewee/blob/master/doc/installation.md&quot;&gt;https://github.com/jedi4ever/veewee/blob/master/doc/installation.md&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Ensuite, il y a juste à utiliser veewee (il faut se positionner à la racine du répertoire veewee) et voici la procédure à suivre pour créer une boite directement sans trop de changement :&lt;br /&gt;
&lt;br /&gt;
&lt;script class=&quot;brush: bash&quot; type=&quot;syntaxhighlighter&quot;&gt;
veewee vbox define &#39;myminiubuntubox&#39; &#39;ubuntu-12.04.1-server-amd64-packages&#39;
&lt;/script&gt;

Ce processus crée une nouvelle définition de boîte dans le répertoire veewee/definitions. Vous pouvez si vous vous en sentez le courage modifier les fichiers mais à titre d&#39;exemple nous le ferons pas. La prochaine étape est de créer la Box :
&lt;br /&gt;
&lt;script class=&quot;brush: bash&quot; type=&quot;syntaxhighlighter&quot;&gt;
veewee vbox build &#39;myminiubuntubox&#39; 
&lt;/script&gt;

&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHjmHxr6NIBujvxycfjWrB2r8Kkr3R619J2iVWtpvl7f23xlmZkQViYQAfaySjqCwcT-sPPEQAPNgn1mawdQmENASeClePBaA8EZZBOaukFqcrQEXMIXTPiEWrTCjXXFimoYCr6llTcVK3/s1600/Capture+du+2012-09-07+10%253A57%253A53.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;205&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHjmHxr6NIBujvxycfjWrB2r8Kkr3R619J2iVWtpvl7f23xlmZkQViYQAfaySjqCwcT-sPPEQAPNgn1mawdQmENASeClePBaA8EZZBOaukFqcrQEXMIXTPiEWrTCjXXFimoYCr6llTcVK3/s320/Capture+du+2012-09-07+10%253A57%253A53.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Cette étape prend pas mal de temps à cause essentiellement des téléchargements d&#39;images ISO nécessaire à l&#39;installation. Vous pourrez suivre de manière simple la procédure. 
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqoR0q4XpQEJJjk4q-v1mE658b1SurkJyQ-4dGogIm644_SuMjnyY2dvBXSeJ1hgEWhB1RYesuI46rZEuWs3hRlZwob-3o9x3k0fK2vgwSJPqgRQihZHPZefpCkGYLe1E7L-ZlSZEMYXNN/s1600/Capture+du+2012-09-07+10:57:09.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;200&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqoR0q4XpQEJJjk4q-v1mE658b1SurkJyQ-4dGogIm644_SuMjnyY2dvBXSeJ1hgEWhB1RYesuI46rZEuWs3hRlZwob-3o9x3k0fK2vgwSJPqgRQihZHPZefpCkGYLe1E7L-ZlSZEMYXNN/s320/Capture+du+2012-09-07+10:57:09.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Une fois, cette étape terminée, vous aurez une boite en place :
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJLNVWGo_2LamBDFOs78hJh8kky6mZTIt-EROe9-fmWjTFCGlpQaxQrtVQPkk6qYamvAoJDGRb7KRwqWjpE01WAfhP4mVwJoIQD6pMILNldRjSX_FY6nI-bLU0T2TIDOBNDyaqpH9jg_6e/s1600/Capture+du+2012-09-07+11%253A34%253A53.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;205&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJLNVWGo_2LamBDFOs78hJh8kky6mZTIt-EROe9-fmWjTFCGlpQaxQrtVQPkk6qYamvAoJDGRb7KRwqWjpE01WAfhP4mVwJoIQD6pMILNldRjSX_FY6nI-bLU0T2TIDOBNDyaqpH9jg_6e/s320/Capture+du+2012-09-07+11%253A34%253A53.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Une fois, la box créée, vous pourrez l&#39;exporter dans une fichier &quot;.box&quot; à distribuer à l&#39;ensemble de votre équipe de développement avec la commande suivante :&lt;br /&gt;
&lt;script class=&quot;brush: bash&quot; type=&quot;syntaxhighlighter&quot;&gt;
vagrant basebox export &#39;myminiubuntubox&#39;
&lt;/script&gt;

Nous venons de voir comment créer une Box vide, cependant, maintenant le problème se pose de la mise en place celle-ci dans un environnement réel avec les outils nécessaires comme mysql, postgres, php .etc.. Nous allons pour cela utiliser le système de &quot;Provision&quot; permettant à partir d&#39;un script de mettre en place l&#39;environnement et de l&#39;utiliser ensuite au quotidien. Nous aborderons cela dans un prochain article en attendant, je ne saurait que trop vous conseiller de tester.</content><link rel='replies' type='application/atom+xml' href='http://snailitblog.blogspot.com/feeds/8080391775261999941/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://snailitblog.blogspot.com/2012/09/veewee-la-creation-dune-boite-vagrant.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4071621315515637689/posts/default/8080391775261999941'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4071621315515637689/posts/default/8080391775261999941'/><link rel='alternate' type='text/html' href='http://snailitblog.blogspot.com/2012/09/veewee-la-creation-dune-boite-vagrant.html' title='Veewee : La creation d&#39;une boite Vagrant'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHjmHxr6NIBujvxycfjWrB2r8Kkr3R619J2iVWtpvl7f23xlmZkQViYQAfaySjqCwcT-sPPEQAPNgn1mawdQmENASeClePBaA8EZZBOaukFqcrQEXMIXTPiEWrTCjXXFimoYCr6llTcVK3/s72-c/Capture+du+2012-09-07+10%253A57%253A53.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4071621315515637689.post-7915457153888430892</id><published>2012-09-04T09:17:00.001+02:00</published><updated>2012-09-04T09:17:21.950+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="MySQL"/><category scheme="http://www.blogger.com/atom/ns#" term="php"/><category scheme="http://www.blogger.com/atom/ns#" term="PostgreSQL"/><category scheme="http://www.blogger.com/atom/ns#" term="Ruby"/><category scheme="http://www.blogger.com/atom/ns#" term="Vagrant"/><category scheme="http://www.blogger.com/atom/ns#" term="Veewee"/><category scheme="http://www.blogger.com/atom/ns#" term="VirtualBox"/><title type='text'>Vagrant : Le développement sur VM</title><content type='html'>Nous nous sommes tous heurter à la difficulté de mettre en place son environnement de développement, surtout dans le cadre de la mise en place d&#39;une plateforme homogène entre plusieurs postes sans ajout de logiciels tiers et le plus proche possible de l&#39;environnement de production.&lt;br /&gt;
&lt;br /&gt;
- Exemple : une plateforme PHP, MySQL, Postgres dans le cadre de la migration d&#39;un application PHP de MySQL vers Postgres.&lt;br /&gt;
&lt;br /&gt;
Au fil de mes recherches sur le net et surement avec beaucoup de retard je suis tombé sur Vagrant. (http://vagrantup.com)&lt;br /&gt;
&lt;br /&gt;
Vagrant a pour but de rendre plus simple l&#39;utilisation de machine virtuelle dans le cadre de l&#39;environnement de développement. On peut le dire le but est atteint pour la facilité de développement entre la machine hôte et la VM.&lt;br /&gt;
&lt;br /&gt;
Le plus compliqué avec Vagrant va être de créer sa propre machine proche des habitudes de développement de l&#39;équipe. Car Vagrant n&#39;est pas là pour cela, il est juste là pour le montage de la machine et son utilisation au quotidien.&lt;br /&gt;
&lt;br /&gt;
Heureusement, la communauté est très active sur le sujet et des outils sont là pour simplifier la création de sa propre Box avec quelques connaissances. Je pense notamment à Veewee (https://github.com/jedi4ever/veewee) qui est vraiment un outil à s&#39;accaparer pour la création de sa propre Box, n&#39;hésitez pas à dupliquer le projet et pusher vos modifications pour mettre à disposition vos Box, c&#39;est d&#39;ailleurs ce que je vais faire.&lt;br /&gt;
&lt;br /&gt;
Mais, ne vous inquiétez pas, je vous prépare un petit tutoriel pour l&#39;utilisation de Veewee avec une Box en français.&lt;br /&gt;
&lt;br /&gt;
Et, important à savoir tout cela, c&#39;est en Ruby.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://snailitblog.blogspot.com/feeds/7915457153888430892/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://snailitblog.blogspot.com/2012/09/vagrant-le-developpement-sur-vm.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4071621315515637689/posts/default/7915457153888430892'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4071621315515637689/posts/default/7915457153888430892'/><link rel='alternate' type='text/html' href='http://snailitblog.blogspot.com/2012/09/vagrant-le-developpement-sur-vm.html' title='Vagrant : Le développement sur VM'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4071621315515637689.post-6513411342151042410</id><published>2012-09-03T08:00:00.000+02:00</published><updated>2012-09-03T12:33:06.740+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="MySQL"/><category scheme="http://www.blogger.com/atom/ns#" term="PostgreSQL"/><title type='text'>Tip SQL: pourquoi Migrer de MySQL vers PostgreSQL?</title><content type='html'>Comment dire....&lt;br /&gt;
quand on a fini de jouer avec MySQL et que l&#39;on veut passer en production, on cherche un moteur SQL de pros.&lt;br /&gt;
C&#39;est un peu comme quand tu as cassé ta perceuse achetée chez Lidl (en promo !) et que tu bave devant la bosh dans le rayon chez casto...&lt;br /&gt;
Moi, mon vendeur, il m&#39;a fait l&#39;article et je viens tout juste de déballer le paquet: &amp;nbsp;PostgreSQL 9.&lt;br /&gt;
Avec ça, j&#39;ai bien envie de percer des trous partout dans mes serveurs...&lt;br /&gt;
Bon, je m&#39;emporte:&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;MySQL c&#39;est quand même bien!&lt;/li&gt;
&lt;li&gt;je fais toujours des courses chez lidl&lt;/li&gt;
&lt;li&gt;même facebook utilise la perceuse pas cher de chez Lidl ( MySQL)&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
C&#39;est quoi les avantages de MySQL ?&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;d&#39;abord le moteur est facilement configurable&lt;/li&gt;
&lt;li&gt;l&#39;outil de requêtage MysqlWorkBench est pas mal - &amp;nbsp;je dirais même , il s&#39;approche de ce que fait Microsoft.&lt;/li&gt;
&lt;li&gt;la doc en ligne est ok&lt;/li&gt;
&lt;li&gt;la communauté est active&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div&gt;
Mais quand on se penche un peu sur le bestiau, il y a des trucs qui me gênent :&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;ol&gt;
&lt;li&gt;la sauvegarde incrémentale InnoDB =&amp;gt; pas disponible en mode gratos. Vas donc sauvegarder 400 Go d&#39;un serveur sur-sollicité....&lt;/li&gt;
&lt;li&gt;le mode mono-thread sur les requêtes : Fais donc une auto-jointure sur une table de 25 millions d&#39;enregistrements; ben, tu peux pas Mr patate !! en tout cas pas avec ton kimsuffi à &amp;nbsp;trois euros six sous.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;pas de sharding (répartition de données) &amp;nbsp;sauf à &amp;nbsp;l&#39;implémenter côté applicatif; Bref, réinventer ce foutu fil à couper le beurre que j&#39;ai eu tant de mal à réinventer les 50 dernières fois.&lt;/li&gt;
&lt;li&gt;et puis j&#39;ai aussi envie de changer les rideaux , donc je veux ma nouvelle perceuse !&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
Alors quelle perceuse doit-je prendre ? en général, le vendeur vous demande ce que vous allez en faire.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
Moi, je veux :&lt;/div&gt;
&lt;div&gt;
&lt;ol&gt;
&lt;li&gt;une Bdd gratos&lt;/li&gt;
&lt;li&gt;facile à &amp;nbsp;administrer&amp;nbsp;&lt;/li&gt;
&lt;li&gt;grosse volumétrie&lt;/li&gt;
&lt;li&gt;qui va se comporter en entrepôt de données ( peu de transactions, beaucoup de lectures, beaucoup de calculs)&lt;/li&gt;
&lt;li&gt;compatible avec ce qui a déjà &amp;nbsp;été implémenté côté applicatif&lt;/li&gt;
&lt;li&gt;le plus proche possible de l&#39;ANSI SQL 92 ( utilisation des instructions JOIN )&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
Vous savez maintenant ce que j&#39;ai choisi comme Base de données....&lt;br /&gt;
&lt;br /&gt;
Et vous, vous pensez quoi des avantages de l&#39;un et de l&#39;autre ?&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://snailitblog.blogspot.com/feeds/6513411342151042410/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://snailitblog.blogspot.com/2012/09/tip-sql-pourquoi-migrer-de-mysql-vers.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4071621315515637689/posts/default/6513411342151042410'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4071621315515637689/posts/default/6513411342151042410'/><link rel='alternate' type='text/html' href='http://snailitblog.blogspot.com/2012/09/tip-sql-pourquoi-migrer-de-mysql-vers.html' title='Tip SQL: pourquoi Migrer de MySQL vers PostgreSQL?'/><author><name>Emmanuel Pellegrin</name><uri>http://www.blogger.com/profile/15796979517044798282</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiQxP15xYuTox2i46zTaQEVls30AO9aNHLTIpqQjnuwYOkLvJjAAX6qdevKmHfGiBzP_8i5thhTN950NaQcIHeehqxI7ec-etYUdzn3rEix3KSbyMGvXGHarY4go8DSA/s1600/perso_2012_1.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4071621315515637689.post-4736795263671144712</id><published>2012-08-27T09:37:00.000+02:00</published><updated>2012-08-27T09:37:15.990+02:00</updated><title type='text'>Tip MySQL: restaurer une table à partir d&#39;une sauvegarde complète</title><content type='html'>En tant qu&#39;administrateur de base de données MySQL, vous avez surement mis en place une &amp;nbsp;politique de sauvegarde des bases de données qui permet de sauvegarder toutes les bases installées.&lt;br /&gt;
Pour ma part j&#39;utilise &lt;a href=&quot;http://bit.ly/PvWnh1&quot; target=&quot;_blank&quot;&gt;automysqlbackup&lt;/a&gt;&amp;nbsp;qui permet de faire une rotation des bases de données.&lt;br /&gt;
Or ce logiciel sauvegarde l&#39;ensemble des bases dans un seul et même fichier.&lt;br /&gt;
&lt;br /&gt;
Imaginons maintenant qu&#39;un développeur vienne vous dire qu&#39;il a détruit les données d&#39;une table et qu&#39;il faudrait restaurer uniquement cette table à &amp;nbsp;partir des données de la veille.&lt;br /&gt;
&lt;br /&gt;
La première chose que vous faites et de croiser les doigts en allant regarder dans le répertoire de sauvegarde s&#39;il y a bien un dump des bases.&lt;br /&gt;
Ensuite, vous essayez de localiser la table en question avec votre éditeur préféré pour faire un copier coller dans l&#39;IHM MySQL Workbench.&lt;br /&gt;
Problème: &amp;nbsp;le fichier de dump fait 20 Go!&lt;br /&gt;
même &lt;b&gt;vi&lt;/b&gt; a du mal à &amp;nbsp;ouvrir le fichier...&lt;br /&gt;
Vous devez donc vous pencher sur les capacité du programme &lt;b&gt;sed &lt;/b&gt;dont&amp;nbsp;voici&amp;nbsp;une bonne &lt;a href=&quot;http://bit.ly/Qp5sE7&quot; target=&quot;_blank&quot;&gt;introduction&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
L&#39;explication suivante s&#39;appuie sur un exemple précis:&lt;br /&gt;
&amp;nbsp;restaurer la table comments qui appartient à &amp;nbsp;la base de donées facebook.&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;
Identification des patterns&lt;/h4&gt;
Si on regarde de plus près le type de sauvegarde qu&#39;&lt;a href=&quot;http://bit.ly/PvWnh1&quot; target=&quot;_blank&quot;&gt;automysqlbackup&lt;/a&gt;&amp;nbsp;effectue ( grâce au programme mysqldump), on remarque plusieurs choses :&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;avant &amp;nbsp;chaque création de base de données on retrouve un commentaire.Exemple :&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
--&lt;br /&gt;
-- Current Database: `facebook`&lt;br /&gt;
--&lt;br /&gt;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `facebook` /*!40100 DEFAULT CHARACTER SET utf8 */;&lt;br /&gt;
USE `facebook`;&lt;/blockquote&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;pour chaque table , la table est détruite ( commande DROP)&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
DROP TABLE IF EXISTS `comment`;&lt;/blockquote&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;la table est crée,&amp;nbsp;verrouillée, les données sont insérées puis enfin la table est&amp;nbsp;déverrouillée&amp;nbsp;:&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
UNLOCK TABLES;&lt;/blockquote&gt;
On peut donc en déduire une stratégie :&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;d&#39;abord extraire la base de données cherchée et la sauvegarder dans un fichier&lt;/li&gt;
&lt;li&gt;ensuite extraire la table &amp;nbsp;cherchée et la sauvegarder dans un fichier&lt;/li&gt;
&lt;/ol&gt;
&lt;br /&gt;
&lt;h4&gt;
Extraction de la Base &amp;nbsp;de données&amp;nbsp;&lt;/h4&gt;
On va donc utiliser le pattern &quot;Current Database&quot; pour &amp;nbsp;extraire uniquement la base de données facebook:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
sed -n -e &#39;/Current Database: .facebook/,/Current Database/p&#39; mon_fichier_de_dump.sql &amp;gt; facebook.sql&lt;/blockquote&gt;
&lt;br /&gt;
cette commande va extraire à &amp;nbsp;partir du fichier&amp;nbsp;mon_fichier_de_dump.sql&amp;nbsp;tout ce qui se trouve entre le texte&amp;nbsp;&quot;Current Database: `facebook`&quot; et le prochain texte &quot;Current Database:&quot; &amp;nbsp;et sauvegarder dans le fichier facebook.sql.&lt;br /&gt;
&lt;br /&gt;
l&#39;option -n avec l&#39;option /p &amp;nbsp;permet à &amp;nbsp;sed de n&#39;écrire que les lignes comprises entre les deux patterns.&lt;br /&gt;
l&#39;option -e&lt;br /&gt;
&lt;h4&gt;
Extraction de la table&lt;/h4&gt;
Une fois que la base de données est extraite, on peut maintenant extraire la table comment :&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
sed -n -e &#39;/DROP TABLE.*`comment`/,/UNLOCK TABLES/p&#39; facebook.sql &amp;gt; comment.sql&lt;/blockquote&gt;
&lt;br /&gt;
&lt;h4&gt;
Restauration de la table&lt;/h4&gt;
&amp;nbsp;Il suffit ensuite de restaurer la table comments&amp;nbsp;dans&amp;nbsp;votre serveur de base de données avec la commande mysql:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
mysql -h myserver.mynetwork.com &amp;nbsp;-u root -pmyPassword -D facebook&amp;lt; facebook.sql&lt;/blockquote&gt;
&lt;br /&gt;
Evidemment, vous pourrez modifier</content><link rel='replies' type='application/atom+xml' href='http://snailitblog.blogspot.com/feeds/4736795263671144712/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://snailitblog.blogspot.com/2012/08/tip-mysql-restaurer-une-table-partir.html#comment-form' title='2 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4071621315515637689/posts/default/4736795263671144712'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4071621315515637689/posts/default/4736795263671144712'/><link rel='alternate' type='text/html' href='http://snailitblog.blogspot.com/2012/08/tip-mysql-restaurer-une-table-partir.html' title='Tip MySQL: restaurer une table à partir d&#39;une sauvegarde complète'/><author><name>Emmanuel Pellegrin</name><uri>http://www.blogger.com/profile/15796979517044798282</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiQxP15xYuTox2i46zTaQEVls30AO9aNHLTIpqQjnuwYOkLvJjAAX6qdevKmHfGiBzP_8i5thhTN950NaQcIHeehqxI7ec-etYUdzn3rEix3KSbyMGvXGHarY4go8DSA/s1600/perso_2012_1.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4071621315515637689.post-6769691510114255742</id><published>2012-08-21T17:36:00.004+02:00</published><updated>2012-08-21T17:36:49.971+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="mdx"/><category scheme="http://www.blogger.com/atom/ns#" term="MySQL"/><category scheme="http://www.blogger.com/atom/ns#" term="SQL"/><category scheme="http://www.blogger.com/atom/ns#" term="SQL Server"/><title type='text'>Tip SQL/MDX: chercher le top X pour chaque groupe</title><content type='html'>Une des demandes les plus récurrentes, lorsque l&#39;on fait des tableaux de bord c&#39;est de retrouver les &quot;10 meilleurs clients par zone commerciale&quot;, ou encore les &quot;10 plus gros contributeurs facebook  par page&quot; .&lt;br /&gt;
&lt;div&gt;
Aujourd&#39;hui je vous propose 3 façons de résoudre cette problématique en SQL, selon le système &amp;nbsp;utilisé.&lt;/div&gt;
&lt;div&gt;
Imaginons la table suivante: &lt;/div&gt;
&lt;div&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;br /&gt;
&lt;br /&gt;
Create &amp;nbsp; TABLE Contribs (id_page int, page varchar(50), fan varchar(50) , contribs INT);&lt;br /&gt;
&lt;br /&gt;
INSERT INTO Contribs VALUES (2, &#39;françois Hollande&#39;, &#39;toto&#39; , 65);&lt;br /&gt;
INSERT INTO Contribs VALUES (2,&#39;françois Hollande&#39;, &#39;titi&#39; , 50);&lt;br /&gt;
INSERT INTO Contribs VALUES &amp;nbsp;(2,&#39;françois Hollande&#39;, &#39;tutu&#39; , 30);&lt;br /&gt;
INSERT INTO Contribs VALUES (2,&#39;françois Hollande&#39;, &#39;tata&#39; , 20);&lt;br /&gt;
INSERT INTO Contribs VALUES &amp;nbsp;(8,&#39;Nicolas Sarkozy&#39;, &#39;toto&#39; , 5);&lt;br /&gt;
INSERT INTO Contribs VALUES &amp;nbsp;(8,&#39;Nicolas Sarkozy&#39;, &#39;titi&#39; , 41);&lt;br /&gt;
INSERT INTO Contribs VALUES &amp;nbsp; (8,&#39;Nicolas Sarkozy&#39;, &#39;tutu&#39; , 35);&lt;br /&gt;
INSERT INTO Contribs VALUES &amp;nbsp;(8,&#39;Nicolas Sarkozy&#39;, &#39;tata&#39; , 66);&lt;br /&gt;
INSERT INTO Contribs VALUES &amp;nbsp;(8,&#39;Nicolas Sarkozy&#39;, &#39;tete&#39; , 67);&lt;br /&gt;
INSERT INTO Contribs VALUES &amp;nbsp;(24,&#39;Marine Le Pen&#39;, &#39;toto&#39; , 35);&lt;br /&gt;
INSERT INTO Contribs VALUES &amp;nbsp;(24,&#39;Marine Le Pen&#39;, &#39;tata&#39; , 15);&lt;br /&gt;
INSERT INTO Contribs VALUES &amp;nbsp;(24,&#39;Marine Le Pen&#39;, &#39;titi&#39; , 5);&lt;br /&gt;
INSERT INTO Contribs VALUES &amp;nbsp;(24,&#39;Marine Le Pen&#39;, &#39;tutu&#39; , 3);&lt;br /&gt;
INSERT INTO Contribs VALUES &amp;nbsp;(24,&#39;Marine Le Pen&#39;, &#39;zozo&#39; , 2);&lt;br /&gt;
INSERT INTO Contribs VALUES &amp;nbsp;(8,&#39;Nicolas Sarkozy&#39;, &#39;zizi&#39; , 69);&lt;br /&gt;
INSERT INTO Contribs VALUES &amp;nbsp;(8,&#39;Nicolas Sarkozy&#39;, &#39;zaza&#39; , 100);&lt;br /&gt;
INSERT INTO Contribs VALUES &amp;nbsp;(8,&#39;Nicolas Sarkozy&#39;, &#39;zuzu&#39; , 1230);&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/blockquote&gt;
&lt;/div&gt;
&lt;div&gt;
Cette table correspond à la liste des fans ( champ fan) de pages page facebook avec la liste&lt;br /&gt;
&lt;h4&gt;
Sql Server:&lt;/h4&gt;
&lt;/div&gt;
&lt;div&gt;
Bon là  c&#39;est tellement simple que s&#39;en est bête... on va utiliser la fonction RANK, introduite avec la version 2005&lt;/div&gt;
&lt;div&gt;
la fonction RANK() , permet de calculer un auto-incrément lors d&#39;une requête.&lt;/div&gt;
&lt;div&gt;
Par exemple:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
select * &amp;nbsp; from &amp;nbsp;( select page, fan, contribs, RANK() over ( Partition by page order by contribs DESC) &amp;nbsp;as Rank&lt;br /&gt;
from &amp;nbsp;Contribs ) as TEMP&lt;br /&gt;
where Rank &amp;lt;=10;&lt;/blockquote&gt;
&lt;h4&gt;
MySql:&lt;/h4&gt;
&lt;/div&gt;
&lt;div&gt;
Bon, là &amp;nbsp;on va utiliser une fonctionnalité que j&#39;appellerais &quot;procédurale&quot;de Mysql et non ensembliste.&lt;br /&gt;
Je m&#39;explique:&lt;br /&gt;
au sein même de la requête, on utilise l&#39;incrémentation au fur et à &amp;nbsp;mesure que le moteur lit et ordonne les lignes qu&#39;il trouve.&lt;br /&gt;
On doit d&#39;abord ordonner les contributeurs &amp;nbsp;par page:&lt;br /&gt;
select page, fans, contribs from Contribs &amp;nbsp;order by page, contribs DESC;&lt;br /&gt;
&lt;br /&gt;
On introduit l&#39;incrémentation au travers d&#39;une variable : @count.&lt;br /&gt;
Dès que le moteur de requête change de &amp;nbsp;page, il est nécessaire de remettre à &amp;nbsp;zéro la variable @count.&lt;br /&gt;
L&#39;indication du changement de page se fera avec la variable :&amp;nbsp;@oldPage&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
select &amp;nbsp;@oldPage := 0 , @count := 0;&lt;br /&gt;SELECT&lt;br /&gt;&amp;nbsp; &amp;nbsp; @count := IF(id_page &amp;lt;=&amp;gt; @oldPage, @count+1, 0) as mycount,&lt;br /&gt;&amp;nbsp; &amp;nbsp; @oldPage := id_page,&lt;br /&gt;&amp;nbsp; &amp;nbsp; page,&lt;br /&gt;&amp;nbsp; &amp;nbsp; fan,&lt;br /&gt;&amp;nbsp; &amp;nbsp; contribs&lt;br /&gt;FROM Contribs&lt;br /&gt;ORDER BY id_page, contribs DESC;&lt;/blockquote&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il suffit ensuite de filtrer :&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
select fan,page, contribs &amp;nbsp;from (SELECT&lt;br /&gt;&amp;nbsp; &amp;nbsp; @count := IF(id_page &amp;lt;=&amp;gt; @oldPage, @count+1, 0) as mycount,&lt;br /&gt;&amp;nbsp; &amp;nbsp; @oldPage := id_page,&lt;br /&gt;&amp;nbsp; &amp;nbsp; page,&lt;br /&gt;&amp;nbsp; &amp;nbsp; fan,&lt;br /&gt;&amp;nbsp; &amp;nbsp; contribs&lt;br /&gt;FROM Contribs&lt;br /&gt;ORDER BY id_page, contribs DESC) &amp;nbsp;t&lt;br /&gt;where mycount&amp;lt;=10;&lt;/blockquote&gt;
&lt;h4&gt;
ANSI SQL:&lt;/h4&gt;
&lt;/div&gt;
&lt;div&gt;
On doit toujours revenir aux bases... &lt;/div&gt;
&lt;div&gt;
Sachant que le langage SQL ne sait pas compter la position dans le résultat, il faut trouver autre chose.&lt;br /&gt;
On peut essayer d&#39;imaginer d&#39;extraire pour chaque contribution ( contribs) &amp;nbsp;le sous-ensemble des contributions supérieures et inférieures.&lt;br /&gt;
&lt;br /&gt;
Pour chaque contribs, on peut extraire le sous ensemble des contribs supérieures:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
select C2.contribs, C1.contribs&lt;br /&gt;from &amp;nbsp;Contribs as C1&lt;br /&gt;join Contribs as C2 on C1.contribs &amp;gt;= C2.contribs&lt;/blockquote&gt;
On veut maintenant n&#39;avoir que les contribs qui n&#39;ont que trois contribs qui lui sont supérieurs. On va compter pour chaque sous ensemble le nombre distinct de contribs &amp;nbsp;:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
select min(C1.contribs)&lt;br /&gt;from &amp;nbsp;Contribs as C1&lt;br /&gt;join Contribs as C2 on C1.contribs &amp;gt;= C2.contribs&lt;br /&gt;group by C2.contribs&lt;br /&gt;having count(DISTINCT C1.contribs) &amp;lt;=3;&lt;/blockquote&gt;
Avec cette requête, on récupère ainsi les trois plus hautes contribs c&#39;est à &amp;nbsp;dire 69,100 et 1230&lt;br /&gt;
&lt;br /&gt;
Enfin, on veut faire le regroupement par page :&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
select min(C1.contribs) , C1.page&lt;br /&gt;from &amp;nbsp;Contribs as C1&lt;br /&gt;join Contribs as C2 on C1.contribs &amp;gt;= C2.contribs and C1.id_page = C2.id_page&lt;br /&gt;group by C2.contribs, C1.page&lt;br /&gt;having count(DISTINCT C1.contribs) &amp;lt;=3;&lt;/blockquote&gt;
&lt;br /&gt;
Il ne reste plus qu&#39;à &amp;nbsp;injecter les noms des contributeurs :&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
select c.* &amp;nbsp;from &amp;nbsp;Contribs c&lt;br /&gt;JOIN&lt;br /&gt;(select min(C1.contribs) as contribs, C1.id_page&lt;br /&gt;from &amp;nbsp;Contribs as C1&lt;br /&gt;join Contribs as C2 on C1.contribs &amp;gt;= C2.contribs and C1.id_page = C2.id_page&lt;br /&gt;group by C2.contribs, C1.id_page&lt;br /&gt;having count(DISTINCT C1.contribs) &amp;lt;=3) t&lt;br /&gt;on t.id_page = c.id_page and c.contribs = t.contribs;&lt;/blockquote&gt;
Et voilà: &amp;nbsp;on récupère les trois meilleurs contributeurs par page!!&lt;br /&gt;
C&#39;est d&#39;ailleurs la requête la plus élégante et celle qui fonctionnera partout.&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;
MDX:&lt;/h4&gt;
Alors là, le système est très simple &amp;nbsp;avec l&#39;instruction &lt;b&gt;TopCount&lt;/b&gt; puisqu&#39;il permet de faire le filtre pour chaque sous-ensemble.&lt;br /&gt;
Par exemple, on crée un &quot;set&quot; des clients à qui on a le plus vendu sur 2012, puis on peut l&#39;utiliser &amp;nbsp;en dans une&amp;nbsp;requête&amp;nbsp;MDX:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
with set [Top10cust] as &#39;TopCount({[Client].[ClientName].Members}, 10.0, ([Time].[2012], [Measures].[sales]))&#39; &lt;br /&gt;member [Measures].[Ventes] as &#39;[Measures].[sales]&#39; &lt;br /&gt;select {[Measures].[Ventes]} on COLUMNS,&lt;br /&gt;&amp;nbsp;{[Top10cust]} &amp;nbsp;ON ROWS &lt;br /&gt;from [Commercial]&lt;/blockquote&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://snailitblog.blogspot.com/feeds/6769691510114255742/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://snailitblog.blogspot.com/2012/08/tip-sqlmdx-chercher-le-top-x-pour.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4071621315515637689/posts/default/6769691510114255742'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4071621315515637689/posts/default/6769691510114255742'/><link rel='alternate' type='text/html' href='http://snailitblog.blogspot.com/2012/08/tip-sqlmdx-chercher-le-top-x-pour.html' title='Tip SQL/MDX: chercher le top X pour chaque groupe'/><author><name>Emmanuel Pellegrin</name><uri>http://www.blogger.com/profile/15796979517044798282</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiQxP15xYuTox2i46zTaQEVls30AO9aNHLTIpqQjnuwYOkLvJjAAX6qdevKmHfGiBzP_8i5thhTN950NaQcIHeehqxI7ec-etYUdzn3rEix3KSbyMGvXGHarY4go8DSA/s1600/perso_2012_1.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4071621315515637689.post-6087259110187826486</id><published>2011-09-16T12:23:00.000+02:00</published><updated>2011-09-16T12:28:38.284+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Apple"/><category scheme="http://www.blogger.com/atom/ns#" term="Lion"/><category scheme="http://www.blogger.com/atom/ns#" term="Lion Disk Maker"/><category scheme="http://www.blogger.com/atom/ns#" term="MacOSX"/><category scheme="http://www.blogger.com/atom/ns#" term="Time Machine"/><title type='text'>Lion : Upgrade vs Clean Install</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;
Après deux mois d&#39;utilisation de Lion, en upgrade, je viens de faire une clean install.&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;b&gt;&amp;nbsp;Pourquoi ?&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Simple, le système me paraissait assez instable, et surtout lent par moment, voir extrêmement lent surtout au reboot environ 56s de boot.&amp;nbsp;&lt;/div&gt;
&lt;br /&gt;
&lt;b&gt;Pourquoi, pas avant ?&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
J&#39;ai opté pour la facilité, en effet, l&#39;upgrade est d&#39;une simplicité et surtout vraiment rapide.&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
De plus, j&#39;avais un peu peur quand à la récupération de mes données, possédant une bibliothèque photo d&#39;environ 90 Go, vous comprendrez ma crainte, mais bon time machine est là.&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;b&gt;Comment procéder ?&amp;nbsp;&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
D&#39;abord, je conseille à tout le monde de se faire un clé USB en suivant le tutoriel de l&#39;outil Lion Disk Maker :&amp;nbsp;&lt;a href=&quot;http://blog.gete.net/lion-diskmaker/&quot;&gt;http://blog.gete.net/lion-diskmaker/&lt;/a&gt;.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Cet outil est très bien fait et permet de préparer la réinstallation de manière plus efficace que la clé de récupération Apple.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Une fois, la clé prête :&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;/div&gt;
&lt;ol&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;Une vérification du disque dur avec &quot;Utilitaire de disque&quot;&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;Backup avec Time Machine sur un disque vierge (conseil la backup courante suffit)&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;Redémarrage de l&#39;ordinateur en utilisant la touche Alt afin de pouvoir choisir la clé USB qui doit évidement être inséré dans un port USB&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;Choisir la clé pour le redémarrage&amp;nbsp;&lt;/li&gt;
&lt;/ol&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJVsHF0PsMwF_m8bVCIUxTM3VnVxugnlDF4hMRIaekDG5I9X63X5EafGTShj9KwvbXEuDN133LwSWOBu5Bdp7XhZYRoBm0nuK5_OnUf1EJXOkJsK1lbATlZuw9EtNspeAY8vTB_E4zzWfV/s1600/photo.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;238&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJVsHF0PsMwF_m8bVCIUxTM3VnVxugnlDF4hMRIaekDG5I9X63X5EafGTShj9KwvbXEuDN133LwSWOBu5Bdp7XhZYRoBm0nuK5_OnUf1EJXOkJsK1lbATlZuw9EtNspeAY8vTB_E4zzWfV/s320/photo.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
Vous allez alors arriver sur l&#39;écran suivant :&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhM3ENYeUnCaZ5SysAJ13fWfE3YH3QfNl_p7OOr4red84Vt0NtXS36LHzC2-WVaSshNCaa3YYK9KnVRz5qXFdM2vBr0M2I67ooPhdCUC_xfbQC057aXfUrSZ0P9MkFu0NHWJfRnBGjsT1-X/s1600/photo2.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;239&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhM3ENYeUnCaZ5SysAJ13fWfE3YH3QfNl_p7OOr4red84Vt0NtXS36LHzC2-WVaSshNCaa3YYK9KnVRz5qXFdM2vBr0M2I67ooPhdCUC_xfbQC057aXfUrSZ0P9MkFu0NHWJfRnBGjsT1-X/s320/photo2.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;
Il va alors dans le but d&#39;une installation propre falloir suivre les étapes suivantes :&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;/div&gt;
&lt;ol&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;Aller dans l&#39;utilitaire de disque et effacer la partition principale, généralement &quot;Macintosh HD&quot;&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;Surtout choisir en type fichier celui proposé : &quot;MacOS etendu (journalisé)&quot;&amp;nbsp;&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;Une fois l&#39;opération effectuée - fermer l&#39;Utilitaire avec la croix rouge vous revenez alors sur l&#39;écran ci-dessus&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;A partir de là lancer l&#39;installation en utilisant &quot;Réinstaller Mac OS X&quot;&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;Suivez les instructions&amp;nbsp;&lt;/li&gt;
&lt;/ol&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Pour la récupération des données, personnellement, j&#39;ai utilisé Time Machine mais pas l&#39;Utilitaire de migration.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
J&#39;ai raccordé le disque utilisé pour ma sauvegarde&amp;nbsp;précédemment&amp;nbsp;et je lui ai dit que&amp;nbsp;c’était&amp;nbsp;un disque time machine, j&#39;ai alors arrêté la première sauvegarde et je suis entré dans Time Machine pour ne récupérer que mes fichiers de données et non les paramètres.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;b&gt;Résultat visible :&amp;nbsp;&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;ul&gt;
&lt;li&gt;Boot plus rapide 40s vs 56s (16s c&#39;est toujours bon à prendre)&lt;/li&gt;
&lt;li&gt;Fermeture plus rapide : 5s vs 15s&lt;/li&gt;
&lt;li&gt;Application plus fluide surtout visible avec iTunes et iPhoto dont la bibliothèque pèse plus de 90Go.&lt;/li&gt;
&lt;li&gt;Lancement des applications presque immédiatement.&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
Bref, aucun regret, si ce n&#39;est un peu de temps, bien que l&#39;ordinateur a travaillé tout seul la plupart du temps, début de la sauvegarde 9:30 fin vers 13:00.&lt;/div&gt;
&lt;div&gt;
Début de&amp;nbsp;l’installation&amp;nbsp;13:15 fin vers 13:30&lt;/div&gt;
&lt;div&gt;
Début de la restauration incluant l&#39;installation des mises à jour de l&#39;OS 13:45 fin vers 16:30.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;Il faut là l&#39;admettre quelque soit l&#39;OS une clean install prend du temps surtout à cause des opérations de sauvegarde et de restauration.&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://snailitblog.blogspot.com/feeds/6087259110187826486/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://snailitblog.blogspot.com/2011/09/lion-upgrade-vs-clean-install.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4071621315515637689/posts/default/6087259110187826486'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4071621315515637689/posts/default/6087259110187826486'/><link rel='alternate' type='text/html' href='http://snailitblog.blogspot.com/2011/09/lion-upgrade-vs-clean-install.html' title='Lion : Upgrade vs Clean Install'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJVsHF0PsMwF_m8bVCIUxTM3VnVxugnlDF4hMRIaekDG5I9X63X5EafGTShj9KwvbXEuDN133LwSWOBu5Bdp7XhZYRoBm0nuK5_OnUf1EJXOkJsK1lbATlZuw9EtNspeAY8vTB_E4zzWfV/s72-c/photo.JPG" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4071621315515637689.post-2764492937947488661</id><published>2011-08-27T15:08:00.002+02:00</published><updated>2012-09-07T14:15:27.274+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Lion"/><category scheme="http://www.blogger.com/atom/ns#" term="MacOSX"/><category scheme="http://www.blogger.com/atom/ns#" term="Ruby"/><category scheme="http://www.blogger.com/atom/ns#" term="Ruby on Rails"/><category scheme="http://www.blogger.com/atom/ns#" term="Ruby Version Manager"/><category scheme="http://www.blogger.com/atom/ns#" term="RVM"/><category scheme="http://www.blogger.com/atom/ns#" term="Ubuntu"/><title type='text'>RVM : Ruby Version Manager</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;Quand on essaye de développer sur Ruby, on se tourne tout de suite vers une machine virtuel sous Linux, non pas que Ruby pourrissent le système mais plutôt parce que sous windows il est beaucoup moins performant (c&#39;est mon point de vue).&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Quand on essaye de développer sur Ruby sous Linux, on entend rapidement parler de RVM (Ruby Version Manager).&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;RVM, c&#39;est vraiment le paradis pour le développeur Ruby qui veut tester sur plusieurs types d&#39;environnement (Ruby 1.8.7, 1.9.2, JRuby....), cet outil permet de switcher d&#39;un environnement à un autre sans trop d&#39;effort.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Il est hors de question de vous faire une fiche sur comment installer RVM, il y en a des très bonnes sur le net en Anglais certes et particulièrement&lt;a href=&quot;http://pragmaticstudio.com/blog/2010/9/23/install-rails-ruby-mac&quot;&gt;&amp;nbsp;http://pragmaticstudio.com/blog/2010/9/23/install-rails-ruby-mac&lt;/a&gt; qui marche exactement pareil sur ubuntu.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Je ne conseille pas l&#39;installation en sudo qui n&#39;est à mon avis pas utile.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Vous l&#39;avez compris RVM est un outil indispensable pour les développeurs Ruby &amp; Ruby on Rails, cependant, voici une liste de petits tips &amp; tricks intéressant :&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;- Si lors de l&#39;utilisation de &quot;rake&quot; vous rencontrez l&#39;erreur &quot;RakeFileUtils rake aborted&quot;, n&#39;hésitez à utiliser le lien suivant :&amp;nbsp;&lt;a href=&quot;http://joneslee85.wordpress.com/2011/07/29/howto-fix-rake-0-9-2-to-work-with-ruby-1-9-2-under-rvm/&quot;&gt;http://joneslee85.wordpress.com/2011/07/29/howto-fix-rake-0-9-2-to-work-with-ruby-1-9-2-under-rvm/&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;-&amp;nbsp;uninitialized constant Rake::DSL in Ruby Gem, l&#39;ajout de :&lt;/div&gt;&lt;pre class=&quot;brush:ruby&quot; style=&quot;text-align: justify;&quot;&gt;require &#39;rake/dsl_definition&#39;
&lt;/pre&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Dans le Rakefile&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;- vous rencontrez une erreur sur openssl avec Ruby on Rails, les commandes suivantes :&lt;/div&gt;&lt;pre class=&quot;brush:bash&quot;&gt;rvm pkg install openssl
rvm remove 1.9.2 --with-openssl-dir=$HOME/.rvm/usr
rvm install 1.9.2
&lt;/pre&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;A priori, vous avez là les principaux problèmes que l&#39;on peut résoudre rapidement.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://snailitblog.blogspot.com/feeds/2764492937947488661/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://snailitblog.blogspot.com/2011/08/rvm-ruby-version-manager.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4071621315515637689/posts/default/2764492937947488661'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4071621315515637689/posts/default/2764492937947488661'/><link rel='alternate' type='text/html' href='http://snailitblog.blogspot.com/2011/08/rvm-ruby-version-manager.html' title='RVM : Ruby Version Manager'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total><georss:featurename>France</georss:featurename><georss:point>46.227638 2.2137490000000071</georss:point><georss:box>41.328188 -5.3970509999999932 51.127088 9.8245490000000082</georss:box></entry><entry><id>tag:blogger.com,1999:blog-4071621315515637689.post-7072953771493179851</id><published>2011-08-26T09:08:00.001+02:00</published><updated>2011-08-27T15:11:18.998+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Apple"/><category scheme="http://www.blogger.com/atom/ns#" term="Back in Time"/><category scheme="http://www.blogger.com/atom/ns#" term="Leopard"/><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="Lion"/><category scheme="http://www.blogger.com/atom/ns#" term="Snow  Leopard"/><category scheme="http://www.blogger.com/atom/ns#" term="Time Machine"/><category scheme="http://www.blogger.com/atom/ns#" term="Windows"/><title type='text'>Time Machine : la sauvegarde pour les nuls</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;Ce titre, un brin péjoratif, reflète bien le fait que c&#39;est un outil de sauvegarde d&#39;une simplicité étonnante.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Depuis, Leopard (10.5), Mac OSX a introduit ce nouveau système de sauvegarde automatique. Pour l&#39;utiliser un disque dur USB vierge qu&#39;il faut formater en HFS+, dès le branchement du disque Time Machine vous demande si vous souhaitez l&#39;utiliser comme disque de sauvegarde et commence la première synchronisation qui peut durer un moment en fonction des données de votre disque principal.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Avec Time Machine, Apple a prévu tous les cas de pertes de données effacement accidentel, crash disque... En effet, la restauration après réinstallation est automatiquement proposée.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Time Machine sauvegarde les changements toutes les heures. Si le disque sature il supprime les sauvegardes les plus anciennes avec ou sans avertissement.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Alors, vous pourrez me lancer que Windows 7 propose également cela oui c&#39;est vrai mais je trouve l&#39;outil moins performant sur trois points :&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;- Il faut soit même programmer ce que l&#39;on veut sauvegarder et sur quel fréquence.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;- La restauration n&#39;est pas si visuellement simple.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;- Il ne supprime pas de lui-même les sauvegardes les plus anciennes.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Alors, oui, je maintiens mon titre, Time Machine est vraiment la sauvegarde pour les nuls, cependant, il faut quand même que je le précise, il existe sous Linux un équivalent sympa et assez efficace mais un peu plus proche de la solution Windows : &quot;Back in Time&quot;.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;La sauvegarde est un des points importants des futurs OS, en effet, les données numériques ont le vilain défaut de disparaître facilement, il faut donc que l&#39;OS propose la solution la plus simple et efficace pour l&#39;utilisateur avec une interface plaisante pour ne pas être rebuter par la mise en place de cette solution.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://snailitblog.blogspot.com/feeds/7072953771493179851/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://snailitblog.blogspot.com/2011/08/time-machine-la-sauvegarde-pour-les.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4071621315515637689/posts/default/7072953771493179851'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4071621315515637689/posts/default/7072953771493179851'/><link rel='alternate' type='text/html' href='http://snailitblog.blogspot.com/2011/08/time-machine-la-sauvegarde-pour-les.html' title='Time Machine : la sauvegarde pour les nuls'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total><georss:featurename>France</georss:featurename><georss:point>46.227638 2.2137490000000071</georss:point><georss:box>41.328188 -5.3970509999999932 51.127088 9.8245490000000082</georss:box></entry><entry><id>tag:blogger.com,1999:blog-4071621315515637689.post-4822026202545270134</id><published>2011-08-24T22:08:00.007+02:00</published><updated>2011-08-25T16:56:22.789+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="mdx"/><category scheme="http://www.blogger.com/atom/ns#" term="mondrian"/><category scheme="http://www.blogger.com/atom/ns#" term="olap"/><category scheme="http://www.blogger.com/atom/ns#" term="pentaho"/><title type='text'>Pentaho:calcul du pipe commercial en MDX avec Mondrian - partie 2</title><content type='html'>&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;Dans mon précédent &lt;a href=&quot;http://bit.ly/pKokyh&quot;&gt;post&lt;/a&gt; j&#39;ai posé le problème du  calcul par périodes du pipe commercial.&lt;div&gt;&lt;br /&gt;Maintenant que l&#39;on a la solution en SQL, on pourra valider la requête MDX.&lt;br /&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;On voudrait retranscrire ce que l&#39;on a fait en SQL c&#39;est à dire sélectionner les devis dont la date de devis est inférieur ( ou égal) à  la fin de la période et la date de commande ou d&#39;expiration supérieure (ou égale) au début de la période&lt;br /&gt;pour rappel la requête SQL est la suivante :&lt;br /&gt;&lt;blockquote&gt;... where (datedevis &amp;lt;= &quot;31/01/2011&quot;) and(datecommande &amp;gt;= &quot;01/01/2011&quot; );&lt;/blockquote&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;Premier essai MDX: Modélisation du cube&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Imaginons que l&#39;on ai créé un cube Mondrian basé sur la table des devis en sachant&lt;br /&gt;que la table contient deux dates ( date de devis et date de commande)&lt;br /&gt;Il nous faut donc deux dimensions de temps liées ces deux dates&lt;br /&gt;On a donc les dimensions suivantes [TimeStart] et [TimeEnd]&lt;div&gt;Ces dimensions   ne sont que des dimensions virtuelles de la dimension Time qui contient une hiérarchie par défaut dont les descendants ordonnés  sont :  Année,Quarter,Mois,Date:&lt;br /&gt;&lt;div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgIEIo8qdwNKaAfbJnurTLFMcESY60AbvmhX_REUJAkHtFwC8D6vr2uebjTbxyuWEYpT6YnGxgNLdun1Yha095K7OeEMj6gefKUKiS_Z8EfbzYxmkHhE0u6y_JzZeUy099pvPfeU3_Xndqb/s400/pipe4.png&quot; border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5644796843207186274&quot; style=&quot;display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 255px; height: 174px; &quot; /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;Voici donc le rendu dans SchemaWorkBench :&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLV9VhAaSE5xyNOitfalGJvJZ8Jofy4nESuCyzu2LGqy6Kulx00BJIfNhilkmVfA230SxkD3d13FSxd3WI0hhyphenhyphent7FAj-LYtPE7HzjPXTQVg4l0_m3Qjk8fSaBxR_1s0VDcTnCPmaKc7JtZ/s1600/pipe3.png&quot; onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 254px; height: 121px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLV9VhAaSE5xyNOitfalGJvJZ8Jofy4nESuCyzu2LGqy6Kulx00BJIfNhilkmVfA230SxkD3d13FSxd3WI0hhyphenhyphent7FAj-LYtPE7HzjPXTQVg4l0_m3Qjk8fSaBxR_1s0VDcTnCPmaKc7JtZ/s400/pipe3.png&quot; border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5644522082188684866&quot; /&gt;&lt;/a&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;Dans cette image , on remarque que les dimensions &lt;b&gt;TimeStart &lt;/b&gt;et &lt;b&gt;TimeEnd &lt;/b&gt;sont des Dimensions &quot;Usage&quot; c&#39;est à  dire qu&#39;elles ont été crées à  partir d&#39;une véritable dimension.&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;Premier essai MDX: la requête&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;maintenant que l&#39;on a créé le cube, on peut concevoir la requête:&lt;br /&gt;On doit faire un croisement entre&lt;br /&gt;&lt;ol&gt;&lt;li&gt;la période qui va de janvier à l&#39;infini dans la dimension TimeStart pour la date de commande ( rappelez-vous la condition SQL : datecommande &amp;gt;= &quot;01/01/2011&quot;) &lt;/li&gt;&lt;li&gt;et la période qui va du début de l&#39;existence de l&#39;informatique (&lt;i&gt;merci Turing! -  je laisse Snail préciser les choses&lt;/i&gt;)  à janvier dans la dimension TimeEnd pour la date de devis (condition SQL: datedevis &amp;lt;= &quot;31/01/2011&quot;)&lt;/li&gt;&lt;li&gt;et enfin le montant&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;Bon alors ça donne quoi ?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;déjà  comment savoir la date du début de l&#39;informatique ? On va utiliser le membre Firstchid de la dimension TimeStart auquel on va adjoindre la fonction MDX Openingperiod.&lt;/div&gt;&lt;div&gt;Du coup la condition 1 se résume à  &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;/b&gt;&lt;blockquote&gt;&lt;b&gt;OpeningPeriod&lt;/b&gt;([TimeStart].[Month],[TimeStart].firstchild):[TimeStart].[2011].[Q1].[January]&lt;/blockquote&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;De même, la condition 2 correspond à ça ( grâce à  la fonction ClosingPeriod et au membre Lastchild): &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;blockquote&gt;[TimeEnd].[2011].[Q1].[January]:&lt;b&gt;Closingperiod&lt;/b&gt;([TimeEnd].[Month],[TimeEnd].lastchild ) &lt;/blockquote&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Une petite explication s&#39;impose sur ces deux ensembles:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;[TimeStart].Firstchild permet d&#39;identifier le premier enfant de cette dimension c&#39;est à  dire la première année possible, LastChild étant la dernière année possible.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;OpeningPeriod &lt;/b&gt;permet de connaitre le dernier enfant possible à  un niveau spécifié( [TimeEnd].[Month]) pour un membre spécifique( [TimeEnd].lastchild).&lt;/div&gt;&lt;div&gt;Pour moi, la fin du monde étant positionné à  décembre 2013, la formule correspondra à  &lt;/div&gt;&lt;div&gt;[TimeEnd].[Q4].[December].&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Je vous laisse imaginer l&#39;explication pour &lt;b&gt;ClosingPeriod &lt;/b&gt;qui est la contraposée parfaite de la première.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Il suffit maintenant de mettre tout ça dans  un bocal, rajouter la mesure Montant et d&#39;agiter très fort. Voilà  ce que ça devrait donner : &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;with MEMBER Measures.x as &#39;  &lt;/div&gt;&lt;div&gt;SUM&lt;span class=&quot;Apple-style-span&quot; &gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt; &lt;b&gt;NonEmptyCrossJoin&lt;/b&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt; &lt;/div&gt;&lt;div&gt;&lt;b&gt;OpeningPeriod&lt;/b&gt;([TimeStart].[Month],[TimeStart].firstchild):[TimeStart].[2011].[Q1].[January],&lt;/div&gt;&lt;div&gt;[TimeEnd].[2011].[Q1].[January]:&lt;b&gt;Closingperiod&lt;/b&gt;([TimeEnd].[Month],[TimeEnd].lastchild ) &lt;span class=&quot;Apple-style-span&quot; &gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt; &lt;/div&gt;&lt;div&gt;,  [Measures].[Montant] &lt;span class=&quot;Apple-style-span&quot; &gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;&#39;&lt;/div&gt;&lt;div&gt;Select Measures.x on 0&lt;/div&gt;&lt;div&gt;from  [Pipe]&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Outre le fait que j&#39;utilise un membre calculé, je fais appel à  la fonction &lt;b&gt;&lt;i&gt;NonEmptyCrossJoin&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;qui permet de faire la jointure entre les parcours des deux dimensions ( en enlevant bien sûr les tuples vides) ainsi que la fonction SUM qui permet de faire la somme du montant sur le dataset créé par le crossjoin.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: bold; &quot;&gt;Premier essai MDX: Conclusions &lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Ok,  on a le bon montant du  pipe commercial  en janvier 2011,  mais peut avoir la même chose pour toutes les autres périodes à  partir d&#39;une seule requête ?&lt;/div&gt;&lt;div&gt;ça voudrait dire que l&#39;on puisse décrire mois par mois  ce qui revient à  dire qu&#39;il faut rajouter un axe supplémentaire dans la requête pour montrer les montants pour chaque mois.&lt;/div&gt;&lt;div&gt;Dans bien des cas, cela se résume à  rajouter un axe colonne  comme ceci : &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;select Measures.test on rows,&lt;/div&gt;&lt;div&gt;Descendants([Time]. [year],(Month) on columns&lt;/div&gt;&lt;div&gt;from [MonCube]&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Fastoche ? Pas vraiment :  je vous rappelle que l&#39;on a deux dimensions de temps différentes TimeStart et TimeEnd et que l&#39;on ne peut pas les aligner si facilement...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Comment ? parlez plus fort... &lt;/div&gt;&lt;div&gt;?rajouter une troisième dimension de temps ? &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Ok, mais ça suffit pas.... il faut aussi lier les trois dimensions entre elles pour que lorsque l&#39;on se positionne par exemple sur janvier , les deux autres prennent en compte cette période.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Heureusement  M$ ( l&#39;inventeur de MDX; respect à Mosha Pasumansky) a pensé à  tout :   la fonction &lt;b&gt;LinkMember .&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;Arghh !! Mauvaise Limonade: &lt;b&gt; &lt;/b&gt;Julian Hyde, le créateur de Mondrian,  ne l&#39;a pas implémenté... voir le &lt;a href=&quot;http://bit.ly/p44QmZ&quot;&gt;ticket&lt;/a&gt; si ça dit à quelqu&#39;un(e)..&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;Dans la troisième partie de cette série on verra comment résoudre le problème: &lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;i&gt;afficher à partir d&#39;une seule requête MDX le  montant du pipe commercial Mois par Mois&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://snailitblog.blogspot.com/feeds/4822026202545270134/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://snailitblog.blogspot.com/2011/08/pentahocalcul-du-pipe-commercial-en-mdx_24.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4071621315515637689/posts/default/4822026202545270134'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4071621315515637689/posts/default/4822026202545270134'/><link rel='alternate' type='text/html' href='http://snailitblog.blogspot.com/2011/08/pentahocalcul-du-pipe-commercial-en-mdx_24.html' title='Pentaho:calcul du pipe commercial en MDX avec Mondrian - partie 2'/><author><name>Emmanuel Pellegrin</name><uri>http://www.blogger.com/profile/15796979517044798282</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiQxP15xYuTox2i46zTaQEVls30AO9aNHLTIpqQjnuwYOkLvJjAAX6qdevKmHfGiBzP_8i5thhTN950NaQcIHeehqxI7ec-etYUdzn3rEix3KSbyMGvXGHarY4go8DSA/s1600/perso_2012_1.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgIEIo8qdwNKaAfbJnurTLFMcESY60AbvmhX_REUJAkHtFwC8D6vr2uebjTbxyuWEYpT6YnGxgNLdun1Yha095K7OeEMj6gefKUKiS_Z8EfbzYxmkHhE0u6y_JzZeUy099pvPfeU3_Xndqb/s72-c/pipe4.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4071621315515637689.post-9222471370872452516</id><published>2011-08-24T21:07:00.010+02:00</published><updated>2011-08-24T21:52:08.476+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="mdx"/><category scheme="http://www.blogger.com/atom/ns#" term="mondrian"/><category scheme="http://www.blogger.com/atom/ns#" term="olap"/><category scheme="http://www.blogger.com/atom/ns#" term="pentaho"/><title type='text'>Pentaho:calcul du pipe commercial en MDX avec Mondrian - partie 1</title><content type='html'>&lt;br /&gt;Voilà donc un cas d&#39;école de la vraie vie  comme un consultant décisionnel aime à  en voir: Comment calculer mois par mois un pipe commercial ?&lt;br /&gt;&lt;br /&gt;Bon, le besoin est simple: une entreprise veut connaître mois par mois le montant global des propositions commerciales qui ont été envoyées à  ses prospects.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMRz1fEDFKtfksQVofceTL8I6qqRNs3_VXQo28kmDVmkMA3__xaW_aA6JKeiDyFMYGXjff7GsLcZgDY6D9QXKThH94w1U0851QUNHmUQvyXJ6SU-ScM3J2oS-fJBLPl8ecKcLnKRKJyjkY/s1600/pipe_2011-08-24_21-16-31.png&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 200px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMRz1fEDFKtfksQVofceTL8I6qqRNs3_VXQo28kmDVmkMA3__xaW_aA6JKeiDyFMYGXjff7GsLcZgDY6D9QXKThH94w1U0851QUNHmUQvyXJ6SU-ScM3J2oS-fJBLPl8ecKcLnKRKJyjkY/s320/pipe_2011-08-24_21-16-31.png&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5644511606106653154&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;En général l&#39;entreprise a un système de force de ventes qui permet d&#39;extraire ces données là.&lt;br /&gt;Par exemple , un extract serait : &lt;br /&gt;N° de devis, N° de client/prospect, date du devis , date d&#39;expiration du devis (ou date de commande),Montant du devis, etc.&lt;br /&gt;&lt;br /&gt;Imaginons que nous voulions savoir la liste de tous les devis actifs sur le mois de janvier.&lt;br /&gt;On va donc devoir identifier les cas possibles; ça se résume à  cette image : &lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiORw_p-TzZ0orYhUX-xpKlHWHW5EYouKhJhb-ymGqTGUQ8ljXL0M7uWIT05Kgd-XkgiK2mU-xUf3MEgRA_Bn4Ackr-pvxCUoboWW8P-NBEQ6PI1nvdR9IdpUpW_ehz151ix1fGP7HyrpgY/s1600/pipe2.png&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 168px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiORw_p-TzZ0orYhUX-xpKlHWHW5EYouKhJhb-ymGqTGUQ8ljXL0M7uWIT05Kgd-XkgiK2mU-xUf3MEgRA_Bn4Ackr-pvxCUoboWW8P-NBEQ6PI1nvdR9IdpUpW_ehz151ix1fGP7HyrpgY/s400/pipe2.png&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5644512003052472562&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;La solution SQL: &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Bon là c&#39;est facile , il suffit  de retranscrire les 4 cas possibles dans les conditions de filtre:&lt;br /&gt;&lt;blockquote&gt;select sum(montant)  from  Pipe where (datedevis&gt;=&quot;01/01/2011&quot; and datecommande&lt;=&quot;31/01/2011&quot; or () etc...&lt;/blockquote&gt;&lt;br /&gt;Fastidieux, non ?...&lt;br /&gt;Heureusement, Il y a une façon plus élégante de regrouper les filtres: &lt;br /&gt;&lt;blockquote&gt;... where (datedevis &lt;= &quot;31/01/2011&quot;)  and(datecommande  &gt;= &quot;01/01/2011&quot; );&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Dans le prochain article j&#39;aborderais  la solution MDX pour Mondrian&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://snailitblog.blogspot.com/feeds/9222471370872452516/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://snailitblog.blogspot.com/2011/08/pentahocalcul-du-pipe-commercial-en-mdx.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4071621315515637689/posts/default/9222471370872452516'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4071621315515637689/posts/default/9222471370872452516'/><link rel='alternate' type='text/html' href='http://snailitblog.blogspot.com/2011/08/pentahocalcul-du-pipe-commercial-en-mdx.html' title='Pentaho:calcul du pipe commercial en MDX avec Mondrian - partie 1'/><author><name>Emmanuel Pellegrin</name><uri>http://www.blogger.com/profile/15796979517044798282</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiQxP15xYuTox2i46zTaQEVls30AO9aNHLTIpqQjnuwYOkLvJjAAX6qdevKmHfGiBzP_8i5thhTN950NaQcIHeehqxI7ec-etYUdzn3rEix3KSbyMGvXGHarY4go8DSA/s1600/perso_2012_1.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMRz1fEDFKtfksQVofceTL8I6qqRNs3_VXQo28kmDVmkMA3__xaW_aA6JKeiDyFMYGXjff7GsLcZgDY6D9QXKThH94w1U0851QUNHmUQvyXJ6SU-ScM3J2oS-fJBLPl8ecKcLnKRKJyjkY/s72-c/pipe_2011-08-24_21-16-31.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4071621315515637689.post-1877418298138362252</id><published>2011-08-01T10:41:00.005+02:00</published><updated>2011-08-01T14:52:29.340+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Apple"/><category scheme="http://www.blogger.com/atom/ns#" term="Lion"/><category scheme="http://www.blogger.com/atom/ns#" term="Mac App Store"/><category scheme="http://www.blogger.com/atom/ns#" term="Snow  Leopard"/><title type='text'>MacOS X : Lion - mise à jour on the air.....</title><content type='html'>&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: inherit;&quot;&gt;Avec Lion, Apple frappe-t-il un bon coup ?&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: inherit;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: inherit;&quot;&gt;Ce n&#39;est pas sûr mais en tous les cas, le système de mise à jour par le Mac App Store est un sacré plus, en effet, cela va aboutir à une adoption rapide de ce nouvel OS.&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: inherit;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: inherit;&quot;&gt;Ce système de mise à jour est-il innovant ? &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: inherit;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: inherit;&quot;&gt;Oui et non, oui pour un OS payant la simplicité d&#39;installation permet pour un néophyte de basculer sans se déplacer et de juste mettre en oeuvre l&#39;installation.&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: inherit;&quot;&gt;Non, les OS open source proposent depuis longtemps de mettre à jour son OS directement par la mise à jour automatique. &lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: inherit;&quot;&gt;C&#39;est exactement ce qu&#39;a utilisé Apple mais avec un format payant.&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: inherit;&quot;&gt;Il est évident que le Mac App Store est vraiment le point fort d&#39;Apple pour le déploiement des applications et c&#39;est d&#39;autant plus vrai avec l&#39;OS. Et là, il propose un basculement simplifié.&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: inherit;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: inherit;&quot;&gt;Dans la pratique direction le Mac App Store, on achète Lion et on télécharge les 3Go et un peu plus du fichier d&#39;installation.&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: inherit;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: inherit;&quot;&gt;Il est préférable de faire une sauvegarde que ce soit par Time Machine ou autre avant de procéder histoire de ne pas se retrouver planté sans réinstallation de ses données personnelles, cela Apple n&#39;y a pas pensé.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: inherit;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: inherit;&quot;&gt;Autre point que je conseille vivement utiliser le logiciel&amp;nbsp;&lt;span class=&quot;Apple-style-span&quot; style=&quot;line-height: 16px;&quot;&gt;&lt;strong&gt;Lion DiskMaker&amp;nbsp;&lt;/strong&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;line-height: 16px;&quot;&gt;[&lt;a href=&quot;http://blog.gete.net/lion-diskmaker/&quot; style=&quot;color: midnightblue; font-weight: bold; text-decoration: none;&quot; target=&quot;_blank&quot;&gt;1.2&lt;/a&gt;&amp;nbsp;–&amp;nbsp;&lt;a href=&quot;http://blog.gete.net/wp-content/uploads/2011/07/LionDiskMaker1.2.zip&quot; style=&quot;color: midnightblue; font-weight: bold; text-decoration: none;&quot;&gt;37&amp;nbsp;Ko&lt;/a&gt;&amp;nbsp;– Français – Mac OS X 10.6 – Gratuit] N&#39;hésitez à faire&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;line-height: 16px;&quot;&gt;&lt;a href=&quot;http://blog.gete.net/lion-diskmaker/&quot; style=&quot;color: midnightblue; font-weight: bold; text-decoration: none;&quot; target=&quot;_blank&quot;&gt;un don à Guillaume Gete&lt;/a&gt;. Ce petit logiciel vous permettra de créer une image d&#39;installation de Lion sur clé USB. Cela peut s&#39;avérer fort utile.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: inherit; line-height: 16px;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: inherit; line-height: 16px;&quot;&gt;Une fois cela fait, on lance l&#39;installation, cette dernière dure environ 45 minutes.&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: inherit; line-height: 16px;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: inherit; line-height: 16px;&quot;&gt;A priori, vous ne rencontrerez pas de problème particulier, et vous vous retrouverez avec un Lion sous le capot.&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: inherit; line-height: 16px;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: inherit;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;line-height: 16px;&quot;&gt;Mais, bon, soyons&amp;nbsp;honnête cet OS n&#39;amène pas de chose à couper le&amp;nbsp;souffle le mode plein écran est bien et simplifie l&#39;usage du Multi-bureau un peu&amp;nbsp;fouillis&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;line-height: 16px;&quot;&gt;.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: inherit; line-height: 16px;&quot;&gt;Les combinaisons de gestes sur le Trackpad sont eux vraiment bien et simplifient l&#39;usage au quotidien.&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: inherit; line-height: 16px;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: inherit; line-height: 16px;&quot;&gt;Mais, vraiment la grosse avancée qui n&#39;en est pas une est l&#39;installation de la mise à jour OS comme un composant logiciel.&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: inherit; line-height: 16px;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://snailitblog.blogspot.com/feeds/1877418298138362252/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://snailitblog.blogspot.com/2011/08/macos-x-lion-mise-jour-on-air.html#comment-form' title='1 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4071621315515637689/posts/default/1877418298138362252'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4071621315515637689/posts/default/1877418298138362252'/><link rel='alternate' type='text/html' href='http://snailitblog.blogspot.com/2011/08/macos-x-lion-mise-jour-on-air.html' title='MacOS X : Lion - mise à jour on the air.....'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4071621315515637689.post-6328033548131232221</id><published>2011-07-28T16:02:00.007+02:00</published><updated>2011-07-29T18:32:15.736+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="CIR"/><category scheme="http://www.blogger.com/atom/ns#" term="crédit impôt recherche"/><category scheme="http://www.blogger.com/atom/ns#" term="Recherche et Développement"/><title type='text'>Des clefs pour le Crédit Impôt Recherche</title><content type='html'>Le sujet du Crédit impôt recherche étant  assez vaste  je ne m&#39;attarderais pas sur l&#39;aspect administratif ni sur comment l&#39;obtenir.&lt;div&gt;Le site du ministère étant très bien fait,  je vous le &lt;a href=&quot;http://bit.ly/qC9mHw&quot;&gt;recommande &lt;/a&gt;.&lt;/div&gt;&lt;div&gt;Je vous recommande aussi de vous munir du manuel de &lt;a href=&quot;http://bit.ly/pCSdXu&quot;&gt;frascati&lt;/a&gt;, publié par l&#39;ocde, qui est la bible dans ce domaine. &lt;/div&gt;&lt;div&gt;Je voudrais aborder plutôt, l&#39;impact du CIR dans le contexte de l&#39;entreprise.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;Innovation&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Tout d&#39;abord il faut savoir que lorsque l&#39;on est un heureux élu du CIR, on se doit d&#39;innover.&lt;/div&gt;&lt;div&gt;Pour cela, il est important d&#39;avoir défini un objectif scientifique et technique pouvant déboucher sur une application industrielle valable. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Ceci étant posé, on peut se demander de quelle façon les travaux que l&#39;on va déclarer au CIR peuvent être innovants ?&lt;/div&gt;&lt;div&gt;Et la réponse n&#39;est pas forcément facile et immédiate ...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;b&gt;Etat de l&#39;art&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Un travail nécessaire avant de faire quoi que ce soit est de constituer un état de l&#39;art en rapport avec le projet engagé. Bon, les scientifiques  ( moins les ingénieurs)  savent ce que ça veut dire: aller à la pêche aux infos dans les bases de brevet, les bases scientifiques, etc.; bref c&#39;est un travail de veille pur et simple mais qui risque de ne pas être payant à  tout les coups. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Mieux vaut donc  se rapprocher d&#39;un labo scientifique expert dans le domaine dont c&#39;est le métier (en partie) de faire cette veille. Par la même occasion, on peut même en  profiter pour embaucher un doctorant issu de ce labo à  moindre frais. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;Production R&amp;amp;D&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Maintenant que l&#39;objectif et l&#39;état de l&#39;art sont connus, on peu passer à  la phase la plus importante qui est celle de ce que j&#39;appelle la &lt;b&gt;production R&amp;amp;D&lt;/b&gt;:  atteindre l&#39;objectif fixé ( et déclaré au CIR !)  en faisant sauter les &lt;b&gt;verrous scientifiques et techniques&lt;/b&gt; pour obtenir des résultats tangibles.&lt;/div&gt;&lt;div&gt;Ces aspect là doivent normalement être maîtrisés par les ingénieurs affectés au projet ou au produit à créer.&lt;/div&gt;&lt;div&gt;Par contre il est particulièrement important de mettre en place un &lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: normal;&quot;&gt;cahier de laboratoire &lt;/span&gt;&lt;/b&gt;pour chaque intervenant qui va permettre de suivre au jour le jour les avancées ou tout au moins les travaux de R&amp;amp;D.&lt;/div&gt;&lt;div&gt;Ce cahier de laboratoire doit pouvoir comporter au minimum&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt; le temps de travail alloué spécifiquement au projet ou produit, &lt;/li&gt;&lt;li&gt;la part éligible au CIR ( tout ne peut pas être inclus dans le CIR) &lt;/li&gt;&lt;li&gt;et enfin un résumé des actions.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;Dossier Annuel&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;C&#39;est sur la base de ce cahier de laboratoire, que sera rédigé le dossier de projet qui devra être fourni à  l&#39;administration fiscale en cas de contrôle.&lt;/div&gt;&lt;div&gt;Je recommande de rédiger ce dossier le plus rapidement possible ( généralement en fin d&#39;année)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Ce dossier doit reprendre:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;le contexte dans lequel le projet ou le produit a été développé&lt;/li&gt;&lt;li&gt;les objectifs déclarés&lt;/li&gt;&lt;li&gt;l&#39;état de l&#39;art&lt;/li&gt;&lt;li&gt;les travaux effectués avec le détail des jours mensuel par intervenant&lt;/li&gt;&lt;li&gt;les difficultés rencontrées et les verrous&lt;/li&gt;&lt;li&gt;et enfin les progrès accomplis&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;Contrôle Fiscal&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Le contrôle est piloté par l&#39;administration fiscale ( les impôts)  et non pas par le ministère de tutelle.&lt;/div&gt;&lt;div&gt;Il se déroule en deux phases ( si tout se passe bien!):&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Première phase:  &lt;/b&gt;&lt;/div&gt;&lt;div&gt;Un contrôleur des impôts s&#39;installe dans les locaux de l&#39;entreprise pendant quelques jours, questionne les responsables et vérifie les chiffres.  Lors de cette phase, il est nécessaire que le cabinet comptable soit disponible pour produire l&#39;ensemble des documents demandés par le contrôleur.&lt;/div&gt;&lt;div&gt;Attention, le loup étant dans la bergerie, il est important de maîtriser parfaitement les  informations communiquées et de ne pas laisser divaguer la bête à  son gré, des propos malheureux  tenus par des employés à  la machine à  café étant vite arrivés...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Deuxième phase:&lt;/b&gt;&lt;/div&gt;&lt;div&gt;Un expert du domaine scientifique ou technique en rapport avec le projet ou produit va éplucher le rapport annuel sur le fond et rendre son avis sur le caractère &quot;R&amp;amp;D&quot; des travaux engagés.&lt;/div&gt;&lt;div&gt;là  vous ne pouvez compter que sur la qualité de votre rapport.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Attention quand même, il semblerait que les contrôles  faits par l&#39;administration fiscale deviennent quasiment systématiques (ce qui serait le cas dans les Bouches du rhône et dans  l&#39;hérault) et que l&#39;attribution du CIR dépend des résultats des contrôles des précédentes années.&lt;/div&gt;&lt;div&gt;N&#39;ayant pas de confirmation  officielle, ce ne sont que des projections à  partir de témoignages.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;Pour conclure&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Les &lt;a href=&quot;http://bit.ly/p9gkhP&quot;&gt;statistiques&lt;/a&gt; du CIR montrent que les petites entreprises bénéficient de 30% du montant annuel du CIR.  &lt;/div&gt;&lt;div&gt;C&#39;est donc un élément clef pour le développement  d&#39;une start-up techno!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://snailitblog.blogspot.com/feeds/6328033548131232221/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://snailitblog.blogspot.com/2011/07/des-clefs-pour-le-credit-impot.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4071621315515637689/posts/default/6328033548131232221'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4071621315515637689/posts/default/6328033548131232221'/><link rel='alternate' type='text/html' href='http://snailitblog.blogspot.com/2011/07/des-clefs-pour-le-credit-impot.html' title='Des clefs pour le Crédit Impôt Recherche'/><author><name>Emmanuel Pellegrin</name><uri>http://www.blogger.com/profile/15796979517044798282</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiQxP15xYuTox2i46zTaQEVls30AO9aNHLTIpqQjnuwYOkLvJjAAX6qdevKmHfGiBzP_8i5thhTN950NaQcIHeehqxI7ec-etYUdzn3rEix3KSbyMGvXGHarY4go8DSA/s1600/perso_2012_1.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4071621315515637689.post-7058702961340303040</id><published>2011-07-28T15:29:00.001+02:00</published><updated>2011-07-28T15:30:32.290+02:00</updated><title type='text'>Un rédacteur complémentaire</title><content type='html'>Nous avons parmi nous un rédacteur complémentaire en la personne de Mordor. &lt;br /&gt;&lt;br /&gt;Avec un nouvel arrivant, cela va me forcer à reprendre la rédaction de nouveaux articles de tech pour les techs. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;- Posted using BlogPress from my iPhone&lt;br /&gt;&lt;p class=&#39;blogpress_location&#39;&gt;Location:&lt;a href=&#39;http://maps.google.com/maps?q=Avenue%20d&#39;Hawa%C3%AF,Saint-Cyr-sur-Mer,France%4043.174079%2C5.697285&amp;z=10&#39;&gt;Avenue d&#39;Hawaï,Saint-Cyr-sur-Mer,France&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://snailitblog.blogspot.com/feeds/7058702961340303040/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://snailitblog.blogspot.com/2011/07/un-redacteur-complementaire.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4071621315515637689/posts/default/7058702961340303040'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4071621315515637689/posts/default/7058702961340303040'/><link rel='alternate' type='text/html' href='http://snailitblog.blogspot.com/2011/07/un-redacteur-complementaire.html' title='Un rédacteur complémentaire'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4071621315515637689.post-5909391826312502402</id><published>2011-02-25T14:03:00.004+01:00</published><updated>2011-02-25T15:43:31.384+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Dropbox"/><category scheme="http://www.blogger.com/atom/ns#" term="iDisk"/><category scheme="http://www.blogger.com/atom/ns#" term="MobileMe"/><title type='text'>Dropbox et le partage de fichier</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;Depuis quelques temps, j&#39;étais à la recherche d&#39;un disque dur virtuel de qualité et surtout efficace sur toutes les plateformes.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;J&#39;ai alors fait une bonne découverte certes avec un peu de retard : Dropbox.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Effectivement, je suis sur Mac OS X et il y a bien le iDisk de MobileMe qui est bien intégré mais pas aussi bien fait que le système mis en place par Dropbox. Avec l&#39;iDisk vous devez faire la démarche de synchroniser vos documents sur le Web et donc d&#39;avoir vos fichiers disponibles partout via un browser ou webdav (bien que sous Windows 7 cela ne fonctionne pas super bien).&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Dropbox a eu la bonne idée de créer une application Windows, Linux, MacOS, Android, Blackberry, iOS... et surtout de considérer que la synchronisation devait être transparente. Et, là, chapeau, l&#39;outil est réussi et synchronise donc un répertoire Dropbox sur l&#39;ensemble de vos systèmes mais surtout à une vitesse qui vous laisse à penser que vous avez une connexion du tonnerre (Quid : Savez vous pourquoi ? Je l&#39;ai appris il n&#39;y pas longtemps je ferai un article là-dessus).&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Et, il faut le reconnaître Dropbox remplace depuis quelques temps ma clé USB avec mes documents que j&#39;échangeais de PC en Mac, de Mac en PC, certes ce n&#39;est pas une backup mais vraiment un outil d&#39;échange.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Certes, on a que 2Go mais c&#39;est amplement suffisant pour mes PDF et autres documents Word.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Apple avait une bonne idée avec l&#39;iDisk mais ils se sont trop axés sur une utilisation purement Mac et n&#39;ont pas pris en compte un environnement Multi OS, en fait, si mais ils n&#39;ont considéré que le Browser et honnêtement ce n&#39;est pas suffisant&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Dropbox est donc pour l&#39;outil grand vainqueur pour un fondu de clé USB comme je le suis.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;PS: si vous le souhaitez aider moi à gagner des Mo en vous&amp;nbsp;parrainant :&amp;nbsp;&lt;a href=&quot;http://db.tt/121QWCa&quot;&gt;http://db.tt/121QWCa&lt;/a&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://snailitblog.blogspot.com/feeds/5909391826312502402/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://snailitblog.blogspot.com/2011/02/dropbox-et-le-partage-de-fichier.html#comment-form' title='2 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4071621315515637689/posts/default/5909391826312502402'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4071621315515637689/posts/default/5909391826312502402'/><link rel='alternate' type='text/html' href='http://snailitblog.blogspot.com/2011/02/dropbox-et-le-partage-de-fichier.html' title='Dropbox et le partage de fichier'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4071621315515637689.post-78444693252855414</id><published>2011-02-09T22:37:00.004+01:00</published><updated>2011-02-14T22:21:04.752+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Azure"/><category scheme="http://www.blogger.com/atom/ns#" term="Microsoft"/><category scheme="http://www.blogger.com/atom/ns#" term="Techdays"/><title type='text'>Comprendre la tarification Azure</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;Un peu dur de comprendre le principe de tarification des offres de Cloud Computing et surtout de comprendre si l&#39;on peut y être gagnant.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Le principal problème pour moi était le concept de consommation horaire qu&#39;est ce que cela voulait dire ? Que l&#39;on paye en fonction de l&#39;utilisation effective de l&#39;instance que l&#39;on utilise ? Non, il ne faut pas le comprendre ainsi ce n&#39;est pas un forfait téléphonique, oui, bon, je suis un peu nul d&#39;avoir pensé cela mais c&#39;est bien le principe du Pay as You Use, j&#39;ai pensé cela principalement parce que je ne voyais vraiment pas ce que l&#39;on pouvait estimer d&#39;autre. Enfin, la réponse me vient par une personne de chez Microsoft lors des Techdays : &quot;C&#39;est en heure de déploiement sur un type d&#39;instance et par instance&quot;.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;La base de calcul pour un mois et donc : 24 * 30 = 720h d&#39;où les forfaits à 750h de Microsoft. J&#39;ai enfin une base et j&#39;ai enfin compris.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Comme vous constaterez en allant sur le site &lt;a href=&quot;http://www.microsoft.com/france/windows-azure/&quot;&gt;Azure&lt;/a&gt;, cela représente un coût mensuel de 61€ pour l&#39;instance la plus petite sur 720h, Microsoft base ses calculs sur 750h pour laisser de la marge et surtout permettre éventuellement de déployer sur une deuxième instance pendant des périodes courtes.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Alors, oui, la solution proposée semble attractive mais le calcul est à faire et surtout l&#39;utilisation de cet environnement doit être murement réfléchi par rapport à un environnement mutualisé classique.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Je vais maintenant essayer de faire le même travail pour l&#39;App Engine de Google afin de me faire un comparatif.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;En tous les cas, Microsoft cherche à toucher les TPE-PME et cela est vraiment une bonne chose avec un premier prix attractif, mais il faut quand même se poser la question de l&#39;utilité d&#39;une plateforme si complète pour des sites Web extranet ou internet d&#39;entreprise.&lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;Update 1 : Sur un mois de 31 jours 744h rentre bien dans le forfait 750h pas plus de 6h de pique dans le mois.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://snailitblog.blogspot.com/feeds/78444693252855414/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://snailitblog.blogspot.com/2011/02/comprendre-la-tarification-azure.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4071621315515637689/posts/default/78444693252855414'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4071621315515637689/posts/default/78444693252855414'/><link rel='alternate' type='text/html' href='http://snailitblog.blogspot.com/2011/02/comprendre-la-tarification-azure.html' title='Comprendre la tarification Azure'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4071621315515637689.post-5372626119009325646</id><published>2011-02-09T22:12:00.004+01:00</published><updated>2011-02-14T22:20:22.592+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Microsoft"/><category scheme="http://www.blogger.com/atom/ns#" term="Techdays"/><title type='text'>Les Techdays 2011 - Le cloud consacré</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;Comme chaque année en ce début février se tiennent les Microsoft Techdays, et il faut l&#39;admettre comme chaque année ils mettent le paquet.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Les présentations sont toutes de bon niveau et les intervenants sont bien préparés, ce qui est normal mais n&#39;est pas toujours le cas.&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Cette année est vraiment la consécration du Cloud selon Microsoft à savoir la plateforme Azure, l&#39;offre est très complète (Windows, Storage, SQL...), quand on pense informatique dans le Cloud, cette solution est une des premières qui vient à l&#39;esprit.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Au cours de cette édition, force est de constater que l&#39;accent est également mis sur les applications Web comme Office On Line, Exchange On Line et surtout de les intégrer dans le concept du Cloud. Ces services en lignes sont maintenant ultra&amp;nbsp;développés, compatible avec la plupart des butineurs et bénéficient d&#39;une tarification plus attractive.&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Mais, pendant ces 3 jours, les conférences ne parlent pas que du Cloud mais vraiment de tous les produits Microsoft orientés productivités d&#39;entreprise.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;C&#39;est vraiment bien que Microsoft organise cette événement en France, car il faut l&#39;admettre à part cela nous n&#39;avons pas beaucoup d&#39;occasion de participer à ce genre de manifestation. Le WWDC d&#39;Apple coûte une fortune et se situe de l&#39;autre coté de l&#39;Atlantique.&amp;nbsp;Autre point fort, elle est GRATUITE......&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhcFYoICgmnuhyphenhyphenHkzlqX2-QipnY4XHayzovMQg4TSe4Qg6baAiS6DSRDBAPRY7e3McjQabBj2mFtsP1ER7VCOFQKubw_v1O724RU6NCAt-Cmsxr64eJ2bEj4GissmuiVDwoFNELbUdqmXOP/s1600/IMG_0570.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;238&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhcFYoICgmnuhyphenhyphenHkzlqX2-QipnY4XHayzovMQg4TSe4Qg6baAiS6DSRDBAPRY7e3McjQabBj2mFtsP1ER7VCOFQKubw_v1O724RU6NCAt-Cmsxr64eJ2bEj4GissmuiVDwoFNELbUdqmXOP/s320/IMG_0570.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Plénière du 9 février 2011&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;Comme vous le voyez sur cette photo, il y a du public et nous en sommes demandeur, ce serait vraiment bien un show de l&#39;informatique en France à la manière du CES.&amp;nbsp;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;Pour 2012, je souhaite les Google, Apple, IBM, ORACLE WWDC et bien sûr les Techdays, pour ces derniers c&#39;est quasi-certain pour les autres un simple voeux.&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://snailitblog.blogspot.com/feeds/5372626119009325646/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://snailitblog.blogspot.com/2011/02/les-techdays-2011-le-cloud-consacre.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4071621315515637689/posts/default/5372626119009325646'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4071621315515637689/posts/default/5372626119009325646'/><link rel='alternate' type='text/html' href='http://snailitblog.blogspot.com/2011/02/les-techdays-2011-le-cloud-consacre.html' title='Les Techdays 2011 - Le cloud consacré'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhcFYoICgmnuhyphenhyphenHkzlqX2-QipnY4XHayzovMQg4TSe4Qg6baAiS6DSRDBAPRY7e3McjQabBj2mFtsP1ER7VCOFQKubw_v1O724RU6NCAt-Cmsxr64eJ2bEj4GissmuiVDwoFNELbUdqmXOP/s72-c/IMG_0570.JPG" height="72" width="72"/><thr:total>0</thr:total></entry></feed>