<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet title="XSL formatting" type="text/xsl" href="http://blog.jbheren.com/feed/rss2/xslt" ?><rss version="2.0"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:wfw="http://wellformedweb.org/CommentAPI/"
  xmlns:content="http://purl.org/rss/1.0/modules/content/"
  xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
  <title>Blog pro de Jean-Baptiste HEREN - Veille techno</title>
  <link>http://blog.jbheren.com/</link>
  <atom:link href="http://blog.jbheren.com/feed/category/Veille-techno/rss2" rel="self" type="application/rss+xml"/>
  <description>Notes d'un consultant freelance en informatique</description>
  <language>fr</language>
  <pubDate>Fri, 11 May 2012 15:27:06 +0200</pubDate>
  <copyright></copyright>
  <docs>http://blogs.law.harvard.edu/tech/rss</docs>
  <generator>Dotclear</generator>
  
    
  <item>
    <title>Activer le mode modem sur Iphone 3G avec free mobile sous OSX</title>
    <link>http://blog.jbheren.com/post/2012/02/23/Activer-le-mode-modem-sur-Iphone-3G-avec-free-mobile-sous-OSX</link>
    <guid isPermaLink="false">urn:md5:38e26fd14bed0ef43c43bbf74e302be1</guid>
    <pubDate>Thu, 23 Feb 2012 21:51:00 +0100</pubDate>
    <dc:creator>Jean-Baptiste HEREN</dc:creator>
        <category>Veille techno</category>
        <category>iPhone</category><category>MacOSX</category>    
    <description>    &lt;p&gt;Pour activer le partage de connexion avec free sur iOS inférieur à 5, il faut se débrouiller tout seul.&lt;/p&gt;


&lt;h2&gt;1 - Télécharger la configuration opérateur free mobile chez apple&lt;/h2&gt;

&lt;p&gt;&lt;a href=&quot;http://appldnld.apple.com/iPhone/CarrierBundles/Free_fr_iPhone.ipcc&quot; hreflang=&quot;en&quot; title=&quot;ipcc free fr&quot;&gt;http://appldnld.apple.com/iPhone/CarrierBundles/Free_fr_iPhone.ipcc&lt;/a&gt;&lt;/p&gt;


&lt;h2&gt;2 - Activer le mode carrier-testing de iTunes&lt;/h2&gt;

&lt;p&gt;Aprés avoir fermé itunes, ouvrez le Terminal et tapez ceci&amp;nbsp;:&lt;/p&gt;
&lt;pre&gt;[script]
defaults write com.apple.iTunes carrier-testing -bool TRUE
&lt;/pre&gt;


&lt;h2&gt;3 - Mise à jour des paramètres opérateur&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Démarrez itunes et branchez votre iPhone&lt;/li&gt;
&lt;li&gt;Cliquez sur &quot;Recherche des mises à jour&quot; en maintanant la touche alt enfoncée&lt;/li&gt;
&lt;li&gt;Sélectionnez le fichier .ipcc&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;4 - activer le partage de connexion sur l'iphone dans Réglages/Général/Réseau.&lt;/h2&gt;

&lt;p&gt;&lt;img src=&quot;http://blog.jbheren.com/public/tuto/iphone/IMG_0407.PNG&quot; alt=&quot;Partage de connexion iphone free mobile&quot; title=&quot;Partage de connexion iphone free mobile, fév. 2012&quot; /&gt;&lt;/p&gt;


&lt;p&gt;Bon surf&amp;nbsp;!&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.jbheren.com/post/2012/02/23/Activer-le-mode-modem-sur-Iphone-3G-avec-free-mobile-sous-OSX#comment-form</comments>
      <wfw:comment>http://blog.jbheren.com/post/2012/02/23/Activer-le-mode-modem-sur-Iphone-3G-avec-free-mobile-sous-OSX#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.jbheren.com/feed/atom/comments/66</wfw:commentRss>
      </item>
    
  <item>
    <title>automatic ftp tranfers on windows OS client using the command line</title>
    <link>http://blog.jbheren.com/post/2011/06/28/automatic-ftp-tranfers-on-windows-os-client-using-the-command-line</link>
    <guid isPermaLink="false">urn:md5:bd2bcc3d4ab3e45ed49293e227e28cda</guid>
    <pubDate>Mon, 27 Jun 2011 20:55:00 +0200</pubDate>
    <dc:creator>Jean-Baptiste HEREN</dc:creator>
        <category>Veille techno</category>
        <category>batch</category><category>Chilkat FTP</category><category>command line</category><category>ftp</category><category>vbs</category><category>windows</category><category>winSCP</category>    
    <description>&lt;p&gt;Here is a little trick we used on a recent project.&lt;/p&gt;


&lt;p&gt;We needed to automatize :&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;(local &amp;lt;-- remote) download files from an ftp server specified folder&lt;/li&gt;
&lt;li&gt;(remote --&amp;gt; remote/subfolder) move the downloaded files on the source server so that we do not download them again on next run.&lt;/li&gt;
&lt;/ol&gt;    &lt;h2&gt;Needed Tools&lt;/h2&gt;


&lt;h3&gt;ftp Client&lt;/h3&gt;


&lt;p&gt;I decided to use the WINSCP Command wich is part of the WinSCP client package. This tool works as a command line client and is scriptable.
It is possible also to use the ftp command directly but it does not work properly whan you want to send ftp commands on the fly.&lt;/p&gt;


&lt;h3&gt;Scripting language&lt;/h3&gt;

&lt;p&gt;The following example uses Visual basic scripting.&lt;/p&gt;



&lt;h2&gt;The Script&lt;/h2&gt;


&lt;p&gt;After creating a new conenction in WINSCP client, we can use it on command line by running the following script :&lt;/p&gt;

&lt;pre&gt;[script]
cscript move.vbs D:\FTPROOT\IN\LOCAL IN/FOO OUT/FOO DONE MYACCOUNT
&lt;/pre&gt;


&lt;pre&gt;[VB]
'contact@jbheren.com
'this code builds a move command from the file list in specified directory &amp;amp; runs it in WSCP
'usage: cscript move.vbs source_local_full_path remote_initial_directory remote_final_subdirectory

Dim fso, folder, files, localPath, localFolder, remoteFolder, moveSubFolder, connexionName, oShell, oExec, winscp

' Check parameters
If( WScript.Arguments.Count &amp;lt; 4 ) Then
 WScript.Echo( vbCrLf &amp;amp;&amp;quot; usage: cscript move.vbs source_local_full_path local_ftp_path remote_ftp_path move_to_path connection_name&amp;quot;)
 WScript.Echo( vbCrLf &amp;amp;&amp;quot; example: &amp;quot; &amp;amp;vbCrLf &amp;amp;&amp;quot; cscript move.vbs D:\FTPROOT\IN\LOCAL IN/FOO OUT/FOO DONE MYACCOUNT&amp;quot;)
 WScript.Echo( vbCrLf &amp;amp;&amp;quot;          &amp;quot; &amp;amp;vbCrLf &amp;amp;&amp;quot; 1 - Gets files from OUT/FOO -&amp;gt; IN/FOO using the recorded MYACCOUNT WINSCP connection&amp;quot;)
 WScript.Echo( vbCrLf &amp;amp;&amp;quot;          &amp;quot; &amp;amp;vbCrLf &amp;amp;&amp;quot; 2 - moves files names found in D:\FTPROOT\IN\LOCAL, on remote from OUT/FOO -&amp;gt; OUT/FOO/DONE&amp;quot;)
 WScript.Quit
End If

' -------------------------------------------
'|   MAIN                                    |
' -------------------------------------------
' Set Winscp com path
winscp = &amp;quot;C:\Program Files\WinSCP\winscp.com&amp;quot;
commandTxt = &amp;quot;&amp;quot; ' Empty current command


