<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Code on Welcome to /dev/null</title><link>https://www.morot.fr/categories/code/</link><description>Recent content in Code on Welcome to /dev/null</description><generator>Hugo</generator><language>fr-FR</language><lastBuildDate>Wed, 17 Jul 2013 12:33:30 +0000</lastBuildDate><atom:link href="https://www.morot.fr/categories/code/feed.xml" rel="self" type="application/rss+xml"/><item><title>Script pour récupérer par mail la dernière image d'un blog photo tumblr</title><link>https://www.morot.fr/script-pour-recuperer-par-mail-la-derniere-image-dun-blog-photo-tumblr/</link><pubDate>Wed, 17 Jul 2013 12:33:30 +0000</pubDate><guid isPermaLink="false">http://www.morot.fr/?p=356</guid><description>&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;#!/usr/bin/perl
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;use strict;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;use warnings;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;use LWP::UserAgent;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;use XML::LibXML;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;use HTML::TreeBuilder;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;use XML::LibXML::XPathContext;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;use MIME::Lite;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;use Net::SMTP;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;my $url=&amp;#34;http://SITENAME.tumblr.com/api/read?type=photo&amp;amp;num=1&amp;amp;start=0&amp;#34;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;my $ua = LWP::UserAgent-&amp;gt;new;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;my $resp = $ua-&amp;gt;get($url);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;my $parser = XML::LibXML-&amp;gt;new();
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;my $doc = $parser-&amp;gt;parse_string($resp-&amp;gt;content);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;my $root = $doc-&amp;gt;documentElement();
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;my $xcont = XML::LibXML::XPathContext-&amp;gt;new($root);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;my $imgnodes = $xcont-&amp;gt;findnodes(&amp;#39;//photo-url[@max-width=&amp;#34;1280&amp;#34;]&amp;#39;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;foreach my $itemnode ($imgnodes-&amp;gt;get_nodelist) {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; my $imagenode = $itemnode-&amp;gt;firstChild;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; my $imglink = $imagenode-&amp;gt;getValue;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; my $data = $ua-&amp;gt;get($imglink);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; my $filename = &amp;#34;image.jpg&amp;#34;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; open (FH, &amp;#34;&amp;gt;$filename&amp;#34;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; binmode (FH);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; print FH $data-&amp;gt;content;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; close (FH);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; my $from = &amp;#34;&amp;#34;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; my $to = &amp;#34;&amp;#34;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; my $mail_host = &amp;#34;&amp;#34;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; my $subject = &amp;#34;Une nouvelle fracture de l&amp;#39;oeil&amp;#34;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; my $msg = MIME::Lite-&amp;gt;new (
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; From =&amp;gt; $from,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; To =&amp;gt; $to,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Subject =&amp;gt; $subject,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Type =&amp;gt;&amp;#39;multipart/mixed&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ) or die &amp;#34;Error creating multipart container: $!n&amp;#34;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; $msg-&amp;gt;attach (
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Type =&amp;gt; &amp;#39;image/jpg&amp;#39;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Path =&amp;gt; $filename,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Filename =&amp;gt; $filename,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Disposition =&amp;gt; &amp;#39;attachment&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ) or die &amp;#34;Error adding $filename: $!n&amp;#34;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; MIME::Lite-&amp;gt;send(&amp;#39;smtp&amp;#39;, $mail_host, Timeout=&amp;gt;60);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; $msg-&amp;gt;send;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Script du jour, télécharger les pièces jointes d'une boite mail</title><link>https://www.morot.fr/script-du-jour-telecharger-les-pieces-jointes-dune-boite-mail/</link><pubDate>Mon, 01 Feb 2010 21:05:13 +0000</pubDate><guid isPermaLink="false">http://www.morot.fr/?p=164</guid><description>&lt;p&gt;Voila un petit script que j&amp;rsquo;ai codé pour dépanner quelqu&amp;rsquo;un qui s&amp;rsquo;est dit après deux ans que finalement il aurait dû enregistrer ses photos reçues par mail. Comme je le trouve assez intéressant pour le publier, le voici :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;#!/usr/bin/env perl
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;use strict;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;use Net::IMAP::Simple;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;use MIME::Parser;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;my $server = &amp;#34;serveur&amp;#34;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;my $user = &amp;#34;user&amp;#34;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;my $pass = &amp;#34;pass&amp;#34;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;my $imap = new Net::IMAP::Simple( $server );
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$imap-&amp;gt;login($user, $pass);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;my $nbmsg = $imap-&amp;gt;select( &amp;#39;INBOX&amp;#39; );
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;foreach my $msg ( 1..$nbmsg ) {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; my $lines = $imap-&amp;gt;get( $msg );
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; my $fh = $imap-&amp;gt;getfh( $msg );
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; my $parser = new MIME::Parser;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; $parser-&amp;gt;output_under(&amp;#34;/tmp&amp;#34;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; my $entity = $parser-&amp;gt;parse($fh);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; close $fh;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$imap-&amp;gt;quit();
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Il reste plus qu&amp;rsquo;un petit &lt;strong&gt;find /tmp -name *.jpg -exec mv {} ;&lt;/strong&gt; bien placé pour récupérer les fichier JPEG par exemple.&lt;/p&gt;</description></item><item><title>Première application en PyQt4</title><link>https://www.morot.fr/premiere-application-en-pyqt4/</link><pubDate>Tue, 07 Jul 2009 00:52:57 +0000</pubDate><guid isPermaLink="false">http://www.morot.fr/?p=54</guid><description>&lt;p&gt;Voici une première application minimaliste qui ne fait qu&amp;rsquo;affichier une fenêtre :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-gdscript3" data-lang="gdscript3"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# -*- coding: utf-8 -*-&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#!/usr/bin/python&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;## Import des modules Python&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;import sys
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;from PyQt4 import QtGui
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;## Toute application Qt graphique doit instancier une QApplication&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;app &lt;span style="color:#f92672"&gt;=&lt;/span&gt; QtGui&lt;span style="color:#f92672"&gt;.&lt;/span&gt;QApplication(sys&lt;span style="color:#f92672"&gt;.&lt;/span&gt;argv)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;## le widget QWidget est le widget de base pour tous les autres widget de l&amp;#39;interface graphique&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;## un widget sans parent constitue une fenêtre&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;widget &lt;span style="color:#f92672"&gt;=&lt;/span&gt; QtGui&lt;span style="color:#f92672"&gt;.&lt;/span&gt;QWidget()
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;widget&lt;span style="color:#f92672"&gt;.&lt;/span&gt;resize(&lt;span style="color:#ae81ff"&gt;400&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;300&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;widget&lt;span style="color:#f92672"&gt;.&lt;/span&gt;setWindowTitle(&lt;span style="color:#e6db74"&gt;u&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#39;Première application PyQt4&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;## le widget est affiché&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;widget&lt;span style="color:#f92672"&gt;.&lt;/span&gt;show()
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;## Enfin on rentre dans la boucle d&amp;#39;évènement principale&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;## sys.exit permet d&amp;#39;informer le système de la manière dont s&amp;#39;est terminée l&amp;#39;application&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;## le exec_ a un underscore simplement car exec est un mot clé réservé en Python&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sys&lt;span style="color:#f92672"&gt;.&lt;/span&gt;exit(app&lt;span style="color:#f92672"&gt;.&lt;/span&gt;exec_())
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>NFS Manager for Guidance</title><link>https://www.morot.fr/nfs-manager-for-guidance/</link><pubDate>Fri, 09 May 2008 14:12:44 +0000</pubDate><guid isPermaLink="false">http://www.morot.fr/?p=42</guid><description>&lt;p&gt;I just made a new release of KNFS after about 3 years without coding anything. I made some tiny cleanup in the code but the most important change is that it&amp;rsquo;s now fully integrated into kcontrol thanks to pykdeextension and the great work of Simon Edwards who&amp;rsquo;s guidance maintainer.&lt;/p&gt;
&lt;p&gt;You can download the program &lt;a href="https://www.morot.fr/projects/knfs/nfsconfig-0.2.0.tar"&gt;here&lt;/a&gt; and the patch to allow nfsmanager to fit with guidance &lt;a href="https://www.morot.fr/projects/knfs/setup.py.patch"&gt;here&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Les redirections Web</title><link>https://www.morot.fr/les-redirections-web/</link><pubDate>Tue, 23 Jan 2007 21:26:15 +0000</pubDate><guid isPermaLink="false">http://www.morot.fr/?p=31</guid><description>&lt;p&gt;&lt;strong&gt;En HTML :&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;meta http-equiv=&amp;#34;refresh&amp;#34; content=&amp;#34;0; url=http://www.nouveau.fr/dossier/page.html&amp;#34; /&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;En Javascript :&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;document.location.href = &amp;#34;http://www.nouveau.fr&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Avec un .htaccess :&lt;/strong&gt;
De cette façon, Apache renvoie un code 301 Moved Permanently au navigateur .
Pour rediriger un site entier :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Redirect permanent / http:/www.nouveau.fr
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Pour rediriger un dossier :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Redirect permanent /dossier http://www.adresse.fr/dossiernouveau
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Pour rediriger un fichier :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Redirect permanent /pageancienne.html http://www.nouveau.fr/pagenouvelle.html
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Pour indiquer qu&amp;rsquo;un fichier a changé:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Redirect seeother /document.doc http://www.nouveau.fr/document.pdf
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Pour une redirection temporaire (ne casse pas le référencement pour un déplacement temporaire) :
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Redirect temp / http://www.nouveau.fr
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;En PHP :&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>PHP+ODBC pour accéder à un serveur MS SQL</title><link>https://www.morot.fr/phpodbc-pour-acceder-a-un-serveur-ms-sql/</link><pubDate>Tue, 17 Oct 2006 21:17:21 +0000</pubDate><guid isPermaLink="false">http://www.morot.fr/?p=27</guid><description>&lt;p&gt;J&amp;rsquo;ai dû récemment mettre en place de quoi attaquer un server Microsoft MS SQL Server 2000 depuis une plateforme Linux/Apache/PHP. Sous Debian Etch il existe le module php5-sybase censé géré Sybase et MSSql. Le problème c&amp;rsquo;est que php est compilé sans le support de sqlserver. Du coup il restait soit ODBC soit recompiler PHP m&amp;rsquo;obligeant à recompiler PHP à chaque mise à jour d sécurité&amp;hellip; J&amp;rsquo;ai donc choisi ODBC. Dans un premier temps on installe le module PHP :&lt;/p&gt;</description></item><item><title>Segmenter un fichier de Virtualhosts Apache</title><link>https://www.morot.fr/segmenter-un-fichier-de-virtualhosts-apache/</link><pubDate>Sun, 08 Oct 2006 12:16:04 +0000</pubDate><guid isPermaLink="false">http://www.morot.fr/?p=1364</guid><description>&lt;p&gt;Ayant eu un serveur Apache avec un fichier de configuration des Vhost Apache de plus de 15000 lignes, c&amp;rsquo;était devenu rapidement ingérable. J&amp;rsquo;ai donc réalisé ce script en Python pour le segmenter en différents fichiers. Pour chaque vhost avec Servername = domaine.com, on créé un fichier domaine.conf. De la sorte, si on a un vhost domaine.fr, il sera placé dans le même fichier que domaine.com. Regroupant ainsi les vhost par domaine sans le TLD et donc partiellement par client.&lt;/p&gt;</description></item></channel></rss>