Set fso = CreateObject(&amp;quot;Scripting.FileSystemObject&amp;quot;)

' retreive parameters
localPath = Wscript.Arguments.Item(0)
localFolder = Wscript.Arguments.Item(1)
remoteFolder = Wscript.Arguments.Item(2)
moveSubFolder = Wscript.Arguments.Item(3)
connexionName = Wscript.Arguments.Item(4)

If localPath = &amp;quot;&amp;quot; Then
    Wscript.Echo &amp;quot;No Folder parameter was passed&amp;quot;
    Wscript.Quit
Else
  Wscript.Echo &amp;quot;Runing For &amp;quot; &amp;amp; localPath &amp;amp; &amp;quot; , &amp;quot; &amp;amp; localFolder &amp;amp; &amp;quot; , &amp;quot; &amp;amp; remoteFolder &amp;amp; &amp;quot; , &amp;quot; &amp;amp; moveSubFolder &amp;amp; &amp;quot; on connection &amp;quot; &amp;amp; connexionName
End If

' Open ftp command
Set oShell = CreateObject(&amp;quot;wscript.shell&amp;quot;)
'Set oExec = oShell.Exec(&amp;quot;ftpgenerix.bat&amp;quot;)
Set oExec = oShell.Exec(winscp)

' Build the list of Commands to be ran by FTP command.
' login
oExec.StdIn.Writeline &amp;quot;option batch abort&amp;quot;
WScript.Sleep 100
oExec.StdIn.Writeline &amp;quot;open &amp;quot; &amp;amp; connexionName
WScript.Sleep 100

' 00 - Set Current Folders
oExec.StdIn.Writeline(&amp;quot;cd &amp;quot; &amp;amp; remoteFolder)
WScript.Sleep 100
oExec.StdIn.Writeline(&amp;quot;lcd &amp;quot; &amp;amp; localFolder)
WScript.Sleep 100

' 01 - DOWNLOAD
oExec.StdIn.Writeline(&amp;quot;get *.*&amp;quot;)
Wscript.Echo &amp;quot;Getting All files from &amp;quot; &amp;amp; remoteFolder &amp;amp; &amp;quot; to &amp;quot; &amp;amp; localFolder
WScript.Sleep 1000

' 02 - RENAME (Move files)
' list current local files
Set folder = fso.GetFolder(localPath)
Set files = folder.Files

' move each one on distant server from current folder to dFolder
For each file In files
  commandTxt = &amp;quot;rename &amp;quot; &amp;amp; file.Name &amp;amp; &amp;quot; &amp;quot; &amp;amp; moveSubFolder &amp;amp; &amp;quot;/&amp;quot; &amp;amp; file.Name
  oExec.StdIn.Writeline(commandTxt)
  Wscript.Echo commandTxt
  WScript.Sleep 100
Next

' Finish session
oExec.StdIn.Writeline &amp;quot;exit&amp;quot;
Wscript.Echo &amp;quot;exit&amp;quot;
WScript.Sleep 100
WScript.Echo oExec.Status
&lt;/pre&gt;


&lt;p&gt;Hope it will help !&lt;/p&gt;


&lt;h2&gt;Alternatives to WinSCP&lt;/h2&gt;


&lt;p&gt;I just reworked on this task (same actions) and wrote a vbs script doing the same task, but replaced winscp with an ActiveX control object : &lt;a href=&quot;http://www.chilkatsoft.com/ftp-activex.asp&quot; hreflang=&quot;en&quot; title=&quot;http://www.chilkatsoft.com/ftp-activex.asp&quot;&gt;Chilkat FTP ActiveX&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;Here is the code&lt;/p&gt;

&lt;pre&gt;[VB]
'moveocx.vbs
'contact@jbheren.com
'this code builds a move command from the file list in specified directory &amp;amp; runs it FTP Session
'uses ActiveX component from http://www.chilkatsoft.com/ftp-activex.asp
'usage: cscript move.vbs source_local_full_path remote_initial_directory remote_final_subdirectory

Dim fso, ftpo, folder, files, localPath, localFolder, remoteFolder, moveSubFolder, host, user, pass, ok

' Check parameters
If( WScript.Arguments.Count &amp;lt; 4 ) Then
 WScript.Echo( vbCrLf &amp;amp;&amp;quot; usage: cscript moveocx.vbs source_local_full_path local_ftp_path remote_ftp_path move_to_path user pass host&amp;quot;)
 WScript.Echo( vbCrLf &amp;amp;&amp;quot; example: &amp;quot; &amp;amp;vbCrLf &amp;amp;&amp;quot; cscript moveocx.vbs D:\FTPROOT\IN\LOCAL IN/FOO OUT/FOO DONE MYLOGIN MYPASS MYHOST&amp;quot;)
 WScript.Echo( vbCrLf &amp;amp;&amp;quot;          &amp;quot; &amp;amp;vbCrLf &amp;amp;&amp;quot; 1 - Gets files from OUT/FOO -&amp;gt; IN/FOO using the recorded MYLOGIN connection&amp;quot;)
 WScript.Echo( vbCrLf &amp;amp;&amp;quot;          &amp;quot; &amp;amp;vbCrLf &amp;amp;&amp;quot; 2 - moves files names found in D:\FTPROOT\IN\LOCAL, on remote from OUT/FOO -&amp;gt; OUT/FOO/DONE&amp;quot;)
 WScript.Quit
End If

' -------------------------------------------
'|   MAIN                                    |
' -------------------------------------------
' Set Basic path
commandTxt = &amp;quot;&amp;quot; ' Empty current command

' instanciate chilkat FTP Component
Set fso = CreateObject(&amp;quot;Scripting.FileSystemObject&amp;quot;)

' retreive parameters
localPath = Wscript.Arguments.Item(0)
localFolder = Wscript.Arguments.Item(1)
remoteFolder = Wscript.Arguments.Item(2)
moveSubFolder = Wscript.Arguments.Item(3)
user = Wscript.Arguments.Item(4)
pass = Wscript.Arguments.Item(5)
host = Wscript.Arguments.Item(6)

If localPath = &amp;quot;&amp;quot; Then
    Wscript.Echo &amp;quot;No Folder parameter was passed&amp;quot;
    Wscript.Quit
Else
  Wscript.Echo &amp;quot;Runing For &amp;quot; &amp;amp; localPath &amp;amp; &amp;quot; , &amp;quot; &amp;amp; localFolder &amp;amp; &amp;quot; , &amp;quot; &amp;amp; remoteFolder &amp;amp; &amp;quot; , &amp;quot; &amp;amp; moveSubFolder &amp;amp; &amp;quot; on connection &amp;quot; &amp;amp; host
End If


' JBH - Open ftp command
'Set ftpo = CreateObject(&amp;quot;InetCtls.Inet.1&amp;quot;) 'Msinet.ocx
Set ftpo = CreateObject(&amp;quot;ChilkatFTP.ChilkatFTP.1&amp;quot;)

ftpo.Username = user    
ftpo.Password = password
ftpo.Hostname = host    
ftpo.Password = pass
ftpo.Passive = true
Wscript.Echo &amp;quot;Connecting...&amp;quot;
if (ftpo.Connect()) &amp;lt;&amp;gt; 1 Then
	Wscript.Echo &amp;quot;Failed Connection : &amp;quot; &amp;amp; ftpo.LastErrorText
	ftpo.Disconnect()
	Wscript.Quit
else
  ' 00 - Set Remote Folder
  Wscript.Echo &amp;quot;00 - Set remote folder to &amp;quot; &amp;amp; remoteFolder
  If (ftpo.ChangeRemoteDir( remoteFolder )) &amp;lt;&amp;gt; 1 Then
    Wscript.Echo &amp;quot;Failed setting remote dir : &amp;quot; &amp;amp; ftpo.LastErrorText
    ftpo.Disconnect()
    Wscript.Quit
  End If 
  
  ' 01 - DOWNLOAD
  Wscript.Echo &amp;quot;01 - Getting All files from &amp;quot; &amp;amp; remoteFolder &amp;amp; &amp;quot; to &amp;quot; &amp;amp; localFolder
  ok = ftpo.MGetFiles(&amp;quot;*.*&amp;quot;, localPath)
  If (ok) &amp;lt;&amp;gt; 1 Then
    Wscript.Echo &amp;quot; Download returned &amp;quot;&amp;amp; ok &amp;amp;&amp;quot; : &amp;quot; &amp;amp; ftpo.LastErrorText
    'ftpo.Disconnect()
    'Wscript.Quit
  End If 
  
  ' 02 - RENAME (Move files)
  ' list current local files
  Set folder = fso.GetFolder(localPath)
  Set Files = folder.Files
  
  ' move each one on distant server from current folder to dFolder
  Wscript.Echo &amp;quot; Move files present in &amp;quot; &amp;amp; localPath &amp;amp;  &amp;quot; to remote folder &amp;quot; &amp;amp; remoteFolder &amp;amp; &amp;quot;/&amp;quot; &amp;amp; moveSubFolder
  For each file In Files
    Wscript.Echo &amp;quot;    Rename &amp;quot; &amp;amp; file.Name &amp;amp; &amp;quot; to &amp;quot; &amp;amp; moveSubFolder &amp;amp; &amp;quot;/&amp;quot; &amp;amp; file.Name
    ok = ftpo.RenameRemoteFile(file.Name, moveSubFolder &amp;amp; &amp;quot;/&amp;quot; &amp;amp; file.Name)
    If (ok) &amp;lt;&amp;gt; 1 Then
      Wscript.Echo &amp;quot; Rename Returned unexpected value (&amp;quot; &amp;amp; ok &amp;amp; &amp;quot;) &amp;quot; &amp;amp; ftpo.LastErrorText
      'ftpo.Disconnect()
      'Wscript.Quit
    End If 
  Next
  
  ' Finish session
  WScript.Echo &amp;quot;Closing&amp;quot;
  ftpo.Disconnect()
  WScript.Echo &amp;quot;Done!&amp;quot;
End if
&lt;/pre&gt;</description>
    
          <enclosure url="http://blog.jbheren.com/public/tuto/vbs/move.vbs"
      length="2895" type="text/plain" />
          <enclosure url="http://blog.jbheren.com/public/tuto/vbs/moveocx.vbs"
      length="3646" type="text/plain" />
    
    
          <comments>http://blog.jbheren.com/post/2011/06/28/automatic-ftp-tranfers-on-windows-os-client-using-the-command-line#comment-form</comments>
      <wfw:comment>http://blog.jbheren.com/post/2011/06/28/automatic-ftp-tranfers-on-windows-os-client-using-the-command-line#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.jbheren.com/feed/atom/comments/63</wfw:commentRss>
      </item>
    
  <item>
    <title>Apostrophe, le CMS naturel</title>
    <link>http://blog.jbheren.com/post/2011/01/25/apostrophe-le-cms-naturel</link>
    <guid isPermaLink="false">urn:md5:116fc122daa6946856193b0314c495e8</guid>
    <pubDate>Tue, 25 Jan 2011 10:21:00 +0100</pubDate>
    <dc:creator>Jean-Baptiste HEREN</dc:creator>
        <category>Veille techno</category>
        <category>CMS</category><category>développement web</category><category>Framework Web</category><category>PHP</category><category>Symfony</category>    
    <description>    &lt;p&gt;&lt;img src=&quot;http://blog.jbheren.com/public/tuto/apostrophe/.apostrophe_m.jpg&quot; alt=&quot;apostrophe.jpg&quot; style=&quot;float:left; margin: 0 1em 1em 0;&quot; title=&quot;apostrophe.jpg, janv. 2011&quot; /&gt;Apostrophe est un CMS d'un genre différent. Finies les interfaces d'administration aux structures compliquées et aux fonctions absconses. Avec Apostrophe, vous éditez le contenu directement là ou il se trouve, sur le &quot;frontend&quot;. Ce CMS a été construit à partir du célèbre framework Symfony, et une sandbox incluant tous les éléments nécessaires est fournie par les développeurs de &lt;a href=&quot;http://www.apostrophenow.com/&quot; hreflang=&quot;en&quot;&gt;P'unk Avenue&lt;/a&gt;.&lt;/p&gt;


&lt;p&gt;En plus d'être un CMS, Apostrophe contient un moteur de Blog, un gestionnaire de médias, et peut être synchronisé avec des sources de contenu externe comme youtube ou dailymotion. De plus, il est extensible. Vous pourrez donc développer vos propres types de &quot;slots&quot;.&lt;/p&gt;


&lt;p&gt;Je vous invite à l'essayer directement à l'adresse suivante: &lt;a href=&quot;http://demo.apostrophenow.com/.&quot; hreflang=&quot;en&quot;&gt;http://demo.apostrophenow.com/.&lt;/a&gt; Pour vous connecter, utilisez les identifiants admin/demo.&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.jbheren.com/post/2011/01/25/apostrophe-le-cms-naturel#comment-form</comments>
      <wfw:comment>http://blog.jbheren.com/post/2011/01/25/apostrophe-le-cms-naturel#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.jbheren.com/feed/atom/comments/51</wfw:commentRss>
      </item>
    
  <item>
    <title>Convergence des applications Bureau / Web / Mobile</title>
    <link>http://blog.jbheren.com/post/2010/07/21/Convergence-des-applications-Bureau-/-Web-/-Mobile</link>
    <guid isPermaLink="false">urn:md5:0e68afe62e3875969c8c4b036a7a813b</guid>
    <pubDate>Wed, 21 Jul 2010 22:53:00 +0200</pubDate>
    <dc:creator>Jean-Baptiste HEREN</dc:creator>
        <category>Veille techno</category>
        <category>cappuccino</category><category>développement web</category><category>Framework Web</category><category>MacOSX</category>    
    <description>&lt;p&gt;Il se passe quelque chose du côté des outils de développement. ce n'est pas
une nouveauté.  La convergence progresse et l'on trouve de plus en plus de
sociétés allant dans ce sens.&lt;/p&gt;
&lt;h1&gt;Un peu d'histoire&lt;/h1&gt;
&lt;p&gt;Sur le terrain des outils de développement &amp;quot;universels&amp;quot;, on a constaté
l'évolution suivante :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;il y a JAVA, bien sûr, avec son énorme API et sa machine virtuelle, capable
de fonctionner sur une multitude de plateformes.&lt;/li&gt;
&lt;li&gt;puis il y a eu les API multi-plateforme comme mono, GTK ou QT. L'idée étant
de développer une fois, compiler partout (pour le bureau)&lt;/li&gt;
&lt;li&gt;on a eu Adobe (Macromedia) avec Flash, l'arrivée de ActionScript 3, puis
Flex pour le web, et enfin, AIR. AIR est le véritable résultat de la
convergence. Prenez un développeur Actionscript ou HTML/Javascript, il sera
capable de développer des applications Web ou de bureau avec un outil Unique.
Pour aller plus loin, Adobe a même été jusqu'à permettre la compilation
d'applications Flash sous la forme d'apps natives pour l'iphone.&lt;/li&gt;
&lt;/ul&gt;    &lt;h1&gt;Et après ?&lt;/h1&gt;
&lt;img title=&quot;atlas-icon-png.png, juil. 2010&quot; style=&quot;float: right; margin: 0 0 1em 1em;&quot; alt=&quot;&quot; src=&quot;http://blog.jbheren.com/public/tuto/cappuccino/.atlas-icon-png_s.jpg&quot; /&gt;L'exemple le plus intéressant
de convergence, à mon sens, est celui de &lt;a href=&quot;http://cappuccino.org/&quot;&gt;cappuccino&lt;/a&gt; (et peut-être le futur Framework
d'applen &lt;a hreflang=&quot;en&quot; href=&quot;http://www.appleinsider.com/articles/10/05/07/apple_developing_flash_alternative_named_gianduia.html&quot;&gt;
Gianduia&lt;/a&gt; ).
&lt;p&gt;Déjà évoqué sur ce blog, Cappuccino est un Framework permettant le
développement d'applications Web, calqué sur le mode de développement
d'applications Apple. Sur MacOS, et maintenant iOS, les applications sont
développées a l'aide de l'outil XCode. l'API Apple est nommée &lt;a href=&quot;http://fr.wikipedia.org/wiki/Cocoa_%28Apple%29&quot;&gt;cocoa&lt;/a&gt; et le langage de
prédilection est &lt;a href=&quot;http://fr.wikipedia.org/wiki/Objective-C&quot;&gt;Objective-C&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Pour cappuccino, le langage est Objective-J (une déclinaison de javascript,
utilisant un formalisme proche de objective-C et créée pour l'occasion) et
l'API se calque sur cocoa. de cette manière, un développeur Mac pourra être
rapidement productif avec Cappuccino.&lt;/p&gt;
&lt;p&gt;La cible initiale de Cappuccino était le développement de véritables
applications prenant place dans le navigateur. Pour exemple, voici deux
applications développées avec cappuccino :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://280slides.com/&quot;&gt;280slides&lt;/a&gt; : Application de démo, aux
fonctionnalités équivalentes à Keynote, le powerpoint d'Apple.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://gomockingbird.com/&quot;&gt;MockingBird&lt;/a&gt; : Outils de création de
maquettes en ligne, équivalent de &lt;a href=&quot;http://blog.jbheren.com/post/2009/12/14/Maquettes-d-applications-avec-Balsamiq-Mockup&quot;&gt;
balsamiq Mockup&lt;/a&gt;, mais Sans Flash !&lt;/li&gt;
&lt;/ul&gt;
Cappuccino continue sa progression et nous avons vu apparaître récemment la
possibilité de compiler les applications pour le bureau, par l'intermédiaire du
module &lt;a href=&quot;http://cappuccino.org/discuss/2010/05/13/nativehost-run-your-cappuccino-applications-on-the-desktop/&quot;&gt;
NativeHost&lt;/a&gt;.&lt;br /&gt;
A cela s'ajoute le développement d'un IDE complet dédié au Framework et calqué
sur le célèbre Xcode : &lt;a href=&quot;http://280atlas.com/what.php&quot;&gt;Atlas&lt;/a&gt;. Je
vous invite à visiter le site web de l'application et à visionner la &lt;a href=&quot;http://280atlas.com/what.php&quot;&gt;vidéo de présentation&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;object classid=&quot;http://blog.jbheren.com/post/2010/07/21/Convergence-des-applications-Bureau-/-Web-/-Mobile#&quot; id=&quot;viddler&quot; width=&quot;437&quot; height=&quot;315&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.viddler.com/player/1db9bf4d/&quot; /&gt;
&lt;param name=&quot;allowScriptAccess&quot; value=&quot;always&quot; /&gt;
&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot; /&gt;
&lt;param name=&quot;flashvars&quot; value=&quot;fake=1&quot; /&gt;&lt;/object&gt;</description>
    
    
    
          <comments>http://blog.jbheren.com/post/2010/07/21/Convergence-des-applications-Bureau-/-Web-/-Mobile#comment-form</comments>
      <wfw:comment>http://blog.jbheren.com/post/2010/07/21/Convergence-des-applications-Bureau-/-Web-/-Mobile#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.jbheren.com/feed/atom/comments/9</wfw:commentRss>
      </item>
    
  <item>
    <title>Ces Frameworks qui laissent entrevoir l'avenir du Web.</title>
    <link>http://blog.jbheren.com/post/2010/03/17/Des-Frameworks-qui-laissent-entrevoir-l-avenir-du-web.</link>
    <guid isPermaLink="false">urn:md5:f72373ae6c822c22e8bae8822e2dc84a</guid>
    <pubDate>Wed, 17 Mar 2010 11:35:00 +0100</pubDate>
    <dc:creator>Jean-Baptiste HEREN</dc:creator>
        <category>Veille techno</category>
        <category>cappuccino</category><category>développement web</category><category>Framework Web</category>    
    <description>&lt;p&gt;Dans le cadre de recherches sur les technologies web et donc les Frameworks
qui auraient l'avantage dans les mois les années qui viennent, j'ai été
vraiment surpris du nombre et de la qualité des projets existants.&lt;br /&gt;
Ce que l'on a appelé le &amp;quot;Web 2.0&amp;quot; a tenté de rendre les sites web aussi
réactifs que des applications de bureaux. La plupart du temps, cela se limite à
des effets visuels, parfois cela a fait germer de nouvelles idées. Cette
tendance nécessitait de coordonner de nombreuses technologies dans un précaire
équilibre, afin d'obtenir un site qui fonctionne (Javascript / HTML / PHP / CSS
/ Flash , etc.).&lt;br /&gt;
L'apparition de Frameworks ajoutant un niveau d'abstraction face aux multiples
langages interagissant dans notre bon vieux navigateur, a été le début d'une
révolution. On pense à Ruby, suivi de cakePHP et Symphony. Pour atuant, leur
utilisation nécessite toujours une bonne connaissance de DOM et des langages du
web.&lt;/p&gt;    Aujourd'hui dans une phase de sélection d'un Framework pour développer des
projets internes, je suis finalement tombé sur des frameworks d'un autre genre.
Ceux-là visent la convergence entre des applications et du web; ou comment
développer une application Web (&amp;quot;cloud application&amp;quot; pour faire référence au
vocable du moment) comme on le faisait avec une application de bureau.&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;Cappuccino Web Framework&lt;/h2&gt;
&lt;p&gt;Le &lt;a href=&quot;http://cappuccino.org&quot;&gt;Framework Cappuccino&lt;/a&gt; est Open Source
et fonctionne sur un calque du modèle de développement propre à MacosX
(cocoa/objective-C). Le développeur n'a pas besoin de manipuler sur javascript/
HTML/ CSS. Tout se passe à un niveau d'abstraction supérieur, et le résultat
est saisissant. Les concepteurs ont souhaité créer un langage (Objective-J) et
une API suffisantes, dont l'utilisation ne nécessite aucune connaissance du
HTML ou du CSS.&lt;/p&gt;
&lt;p&gt;Pour exemple, je vous invite à visiter les deux adresses suivantes :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://280slides.com/Editor/&quot;&gt;280Slides&lt;/a&gt; : Application du type
Keynote/Powerpoint en ligne.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://gomockingbird.com/&quot;&gt;MockingBird&lt;/a&gt; : Outils de création de
maquettes en ligne, équivalent de &lt;a href=&quot;http://blog.jbheren.com/post/2009/12/14/Maquettes-d-applications-avec-Balsamiq-Mockup&quot;&gt;balsamiq
Mockup&lt;/a&gt;, mais Sans Flash !&lt;a href=&quot;http://gomockingbird.com/&quot;&gt;&lt;img style=&quot;width: 360px; height: 196px;&quot; alt=&quot;&quot; src=&quot;http://gomockingbird.com/media/images/main-screenshot.png&quot; /&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;br /&gt;
Sous réserve de complexité d'apprentissage de ce nouveau type de framework, on
peut donc considérer que nous devrons travailler à l'avenir, non plus avec un
mélange de technos &amp;quot;à l'ancienne&amp;quot; nécessitant une expérience conjointe en
CSS/PHP/Javascript, mais plutôt avec différents Frameworks pour différents
besoins :&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Un site Web passera plutôt par l'utilisation d'un Symphony /cakePHP/
Ruby.&lt;/li&gt;
&lt;li&gt;Une application en ligne, plutôt un Cappucchino ou SproutCore.&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;h2&gt;Et donc ?&lt;/h2&gt;
Reste maintenant à expérimenter, mais si l'on considère que &amp;quot;Qui peut le plus
peut le moins&amp;quot;, il est peut-être plus intéressant d'investir dans
l'apprentissage et la maîtrise des &amp;quot;Frameworks d'applications&amp;quot;, y compris pour
des besoins simples...&lt;br /&gt;</description>
    
    
    
          <comments>http://blog.jbheren.com/post/2010/03/17/Des-Frameworks-qui-laissent-entrevoir-l-avenir-du-web.#comment-form</comments>
      <wfw:comment>http://blog.jbheren.com/post/2010/03/17/Des-Frameworks-qui-laissent-entrevoir-l-avenir-du-web.#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.jbheren.com/feed/atom/comments/10</wfw:commentRss>
      </item>
    
  <item>
    <title>Maquettes d'applications avec Balsamiq Mockup</title>
    <link>http://blog.jbheren.com/post/2009/12/14/Maquettes-d-applications-avec-Balsamiq-Mockup</link>
    <guid isPermaLink="false">urn:md5:8cba9017454babb8553166187911a85b</guid>
    <pubDate>Mon, 14 Dec 2009 13:57:00 +0100</pubDate>
    <dc:creator>Jean-Baptiste HEREN</dc:creator>
        <category>Veille techno</category>
            
    <description>    &lt;br /&gt;Cela fait un bout de temps que je cherche un outils pour faire des
maquettes rapides d'écrans applicatifs pour le web ou bureau. Au cours
de mes recherches je suis tombé sur Balsamiq mockup. Cet outil existe
en version Web ou Desktop, et je vous recommande vivement de l'essayer
via la démo de &lt;a hreflang=&quot;en&quot; href=&quot;http://builds.balsamiq.com/b/mockups-web-demo/&quot;&gt;maquette en ligne&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://blog.jbheren.com/public/tools/wireframe/bababio_Mockup.png&quot;&gt;&lt;img title=&quot;bababio_Mockup.png, déc. 2009&quot; style=&quot;margin: 0 1em 1em 0; float: left;&quot; alt=&quot;&quot; src=&quot;http://blog.jbheren.com/public/tools/wireframe/.bababio_Mockup_m.jpg&quot; /&gt;&lt;/a&gt;Cette démo ne comporte pas vraiment de limitation hormis un
avertissement toutes les cing minutes. Il semblerait d'ailleurs que la
version web payante ne soit pas encore disponible :).&lt;br /&gt;
Pour exemple, la maquette de ma boutique de &lt;a href=&quot;http://www.bababio.com&quot;&gt;&lt;ins&gt;vêtements bio&lt;/ins&gt;&lt;/a&gt;, redessinée entre le speculos et le café !&lt;br /&gt;</description>
    
    
    
          <comments>http://blog.jbheren.com/post/2009/12/14/Maquettes-d-applications-avec-Balsamiq-Mockup#comment-form</comments>
      <wfw:comment>http://blog.jbheren.com/post/2009/12/14/Maquettes-d-applications-avec-Balsamiq-Mockup#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.jbheren.com/feed/atom/comments/16</wfw:commentRss>
      </item>
    
  <item>
    <title>HOWTO backup &amp; restore mediawiki</title>
    <link>http://blog.jbheren.com/post/2009/09/30/HOWTO-backup-restore-mediawiki</link>
    <guid isPermaLink="false">urn:md5:e5d889c639c219729e8ca84deb4040de</guid>
    <pubDate>Wed, 30 Sep 2009 12:30:00 +0200</pubDate>
    <dc:creator>Jean-Baptiste HEREN</dc:creator>
        <category>Veille techno</category>
        <category>développement web</category><category>PHP</category><category>wiki</category>    
    <description>&lt;p&gt;&lt;span style=&quot;font-family: Verdana;&quot; lang=&quot;EN-GB&quot;&gt;The
purpose of this post is an abstract procedure to backup and restore a Media
Wiki install, Typically to move it from one server to another.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: Verdana;&quot; lang=&quot;EN-GB&quot;&gt;Notice
that this process works with most of web applications. For Example, I am using
the same kind of procedure to copy my oscommerce instance :).&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p&gt;&lt;/p&gt;
&lt;h1&gt;&lt;a name=&quot;_Toc242067633&quot;&gt;&lt;span style=&quot;font-family: Verdana;&quot; lang=&quot;EN-GB&quot;&gt;Prerequisites&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin-left: 36pt; text-indent: -18pt;&quot;&gt;
&lt;span style=&quot;font-family: Verdana;&quot; lang=&quot;EN-GB&quot;&gt;To install
the Wiki, we need:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Verdana;&quot; lang=&quot;EN-GB&quot;&gt;an &lt;strong style=&quot;&quot;&gt;apache 2&lt;/strong&gt; Http daemon with &lt;strong style=&quot;&quot;&gt;PHP5&lt;/strong&gt; installed&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong style=&quot;&quot;&gt;&lt;span style=&quot;font-family: Verdana;&quot; lang=&quot;EN-GB&quot;&gt;Mysql 5&lt;/span&gt;&lt;/strong&gt; &lt;span style=&quot;font-family: Verdana;&quot; lang=&quot;EN-GB&quot;&gt;database
server&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong style=&quot;&quot;&gt;&lt;span style=&quot;font-family: Verdana;&quot; lang=&quot;EN-GB&quot;&gt;Phpmyadmin&lt;/span&gt;&lt;/strong&gt; &lt;span style=&quot;font-family: Verdana;&quot; lang=&quot;EN-GB&quot;&gt;to make it easier
(optional)&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin-left: 36pt; text-indent: -18pt;&quot;&gt;
&lt;span style=&quot;font-family: Verdana;&quot; lang=&quot;EN-GB&quot;&gt;For local
installs, this can be done easily using an all-in-one tool:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Verdana;&quot; lang=&quot;EN-GB&quot;&gt;&lt;a href=&quot;http://www.wampserver.com&quot;&gt;WAMP&lt;/a&gt; on windows&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Verdana;&quot; lang=&quot;EN-GB&quot;&gt;&lt;a href=&quot;http://www.mamp.info&quot;&gt;MAMP&lt;/a&gt; on MACOSX&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Verdana;&quot; lang=&quot;EN-GB&quot;&gt;for
linux, don'have to explain :)&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;&lt;a name=&quot;_Toc242067634&quot;&gt;&lt;span style=&quot;font-family: Verdana;&quot; lang=&quot;EN-GB&quot;&gt;Backup Procedure&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;h2&gt;&lt;a name=&quot;_Toc242067635&quot;&gt;&lt;span style=&quot;font-family: Verdana;&quot; lang=&quot;EN-GB&quot;&gt;1- Backup the database :&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Verdana;&quot; lang=&quot;EN-GB&quot;&gt;by copying the mysql data/&lt;strong style=&quot;&quot;&gt;wikidb&lt;/strong&gt; folder.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Verdana;&quot; lang=&quot;EN-GB&quot;&gt;or by
using the command line:&lt;/span&gt; &lt;strong&gt;mysqldump -p wikidb &amp;gt;
sql_backup_file&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Verdana;&quot; lang=&quot;EN-GB&quot;&gt;or with phpmyadmin / export function.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;&lt;a name=&quot;_Toc242067636&quot;&gt;&lt;span style=&quot;font-family: Verdana;&quot; lang=&quot;EN-GB&quot;&gt;2- Backup the web application&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-family: Verdana;&quot; lang=&quot;EN-GB&quot;&gt;Save the www folder containing the &lt;strong style=&quot;&quot;&gt;mediawiki&lt;/strong&gt;
install and parameters (Specially /LocalSettings.php).&lt;/span&gt;&lt;/p&gt;
&lt;h1 class=&quot;MsoNormal&quot;&gt;&lt;a name=&quot;_Toc242067637&quot;&gt;&lt;span style=&quot;font-family: Verdana;&quot; lang=&quot;EN-GB&quot;&gt;Restore
Procedure&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-family: Verdana;&quot; lang=&quot;EN-GB&quot;&gt;The restore process assumes the server is already up and running. And
mysql has been set a root password.&lt;/span&gt;&lt;/p&gt;
&lt;h2&gt;&lt;a name=&quot;_Toc242067638&quot;&gt;&lt;span style=&quot;font-family: Verdana;&quot; lang=&quot;EN-GB&quot;&gt;1- Restore the database :&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Verdana;&quot; lang=&quot;EN-GB&quot;&gt;copy back the mysql &lt;strong style=&quot;&quot;&gt;wikidb&lt;/strong&gt; folder to the mysql data folder.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Verdana;&quot; lang=&quot;EN-GB&quot;&gt;or backup
using the command line:&lt;/span&gt;&lt;strong&gt;  mysql -p wikidb &amp;lt;
sql_backup_file&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Verdana;&quot; lang=&quot;EN-GB&quot;&gt;or with
phpmyadmin / import function.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;&lt;a name=&quot;_Toc242067639&quot;&gt;&lt;span style=&quot;font-family: Verdana;&quot; lang=&quot;EN-GB&quot;&gt;2- Create a wikidb user with all privileges to the wikidb
database &amp;amp; Grant option.&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-family: Verdana;&quot; lang=&quot;EN-GB&quot;&gt;This can be done with phpmyadmin (much easier)&lt;br /&gt;
&lt;a href=&quot;http://blog.jbheren.com/public/tuto/mediawiki/mysql_privileges.png&quot;&gt;&lt;img title=&quot;mysql_privileges.png, sept. 2009&quot; alt=&quot;&quot; src=&quot;http://blog.jbheren.com/public/tuto/mediawiki/.mysql_privileges_s.jpg&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-family: Verdana;&quot; lang=&quot;EN-GB&quot;&gt;Or you can do it with the mysql admin console:&lt;/span&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;# mysql --user=root mysql&lt;br /&gt;
#mysql&amp;gt; CREATE USER 'wikidb'@'localhost' IDENTIFIED BY 'PASSWORD';&lt;br /&gt;
#mysql&amp;gt; GRANT ALL PRIVILEGES ON wikidb.* TO 'wikidb'@'localhost'&lt;br /&gt;
     -&amp;gt;     WITH GRANT
OPTION;&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;&lt;a name=&quot;_Toc242067640&quot;&gt;&lt;span style=&quot;font-family: Verdana;&quot; lang=&quot;EN-GB&quot;&gt;3- Restore the web application&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-family: Verdana;&quot; lang=&quot;EN-GB&quot;&gt;Copy the /www contents to the apache server’s root folder&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-family: Verdana;&quot; lang=&quot;EN-GB&quot;&gt;Adapt the &lt;strong style=&quot;&quot;&gt;/www/LocalSettings.php&lt;/strong&gt; Database
parametersto the new server.&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-family: Verdana;&quot; lang=&quot;EN-GB&quot;&gt;&lt;img title=&quot;localsettings_database.jpg, sept. 2009&quot; alt=&quot;&quot; src=&quot;http://blog.jbheren.com/public/tuto/mediawiki/localsettings_database.jpg&quot; /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h1 class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-family: Verdana;&quot; lang=&quot;EN-GB&quot;&gt;Done !&lt;br /&gt;&lt;/span&gt;&lt;/h1&gt;</description>
    
    
    
          <comments>http://blog.jbheren.com/post/2009/09/30/HOWTO-backup-restore-mediawiki#comment-form</comments>
      <wfw:comment>http://blog.jbheren.com/post/2009/09/30/HOWTO-backup-restore-mediawiki#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.jbheren.com/feed/atom/comments/39</wfw:commentRss>
      </item>
    
  <item>
    <title>Contribution Inventaire pour oscommerce</title>
    <link>http://blog.jbheren.com/post/2009/01/07/Contribution-Inventaire-pour-oscommerce</link>
    <guid isPermaLink="false">urn:md5:064bc571c2af3864ade3c0a540a2f346</guid>
    <pubDate>Wed, 07 Jan 2009 12:37:00 +0100</pubDate>
    <dc:creator>Jean-Baptiste HEREN</dc:creator>
        <category>Veille techno</category>
            
    <description>    &lt;p&gt;J'ai réalisé une petite modification de la contribution &lt;a href=&quot;http://addons.oscommerce.com/info/4122&quot;&gt;Inventaire pour oscommerce&lt;/a&gt;. Cette
contribution permettait initialement d'afficher les quantités en stock par
catégorie du catalogue.&lt;/p&gt;
&lt;p&gt;Un rapport au format csv (compatible excel) affichant l'ensemble des
produits du catalogue sous une forme plus exploitable a été ajouté. Les
informations complémentaires comme le prix de vente sont également
disponibles.&lt;/p&gt;
&lt;p&gt;Si vous disposez de la contribution &lt;a href=&quot;http://addons.oscommerce.com/info/1594&quot;&gt;Margin Reports&lt;/a&gt;, je peux vous
transmettre une version affichant la valeur du stock au cout d'achat des
produits.&lt;/p&gt;</description>
    
          <enclosure url="http://blog.jbheren.com/public/oscommerce/Inventaire_MS2_V1.1.zip"
      length="8631" type="application/zip" />
    
    
          <comments>http://blog.jbheren.com/post/2009/01/07/Contribution-Inventaire-pour-oscommerce#comment-form</comments>
      <wfw:comment>http://blog.jbheren.com/post/2009/01/07/Contribution-Inventaire-pour-oscommerce#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.jbheren.com/feed/atom/comments/28</wfw:commentRss>
      </item>
    
  <item>
    <title>Enrichissement progressif avec xaJax</title>
    <link>http://blog.jbheren.com/post/2008/02/11/Enrichissement-progressif-avec-xaJax</link>
    <guid isPermaLink="false">urn:md5:def348b9c1422f21c58a07e74e99aaeb</guid>
    <pubDate>Sat, 14 Jun 2008 17:56:00 +0200</pubDate>
    <dc:creator>Jean-Baptiste HEREN</dc:creator>
        <category>Veille techno</category>
        <category>AJAX</category><category>développement web</category><category>PHP</category>    
    <description>&lt;p&gt;Xajax est une librairie PHP qui permet au développeur de créer des
interfaces Web exploitant AJAX, sans avoir à se soucier du javascript. C'est à
ma connaissance, le moyen le plus simple pour faire évoluer progressivement un
site existant vers une interface dynamique, comme cela a été fait pour la
gestion du panier et les bandeaux déroulants, sur le site de la &lt;a href=&quot;http://www.bababio.com/-c-00.html&quot; hreflang=&quot;fr&quot;&gt;boutique bababio&lt;/a&gt;.&lt;/p&gt;    &lt;div style=&quot;border-style: none; margin: 0; padding: 2px; font-family: Verdana,Geneva,sans-serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: x-small; line-height: 1.5em; font-size-adjust: none; font-stretch: normal; color: rgb(0, 0, 0); background-color: rgb(249, 249, 249);&quot;&gt;
&lt;p style=&quot;margin-top: 0;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Times; font-size: 16px; line-height: normal;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: 'Times New Roman'; font-size: 16px; line-height: normal;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Verdana; font-size: 10px; line-height: 15px;&quot;&gt;Avec xajax,
tout ce que vous avez à faire, c'est écrire les fonctions PHP qui génèreront le
code affiché dans la page web. Xajax se charge de construite les requêtes et
d'appliquer les effets demandés.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;margin-top: 0;&quot;&gt;Xajax requiert et exploite la librairie javascript
prototype.js&lt;/p&gt;
&lt;h2&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 10px; font-weight: normal;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 10px; font-weight: normal;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 15px; font-weight: bold;&quot;&gt;1- Installer la librairie
xajax&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p style=&quot;margin-top: 0;&quot;&gt;Après avoir installé la librairie xajax dans /xajax
et prototype dans /js. L'archive est disponible sur le site du &lt;a hreflang=&quot;fr&quot; href=&quot;http://xajaxproject.org/&quot;&gt;projet xajax&lt;/a&gt;.&lt;/p&gt;
&lt;p style=&quot;margin-top: 0;&quot;&gt;&lt;code&gt;require_once(&amp;quot;xajax/xajax.inc.php&amp;quot;);&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;2- Ecrire une fonction php&lt;/h2&gt;
&lt;p style=&quot;margin-top: 0;&quot;&gt;Cette fonction sera utilisée via ajax pour rafraîchir
une partie de la page seulement, de la manière suivante : &amp;lt;div
id=&amp;quot;infobox&amp;quot;&amp;gt;...&amp;lt;/div&amp;gt;&lt;/p&gt;
&lt;p style=&quot;margin-top: 0;&quot;&gt;Exemple de fonction php pour xajax :&lt;/p&gt;
&lt;div&gt;function displayParams($params) {&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;// Create xajax Response object&lt;/div&gt;
&lt;div&gt;$objResponse = new xajaxResponse();&lt;/div&gt;
&lt;div&gt;// Juste pour exemple, ajout des paramètres à la chaîne résultat&lt;/div&gt;
&lt;div&gt;$result = '&amp;lt;p&amp;gt;' . $params[1] . ', ' . $params[2] .
'&amp;lt;/p&amp;gt;';&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;// On précise quelle zone de la page, le contenu envoyé va remplacer&lt;/div&gt;
&lt;div&gt;// ici, le div concerné a un id= 'infobox'&lt;/div&gt;
&lt;div&gt;$objResponse-&amp;gt;addAssign(&amp;quot;infobox&amp;quot;,&amp;quot;innerHTML&amp;quot;, result);&lt;/div&gt;
&lt;div&gt;// on ajoute un effet javascript prototype à l'affichage&lt;/div&gt;
&lt;div&gt;$objResponse-&amp;gt;addScript(&amp;quot;new
Effect.Appear('infobox',{duration:5})&amp;quot;);&lt;/div&gt;
&lt;div&gt;// on renvoie l'objet réponse&lt;/div&gt;
&lt;div&gt;return $objResponse;&lt;/div&gt;
&lt;div&gt;}&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2&gt;3- Enregister la fonction dans xajax&lt;/h2&gt;
&lt;p style=&quot;margin-top: 0;&quot;&gt;Aprés l'écriture des fonctions, il faut signaler leur
existance à Xajax. Celui-ci se charge seul, de générer le javascript
nécessaire, correspondant aux fonctions php. Les fonctions javascript
correspondantes prennent simplement le préfixe xajax_, ce qui donnera pour
nôtre exemple, xajax_displayParams().&lt;/p&gt;
&lt;p style=&quot;margin-top: 0;&quot;&gt;&lt;code&gt;$xajax = new xajax(); // creates an instance of
the new class we created&lt;br /&gt;
//$xajax-&amp;gt;debugOn();&lt;br /&gt;
//$xajax-&amp;gt; statusMessagesOn();&lt;br /&gt;
$xajax-&amp;gt;registerFunction(&amp;quot;displayParams&amp;quot;);&lt;br /&gt;
$xajax-&amp;gt;processRequests();&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;4- ajouter un appel à la fonction PHP via javascript&lt;/h2&gt;
&lt;p style=&quot;margin-top: 0;&quot;&gt;Pour utiliser notre fonction php via ajax, il nous
suffit de glisser des appels javascript !&lt;/p&gt;
&lt;h3&gt;- au chargement de la page :&lt;/h3&gt;
&lt;p style=&quot;margin-top: 0;&quot;&gt;&lt;code&gt;&amp;lt;div id=&amp;quot;infobox&amp;quot;
name=&amp;quot;infobox&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;p style=&quot;margin-top: 0;&quot;&gt;&amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;/p&gt;
&lt;p style=&quot;margin-top: 0;&quot;&gt;
xajax_displayParams(xajax.getFormValues('myform'));&lt;/p&gt;
&lt;p style=&quot;margin-top: 0;&quot;&gt;&amp;lt;/script&amp;gt;&lt;/p&gt;
&lt;h3&gt;- ou dans un lien&lt;/h3&gt;
&lt;p style=&quot;margin-top: 0;&quot;&gt;&lt;code&gt;&lt;code&gt;&amp;lt;a
href=&amp;quot;javascript:xajax_displayParams(xajax.getFormValues('myform'));&amp;quot;
&amp;gt;action !&amp;lt;/a&amp;gt;&lt;/code&gt;&lt;/code&gt;&lt;/p&gt;
&lt;p style=&quot;margin-top: 0;&quot;&gt;A noter que dans la Xajax est capable de transmettre
l'ensemble des valeurs d'un formulaire en paramètre, par l'utilisation de la
fonction gerFormValues. Ceci permet d'obtenir des fonctions ayant une
connaissance complète du contexte.&lt;/p&gt;
&lt;h2&gt;5- Plus d'infos&lt;/h2&gt;
&lt;p style=&quot;margin-top: 0;&quot;&gt;Vous trouverez de nombreux exemple sur le site
officiel du projet xajax : &lt;a href=&quot;http://xajaxproject.org/&quot; hreflang=&quot;fr&quot;&gt;http://xajaxproject.org/&lt;/a&gt;.&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.jbheren.com/post/2008/02/11/Enrichissement-progressif-avec-xaJax#comment-form</comments>
      <wfw:comment>http://blog.jbheren.com/post/2008/02/11/Enrichissement-progressif-avec-xaJax#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.jbheren.com/feed/atom/comments/26</wfw:commentRss>
      </item>
    
  <item>
    <title>Organiser une plateforme de développement Web</title>
    <link>http://blog.jbheren.com/post/2008/02/11/Macos-X-comme-plateforme-de-developpement-Web</link>
    <guid isPermaLink="false">urn:md5:f426215502c41a212e48df1344c763ad</guid>
    <pubDate>Mon, 05 May 2008 10:05:00 +0200</pubDate>
    <dc:creator>Jean-Baptiste HEREN</dc:creator>
        <category>Veille techno</category>
        <category>développement web</category><category>leopard</category><category>PHP</category>    
    <description>Voici comment j'ai organisé ma plateforme de développement web, à partir de
solutions mac pour le serveur et les clients. MacosX présente le double
avantage de la convivialité et de l'ouverture d'un UNIX. Il est donc tout à
fait possible de réaliser sur ce système, les tâches serveur que l'on
réaliserait plus naturellement sous linux. Notez que sur le principe, ceci est
réalisable sur n'importe quel OS actuel.    &lt;h2&gt; Expression du besoin&lt;/h2&gt;
&lt;p&gt;Dans le cadre du développement d'un site e-commerce, j'ai ressenti le besoin
de sécuriser le développement. Il est nécessaire, pour créer et faire évoluer
un site Internet, d'avoir la possibilité de :&lt;/p&gt;
&lt;ul type=&quot;disc&quot;&gt;
&lt;li class=&quot;MsoNormal&quot; style=&quot;&quot;&gt;Développer indépendamment du serveur en
production, seul ou en équipe.&lt;/li&gt;
&lt;li class=&quot;MsoNormal&quot; style=&quot;&quot;&gt;Tester la migration des évolutions apportées,
ainsi que les évolutions elles-mêmes, toujours sans perturber la prod.&lt;/li&gt;
&lt;li class=&quot;MsoNormal&quot; style=&quot;&quot;&gt;Conserver un historique des modifications, de
manière à Identifier les versions, et afin de pouvoir revenir en arrière en cas
de problème.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;1- Environnements requis&lt;/h2&gt;
&lt;h3&gt;1.1 - Web server&lt;/h3&gt;
&lt;p&gt;L'installation du serveur web sur leopard est très simple : apache2 et php5
sont installés par défaut et nécessitent juste quelques modifications pour
fonctionner. Il restera à installer manuellement mysql et PEAR.&lt;br /&gt;
Sur mac, on pourra aussi tout simplement utiliser le package &lt;a href=&quot;http://www.mamp.info/en/download.html&quot;&gt;MAMP&lt;/a&gt;, qui répond à l'ensemble des
besoins en terme de serveur pour le développement web. Sur PC, easyphp
fera très bien l'affaire.&lt;/p&gt;
&lt;p&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: bold;&quot;&gt;DEV&lt;/span&gt; :
Serveur sur lequel sont réalisés les développements, synchronisé manuellement
avec le CVS par les développeurs.&lt;/p&gt;
&lt;p&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: bold;&quot;&gt;TEST&lt;/span&gt; :
Serveur de test synchronisé automatiquement avec le CVS toutes les 24H et à la
demande. Ce serveur regroupe donc les modifications validées en DEV par
l’ensemble des développeurs.&lt;/p&gt;
&lt;p&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: bold;&quot;&gt;PROD&lt;/span&gt; : Ce
serveur est mis à jour à la demande, avec la dernière version validée en test,
à partir du CVS (milestone).&lt;/p&gt;
&lt;h3&gt;&lt;span style=&quot;&quot; lang=&quot;EN-GB&quot;&gt;1.2 – Base de
données&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: bold;&quot;&gt;DEV&lt;/span&gt; : Cette
base est utilisée par le serveur web de DEV. Les développeurs réalisent leurs
modifications directement sur celle-ci. En revanche, les modifications faites
doivent prendre la forme de scripts, afin de permettre leur migration. Après
validation, ces scripts sont enregistrés sur le serveur CVS, et seront exécutés
dans cet ordre, sur la base cible : &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;1 - /database/create.sql&lt;/li&gt;
&lt;li&gt;2 - /database/alter.sql&lt;/li&gt;
&lt;li&gt;3 - /database/insert.sql&lt;/li&gt;
&lt;li&gt;4 - /database/update.sql&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: bold;&quot;&gt;TEST&lt;/span&gt; :
Serveur mis à jour toutes les 24H et à la demande, à partir des scripts
présents sur le CVS. Cette synchro est réalisée en même temps pour les éléments
du serveur Web.&lt;/p&gt;
&lt;p&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: bold;&quot;&gt;PROD&lt;/span&gt; :
Cette base est mise à jour, suivant la même méthodologie que TEST, mais
uniquement à la demande, pour l’application des versions validées.&lt;/p&gt;
&lt;h3&gt;1.3 - Source control&lt;/h3&gt;
&lt;p&gt;L’outil de source control peut être cvs ou svn. L’idéal étant d’utiliser un
éditeur disposant d’un plugin cvs. Il est ainsi facile de réaliser les
« checkout / checkin », sans utilisation de la ligne de commande.&lt;/p&gt;
&lt;p&gt;L’éditeur &lt;a href=&quot;http://www.aptana.com/&quot; hreflang=&quot;en&quot;&gt;Aptana&lt;/a&gt; ( Issu
de Eclipse) dispose d’un tel plugin pour cvs.&lt;/p&gt;
&lt;p&gt;L'outil cvs est inclus sur mac, dans les xcode tools. Ceux-ci sont livrés
avec votre version de Macos ou peuvent être téléchargés depuis
http://developer.apple.com.&lt;/p&gt;
&lt;p&gt;Pour faire simple, un script de mise à jour automatique du cvs à partir de
l'environnement de dev a été mis en place.&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: rgb(102, 102, 102); font-family: 'Courier New'; font-size: 13px; font-weight: bold;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;h2&gt;2- Développement (local et distant)&lt;/h2&gt;
&lt;p&gt;Les développeurs travaillent directement dans la base de DEV, utilisant un
répertoire partagé. Il leur faut simplement prendre la précaution de
« locker » les fichiers en cours de modification, au niveau du CVS,
afin d’éviter que plusieurs développeurs ne modifient le même élément. Ceci
peut être fait automatiquement en utilisant un IDE doté d’un module de gestion
de sources.&lt;/p&gt;
&lt;p&gt;Après test et validation dans l’environnement de développement, le
développeur peut enregistrer sa modification dans le CVS.&lt;/p&gt;
&lt;h2&gt;3- Processus de Migration et Tests&lt;/h2&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;Un moyen simple d'assurer la migration des nouveaux
développements au sein du serveur web et de la base de données :&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;Le code est rechargé depuis le
cvs, après validation. Ceci peut être fait directement par cvs, ou
encore par ftp de puis l'environnement source.&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;Les scripts sql décrits plus haut sont exécutés sur
l'environnement cible. L'environnement de Test doit garantir que le passage en
production se fera sans risque, l'idéal étant out de même de disposer d'un
environnement de pré-production identique à la prod pour tester la
migration. &lt;/p&gt;
&lt;h2&gt;4- Systèmes de Sauvegarde&lt;/h2&gt;
&lt;p&gt;Les possibilités de sauvegarde sont multiples, nous pourrons soit:&lt;/p&gt;
&lt;ul type=&quot;disc&quot;&gt;
&lt;li class=&quot;MsoNormal&quot; style=&quot;&quot;&gt;Lancer une sauvegarde automatique par script,
déposant une archive dans une (ou plusieurs) zone de dépôt.&lt;/li&gt;
&lt;li class=&quot;MsoNormal&quot; style=&quot;&quot;&gt;Utiliser le service Time Machine de leopard pour
la sauvegarde du serveur et des clients.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;4- Matériel nécessaire&lt;/h2&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;Petite machine (virtuelle ?) ayant les fonctions
suivantes : Serveur web, Serveur Mysql, NAT
(iptables), CVS repository.&lt;/p&gt;
&lt;div&gt;
&lt;h2&gt;Sources :&lt;/h2&gt;
http://stringfoo.com/2007/11/05/server_setup_on_leopard/&lt;br /&gt;
http://developer.apple.com/internet/opensource/cvsoverview.html
&lt;h2&gt;A approfondir : &lt;/h2&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;How to keep Test server in Sync with CVS Automatically
?&lt;br /&gt;
-&amp;gt; Simple cron to update cvs from dev tree.&lt;br /&gt;
diff tool capable of making paches for databases structure and data ?&lt;br /&gt;
-&amp;gt; SQLyog
http://www.databasejournal.com/features/mysql/article.php/1584401&lt;/p&gt;
&lt;/div&gt;</description>
    
    
    
          <comments>http://blog.jbheren.com/post/2008/02/11/Macos-X-comme-plateforme-de-developpement-Web#comment-form</comments>
      <wfw:comment>http://blog.jbheren.com/post/2008/02/11/Macos-X-comme-plateforme-de-developpement-Web#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.jbheren.com/feed/atom/comments/47</wfw:commentRss>
      </item>
    
</channel>
</rss>
