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

<channel>
	<title>Carnet de notes</title>
	<atom:link href="https://jb.vioix.fr/feed/" rel="self" type="application/rss+xml" />
	<link>https://jb.vioix.fr</link>
	<description>Diverses notes en électronique et informatique</description>
	<lastBuildDate>Wed, 24 Apr 2024 07:37:44 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.8.3</generator>
<site xmlns="com-wordpress:feed-additions:1">232311113</site>	<item>
		<title>Visite chez un maître&#8230;</title>
		<link>https://jb.vioix.fr/visite-chez-un-maitre/</link>
					<comments>https://jb.vioix.fr/visite-chez-un-maitre/#comments</comments>
		
		<dc:creator><![CDATA[jb]]></dc:creator>
		<pubDate>Sat, 18 Aug 2018 09:37:01 +0000</pubDate>
				<category><![CDATA[Vie de tous les jours]]></category>
		<guid isPermaLink="false">http://jb.vioix.fr/?p=823</guid>

					<description><![CDATA[…ou promenade au Swan Point Cemetery. En quelques lignes, voici un petit compte rendu d’une visite de la tombe de H.P. Lovecraft lors d’un voyage dans la région de Providence. Ce voyage a eu lieu il y a bientôt quinze ans, j&#8217;ai rédigé ce petit compte rendu en plusieurs fois, il y a forcément des&#8230; <a href="https://jb.vioix.fr/visite-chez-un-maitre/" class="more-link">Lire la suite <span class="screen-reader-text">Visite chez un maître&#8230;</span></a>]]></description>
										<content:encoded><![CDATA[
<p>…ou promenade au Swan Point Cemetery.</p>



<span id="more-823"></span>



<p>En quelques lignes, voici un petit compte rendu d’une visite de la tombe de H.P. Lovecraft lors d’un voyage dans la région de Providence. Ce voyage a eu lieu il y a bientôt quinze ans, j&rsquo;ai rédigé ce petit compte rendu en plusieurs fois, il y a forcément des erreurs et des oublis&#8230;</p>



<h2 class="wp-block-heading">Contexte</h2>



<p>Je me suis rendu en nouvelle Angleterre du 25 au 31 octobre 2003 pour un déplacement professionnel (conférence <em>Wavelet applications in industrial processing</em>). Nous avons pris un Paris-Boston au départ de Roissy Charles de Gaulle. À l&rsquo;époque, pas de visa, seulement la carte verte à cocher dans l&rsquo;avion avant de poser le pied sur le sol américain.</p>



<p>Nous sommes allés à Boston puis à Providence. La ville de Boston est très intéressante pour le touriste qui connaît l’histoire américaine. En effet, c’est une des villes les plus anciennes. Dans Boston, les buildings de verre côtoient les églises en brique et les vieux cimetières (où reposent un certain nombre de héros de l’Union). Le parcours de la <a href="https://fr.wikipedia.org/wiki/Freedom_Trail" target="_blank" rel="noopener">Freedom Trail</a> permet de réviser ses cours d&rsquo;histoire de l&rsquo;indépendance des U.S.A. En automne, la ville est superbe, les arbres étant de toutes les couleurs.<br></p>



<figure data-carousel-extra='{"blog_id":1,"permalink":"https:\/\/jb.vioix.fr\/visite-chez-un-maitre\/"}'  class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-large"><a href="https://i0.wp.com/beta.vioix.fr/wp-content/uploads/2018/08/IMG_0440.jpg?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" fetchpriority="high" decoding="async" width="825" height="619" data-attachment-id="1657" data-permalink="https://jb.vioix.fr/visite-chez-un-maitre/img_0440/" data-orig-file="https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/IMG_0440.jpg?fit=1600%2C1200&amp;ssl=1" data-orig-size="1600,1200" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;2.8&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;Canon DIGITAL IXUS v2&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1067197776&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;5.40625&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0.0125&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;1&quot;}" data-image-title="IMG_0440" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/IMG_0440.jpg?fit=300%2C225&amp;ssl=1" data-large-file="https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/IMG_0440.jpg?fit=825%2C619&amp;ssl=1" data-id="1657" src="https://i0.wp.com/beta.vioix.fr/wp-content/uploads/2018/08/IMG_0440-1024x768.jpg?resize=825%2C619&#038;ssl=1" alt="" class="wp-image-1657" srcset="https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/IMG_0440.jpg?resize=1024%2C768&amp;ssl=1 1024w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/IMG_0440.jpg?resize=100%2C75&amp;ssl=1 100w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/IMG_0440.jpg?resize=300%2C225&amp;ssl=1 300w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/IMG_0440.jpg?resize=768%2C576&amp;ssl=1 768w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/IMG_0440.jpg?resize=700%2C525&amp;ssl=1 700w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/IMG_0440.jpg?resize=332%2C249&amp;ssl=1 332w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/IMG_0440.jpg?w=1600&amp;ssl=1 1600w" sizes="(max-width: 825px) 100vw, 825px" /></a></figure>



<figure class="wp-block-image size-large"><a href="https://i0.wp.com/beta.vioix.fr/wp-content/uploads/2018/08/IMG_0421-2-e1534798832127.jpg?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" decoding="async" width="768" height="1024" data-attachment-id="1660" data-permalink="https://jb.vioix.fr/visite-chez-un-maitre/img_0421-2/" data-orig-file="https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/IMG_0421-2-e1534798832127.jpg?fit=1200%2C1600&amp;ssl=1" data-orig-size="1200,1600" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;2.8&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;Canon DIGITAL IXUS v2&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1067191575&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;5.40625&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0.01&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;6&quot;}" data-image-title="IMG_0421-2" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/IMG_0421-2-e1534798832127.jpg?fit=225%2C300&amp;ssl=1" data-large-file="https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/IMG_0421-2-e1534798832127.jpg?fit=768%2C1024&amp;ssl=1" data-id="1660" src="https://i0.wp.com/beta.vioix.fr/wp-content/uploads/2018/08/IMG_0421-2-e1534798832127-768x1024.jpg?resize=768%2C1024&#038;ssl=1" alt="" class="wp-image-1660" srcset="https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/IMG_0421-2-e1534798832127.jpg?resize=768%2C1024&amp;ssl=1 768w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/IMG_0421-2-e1534798832127.jpg?resize=75%2C100&amp;ssl=1 75w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/IMG_0421-2-e1534798832127.jpg?resize=225%2C300&amp;ssl=1 225w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/IMG_0421-2-e1534798832127.jpg?resize=700%2C933&amp;ssl=1 700w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/IMG_0421-2-e1534798832127.jpg?resize=332%2C443&amp;ssl=1 332w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/IMG_0421-2-e1534798832127.jpg?w=1200&amp;ssl=1 1200w" sizes="(max-width: 768px) 100vw, 768px" /></a></figure>



<figure class="wp-block-image size-large"><a href="https://i0.wp.com/beta.vioix.fr/wp-content/uploads/2018/08/IMG_0418.jpg?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" decoding="async" width="825" height="619" data-attachment-id="1661" data-permalink="https://jb.vioix.fr/visite-chez-un-maitre/img_0418/" data-orig-file="https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/IMG_0418.jpg?fit=1600%2C1200&amp;ssl=1" data-orig-size="1600,1200" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;2.8&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;Canon DIGITAL IXUS v2&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1067190841&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;5.40625&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0.0125&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;1&quot;}" data-image-title="IMG_0418" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/IMG_0418.jpg?fit=300%2C225&amp;ssl=1" data-large-file="https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/IMG_0418.jpg?fit=825%2C619&amp;ssl=1" data-id="1661" src="https://i0.wp.com/beta.vioix.fr/wp-content/uploads/2018/08/IMG_0418-1024x768.jpg?resize=825%2C619&#038;ssl=1" alt="" class="wp-image-1661" srcset="https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/IMG_0418.jpg?resize=1024%2C768&amp;ssl=1 1024w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/IMG_0418.jpg?resize=100%2C75&amp;ssl=1 100w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/IMG_0418.jpg?resize=300%2C225&amp;ssl=1 300w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/IMG_0418.jpg?resize=768%2C576&amp;ssl=1 768w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/IMG_0418.jpg?resize=700%2C525&amp;ssl=1 700w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/IMG_0418.jpg?resize=332%2C249&amp;ssl=1 332w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/IMG_0418.jpg?w=1600&amp;ssl=1 1600w" sizes="(max-width: 825px) 100vw, 825px" /></a></figure>



<figure class="wp-block-image size-large"><a href="https://i0.wp.com/beta.vioix.fr/wp-content/uploads/2018/08/IMG_0411-1-e1534798805596.jpg?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" width="768" height="1024" data-attachment-id="1662" data-permalink="https://jb.vioix.fr/visite-chez-un-maitre/img_0411-1/" data-orig-file="https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/IMG_0411-1-e1534798805596.jpg?fit=1200%2C1600&amp;ssl=1" data-orig-size="1200,1600" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;2.8&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;Canon DIGITAL IXUS v2&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1067187848&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;5.40625&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0.005&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;6&quot;}" data-image-title="IMG_0411-1" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/IMG_0411-1-e1534798805596.jpg?fit=225%2C300&amp;ssl=1" data-large-file="https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/IMG_0411-1-e1534798805596.jpg?fit=768%2C1024&amp;ssl=1" data-id="1662" src="https://i0.wp.com/beta.vioix.fr/wp-content/uploads/2018/08/IMG_0411-1-e1534798805596-768x1024.jpg?resize=768%2C1024&#038;ssl=1" alt="" class="wp-image-1662" srcset="https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/IMG_0411-1-e1534798805596.jpg?resize=768%2C1024&amp;ssl=1 768w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/IMG_0411-1-e1534798805596.jpg?resize=75%2C100&amp;ssl=1 75w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/IMG_0411-1-e1534798805596.jpg?resize=225%2C300&amp;ssl=1 225w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/IMG_0411-1-e1534798805596.jpg?resize=700%2C933&amp;ssl=1 700w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/IMG_0411-1-e1534798805596.jpg?resize=332%2C443&amp;ssl=1 332w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/IMG_0411-1-e1534798805596.jpg?w=1200&amp;ssl=1 1200w" sizes="auto, (max-width: 768px) 100vw, 768px" /></a></figure>



<figure class="wp-block-image size-large"><a href="https://i0.wp.com/beta.vioix.fr/wp-content/uploads/2018/08/IMG_0498-e1534798778569.jpg?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" width="768" height="1024" data-attachment-id="1663" data-permalink="https://jb.vioix.fr/visite-chez-un-maitre/img_0498/" data-orig-file="https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/IMG_0498-e1534798778569.jpg?fit=1200%2C1600&amp;ssl=1" data-orig-size="1200,1600" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;2.8&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;Canon DIGITAL IXUS v2&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1067205411&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;5.40625&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0.016666666666667&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;6&quot;}" data-image-title="IMG_0498" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/IMG_0498-e1534798778569.jpg?fit=225%2C300&amp;ssl=1" data-large-file="https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/IMG_0498-e1534798778569.jpg?fit=768%2C1024&amp;ssl=1" data-id="1663" src="https://i0.wp.com/beta.vioix.fr/wp-content/uploads/2018/08/IMG_0498-e1534798778569-768x1024.jpg?resize=768%2C1024&#038;ssl=1" alt="" class="wp-image-1663" srcset="https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/IMG_0498-e1534798778569.jpg?resize=768%2C1024&amp;ssl=1 768w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/IMG_0498-e1534798778569.jpg?resize=75%2C100&amp;ssl=1 75w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/IMG_0498-e1534798778569.jpg?resize=225%2C300&amp;ssl=1 225w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/IMG_0498-e1534798778569.jpg?resize=700%2C933&amp;ssl=1 700w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/IMG_0498-e1534798778569.jpg?resize=332%2C443&amp;ssl=1 332w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/IMG_0498-e1534798778569.jpg?w=1200&amp;ssl=1 1200w" sizes="auto, (max-width: 768px) 100vw, 768px" /></a></figure>
</figure>



<p>Nous nous sommes ensuite rendus à Providence (qui est très proche de Boston) pour la conférence (y&rsquo;a bien un moment où il faut bosser !). D’un point de vue touristique, Providence n’est pas exceptionnelle&#8230; Nous avons clos notre séjour avec la visite du Swan Point Cemetery après la conférence.<br></p>



<h2 class="wp-block-heading">Visite au cimetière</h2>



<p>Le Swan Point Cemetery est situé dans un quartier résidentiel de Providence. C’est un des plus grands (le plus grand&nbsp;?) cimetière fédéral américain. Nous l’avons trouvé assez facilement grâce aux explications de l’agent d’accueil de notre hôtel ; il nous a même rédigé un guide complet pour si rendre.</p>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:33.33%">
<figure class="wp-block-image size-large"><img data-recalc-dims="1" loading="lazy" decoding="async" width="731" height="1024" data-attachment-id="1621" data-permalink="https://jb.vioix.fr/guide_providence-2/" data-orig-file="https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/guide_Providence-1.jpg?fit=2448%2C3431&amp;ssl=1" data-orig-size="2448,3431" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="guide_Providence" data-image-description="" data-image-caption="&lt;p&gt;Le GPS de 2003&#8230;&lt;/p&gt;
" data-medium-file="https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/guide_Providence-1.jpg?fit=214%2C300&amp;ssl=1" data-large-file="https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/guide_Providence-1.jpg?fit=731%2C1024&amp;ssl=1" src="https://i0.wp.com/beta.vioix.fr/wp-content/uploads/2018/08/guide_Providence-1-731x1024.jpg?resize=731%2C1024&#038;ssl=1" alt="" class="wp-image-1621" srcset="https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/guide_Providence-1.jpg?resize=731%2C1024&amp;ssl=1 731w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/guide_Providence-1.jpg?resize=71%2C100&amp;ssl=1 71w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/guide_Providence-1.jpg?resize=214%2C300&amp;ssl=1 214w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/guide_Providence-1.jpg?resize=768%2C1076&amp;ssl=1 768w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/guide_Providence-1.jpg?resize=700%2C981&amp;ssl=1 700w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/guide_Providence-1.jpg?resize=332%2C465&amp;ssl=1 332w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/guide_Providence-1.jpg?w=1650&amp;ssl=1 1650w" sizes="auto, (max-width: 731px) 100vw, 731px" /><figcaption class="wp-element-caption">Le GPS de 2003&#8230;</figcaption></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:66.66%">
<p> Les cimetières américains sont très différents des cimetières français. En effet, il s’agit de grands parcs boisés (voir les photos jointes). Un grand parking permet de garer sa voiture. A l’entrée se trouve une chapelle (où sont les toilettes&nbsp;! ) et un bâtiment d’accueil. Nous nous sommes rendus à l’accueil où il n&rsquo;y avait personne. Une borne d’accueil équipée d’un écran tactile permet de localiser une tombe et d’imprimer le plan pour s&rsquo;y rendre. Bien pratique pour se promener dans un parc de plusieurs hectares&nbsp;!</p>
</div>
</div>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:66.66%">
<p>En sortant du bâtiment, nous sommes tombés nez à nez avec la conservatrice, un de ses collègues et un garde du parc avec lesquels nous avons discuté. Elle nous a proposé d&rsquo;être conduit par l&rsquo;un des gardes en voiturette jusqu&rsquo;à la tombe de H.P. Lovecraft. La promenade était bien trop belle pour ne pas la faire à pied !</p>



<p>Il nous a été signifié qu&rsquo;il était interdit de prendre des photos des tombes à cause du droit à l&rsquo;image. Les seules photos autorisées doivent être en cadre large sans tombe clairement identifiable. Dès l&rsquo;instant où le garde porte une bombe au poivre clairement visible, on n&rsquo;a pas vraiment de bonne raison de ne pas respecter les consignes <img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:33.33%">
<figure class="wp-block-image size-large"><a href="https://i0.wp.com/beta.vioix.fr/wp-content/uploads/2018/08/plan_cimetiere-1.jpg?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" width="731" height="1024" data-attachment-id="1620" data-permalink="https://jb.vioix.fr/plan_cimetiere-2/" data-orig-file="https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/plan_cimetiere-1.jpg?fit=2448%2C3431&amp;ssl=1" data-orig-size="2448,3431" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="plan_cimetiere" data-image-description="" data-image-caption="&lt;p&gt;La carte au trésor version H.P. Lovecraft&lt;/p&gt;
" data-medium-file="https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/plan_cimetiere-1.jpg?fit=214%2C300&amp;ssl=1" data-large-file="https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/plan_cimetiere-1.jpg?fit=731%2C1024&amp;ssl=1" src="https://i0.wp.com/beta.vioix.fr/wp-content/uploads/2018/08/plan_cimetiere-1-731x1024.jpg?resize=731%2C1024&#038;ssl=1" alt="" class="wp-image-1620" srcset="https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/plan_cimetiere-1.jpg?resize=731%2C1024&amp;ssl=1 731w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/plan_cimetiere-1.jpg?resize=71%2C100&amp;ssl=1 71w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/plan_cimetiere-1.jpg?resize=214%2C300&amp;ssl=1 214w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/plan_cimetiere-1.jpg?resize=768%2C1076&amp;ssl=1 768w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/plan_cimetiere-1.jpg?resize=700%2C981&amp;ssl=1 700w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/plan_cimetiere-1.jpg?resize=332%2C465&amp;ssl=1 332w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/plan_cimetiere-1.jpg?w=1650&amp;ssl=1 1650w" sizes="auto, (max-width: 731px) 100vw, 731px" /></a><figcaption class="wp-element-caption">La carte au trésor version H.P. Lovecraft</figcaption></figure>
</div>
</div>



<p>Sur la pierre tombale, des gens ont déposé des cailloux, des pièces de monnaie, et une petite bouteille de parfum vide. J’ai aussi posé une pièce (aucun effet indésirable constaté… aucun effet favorable non plus !).</p>



<h2 class="wp-block-heading">Pour finir</h2>



<p>Comme dit le proverbe : « l&rsquo;occasion fait le larron », aller à Providence juste pour marcher dans les pas de Lovecraft ne me semble pas justifier un billet d&rsquo;avion. Par contre, Boston et la Nouvelle Angleterre sont magnifiques en automne et dans ce cas, le détour n&rsquo;est pas long&#8230;</p>



<figure data-carousel-extra='{"blog_id":1,"permalink":"https:\/\/jb.vioix.fr\/visite-chez-un-maitre\/"}'  class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-2 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-large"><img data-recalc-dims="1" loading="lazy" decoding="async" width="768" height="1024" data-attachment-id="1645" data-permalink="https://jb.vioix.fr/visite-chez-un-maitre/img_0601-4/" data-orig-file="https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/IMG_0601.jpg?fit=1200%2C1600&amp;ssl=1" data-orig-size="1200,1600" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;7.1&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;Canon DIGITAL IXUS v2&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1067528592&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;5.40625&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0.008&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;1&quot;}" data-image-title="IMG_0601" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/IMG_0601.jpg?fit=225%2C300&amp;ssl=1" data-large-file="https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/IMG_0601.jpg?fit=768%2C1024&amp;ssl=1" data-id="1645" src="https://i0.wp.com/beta.vioix.fr/wp-content/uploads/2018/08/IMG_0601-768x1024.jpg?resize=768%2C1024&#038;ssl=1" alt="" class="wp-image-1645" srcset="https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/IMG_0601.jpg?resize=768%2C1024&amp;ssl=1 768w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/IMG_0601.jpg?resize=75%2C100&amp;ssl=1 75w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/IMG_0601.jpg?resize=225%2C300&amp;ssl=1 225w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/IMG_0601.jpg?resize=700%2C933&amp;ssl=1 700w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/IMG_0601.jpg?resize=332%2C443&amp;ssl=1 332w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/IMG_0601.jpg?w=1200&amp;ssl=1 1200w" sizes="auto, (max-width: 768px) 100vw, 768px" /></figure>



<figure class="wp-block-image size-large"><img data-recalc-dims="1" loading="lazy" decoding="async" width="825" height="619" data-attachment-id="1646" data-permalink="https://jb.vioix.fr/visite-chez-un-maitre/img_0604/" data-orig-file="https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/IMG_0604.jpg?fit=1600%2C1200&amp;ssl=1" data-orig-size="1600,1200" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;2.8&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;Canon DIGITAL IXUS v2&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1067528797&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;5.40625&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0.002&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;1&quot;}" data-image-title="IMG_0604" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/IMG_0604.jpg?fit=300%2C225&amp;ssl=1" data-large-file="https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/IMG_0604.jpg?fit=825%2C619&amp;ssl=1" data-id="1646" src="https://i0.wp.com/beta.vioix.fr/wp-content/uploads/2018/08/IMG_0604-1024x768.jpg?resize=825%2C619&#038;ssl=1" alt="" class="wp-image-1646" srcset="https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/IMG_0604.jpg?resize=1024%2C768&amp;ssl=1 1024w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/IMG_0604.jpg?resize=100%2C75&amp;ssl=1 100w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/IMG_0604.jpg?resize=300%2C225&amp;ssl=1 300w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/IMG_0604.jpg?resize=768%2C576&amp;ssl=1 768w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/IMG_0604.jpg?resize=700%2C525&amp;ssl=1 700w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/IMG_0604.jpg?resize=332%2C249&amp;ssl=1 332w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/IMG_0604.jpg?w=1600&amp;ssl=1 1600w" sizes="auto, (max-width: 825px) 100vw, 825px" /></figure>



<figure class="wp-block-image size-large"><img data-recalc-dims="1" loading="lazy" decoding="async" width="768" height="1024" data-attachment-id="1647" data-permalink="https://jb.vioix.fr/visite-chez-un-maitre/img_0606-2/" data-orig-file="https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/IMG_0606.jpg?fit=1200%2C1600&amp;ssl=1" data-orig-size="1200,1600" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;4&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;Canon DIGITAL IXUS v2&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1067529451&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;10.8125&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0.003125&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;1&quot;}" data-image-title="IMG_0606" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/IMG_0606.jpg?fit=225%2C300&amp;ssl=1" data-large-file="https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/IMG_0606.jpg?fit=768%2C1024&amp;ssl=1" data-id="1647" src="https://i0.wp.com/beta.vioix.fr/wp-content/uploads/2018/08/IMG_0606-768x1024.jpg?resize=768%2C1024&#038;ssl=1" alt="" class="wp-image-1647" srcset="https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/IMG_0606.jpg?resize=768%2C1024&amp;ssl=1 768w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/IMG_0606.jpg?resize=75%2C100&amp;ssl=1 75w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/IMG_0606.jpg?resize=225%2C300&amp;ssl=1 225w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/IMG_0606.jpg?resize=700%2C933&amp;ssl=1 700w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/IMG_0606.jpg?resize=332%2C443&amp;ssl=1 332w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/IMG_0606.jpg?w=1200&amp;ssl=1 1200w" sizes="auto, (max-width: 768px) 100vw, 768px" /></figure>



<figure class="wp-block-image size-large"><img data-recalc-dims="1" loading="lazy" decoding="async" width="768" height="1024" data-attachment-id="1648" data-permalink="https://jb.vioix.fr/visite-chez-un-maitre/img_0607-2/" data-orig-file="https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/IMG_0607.jpg?fit=1200%2C1600&amp;ssl=1" data-orig-size="1200,1600" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;7.1&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;Canon DIGITAL IXUS v2&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1067529526&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;5.40625&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0.00625&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;1&quot;}" data-image-title="IMG_0607" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/IMG_0607.jpg?fit=225%2C300&amp;ssl=1" data-large-file="https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/IMG_0607.jpg?fit=768%2C1024&amp;ssl=1" data-id="1648" src="https://i0.wp.com/beta.vioix.fr/wp-content/uploads/2018/08/IMG_0607-768x1024.jpg?resize=768%2C1024&#038;ssl=1" alt="" class="wp-image-1648" srcset="https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/IMG_0607.jpg?resize=768%2C1024&amp;ssl=1 768w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/IMG_0607.jpg?resize=75%2C100&amp;ssl=1 75w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/IMG_0607.jpg?resize=225%2C300&amp;ssl=1 225w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/IMG_0607.jpg?resize=700%2C933&amp;ssl=1 700w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/IMG_0607.jpg?resize=332%2C443&amp;ssl=1 332w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/IMG_0607.jpg?w=1200&amp;ssl=1 1200w" sizes="auto, (max-width: 768px) 100vw, 768px" /></figure>



<figure class="wp-block-image size-large"><img data-recalc-dims="1" loading="lazy" decoding="async" width="825" height="619" data-attachment-id="1649" data-permalink="https://jb.vioix.fr/visite-chez-un-maitre/img_0610-2/" data-orig-file="https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/IMG_0610.jpg?fit=1600%2C1200&amp;ssl=1" data-orig-size="1600,1200" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;4&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;Canon DIGITAL IXUS v2&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1067530433&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;10.8125&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0.003125&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;1&quot;}" data-image-title="IMG_0610" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/IMG_0610.jpg?fit=300%2C225&amp;ssl=1" data-large-file="https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/IMG_0610.jpg?fit=825%2C619&amp;ssl=1" data-id="1649" src="https://i0.wp.com/beta.vioix.fr/wp-content/uploads/2018/08/IMG_0610-1024x768.jpg?resize=825%2C619&#038;ssl=1" alt="" class="wp-image-1649" srcset="https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/IMG_0610.jpg?resize=1024%2C768&amp;ssl=1 1024w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/IMG_0610.jpg?resize=100%2C75&amp;ssl=1 100w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/IMG_0610.jpg?resize=300%2C225&amp;ssl=1 300w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/IMG_0610.jpg?resize=768%2C576&amp;ssl=1 768w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/IMG_0610.jpg?resize=700%2C525&amp;ssl=1 700w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/IMG_0610.jpg?resize=332%2C249&amp;ssl=1 332w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2018/08/IMG_0610.jpg?w=1600&amp;ssl=1 1600w" sizes="auto, (max-width: 825px) 100vw, 825px" /></figure>
</figure>
]]></content:encoded>
					
					<wfw:commentRss>https://jb.vioix.fr/visite-chez-un-maitre/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">823</post-id>	</item>
		<item>
		<title>Attribution de projets</title>
		<link>https://jb.vioix.fr/attribution-de-projets/</link>
					<comments>https://jb.vioix.fr/attribution-de-projets/#respond</comments>
		
		<dc:creator><![CDATA[jb]]></dc:creator>
		<pubDate>Mon, 25 Sep 2017 19:14:08 +0000</pubDate>
				<category><![CDATA[Informatique]]></category>
		<guid isPermaLink="false">https://jb.vioix.fr/?p=1457</guid>

					<description><![CDATA[&#160;&#160; Tous les ans nos étudiants doivent réaliser des projets. Nous leurs proposons des sujets et ils remplissent une fiche de vœux. Il faut ensuite satisfaire au mieux les étudiants. Évidement, certains sujets sont demandés par plusieurs groupes d&#8217;étudiants&#8230; Un étudiant m&#8217;a demandé d&#8217;expliquer comment le problème était résolu, j&#8217;ai donc rédigé ces quelques lignes&#8230; <a href="https://jb.vioix.fr/attribution-de-projets/" class="more-link">Lire la suite <span class="screen-reader-text">Attribution de projets</span></a>]]></description>
										<content:encoded><![CDATA[




<p>Tous les ans nos étudiants doivent réaliser des projets. Nous leurs proposons des sujets et ils remplissent une fiche de vœux. Il faut ensuite satisfaire au mieux les étudiants. Évidement, certains sujets sont demandés par plusieurs groupes d&rsquo;étudiants&#8230;</p>



<p>Un étudiant m&rsquo;a demandé d&rsquo;expliquer comment le problème était résolu, j&rsquo;ai donc rédigé ces quelques lignes pour donner les grandes idées.</p>



<span id="more-1457"></span>



<h1 class="wp-block-heading" id="mcetoc_1c7ejm5t30">Les données du problème</h1>



<p>A partir des fiches de vœux des étudiants une feuille de calcul est remplie avec une valeur représentant l&rsquo;intérêt des étudiants pour le sujet. La valeur maximale de l’intérêt est donnée au premier sujet choisi par les étudiants et ainsi de suite. Les sujets qui n&rsquo;ont pas été choisis par un groupe ont un intérêt de 0.</p>



<p>Les données peuvent être présentées ensuite sous la forme d&rsquo;un tableau ayant l&rsquo;aspect ci-dessous. Les lignes représentent les groupes (ici repérés de A à F) et les colonnes les sujets (repérés de 1 à 12). Le tableau est rempli à la main sous LibreOffice et exporté au format CSV (on peut aussi faire le CSV dans un éditeur de texte) en prenant soin d&rsquo;ajouter un <code>#</code> dans la première colonne, il nous servira ensuite de marqueur pour repérer la première ligne.</p>



<figure class="wp-block-table"><table><tbody><tr><td># Voeux</td><td><strong>Sujet 1</strong></td><td><strong>Sujet 2</strong></td><td><strong>Sujet 3</strong></td><td><strong>Sujet 4</strong></td><td><strong>Sujet 5</strong></td><td><strong>Sujet 6</strong></td><td><strong>Sujet 7</strong></td><td><strong>Sujet 8</strong></td><td><strong>Sujet 9</strong></td><td><strong>Sujet 10</strong></td><td><strong>Sujet 11</strong></td><td><strong>Sujet 12</strong></td></tr><tr><td><strong>Groupe A</strong></td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>5</td><td>4</td><td>3</td><td>2</td><td>1</td></tr><tr><td><strong>Groupe B</strong></td><td>5</td><td>0</td><td>4</td><td>0</td><td>3</td><td>0</td><td>2</td><td>0</td><td>1</td><td>0</td><td>0</td><td>0</td></tr><tr><td><strong>Groupe C</strong></td><td>5</td><td>4</td><td>3</td><td>2</td><td>1</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td></tr><tr><td><strong>Groupe D</strong></td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>5</td><td>4</td><td>3</td><td>2</td><td>1</td><td>0</td></tr><tr><td><strong>Groupe E</strong></td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>1</td><td>2</td><td>3</td><td>4</td><td>5</td></tr><tr><td><strong>Groupe F</strong></td><td>0</td><td>0</td><td>5</td><td>0</td><td>4</td><td>0</td><td>3</td><td>0</td><td>2</td><td>0</td><td>1</td><td>0</td></tr></tbody></table></figure>



<p>Le fichier CSV est donc le suivant :</p>



<pre class="wp-block-preformatted"># Voeux,Sujet 1,Sujet 2,Sujet 3,Sujet 4,Sujet 5,Sujet 6,Sujet 7,Sujet 8,Sujet 9,Sujet 10,Sujet 11,Sujet 12
Groupe A,0,0,0,0,0,0,0,5,4,3,2,1
Groupe B,5,0,4,0,3,0,2,0,1,0,0,0
Groupe C,5,4,3,2,1,0,0,0,0,0,0,0
Groupe D,0,0,0,0,0,0,5,4,3,2,1,0
Groupe E,0,0,0,0,0,0,0,1,2,3,4,5
Groupe F,0,0,5,0,4,0,3,0,2,0,1,0
</pre>



<h2 class="wp-block-heading" id="mcetoc_1c7ejm5t31">Lecture des données</h2>



<p>A partir du fichier CSV il faut extraire trois tableaux :</p>



<ul class="wp-block-list">
<li>le premier contenant les groupes</li>



<li>le deuxième contenant les sujets</li>



<li>le troisième (2D) contenant les vœux.</li>
</ul>



<p>La disposition des données dans le fichier CSV permet de construire le tableau des sujets avec la première ligne. Ensuite le tableau contenant les groupes et le tableau contenant les vœux sont remplis au fur et à mesure de la lecture du fichier.</p>



<p>A partir de la double liste contenant les vœux, on construit un tableau de type <code>numpy.array</code> (avec le temps je travaille de plus en plus avec <code>numpy</code> pour les représentations de tableau).</p>



<pre class="wp-block-prismatic-blocks"><code class="language-python">import sys
import csv
import numpy as np

def lire_voeux(fic=&quot;exemple.csv&quot;):
    tmp = []
    groupes = []
    voeux = []
    with open(fic) as fic:
        reader = csv.reader(fic, delimiter=&#039;,&#039;)
        for ligne in reader:
            if &#039;#&#039; in ligne[0]:
                tmp, sujets = ligne[0], ligne[1:]
            else:
                groupe, voeux_ = ligne[0], [int(_) for _ in ligne[1:]]
                groupes.append(groupe)
                voeux.append(voeux_)
    return sujets, groupes, np.array(voeux)</code></pre>



<p>La fonction retourne les 3 tableaux qui seront utilisés par la suite.</p>



<h1 class="wp-block-heading" id="mcetoc_1c7ejm5t42">Approche exhaustive</h1>



<p>Ce problème rentre dans la catégorie des <a href="https://fr.wikipedia.org/wiki/Probl%C3%A8me_d%27affectation" target="_blank" rel="noopener">problèmes d&rsquo;affectation</a>, de nombreux algorithmes existent (<a href="https://fr.wikipedia.org/wiki/Algorithme_hongrois" target="_blank" rel="noopener">algorithme hongrois</a>,&#8230;) et il doit être possible de résoudre ce problème en modifiant les algorithmes existants. Je n&rsquo;ai pas pris le temps de réfléchir à un algorithme complet permettant de résoudre ce problème.</p>



<h2 class="wp-block-heading" id="mcetoc_1c7ejm5t43">Espace de recherche</h2>



<p>Parmi l&rsquo;ensemble des sujets proposés il est possible que certains ne soient pas du tout retenus par les étudiants. A l&rsquo;inverse, il faut qu&rsquo;il y ait au moins autant de sujet retenus (indépendant de leurs position) que de groupes d&rsquo;étudiants (dans ce cas il risque toutefois d&rsquo;avoir beaucoup d&rsquo;étudiants insatisfaits).</p>



<p>L&rsquo;utilisation d&rsquo;un <code>numpy.array</code>  pour représenter les vœux permet de vérifier tout ça rapidement. La somme de chaque colonne (selon la représentation de notre tableau ci-dessus) permet de retrouver ensuite facilement les sujets qui n&rsquo;ont jamais été retenus par les étudiants. Le nombre de sujets retenus doit être supérieur ou égal au nombre de groupes sinon le problème est insolvable.</p>



<pre class="wp-block-prismatic-blocks"><code class="language-python">somme_voeux = np.sum(voeux, axis=0)
sujets_possibles = np.where(somme_voeux&gt;0)[0]
if (sujets_possibles.shape[0]&lt;len(groupes)):
   print(&quot;Pas assez de sujets retenus&quot;)
   sys.exit()</code></pre>



<h2 class="wp-block-heading" id="mcetoc_1c7ejm5t44">Représentation d&rsquo;une solution</h2>



<p>Dans l&rsquo;exemple précédent le tableau <code>sujets_possibles</code> contient <code>[ 0 1 2 3 4 6 7 8 9 10 11]</code>. Le <strong>sujet 6</strong> (ayant l&rsquo;indice 5 dans le tableau) n&rsquo;ayant pas été retenu par les étudiants.</p>



<p>Une solution au problème est représentée par un tableau ayant pour taille le nombre de groupes. Chaque cas du tableau contenant l&rsquo;indice du sujet (dans le tableau <code>sujets</code>).</p>



<figure class="wp-block-table"><table><tbody><tr><td><strong>Groupe</strong></td><td>Groupe A</td><td>Groupe B</td><td>Groupe C</td><td>Groupe D</td><td>Groupe E</td><td>Groupe F</td></tr><tr><td><strong>Sujet attribué</strong></td><td>Sujet 1</td><td>Sujet 2</td><td>Sujet 3</td><td>Sujet 4</td><td>Sujet 5</td><td>Sujet 7</td></tr></tbody></table></figure>



<p>La solution présentée précédemment s’écrit simplement en Python avec un tranche dans la liste <code>sujets_possibles</code>.</p>



<pre class="wp-block-prismatic-blocks"><code class="language-python">solution = sujets_possibles[0:len(groupes)]</code></pre>



<h2 class="wp-block-heading" id="mcetoc_1c7ejm5t45">Qualité d&rsquo;une solution</h2>



<p>Partant d&rsquo;une solution il faut être capable d&rsquo;évaluer la qualité de la proposition, après avoir lu dans le tableau <code>choix</code> la satisfaction de chaque groupe plusieurs approches peuvent être utilisées :</p>



<ul class="wp-block-list">
<li>calculer la moyenne,</li>



<li>rechercher l&rsquo;amplitude et le nombre de vœux minimaux (on cherchera donc à minimiser ce critère),</li>



<li>rechercher l&rsquo;amplitude et le nombre de vœux maximaux,</li>



<li>&#8230;</li>
</ul>



<p>Nous allons simplement utiliser la moyenne de la satisfaction comme qualité d&rsquo;une proposition d&rsquo;attribution de projets.</p>



<p>Pour chaque groupe on cherche le sujet qui lui a été attribué (contenu dans la liste <code>attributions</code> passée en paramètre) et on recherche dans le tableau des vœux la valeur d’intérêt pour ce projet.</p>



<p>On somme ces valeurs pour tous les groupes et on calcule la moyenne. Le but va être de maximiser cette valeur. Dans le cas ci-dessus, idéalement il faudrait une moyenne de 5 (ce qui signifierait que tous les groupes ont eu leur premier vœu).</p>



<pre class="wp-block-prismatic-blocks"><code class="language-python">def __calculer_satisfactions(attributions, voeux):
    somme = 0.0
    for idx,sujet in enumerate(attributions):
        somme += voeux[idx][sujet]
    return somme/len(attributions)</code></pre>



<p>La solution initiale présentée ci-dessus donne les valeurs suivantes :</p>



<figure class="wp-block-table"><table><tbody><tr><td><strong>Groupe</strong></td><td>Groupe A</td><td>Groupe B</td><td>Groupe C</td><td>Groupe D</td><td>Groupe E</td><td>Groupe F</td></tr><tr><td><strong>Sujet attribué</strong></td><td>Sujet 1</td><td>Sujet 2</td><td>Sujet 3</td><td>Sujet 4</td><td>Sujet 5</td><td>Sujet 7</td></tr><tr><td><strong>Satisfaction (max. 5)</strong></td><td>0</td><td>0</td><td>3</td><td>0</td><td>0</td><td>3</td></tr></tbody></table></figure>



<p>La satisfaction totale est de 6 et la satisfaction moyenne est de 1. La solution est très mauvaise, la majorité des groupes ayant des sujets qu&rsquo;ils ne voulaient pas.</p>



<h2 class="wp-block-heading" id="mcetoc_1c7ejm5t46">&nbsp;Recherche de la meilleure solution</h2>



<p>Le problème du choix de <img decoding="async" src="https://s0.wp.com/latex.php?latex=k&#038;bg=ffffff&#038;fg=000&#038;s=0&#038;c=20201002" alt="k" class="latex" /> éléments parmi <img decoding="async" src="https://s0.wp.com/latex.php?latex=n&#038;bg=ffffff&#038;fg=000&#038;s=0&#038;c=20201002" alt="n" class="latex" /> avec prise en compte de l&rsquo;ordre est un <a href="https://fr.wikipedia.org/wiki/Arrangement" target="_blank" rel="noopener">arrangement</a>. Le nombre d&rsquo;arrangement possible est :</p>



<p>$$A^k_n = \frac{n!}{(n-k)!}\quad\mbox{pour }k\leq n $$</p>



<p>Le nombre possible explose en fonction du nombre de groupes (et du nombre de vœux possibles),&nbsp; <img decoding="async" src="https://s0.wp.com/latex.php?latex=n&#038;bg=ffffff&#038;fg=000&#038;s=0&#038;c=20201002" alt="n" class="latex" /> est bornée par le produit entre le nombre de groupes et le nombre de voeux et <img decoding="async" src="https://s0.wp.com/latex.php?latex=k&#038;bg=ffffff&#038;fg=000&#038;s=0&#038;c=20201002" alt="k" class="latex" /> vaut le nombre de groupe.</p>



<p>Dans l&rsquo;exemple précédent (5 vœux, 6 groupes et 11 vœux retenus) le nombre de combinaisons est de 332640.</p>



<p>En Python le module <code>itertools</code> permet de traiter les différents cas de permutations, combinaisons, arrangement,&#8230; A partir des <code>sujets_possibles</code> la liste des solutions possibles est construite avec :</p>



<pre class="wp-block-prismatic-blocks"><code class="language-python">solutions_possibles = list(itertools.permutations(sujets_possibles, len(groupes)))
print(&quot;Nombre de combinaisons : &quot;, len(solutions_possibles))</code></pre>



<p>L&rsquo;ensemble des solutions étant construit, il reste à rechercher la meilleure (ou les meilleures, il peut y avoir plusieurs solutions optimales). Une simple compréhension de liste sur les solutions possibles qui utilise la fonction <code>__calculer_satisfaction</code> précédemment écrite permet de trouver la qualité de toutes les solutions. Ensuite il suffit de recherche la valeur maximale et la solution associée :</p>



<pre class="wp-block-prismatic-blocks"><code class="language-python">valeurs_solutions = [__calculer_satisfactions(_, voeux) for _ in solutions_possibles]
meilleur_satisfaction = max(valeurs_solutions)
meilleur_solution = valeurs_solutions.index(meilleur_satisfaction)</code></pre>



<p>La solution (dans ce cas elle est unique) est :</p>



<figure class="wp-block-table"><table><tbody><tr><td><strong>Groupe</strong></td><td>Groupe A</td><td>Groupe B</td><td>Groupe C</td><td>Groupe D</td><td>Groupe E</td><td>Groupe F</td></tr><tr><td><strong>Sujet attribué</strong></td><td>Sujet 8</td><td>Sujet 1</td><td>Sujet 2</td><td>Sujet 7</td><td>Sujet 12</td><td>Sujet 3</td></tr><tr><td><strong>Satisfaction (max. 5)</strong></td><td>5</td><td>5</td><td>4</td><td>5</td><td>5</td><td>5</td></tr></tbody></table></figure>



<p>La satisfaction moyenne est de 4,83. Tous les groupes ont leurs premiers vœux sauf le groupe C qui obtient son deuxième vœu.</p>



<h1 class="wp-block-heading" id="mcetoc_1c7ejm5t47">Approche heuristique</h1>



<p>La construction de l&rsquo;ensemble des solutions possibles devient très vite impossible en un temps (et une quantité de mémoire) raisonnable. Cette année nous avons (sur les deux promotions) une vingtaine de groupe et une trentaine de sujet, le nombre de solutions est d&rsquo;environ <img decoding="async" src="https://s0.wp.com/latex.php?latex=7%2C3+%5Ctimes+10%5E%7B25%7D&#038;bg=ffffff&#038;fg=000&#038;s=0&#038;c=20201002" alt="7,3 &#92;times 10^{25}" class="latex" />. Je n&rsquo;ai pas cherché à vérifier si Python pouvait gérer des listes de cette taille mais je suis certain de connaître la réponse ! Pour des problèmes ayant un très grand espace de recherche les <a href="https://fr.wikipedia.org/wiki/Heuristique_(math%C3%A9matiques)" target="_blank" rel="noopener">heuristiques</a> sont souvent utilisées.</p>



<h2 class="wp-block-heading" id="mcetoc_1c7ejm5t48">Modification d&rsquo;une solution</h2>



<p>Le tableau <code>sujets_possibles</code> contient tous les sujets retenus par les étudiants. La solution du problème est construite à partir d&rsquo;une tranche contenant les premiers éléments.</p>



<pre class="wp-block-prismatic-blocks"><code class="language-python">solution = sujets_possibles[0:len(groupes)]</code></pre>



<p>La permutation de deux éléments dans l&rsquo;ensemble des sujets possibles peut conduire à une meilleure solution. Pour éviter de calculer des solutions inutiles (celles pour lesquelles les permutations sont hors du tableau <code>solution</code>) l’intervalle de tirage de l&rsquo;un des deux éléments est limité à l&rsquo;intérieur de <code>solution</code>.</p>



<p>Après la permutation des éléments, l&rsquo;efficacité de la solution est calculée, si elle est plus mauvaise que la valeur précédente, les éléments permutés sont replacés à leurs positions initiales. Cette séquence est répétée pendant quelques milliers d&rsquo;itérations.</p>



<pre class="wp-block-prismatic-blocks"><code class="language-python">import random 
#...
def attribuer_projet_aleatoire(groupes, sujets, voeux):
    NB_REP = 2000
    somme_voeux = np.sum(voeux, axis=0)
    sujets_possibles = np.where(somme_voeux &gt; 0)[0]

    if (sujets_possibles.shape[0] &lt; len(groupes)):
        print(&quot;Pas assez de sujets retenus&quot;)
        exit(1)

    evolutions = np.zeros(NB_REP)
    for _ in range(NB_REP):
        satisfaction = __calculer_satisfactions(sujets_possibles[0:len(groupes)], voeux)
        evolutions[_] = satisfaction

        a = random.randint(0,len(groupes)-1)
        b = random.randint(0, sujets_possibles.shape[0]-1)
        sujets_possibles[b], sujets_possibles[a] = sujets_possibles[a], sujets_possibles[b]
        satisfaction_ = __calculer_satisfactions(sujets_possibles[0:len(groupes)], voeux)

        if satisfaction &gt; satisfaction_:
            sujets_possibles[b], sujets_possibles[a] = sujets_possibles[a], sujets_possibles[b]

    return __calculer_satisfactions(sujets_possibles[0:len(groupes)], voeux), sujets_possibles[0:len(groupes)], evolutions</code></pre>



<p>La fonction s&rsquo;appelle à partir des éléments construit précédemment, elle retourne la satisfaction moyenne finale, l&rsquo;attribution des projets et l&rsquo;évolution de la satisfaction (afin de construire ensuite les graphiques d&rsquo;évolution)</p>



<pre class="wp-block-prismatic-blocks"><code class="language-python">satisfaction, attributions, evolutions = attribuer_projet_aleatoire(groupes, sujets, voeux)</code></pre>



<h2 class="wp-block-heading" id="mcetoc_1c7ejm5t49">Résultats</h2>



<p>Dans le cas de l&rsquo;exemple proposé il est facile de vérifier l&rsquo;efficacité de l&rsquo;algorithme :  la solution globale est connue et le nombre de permutations possible est connu. Dans les illustrations ci-dessous l&rsquo;algorithme a réalisé 2000 itérations (à comparer aux 332640 cas possibles).</p>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image size-large"><a href="https://i0.wp.com/beta.vioix.fr/wp-content/uploads/2017/09/MaximumGlobal.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" width="825" height="715" data-attachment-id="1471" data-permalink="https://jb.vioix.fr/attribution-de-projets/maximumglobal/" data-orig-file="https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2017/09/MaximumGlobal.png?fit=1500%2C1300&amp;ssl=1" data-orig-size="1500,1300" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="MaximumGlobal" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2017/09/MaximumGlobal.png?fit=300%2C260&amp;ssl=1" data-large-file="https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2017/09/MaximumGlobal.png?fit=825%2C715&amp;ssl=1" src="https://i0.wp.com/beta.vioix.fr/wp-content/uploads/2017/09/MaximumGlobal-1024x887.png?resize=825%2C715&#038;ssl=1" alt="" class="wp-image-1471" srcset="https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2017/09/MaximumGlobal.png?resize=1024%2C887&amp;ssl=1 1024w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2017/09/MaximumGlobal.png?resize=100%2C87&amp;ssl=1 100w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2017/09/MaximumGlobal.png?resize=300%2C260&amp;ssl=1 300w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2017/09/MaximumGlobal.png?resize=768%2C666&amp;ssl=1 768w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2017/09/MaximumGlobal.png?resize=700%2C607&amp;ssl=1 700w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2017/09/MaximumGlobal.png?resize=332%2C288&amp;ssl=1 332w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2017/09/MaximumGlobal.png?w=1500&amp;ssl=1 1500w" sizes="auto, (max-width: 825px) 100vw, 825px" /></a></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<p>Avec 2000 itérations, l&rsquo;algorithme a calculé 0.6% des permutations possibles, ce qui représente un temps de calcul et une occupation en mémoire bien inférieur à la recherche de la solution de manière exhaustive (sous réserve quelle soit possible).</p>
</div>
</div>



<p>Dans certains cas, l&rsquo;algorithme ne converge pas vers la solution globale et se trouve pris dans un optimum local.</p>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image size-large"><a href="https://i0.wp.com/beta.vioix.fr/wp-content/uploads/2017/09/MaximumLocal.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" width="825" height="715" data-attachment-id="1472" data-permalink="https://jb.vioix.fr/attribution-de-projets/maximumlocal/" data-orig-file="https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2017/09/MaximumLocal.png?fit=1500%2C1300&amp;ssl=1" data-orig-size="1500,1300" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="MaximumLocal" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2017/09/MaximumLocal.png?fit=300%2C260&amp;ssl=1" data-large-file="https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2017/09/MaximumLocal.png?fit=825%2C715&amp;ssl=1" src="https://i0.wp.com/beta.vioix.fr/wp-content/uploads/2017/09/MaximumLocal-1024x887.png?resize=825%2C715&#038;ssl=1" alt="" class="wp-image-1472" srcset="https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2017/09/MaximumLocal.png?resize=1024%2C887&amp;ssl=1 1024w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2017/09/MaximumLocal.png?resize=100%2C87&amp;ssl=1 100w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2017/09/MaximumLocal.png?resize=300%2C260&amp;ssl=1 300w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2017/09/MaximumLocal.png?resize=768%2C666&amp;ssl=1 768w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2017/09/MaximumLocal.png?resize=700%2C607&amp;ssl=1 700w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2017/09/MaximumLocal.png?resize=332%2C288&amp;ssl=1 332w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2017/09/MaximumLocal.png?w=1500&amp;ssl=1 1500w" sizes="auto, (max-width: 825px) 100vw, 825px" /></a></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<p>Dans l&rsquo;exemple ci-contre le maximum global n&rsquo;a pas pu être atteint. L&rsquo;algorithme a convergé vers un <strong>maximum local</strong>. Dans le cas de notre problème il s&rsquo;agit d&rsquo;une solution <em>pas trop mauvaise</em> qui ne pourrait être améliorée qu&rsquo;en réalisant plusieurs permutations (avec certaines qui conduiraient à une solution plus mauvaise).</p>
</div>
</div>



<h1 class="wp-block-heading" id="mcetoc_1c7ejm5t4a">Amélioration avec un algorithme de recuit simulé</h1>



<p>Pour quitter les optimums locaux, il est nécessaire d&rsquo;utiliser un algorithme capable de réaliser des modifications plus importantes que la permutation de 2 éléments. J&rsquo;ai choisi de manière arbitraire <img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /> d’utiliser un algorithme de recuit simulé qui est simple à coder et qui donne souvent de bons résultats pour ce type de problèmes.</p>



<h2 class="wp-block-heading" id="mcetoc_1c7ejm5t4b">Principe</h2>



<p>L&rsquo;algorithme du recuit simulé est une <a href="https://fr.wikipedia.org/wiki/M%C3%A9taheuristique" target="_blank" rel="noopener">métaheuristique</a> permettant de minimiser la fonction d&rsquo;énergie <img decoding="async" src="https://s0.wp.com/latex.php?latex=E&#038;bg=ffffff&#038;fg=000&#038;s=0&#038;c=20201002" alt="E" class="latex" /> d&rsquo;un système. La configuration du système est modifiée de manière élémentaire à chaque itération de l&rsquo;algorithme. La variation d&rsquo;énergie du système <img decoding="async" src="https://s0.wp.com/latex.php?latex=%5CDelta+E&#038;bg=ffffff&#038;fg=000&#038;s=0&#038;c=20201002" alt="&#92;Delta E" class="latex" />  est ensuite calculée :</p>



<ul class="wp-block-list">
<li>si <img decoding="async" src="https://s0.wp.com/latex.php?latex=%5CDelta+E+%3C0&#038;bg=ffffff&#038;fg=000&#038;s=0&#038;c=20201002" alt="&#92;Delta E &lt;0" class="latex" /> l&rsquo;énergie est diminuée, la nouvelle configuration du système est conservée.</li>



<li>si <img decoding="async" src="https://s0.wp.com/latex.php?latex=%5CDelta+E+%3E0&#038;bg=ffffff&#038;fg=000&#038;s=0&#038;c=20201002" alt="&#92;Delta E &gt;0" class="latex" /> l&rsquo;énergie est augmentée, la nouvelle configuration a une probabilité (donc comprise entre 0 et 1) d&rsquo;être retenue donnée par <img decoding="async" src="https://s0.wp.com/latex.php?latex=e%5E%7B-%5Cfrac%7B%5CDelta+E%7D%7BT%7D%7D&#038;bg=ffffff&#038;fg=000&#038;s=0&#038;c=20201002" alt="e^{-&#92;frac{&#92;Delta E}{T}}" class="latex" />. Cette probabilité d&rsquo;acceptation liée à une fonction exponentielle décroissante est appelée règle de Métropolis.</li>
</ul>



<p>La température <img decoding="async" src="https://s0.wp.com/latex.php?latex=T&#038;bg=ffffff&#038;fg=000&#038;s=0&#038;c=20201002" alt="T" class="latex" /> est diminuée au fur et à mesure des itérations de l&rsquo;algorithme. La probabilité d&rsquo;accepter une <em>mauvaise</em> solution décroît donc en fonction du temps.</p>



<h2 class="wp-block-heading" id="mcetoc_1c7ejm5t4c">Application</h2>



<p>L&rsquo;application de l&rsquo;algorithme du recuit simulé à notre problème est assez simple. L&rsquo;énergie du système correspond à la valeur de satisfaction à la nuance près qu&rsquo;il faut la maximiser (et pas la minimiser comme dans l&rsquo;algorithme de recuit simulé).</p>



<p>Une variation de la configuration du système est simplement la permutation de deux éléments dans le tableau des sujets retenus (comme dans le programme précédent).</p>



<h2 class="wp-block-heading" id="mcetoc_1c7ejm5t4d">Réglage des différents paramètres</h2>



<p>Les algorithmes basés sur des métaheuristiques sont souvent compliqués à régler. Les paramètres sont nombreux et souvent interdépendants. Dans le cas du recuit il existe toutefois quelques règles empiriques qui permettent d&rsquo;obtenir de <em>bons</em> résultats et une convergence <em>rapide</em>.</p>



<h3 class="wp-block-heading" id="mcetoc_1c7ejm5t4e">Estimation de la variation moyenne</h3>



<p>Pour pouvoir fixer la température initiale il est nécessaire de connaître une estimation de la variation moyenne de l&rsquo;énergie notée <img decoding="async" src="https://s0.wp.com/latex.php?latex=%5Clangle+%5CDelta+E+%5Crangle&#038;bg=ffffff&#038;fg=000&#038;s=0&#038;c=20201002" alt="&#92;langle &#92;Delta E &#92;rangle" class="latex" />. Il est assez simple d&rsquo;estimer cette variation en réalisant quelques centaines de permutations et en relevant la variation de la satisfaction pour chaque permutation.</p>



<pre class="wp-block-prismatic-blocks"><code class="language-python">def __calcul_variation_moyenne(voeux,NB=500):
    diff = 0
    somme_voeux = np.sum(voeux, axis=0)
    sujets_possibles = np.where(somme_voeux &gt; 0)[0]
    satisfaction = __calculer_satisfactions(sujets_possibles[0:len(groupes)], voeux)

    for _ in range(NB):
        a = random.randint(0,len(groupes)-1)
        b = random.randint(0, sujets_possibles.shape[0]-1)
        sujets_possibles[b], sujets_possibles[a] = sujets_possibles[a], sujets_possibles[b]
        satisfaction_ = __calculer_satisfactions(sujets_possibles[0:len(groupes)], voeux)
        diff += np.abs(satisfaction_ - satisfaction)
        satisfaction = satisfaction_

    return diff / NB</code></pre>



<p>La fonction est utilisée lors de l&rsquo;initialisation de l&rsquo;algorithme de recuit simulé pour calculer la température initiale.</p>



<h3 class="wp-block-heading" id="mcetoc_1c7ejm5t4f">Température initiale</h3>



<p>La température initiale est donnée par :<img decoding="async" src="https://s0.wp.com/latex.php?latex=+T_0%3D-%5Cfrac%7B+%5Clangle+%5CDelta+E+%5Crangle%7D%7B%5Cln+%5Ctau_0%7D+&#038;bg=ffffff&#038;fg=000&#038;s=0&#038;c=20201002" alt=" T_0=-&#92;frac{ &#92;langle &#92;Delta E &#92;rangle}{&#92;ln &#92;tau_0} " class="latex" /><br>Le facteur <img decoding="async" src="https://s0.wp.com/latex.php?latex=%5Ctau_0&#038;bg=ffffff&#038;fg=000&#038;s=0&#038;c=20201002" alt="&#92;tau_0" class="latex" /> fixe la probabilité initiale d&rsquo;acceptation des « mauvaises solutions ». Ce taux est souvent compris entre 50 % (cas d&rsquo;une configuration de départ de mauvaise qualité) et 20 % (configuration de départ de qualité correcte).</p>



<pre class="wp-block-prismatic-blocks"><code class="language-python">delta_E = __calcul_variation_moyenne(voeux)
T_0 = (-1.0 * delta_E) / np.log(0.50)
T = T_0</code></pre>



<h3 class="wp-block-heading" id="mcetoc_1c7ejm5t4g">Évolution de la température</h3>



<p>La température doit diminuer pour que l&rsquo;algorithme converge (pour que la probabilité d&rsquo;acceptation des « mauvaises » solutions diminue). Plusieurs lois sont utilisées, une solution simple est de multiplier la température par 0,95 après un certain nombre de permutations selon le nombre de variables à optimiser. Pour ce problème, j&rsquo;ai choisi de mettre à jour la température après 50 permutations. Pour un nombre de sujets/groupes plus important cette valeur doit être augmenté en conséquence (elle pourrait être configurée automatiquement&#8230;).</p>



<pre class="wp-block-prismatic-blocks"><code class="language-">if _ % 50 == 0:
   T = 0.9 * T</code></pre>



<h3 class="wp-block-heading" id="mcetoc_1c7ejm5t4h">Sauvegarde du meilleur rencontré</h3>



<p>Puisque l’algorithme conserve des solutions de moins bonnes qualités pour quitter les optimums locaux, il est possible de perdre la meilleure solution trouvée. Pour éviter ce problème il suffit de sauvegarder la meilleure solution connue ainsi que sa valeur.</p>



<pre class="wp-block-prismatic-blocks"><code class="language-">if satisfaction_&gt;meilleure_satisfaction:
   meilleure_satisfaction = satisfaction_
   meilleure_solution = np.array(sujets_possibles[0:len(groupes)])
</code></pre>



<h3 class="wp-block-heading" id="mcetoc_1c7ejm5t4i">Critères d&rsquo;arrêt</h3>



<p>Bien que l&rsquo;algorithme soit très rapide il peut être intéressant de l&rsquo;arrêter si certains critères sont vérifiés :</p>



<ul class="wp-block-list">
<li>la satisfaction a atteint le maximum possible (donc ici 5)</li>



<li>la satisfaction stagne pendant plusieurs centaines d’itérations ; l&rsquo;écart type des valeurs est donc très faible.</li>
</ul>



<pre class="wp-block-prismatic-blocks"><code class="language-">if meilleure_satisfaction==5 or (_&gt;200 and np.std(evolutions[_-200:_])&lt;0.0001):
   return meilleure_satisfaction, meilleure_solution, evolutions</code></pre>



<h2 class="wp-block-heading" id="mcetoc_1c7ejm5t4j">Code complet</h2>



<p>Les morceaux de programme présentés ci-dessus sont assemblés pour construire la fonction complète.</p>



<pre class="wp-block-prismatic-blocks"><code class="language-python">def attribuer_projet_recuit(groupes, sujets, voeux):
    NB_REP = 2000
    # Extraction des sujets retenus
    somme_voeux = np.sum(voeux, axis=0)
    sujets_possibles = np.where(somme_voeux &gt; 0)[0]  # Seulement les non nuls
    if (sujets_possibles.shape[0] &lt; len(groupes)):
        print(&quot;Pas assez de sujets retenus&quot;)
        sys.exit()

    evolutions = np.zeros(0)
    # Calcul de la variation moyenne
    delta_E = __calcul_variation_moyenne(voeux)
    T_0 = (-1.0 * delta_E) / np.log(0.50)
    T = T_0
    # Sauvegarde du meilleur rencontré
    meilleure_satisfaction = __calculer_satisfactions(sujets_possibles[0:len(groupes)], voeux)
    meilleure_solution = sujets_possibles[0:len(groupes)]

    satisfaction = meilleure_satisfaction

    for _ in range(NB_REP):
        # Mise à jour de la température
        if _ % 50 == 0:
            T = 0.9 * T
        # Valeurs de permutations
        a = random.randint(0, len(groupes) - 1)
        b = random.randint(0, sujets_possibles.shape[0] - 1)
        sujets_possibles[b], sujets_possibles[a] = sujets_possibles[a], sujets_possibles[b]
        satisfaction_ = __calculer_satisfactions(sujets_possibles[0:len(groupes)], voeux)
        diff = satisfaction_ - satisfaction
        # Valeurs pour le recuit
        r = np.random.random()
        seuil = np.exp(1.0 * diff / T)
        # Solution trop mauvaise pour le recuit
        if diff &lt; 0 and r &gt; seuil:
            sujets_possibles[b], sujets_possibles[a] = sujets_possibles[a], sujets_possibles[b]
        else:
            satisfaction = satisfaction_
        # Sauvegarde de la meilleur solution
        if satisfaction_&gt;meilleure_satisfaction:
            meilleure_satisfaction = satisfaction_
            meilleure_solution = np.array(sujets_possibles[0:len(groupes)])

        evolutions = np.append(evolutions, satisfaction)

        # Conditions d&#039;arrêt
        if meilleure_satisfaction==5 or (_&gt;200 and np.std(evolutions[_-200:_])&lt;0.0001):
            return meilleure_satisfaction, meilleure_solution, evolutions

    return meilleure_satisfaction, meilleure_solution, evolutions</code></pre>



<h2 class="wp-block-heading" id="mcetoc_1c7ejm5t4k">Résultats</h2>



<p>Il n&rsquo;y a pas de garantie théorique que l&rsquo;optimum global soit attend par l&rsquo;algorithme. En pratique, si on exécute plusieurs fois l&rsquo;algorithme, l&rsquo;optimum est généralement atteint en un nombre assez faible d&rsquo;itérations.</p>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image size-large"><img data-recalc-dims="1" loading="lazy" decoding="async" width="825" height="715" data-attachment-id="1476" data-permalink="https://jb.vioix.fr/attribution-de-projets/recuit/" data-orig-file="https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2017/09/Recuit.png?fit=1500%2C1300&amp;ssl=1" data-orig-size="1500,1300" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Recuit" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2017/09/Recuit.png?fit=300%2C260&amp;ssl=1" data-large-file="https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2017/09/Recuit.png?fit=825%2C715&amp;ssl=1" src="https://i0.wp.com/beta.vioix.fr/wp-content/uploads/2017/09/Recuit-1024x887.png?resize=825%2C715&#038;ssl=1" alt="" class="wp-image-1476" srcset="https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2017/09/Recuit.png?resize=1024%2C887&amp;ssl=1 1024w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2017/09/Recuit.png?resize=100%2C87&amp;ssl=1 100w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2017/09/Recuit.png?resize=300%2C260&amp;ssl=1 300w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2017/09/Recuit.png?resize=768%2C666&amp;ssl=1 768w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2017/09/Recuit.png?resize=700%2C607&amp;ssl=1 700w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2017/09/Recuit.png?resize=332%2C288&amp;ssl=1 332w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2017/09/Recuit.png?w=1500&amp;ssl=1 1500w" sizes="auto, (max-width: 825px) 100vw, 825px" /></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<p>La valeur de la satisfaction moyenne n’évolue plus de manière monotone car le recuit autorise des « mauvaises » solutions.  Le recuit permet de quitter les optimums locaux et d&rsquo;attendre l&rsquo;optimum globale. Aux environs des 700 itérations, l&rsquo;apport du recuit est bien visible :  l&rsquo;algorithme convergeait vers une solution locale de 4,66 avant le recuit, le recuit a permis de trouver la valeur 4,83</p>
</div>
</div>



<p>Le critère d&rsquo;arrêt sur la stabilité a arrêté l&rsquo;algorithme en moins de 1000 itérations (il faut prendre en compte celle qui ont été nécessaire pour calculer la variation moyenne nécessaire pour fixer les paramètres de l&rsquo;algorithme).</p>



<h1 class="wp-block-heading" id="mcetoc_1c7ejm5t4l">Mise en œuvre</h1>



<p>Cette année nous avons 20 groupes de projets qui ont retenu au total 26 sujets différents. Le calcul de l&rsquo;arrangement conduit à <img decoding="async" src="https://s0.wp.com/latex.php?latex=5%2C6%5Ctimes10%5E%7B23%7D&#038;bg=ffffff&#038;fg=000&#038;s=0&#038;c=20201002" alt="5,6&#92;times10^{23}" class="latex" /> possibilités. Il évident qu&rsquo;il n&rsquo;est pas possible de les vérifier toutes (même si beaucoup sont impossibles à proposer car attribuant un sujet qui n&rsquo;a pas été retenu à un ou plusieurs groupes). Les différents paramètres de l&rsquo;algorithme sont les suivants :</p>



<ul class="wp-block-list">
<li>le nombre de répétitions est augmenté à 10000</li>



<li>la température est actualisée toutes les 250 itérations</li>



<li>la convergence est fixée pour un écart-type très faible après 5000 itérations</li>
</ul>



<p>L&rsquo;algorithme converge en quelques secondes. J&rsquo;ai réalisé des répétitions qui ont montré que plusieurs configurations différentes semblaient conduire au maximum possible (il n&rsquo;est pas certain que ce soit le maximum, mais c&rsquo;est fort probable&#8230;).</p>



<h2 class="wp-block-heading" id="mcetoc_1c7ejm5t4m">Inventaire des différentes solutions</h2>



<p>Puisque le problème admet plusieurs solutions équivalentes, l&rsquo;algorithme ne peut pas choisir la meilleure. La solution la plus simple est d&rsquo;essayer de faire l&rsquo;inventaire des solutions possibles et de les stocker dans un fichier.</p>



<p>Pour construire un inventaire des solutions possible, la fonction <code>attribuer_projet_recuit</code> va être appelée plusieurs fois et les résultats des différentes itérations vont être stockés. La satisfaction maximale est ensuite recherchée.</p>



<p>Chaque solution telle que sa valeur de satisfaction soit égale à la satisfaction maximale est ensuite stockée dans un <code>set</code> ce qui assure l&rsquo;unicité de la solution dans l&rsquo;ensemble des solutions qui seront conservées. La solution doit être transformée en <code>tuple</code> (qui est immuable) pour pouvoir être stockée dans l&rsquo;ensemble <code>meilleures_solutions</code>. Après le remplissage de l&rsquo;ensemble des <code>meilleures_solutions</code>, il ne reste plus qu&rsquo;à écrire les éléments dans un fichier CSV :</p>



<ul class="wp-block-list">
<li>la première ligne contient les noms des groupes</li>



<li>les lignes suivantes stocke les différentes configurations possibles.</li>
</ul>



<pre class="wp-block-prismatic-blocks"><code class="language-python">def recherches_multiples(groupes, sujets, voeux, nb_rep=100, fic=&quot;solutions.csv&quot;):
    solutions = []
    valeurs = []
    satisfaction_maximale = 0.0
    for _ in range(nb_rep):
        satisfaction, attributions, evolutions = attribuer_projet_recuit(groupes, sujets, voeux)
        solutions.append(attributions)
        valeurs.append(satisfaction)
    satisfaction_maximale = max(valeurs)
    print(&quot;Satisfaction maximale : &quot;, satisfaction_maximale)
    meilleures_solutions = set()
    for s, v in zip(solutions, valeurs):
        if v == satisfaction_maximale:
            meilleures_solutions.add(tuple(s))  
    print(&quot;%d configurations différentes trouvées&quot;%(len(meilleures_solutions)))
    with open(fic, &#039;w&#039;) as csvfile:
        writer = csv.writer(csvfile)
        writer.writerow(groupes)
        for s in meilleures_solutions:
            writer.writerow([sujets[int(_)] for _ in s])</code></pre>



<p>Le fichier CSV obtenu peut ensuite être mis en forme avec Libre Office et envoyé aux enseignants qui trancheront <img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /> .</p>



<h1 class="wp-block-heading" id="mcetoc_1c7ejm5t4n">Notes</h1>



<p>Les éléments de code n&rsquo;ont pas nécessairement été écrit de manière optimale mais plutôt de telle manière que les points principaux des explications puissent être retrouvés dans le code.</p>



<p>Les valeurs de pondérations associées aux vœux des étudiants peuvent être modifiées en fonctions de différents critères (les enseignants peuvent vouloir privilégier tel ou tel groupe sur un projet,&#8230;).</p>



<p>Le livre <a href="http://www.eyrolles.com/Informatique/Livre/metaheuristiques-9782212139297" target="_blank" rel="noopener">Métaheuristiques des éditions Eyrolles</a> est une saine lecture pour découvrir et approfondir le sujet.</p>



<p>Tout le code est présent sur un dépôt <a href="https://gitlab.com/jbvioix/attribution_projets/" target="_blank" rel="noopener">Gitlab</a> ou sur <a href="https://github.com/jbvioix/attribution_projets" target="_blank" rel="noopener">Github</a>.</p>



<p><span style="border-radius: 2px; text-indent: 20px; width: auto; padding: 0px 4px 0px 0px; text-align: center; font: bold 11px/20px 'Helvetica Neue',Helvetica,sans-serif; color: #ffffff; background: #bd081c no-repeat scroll 3px 50% / 14px 14px; position: absolute; opacity: 1; z-index: 8675309; display: none; cursor: pointer;">Enregistrer</span></p>



<p><span style="border-radius: 2px; text-indent: 20px; width: auto; padding: 0px 4px 0px 0px; text-align: center; font: bold 11px/20px 'Helvetica Neue',Helvetica,sans-serif; color: #ffffff; background: #bd081c no-repeat scroll 3px 50% / 14px 14px; position: absolute; opacity: 1; z-index: 8675309; display: none; cursor: pointer;">Enregistrer</span></p>



<p><span style="border-radius: 2px; text-indent: 20px; width: auto; padding: 0px 4px 0px 0px; text-align: center; font: bold 11px/20px 'Helvetica Neue',Helvetica,sans-serif; color: #ffffff; background: #bd081c no-repeat scroll 3px 50% / 14px 14px; position: absolute; opacity: 1; z-index: 8675309; display: none; cursor: pointer;">Enregistrer</span></p>



<p><span style="border-radius: 2px; text-indent: 20px; width: auto; padding: 0px 4px 0px 0px; text-align: center; font: bold 11px/20px 'Helvetica Neue',Helvetica,sans-serif; color: #ffffff; background: #bd081c no-repeat scroll 3px 50% / 14px 14px; position: absolute; opacity: 1; z-index: 8675309; display: none; cursor: pointer;">Enregistrer</span></p>



<p><span style="border-radius: 2px; text-indent: 20px; width: auto; padding: 0px 4px 0px 0px; text-align: center; font: bold 11px/20px 'Helvetica Neue',Helvetica,sans-serif; color: #ffffff; background: #bd081c no-repeat scroll 3px 50% / 14px 14px; position: absolute; opacity: 1; z-index: 8675309; display: none; cursor: pointer; top: 5076px; left: 30px;">Enregistrer</span></p>



<p><span style="border-radius: 2px; text-indent: 20px; width: auto; padding: 0px 4px 0px 0px; text-align: center; font: bold 11px/20px 'Helvetica Neue',Helvetica,sans-serif; color: #ffffff; background: #bd081c no-repeat scroll 3px 50% / 14px 14px; position: absolute; opacity: 1; z-index: 8675309; display: none; cursor: pointer; top: 5575px; left: 30px;">Enregistrer</span></p>



<p><span style="border-radius: 2px; text-indent: 20px; width: auto; padding: 0px 4px 0px 0px; text-align: center; font: bold 11px/20px 'Helvetica Neue',Helvetica,sans-serif; color: #ffffff; background: #bd081c no-repeat scroll 3px 50% / 14px 14px; position: absolute; opacity: 1; z-index: 8675309; display: none; cursor: pointer; top: 6224px; left: 30px;">Enregistrer</span></p>



<p><span style="border-radius: 2px; text-indent: 20px; width: auto; padding: 0px 4px 0px 0px; text-align: center; font: bold 11px/20px 'Helvetica Neue',Helvetica,sans-serif; color: #ffffff; background: #bd081c no-repeat scroll 3px 50% / 14px 14px; position: absolute; opacity: 1; z-index: 8675309; display: none; cursor: pointer;">Enregistrer</span></p>



<p><span style="border-radius: 2px; text-indent: 20px; width: auto; padding: 0px 4px 0px 0px; text-align: center; font: bold 11px/20px 'Helvetica Neue',Helvetica,sans-serif; color: #ffffff; background: #bd081c no-repeat scroll 3px 50% / 14px 14px; position: absolute; opacity: 1; z-index: 8675309; display: none; cursor: pointer; top: 6321px; left: 30px;">Enregistrer</span></p>



<p><span style="border-radius: 2px; text-indent: 20px; width: auto; padding: 0px 4px 0px 0px; text-align: center; font: bold 11px/20px 'Helvetica Neue',Helvetica,sans-serif; color: #ffffff; background: #bd081c no-repeat scroll 3px 50% / 14px 14px; position: absolute; opacity: 1; z-index: 8675309; display: none; cursor: pointer;">Enregistrer</span></p>



<p><span style="border-radius: 2px; text-indent: 20px; width: auto; padding: 0px 4px 0px 0px; text-align: center; font: bold 11px/20px 'Helvetica Neue',Helvetica,sans-serif; color: #ffffff; background: #bd081c no-repeat scroll 3px 50% / 14px 14px; position: absolute; opacity: 1; z-index: 8675309; display: none; cursor: pointer;">Enregistrer</span></p>



<p><span style="border-radius: 2px; text-indent: 20px; width: auto; padding: 0px 4px 0px 0px; text-align: center; font: bold 11px/20px 'Helvetica Neue',Helvetica,sans-serif; color: #ffffff; background: #bd081c no-repeat scroll 3px 50% / 14px 14px; position: absolute; opacity: 1; z-index: 8675309; display: none; cursor: pointer;">Enregistrer</span></p>



<p><span style="border-radius: 2px; text-indent: 20px; width: auto; padding: 0px 4px 0px 0px; text-align: center; font: bold 11px/20px 'Helvetica Neue',Helvetica,sans-serif; color: #ffffff; background: #bd081c no-repeat scroll 3px 50% / 14px 14px; position: absolute; opacity: 1; z-index: 8675309; display: none; cursor: pointer;">Enregistrer</span></p>



<p><span style="border-radius: 2px; text-indent: 20px; width: auto; padding: 0px 4px 0px 0px; text-align: center; font: bold 11px/20px 'Helvetica Neue',Helvetica,sans-serif; color: #ffffff; background: #bd081c no-repeat scroll 3px 50% / 14px 14px; position: absolute; opacity: 1; z-index: 8675309; display: none; cursor: pointer;">Enregistrer</span></p>



<p><span style="border-radius: 2px; text-indent: 20px; width: auto; padding: 0px 4px 0px 0px; text-align: center; font: bold 11px/20px 'Helvetica Neue',Helvetica,sans-serif; color: #ffffff; background: #bd081c no-repeat scroll 3px 50% / 14px 14px; position: absolute; opacity: 1; z-index: 8675309; display: none; cursor: pointer;">Enregistrer</span></p>



<p><span style="border-radius: 2px; text-indent: 20px; width: auto; padding: 0px 4px 0px 0px; text-align: center; font: bold 11px/20px 'Helvetica Neue',Helvetica,sans-serif; color: #ffffff; background: #bd081c no-repeat scroll 3px 50% / 14px 14px; position: absolute; opacity: 1; z-index: 8675309; display: none; cursor: pointer;">Enregistrer</span></p>



<p><span style="border-radius: 2px; text-indent: 20px; width: auto; padding: 0px 4px 0px 0px; text-align: center; font: bold 11px/20px 'Helvetica Neue',Helvetica,sans-serif; color: #ffffff; background: #bd081c no-repeat scroll 3px 50% / 14px 14px; position: absolute; opacity: 1; z-index: 8675309; display: none; cursor: pointer;">Enregistrer</span></p>



<p><span style="border-radius: 2px; text-indent: 20px; width: auto; padding: 0px 4px 0px 0px; text-align: center; font: bold 11px/20px 'Helvetica Neue',Helvetica,sans-serif; color: #ffffff; background: #bd081c no-repeat scroll 3px 50% / 14px 14px; position: absolute; opacity: 1; z-index: 8675309; display: none; cursor: pointer;">Enregistrer</span></p>



<p><span style="border-radius: 2px; text-indent: 20px; width: auto; padding: 0px 4px 0px 0px; text-align: center; font: bold 11px/20px 'Helvetica Neue',Helvetica,sans-serif; color: #ffffff; background: #bd081c no-repeat scroll 3px 50% / 14px 14px; position: absolute; opacity: 1; z-index: 8675309; display: none; cursor: pointer;">Enregistrer</span></p>
]]></content:encoded>
					
					<wfw:commentRss>https://jb.vioix.fr/attribution-de-projets/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1457</post-id>	</item>
		<item>
		<title>Vérifier ses gravures (ou ses sauvegardes)&#8230;</title>
		<link>https://jb.vioix.fr/verifier-ses-gravures-ou-ses-sauvegardes/</link>
					<comments>https://jb.vioix.fr/verifier-ses-gravures-ou-ses-sauvegardes/#respond</comments>
		
		<dc:creator><![CDATA[jb]]></dc:creator>
		<pubDate>Tue, 25 Apr 2017 10:43:49 +0000</pubDate>
				<category><![CDATA[Informatique]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[sauvegardes]]></category>
		<guid isPermaLink="false">http://jb.vioix.fr/?p=340</guid>

					<description><![CDATA[Pour une raison indéterminée, K3B plante de temps en temps lors de la vérification de mes gravures de Bluray. Je suis donc obligé de vérifier « à la main » les fichiers. Rien de bien compliqué sous Linux, deux commandes suffisent. Vérification des données avec la somme MD5 Une solution simple pour vérifier l&#8217;intégrité de fichiers est&#8230; <a href="https://jb.vioix.fr/verifier-ses-gravures-ou-ses-sauvegardes/" class="more-link">Lire la suite <span class="screen-reader-text">Vérifier ses gravures (ou ses sauvegardes)&#8230;</span></a>]]></description>
										<content:encoded><![CDATA[
<p>Pour une raison indéterminée, K3B plante de temps en temps lors de la vérification de mes gravures de Bluray. Je suis donc obligé de vérifier « à la main » les fichiers. Rien de bien compliqué sous Linux, deux commandes suffisent.</p>



<span id="more-340"></span>



<h1 class="wp-block-heading">Vérification des données avec la somme MD5</h1>



<p>Une solution simple pour vérifier l&rsquo;intégrité de fichiers est l&rsquo;utilisation d&rsquo;une somme de contrôle. Plusieurs algorithme existe, le plus connu reste la somme <a href="http://fr.wikipedia.org/wiki/Md5" target="_blank" rel="noopener">MD5</a>. La somme MD5 est une « signature » unique (quoique des collisions existent, c&rsquo;est pour cela qu&rsquo;il ne faut plus l&rsquo;utiliser pour de la cryptographie) d&rsquo;un fichier. La commande <code>md5sum</code> de linux permet de calculer la somme d&rsquo;un fichier mais aussi (et c&rsquo;est un peu moins connu) de vérifier des fichiers en utilisant leurs sommes de contrôle.</p>



<h2 class="wp-block-heading">Création des sommes de contrôle</h2>



<p>Les sommes de contrôle sont calculées avec un groupement d&rsquo;instructions assez simple :</p>



<ul class="wp-block-list">
<li>un <code>find</code> permet de retrouver tous les fichiers</li>



<li>un <code>xargs</code> permet d&rsquo;utiliser les noms de fichiers (en spécifiant <code>\n</code> comme caractère de séparation pour que les noms de fichiers comportant des espaces soient bien pris en compte).</li>



<li>le calcul de la somme MD5 est réalisé par <code>md5sum</code>.</li>
</ul>



<p>Le résultat des somme est placé dans un fichier stocké dans le répertoire temporaire (<code>/tmp</code>), il sera automatiquement supprimé par le système. En une ligne (exécutée dans le répertoire source) ça donne :</p>



<pre class="wp-block-prismatic-blocks"><code class="language-bash">find . -type f | xargs -d&#039;\n&#039; md5sum &gt; /tmp/chksum.md5</code></pre>



<h2 class="wp-block-heading">Vérification des fichiers</h2>



<p>La commande md5sum permet aussi de vérifier des fichiers à partir d&rsquo;une liste de sommes de contrôle avec l&rsquo;option <code>-c</code>. Dans le répertoire des copies, la commande fait tout le travail de vérification :</p>



<pre class="wp-block-prismatic-blocks"><code class="language-bash">md5sum -c /tmp/chksum.md5  1&gt;/dev/null</code></pre>



<p>La redirection de la sortie standard vers <code>/dev/null</code> permet de ne garder l&rsquo;affichage que des erreurs et donc des fichiers non/mal copiés.</p>



<h2 class="wp-block-heading">Références</h2>



<ul class="wp-block-list">
<li>L&rsquo;idée générale vient de <a href="http://info.michael-simons.eu/2008/10/25/recursively-md5sum-all-files-in-a-directory-tree/" target="_blank" rel="noopener">Michael Simons</a>.</li>



<li>La différence entre l&rsquo;option <code>exec</code> et <code>xargs</code> est donnée sur : <a href="http://www.tuteurs.ens.fr/unix/exercices/solutions/find-sol.html" target="_blank" rel="noopener">http://www.tuteurs.ens.fr/unix/exercices/solutions/find-sol.html</a></li>



<li>Changer le caractère de fin de bloc pour <code>xargs</code> est détaillé sur <a href="https://stackoverflow.com/questions/16758525/how-can-i-make-xargs-handle-filenames-that-contain-spaces" target="_blank" rel="noopener">Stackoverflow</a></li>
</ul>



<p><span style="border-radius: 2px; text-indent: 20px; width: auto; padding: 0px 4px 0px 0px; text-align: center; font: bold 11px/20px 'Helvetica Neue',Helvetica,sans-serif; color: #ffffff; background: #bd081c  no-repeat scroll 3px 50% / 14px 14px; position: absolute; opacity: 1; z-index: 8675309; display: none; cursor: pointer;">Enregistrer</span></p>
]]></content:encoded>
					
					<wfw:commentRss>https://jb.vioix.fr/verifier-ses-gravures-ou-ses-sauvegardes/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">340</post-id>	</item>
		<item>
		<title>Édition de PDF</title>
		<link>https://jb.vioix.fr/edition-de-pdf/</link>
					<comments>https://jb.vioix.fr/edition-de-pdf/#respond</comments>
		
		<dc:creator><![CDATA[jb]]></dc:creator>
		<pubDate>Thu, 09 Mar 2017 09:45:00 +0000</pubDate>
				<category><![CDATA[Informatique]]></category>
		<guid isPermaLink="false">https://jb.vioix.fr/?p=1334</guid>

					<description><![CDATA[On le dira jamais assez mais pouvoir éditer et modifier des PDF avec LibreOffice Draw peut vous sauver la mise !]]></description>
										<content:encoded><![CDATA[<p>On le dira jamais assez mais pouvoir éditer et modifier des PDF avec LibreOffice Draw peut vous sauver la mise !</p>
]]></content:encoded>
					
					<wfw:commentRss>https://jb.vioix.fr/edition-de-pdf/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1334</post-id>	</item>
		<item>
		<title>Résolution de nom d&#8217;hôte en fonction du réseau</title>
		<link>https://jb.vioix.fr/resolution-de-nom-dhote-en-fonction-du-reseau/</link>
					<comments>https://jb.vioix.fr/resolution-de-nom-dhote-en-fonction-du-reseau/#respond</comments>
		
		<dc:creator><![CDATA[jb]]></dc:creator>
		<pubDate>Tue, 28 Feb 2017 08:41:55 +0000</pubDate>
				<category><![CDATA[Informatique]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Mint]]></category>
		<category><![CDATA[réseau]]></category>
		<category><![CDATA[wifi]]></category>
		<guid isPermaLink="false">https://jb.vioix.fr/?p=1278</guid>

					<description><![CDATA[Les boxs internet gèrent souvent mal l&#8217;accès aux serveurs configurés par un service de DNS dynamique qui sont sur leurs réseaux. Sur Linux il est simple de résoudre le problème en ajoutant des entrées dans /etc/hosts. Pour un portable cette solution n&#8217;est pas satisfaisante, car dès que l&#8217;on quitte le réseau de la box, la&#8230; <a href="https://jb.vioix.fr/resolution-de-nom-dhote-en-fonction-du-reseau/" class="more-link">Lire la suite <span class="screen-reader-text">Résolution de nom d&#8217;hôte en fonction du réseau</span></a>]]></description>
										<content:encoded><![CDATA[
<p>Les boxs internet gèrent souvent mal l&rsquo;accès aux serveurs configurés par un service de DNS dynamique qui sont sur leurs réseaux. Sur Linux il est simple de résoudre le problème en ajoutant des entrées dans <code>/etc/hosts</code>. Pour un portable cette solution n&rsquo;est pas satisfaisante, car dès que l&rsquo;on quitte le réseau de la box, la résolution devient bloquante. Une solution consiste à modifier le fichier <code>/etc/hosts</code> en fonction du réseau sur lequel la machine est connectée.</p>



<span id="more-1278"></span>



<p>La grande majorité des opérations se fait en super-utilisateur ; deux conséquences : il est facile de faire des erreurs et si on ne comprend pas ce que l&rsquo;on fait, on ne le fait pas ! Ceci était dit, passons au travail&#8230;</p>



<h1 class="wp-block-heading">Fichiers de configuration</h1>



<p>Avant de faire une bêtise, le fichier <code>/etc/hosts</code> est sauvegardé avec la commande <code>cp /etc/hosts /etc/hosts.backup</code>. En cas de problème, on pourra revenir à la version initiale du fichier avec <code>mv /etc/hosts.backup /etc/hosts</code></p>



<h2 class="wp-block-heading">Configuration par défaut du réseau</h2>



<p>Le fichier par défaut sera celui utilisé lorsque la machine n&rsquo;est pas sur le réseau de la maison. Une copie du fichier <code>hosts</code> initial est faite pour cela <code>cp /etc/hosts /etc.hosts.default</code></p>



<h2 class="wp-block-heading">Configuration du réseau pour la maison</h2>



<p>Le fichier de configuration pour la maison est construit à partir du fichier par défaut, on fait donc une copie avec <code>cp /etc/hosts /etc/hosts.home</code>. Il est ensuite édité (par exemple avec <code>vim /etc/hosts.home</code>) pour ajouter les résolutions locales :</p>



<pre class="wp-block-preformatted">127.0.0.1	localhost
127.0.1.1	linux

192.168.5.3	serveur1.chezmoi.local
192.168.5.3	serveur2.chezmoi.local
192.168.5.3	serveur3.chezmoi.local

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
</pre>



<p>Les trois sites webs pointent vers le même serveur, c&rsquo;est Nginx qui gère la résolution des différents sites.</p>



<h1 class="wp-block-heading">Gestion des événements de NetworkManager</h1>



<p>La gestion des cartes réseaux est assurée par NetworkManager sous la très grande majorité des systèmes Linux (en tout cas ça marche sur mon Linux Mint !). Une des qualités de NetworkManager est de proposer de gérer les événements associés aux changements d&rsquo;états des cartes réseaux de manière très simple.</p>



<p>Les scripts traitant les événements doivent être placés dans le répertoire <code>/etc/NetworkManager/dispatcher.d</code>. Le script peut être sauvegardé avec n&rsquo;importe quel nom (pour respecter la notation générale, je l&rsquo;ai sauvegardé sous le nom <code>02home</code>) mais il doit avoir les droits d’exécution pour tous les utilisateurs et doit être la propriété de <code>root</code> (mais comme il faut être super utilisateur pour pouvoir écrire dans ce répertoire ça se fait tout seul&#8230;).</p>



<p>Les scripts de changement d&rsquo;états de NetworkManager doivent traiter deux paramètres lors de l&rsquo;appel qui sont le nom de la carte réseau concernée et le statut (arrêt, démarrage,&#8230;). La carte wifi de mon ordinateur est repérée par <code>wlp1s0</code> et l’événement qui nous intéresse est la mise en marche de la carte (événement <code>up</code>).</p>



<p>Le script est ensuite assez simple à écrire :</p>



<pre class="wp-block-prismatic-blocks"><code class="language-bash">#!/bin/bash -e
IF=$1
STATUS=$2

if [[ $IF = &quot;wlp1s0&quot; ]] &amp;&amp; [[ $STATUS = &quot;up&quot; ]]
then
	wifi=`iwlist wlp1s0 scan | grep SSID`
	if [[ $wifi == *&quot;MonWifi&quot;* ]]
	then

	cp /etc/hosts.home /etc/hosts
	fi
else
	#Use the normal host file
	cp /etc/hosts.default /etc/hosts
fi</code></pre>



<p>Le nom du réseau WiFi est obtenu avec la commande <code>iwlist</code> et un <code>grep</code>. On vérifie ensuite que le nom du réseau local (<code>MonWifi</code>) est présent dans la chaîne. Dans ce cas, on copie le fichier de configuration pour la maison dans le fichier <code>/etc/hosts</code>.</p>



<p>Si un autre événement (arrêt, &#8230;) se produit sur la carte, le fichier de configuration par défaut est recopié sur <code>/etc/hosts</code> pour tout remettre à la configuration par défaut.</p>



<h1 class="wp-block-heading">Bilan</h1>



<p>Pour l&rsquo;instant aucun problème ! Je suis toujours surpris par le côté « bien pensé » de Linux et la puissance de petits scripts tout simples&#8230;</p>



<h1 class="wp-block-heading">Bibliographie</h1>



<ul class="wp-block-list">
<li><a href="https://stackoverflow.com/questions/3427872/whats-the-difference-between-and-in-bash" target="_blank" rel="noopener">La différence entre les opérateurs <code>[ ]</code> et <code>[[ ]]</code> en bash</a></li>



<li><a href="http://sysadminsjourney.com/content/2008/12/18/use-networkmanager-launch-scripts-based-network-location/" target="_blank" rel="noopener">Un exemple de script </a></li>



<li><a href="https://ubuntuforums.org/showthread.php?t=1555752" target="_blank" rel="noopener">L&rsquo;idée générale</a></li>
</ul>
]]></content:encoded>
					
					<wfw:commentRss>https://jb.vioix.fr/resolution-de-nom-dhote-en-fonction-du-reseau/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1278</post-id>	</item>
		<item>
		<title>Une brève histoire du téléphone portable</title>
		<link>https://jb.vioix.fr/une-breve-histoire-du-telephone-portable/</link>
					<comments>https://jb.vioix.fr/une-breve-histoire-du-telephone-portable/#respond</comments>
		
		<dc:creator><![CDATA[jb]]></dc:creator>
		<pubDate>Sat, 03 Dec 2016 20:14:59 +0000</pubDate>
				<category><![CDATA[Informatique]]></category>
		<category><![CDATA[Vie de tous les jours]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[CyanogenMod]]></category>
		<category><![CDATA[iPhone]]></category>
		<guid isPermaLink="false">http://jb.vioix.fr/?p=622</guid>

					<description><![CDATA[Enfin, ma (pas si) brève histoire du téléphone portable. Je profite du changement de mon mobile pour regarder dans le rétroviseur et faire un petit inventaire de mes différents téléphones mobiles (et associés&#8230;). Les anciens  Bilan En 17 ans (!), j&#8217;ai changé de téléphone tous les 2 ans et demi en moyenne. Il semblerait que&#8230; <a href="https://jb.vioix.fr/une-breve-histoire-du-telephone-portable/" class="more-link">Lire la suite <span class="screen-reader-text">Une brève histoire du téléphone portable</span></a>]]></description>
										<content:encoded><![CDATA[<p>Enfin, ma (pas si) brève histoire du téléphone portable. Je profite du changement de mon mobile pour regarder dans le rétroviseur et faire un petit inventaire de mes différents téléphones mobiles (et associés&#8230;).</p>
<p><span id="more-622"></span></p>
<h1>Les anciens</h1>
<p><div class="tm_timeline tm_timeline-layout-vertical tm_timeline-layout-vertical-chessOrder">

	<div class="tm_timeline__container">

		<div class="tm_timeline__body">

			<div class="tm_timeline__tense"></div>

		
				<div class="tm_timeline__event tm_timeline__event-odd">
										<div class="tm_timeline__event__dot"></div>
										<div class="tm_timeline__event__date">1999</div>
											<div class="tm_timeline__event__title">
							<a href="https://jb.vioix.fr/timeline-post/sagem-mc-825/">Sagem MC 825</a>
						</div>
										<div class="tm_timeline__event__description">
						<p style="text-align: justify;"><a href="https://i0.wp.com/beta.vioix.fr/wp-content/uploads/2013/11/SagemMC825.jpg?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="628" data-permalink="https://jb.vioix.fr/une-breve-histoire-du-telephone-portable/sagemmc825/" data-orig-file="https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2013/11/SagemMC825.jpg?fit=301%2C400&amp;ssl=1" data-orig-size="301,400" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;}" data-image-title="" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2013/11/SagemMC825.jpg?fit=225%2C300&amp;ssl=1" data-large-file="https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2013/11/SagemMC825.jpg?fit=301%2C400&amp;ssl=1" class="alignleft size-medium wp-image-628" src="https://i0.wp.com/beta.vioix.fr/wp-content/uploads/2013/11/SagemMC825-225x300.jpg?resize=225%2C300&#038;ssl=1" alt="" width="225" height="300" srcset="https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2013/11/SagemMC825.jpg?resize=225%2C300&amp;ssl=1 225w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2013/11/SagemMC825.jpg?resize=75%2C100&amp;ssl=1 75w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2013/11/SagemMC825.jpg?w=301&amp;ssl=1 301w" sizes="auto, (max-width: 225px) 100vw, 225px" /></a>Celuil-la il ne m&rsquo;a rien coûté (enfin le téléphone, parce que les minutes étaient chers à l&rsquo;époque&#8230;), on m&rsquo;a même donné de l&rsquo;argent avec !!! Je l&rsquo;ai acheté 490 Fr. et une réduction SFR destinée aux étudiants m&rsquo;a permis un remboursement de 245 Fr. Dans les semaines qui suivent le téléphone change de tarif pour descendre à 190 Fr. L&rsquo;ayant acheté chez Darty j&rsquo;ai profité d&rsquo;un remboursement de la différence et une bouteille de Champagne. Bilan de l&rsquo;opération 55 Fr et une bouteille pour Noël !</p>
<p style="text-align: justify;">Dans les premier mois j&rsquo;utilisais des cartes recharges et puis je suis passé à un forfait  1 heure par mois et 1 heure soir et week-end.</p>
<p style="text-align: justify;">Pas grand chose d&rsquo;autre à dire, rien que l&rsquo;écran LCD de 2 lignes de 12 caractères montre bien les limites de l&rsquo;époque&#8230;</p>
<p><span style="border-radius: 2px; text-indent: 20px; width: auto; padding: 0px 4px 0px 0px; text-align: center; font: bold 11px/20px 'Helvetica Neue',Helvetica,sans-serif; color: #ffffff; background: #bd081c no-repeat scroll 3px 50% / 14px 14px; position: absolute; opacity: 1; z-index: 8675309; display: none; cursor: pointer; top: 65px; left: 30px;">Enre<a href="https://i0.wp.com/beta.vioix.fr/wp-content/uploads/2013/11/SagemMC825.jpg?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="628" data-permalink="https://jb.vioix.fr/une-breve-histoire-du-telephone-portable/sagemmc825/" data-orig-file="https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2013/11/SagemMC825.jpg?fit=301%2C400&amp;ssl=1" data-orig-size="301,400" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;}" data-image-title="" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2013/11/SagemMC825.jpg?fit=225%2C300&amp;ssl=1" data-large-file="https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2013/11/SagemMC825.jpg?fit=301%2C400&amp;ssl=1" class="size-medium wp-image-628 alignleft" src="https://i0.wp.com/beta.vioix.fr/wp-content/uploads/2013/11/SagemMC825-225x300.jpg?resize=225%2C300&#038;ssl=1" alt="" width="225" height="300" srcset="https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2013/11/SagemMC825.jpg?resize=225%2C300&amp;ssl=1 225w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2013/11/SagemMC825.jpg?resize=75%2C100&amp;ssl=1 75w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2013/11/SagemMC825.jpg?w=301&amp;ssl=1 301w" sizes="auto, (max-width: 225px) 100vw, 225px" /></a>gistrer</span></p>
					</div>
				</div>

							
				<div class="tm_timeline__event tm_timeline__event-even">
										<div class="tm_timeline__event__dot"></div>
										<div class="tm_timeline__event__date">2000</div>
											<div class="tm_timeline__event__title">
							<a href="https://jb.vioix.fr/timeline-post/nokia-3330/">Nokia 3330</a>
						</div>
										<div class="tm_timeline__event__description">
						<p style="text-align: justify;"><a href="https://i0.wp.com/beta.vioix.fr/wp-content/uploads/2016/11/Nokia_3330.jpg?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="1216" data-permalink="https://jb.vioix.fr/timeline-post/nokia-3330/nokia_3330/" data-orig-file="https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2016/11/Nokia_3330-e1480161497529.jpg?fit=909%2C1512&amp;ssl=1" data-orig-size="909,1512" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="nokia_3330" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2016/11/Nokia_3330-e1480161497529.jpg?fit=180%2C300&amp;ssl=1" data-large-file="https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2016/11/Nokia_3330-e1480161497529.jpg?fit=616%2C1024&amp;ssl=1" class="alignleft wp-image-1216 size-medium" src="https://i0.wp.com/beta.vioix.fr/wp-content/uploads/2016/11/Nokia_3330-e1480161497529-180x300.jpg?resize=180%2C300&#038;ssl=1" alt="nokia_3330" width="180" height="300" srcset="https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2016/11/Nokia_3330-e1480161497529.jpg?resize=180%2C300&amp;ssl=1 180w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2016/11/Nokia_3330-e1480161497529.jpg?resize=60%2C100&amp;ssl=1 60w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2016/11/Nokia_3330-e1480161497529.jpg?resize=768%2C1277&amp;ssl=1 768w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2016/11/Nokia_3330-e1480161497529.jpg?resize=616%2C1024&amp;ssl=1 616w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2016/11/Nokia_3330-e1480161497529.jpg?resize=700%2C1164&amp;ssl=1 700w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2016/11/Nokia_3330-e1480161497529.jpg?resize=332%2C552&amp;ssl=1 332w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2016/11/Nokia_3330-e1480161497529.jpg?w=909&amp;ssl=1 909w" sizes="auto, (max-width: 180px) 100vw, 180px" /></a>On ne présente plus la gamme 3310 de Nokia. En juin 2000, ma situation professionnelle se stabilise, je signe mon contrat de thèse. J&rsquo;en profite pour changer de téléphone et d&rsquo;opérateur (Orange) pour passer sur un forfait avec abonnement. Le 3330 est une version du 3310 permettant de se connecter à Internet via la technologie <a href="https://fr.wikipedia.org/wiki/Wireless_application_protocol" target="_blank" rel="noopener">WAP</a>. Les couleurs de la coque standard sont aussi légèrement différentes.</p>
<p>&nbsp;</p>
<p><span style="border-radius: 2px; text-indent: 20px; width: auto; padding: 0px 4px 0px 0px; text-align: center; font: bold 11px/20px 'Helvetica Neue',Helvetica,sans-serif; color: #ffffff; background: #bd081c no-repeat scroll 3px 50% / 14px 14px; position: absolute; opacity: 1; z-index: 8675309; display: none; cursor: pointer; top: 41px; left: 30px;">Enregistrer</span></p>
<p><span style="border-radius: 2px; text-indent: 20px; width: auto; padding: 0px 4px 0px 0px; text-align: center; font: bold 11px/20px 'Helvetica Neue',Helvetica,sans-serif; color: #ffffff; background: #bd081c no-repeat scroll 3px 50% / 14px 14px; position: absolute; opacity: 1; z-index: 8675309; display: block; cursor: pointer; top: 41px; left: 30px;">Enregistrer</span></p>
<p><span style="border-radius: 2px; text-indent: 20px; width: auto; padding: 0px 4px 0px 0px; text-align: center; font: bold 11px/20px 'Helvetica Neue',Helvetica,sans-serif; color: #ffffff; background: #bd081c  no-repeat scroll 3px 50% / 14px 14px; position: absolute; opacity: 1; z-index: 8675309; display: none; cursor: pointer; top: 41px; left: 30px;">Enregistrer</span></p>
					</div>
				</div>

							
				<div class="tm_timeline__event tm_timeline__event-odd">
										<div class="tm_timeline__event__dot"></div>
										<div class="tm_timeline__event__date">2001</div>
											<div class="tm_timeline__event__title">
							<a href="https://jb.vioix.fr/timeline-post/palm-iiix/">Palm IIIx</a>
						</div>
										<div class="tm_timeline__event__description">
						<p><a href="https://i0.wp.com/beta.vioix.fr/wp-content/uploads/2016/11/PalmIIIxPDA-e1480152814254.jpg?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="1225" data-permalink="https://jb.vioix.fr/timeline-post/palm-iiix/palmiiixpda/" data-orig-file="https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2016/11/PalmIIIxPDA-e1480152814254.jpg?fit=1470%2C2021&amp;ssl=1" data-orig-size="1470,2021" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;HTC Wildfire S A510e&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1322256474&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;3.53&quot;,&quot;iso&quot;:&quot;918&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="palmiiixpda" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2016/11/PalmIIIxPDA-e1480152814254.jpg?fit=218%2C300&amp;ssl=1" data-large-file="https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2016/11/PalmIIIxPDA-e1480152814254.jpg?fit=745%2C1024&amp;ssl=1" class="size-medium wp-image-1225 alignleft" src="https://i0.wp.com/beta.vioix.fr/wp-content/uploads/2016/11/PalmIIIxPDA-e1480152814254-218x300.jpg?resize=218%2C300&#038;ssl=1" alt="palmiiixpda" width="218" height="300" srcset="https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2016/11/PalmIIIxPDA-e1480152814254.jpg?resize=218%2C300&amp;ssl=1 218w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2016/11/PalmIIIxPDA-e1480152814254.jpg?resize=73%2C100&amp;ssl=1 73w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2016/11/PalmIIIxPDA-e1480152814254.jpg?resize=768%2C1056&amp;ssl=1 768w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2016/11/PalmIIIxPDA-e1480152814254.jpg?resize=745%2C1024&amp;ssl=1 745w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2016/11/PalmIIIxPDA-e1480152814254.jpg?resize=700%2C962&amp;ssl=1 700w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2016/11/PalmIIIxPDA-e1480152814254.jpg?resize=332%2C456&amp;ssl=1 332w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2016/11/PalmIIIxPDA-e1480152814254.jpg?w=1470&amp;ssl=1 1470w" sizes="auto, (max-width: 218px) 100vw, 218px" /></a>Bon c&rsquo;est pas un téléphone mais il a été présent pendant longtemps dans mon écosystème numérique&#8230;</p>
<p style="text-align: justify;">Des collègues du labo avaient des Palm (un V et un III) et j&rsquo;ai vite trouvé que ça avait l&rsquo;air bien pratique. J&rsquo;en ai acheté un en mai 2001 et je l&rsquo;ai bien amorti. J&rsquo;y stockait toutes les informations utiles depuis l&rsquo;agenda jusqu&rsquo;à la liste de courses !</p>
<p style="text-align: justify;">Les logiciels supplémentaires étaient facile à installer, rapidement j&rsquo;ai ajouté des trucs utile comme les lignes de métro/bus, une calculatrice scientifique, un logiciel bancaire,&#8230;</p>
<p style="text-align: justify;">Durant les 5 ou 6 années d&rsquo;utilisations je n&rsquo;ai jamais eu de problème. La synchronisation par le port série marchait bien (sous différents logiciels de Outlook à Evolution), la reconnaissance d’écriture était astucieuse et efficace (l&rsquo;alphabet simplifié était maîtrisé en quelques jours d’utilisation). Le seul reproche que j&rsquo;aurai pu lui faire était sa consommation en piles (2 AAA). J&rsquo;ai rapidement acheté des piles rechargeable. Le Palm V résolvait le problème avec une batterie intégrée qui se rechargeait lors de la synchronisation avec l&rsquo;ordinateur.</p>
<p><span style="border-radius: 2px; text-indent: 20px; width: auto; padding: 0px 4px 0px 0px; text-align: center; font: bold 11px/20px 'Helvetica Neue',Helvetica,sans-serif; color: #ffffff; background: #bd081c no-repeat scroll 3px 50% / 14px 14px; position: absolute; opacity: 1; z-index: 8675309; display: none; cursor: pointer; top: 41px; left: 30px;">Enregistrer</span></p>
<p><span style="border-radius: 2px; text-indent: 20px; width: auto; padding: 0px 4px 0px 0px; text-align: center; font: bold 11px/20px 'Helvetica Neue',Helvetica,sans-serif; color: #ffffff; background: #bd081c no-repeat scroll 3px 50% / 14px 14px; position: absolute; opacity: 1; z-index: 8675309; display: none; cursor: pointer;">Enregistrer</span></p>
					</div>
				</div>

							
				<div class="tm_timeline__event tm_timeline__event-even">
										<div class="tm_timeline__event__dot"></div>
										<div class="tm_timeline__event__date">2004</div>
											<div class="tm_timeline__event__title">
							<a href="https://jb.vioix.fr/timeline-post/nokia-3100/">Nokia 3100</a>
						</div>
										<div class="tm_timeline__event__description">
						<p style="text-align: justify;"><a href="https://i0.wp.com/beta.vioix.fr/wp-content/uploads/2013/11/Nokia3100.jpg?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="625" data-permalink="https://jb.vioix.fr/une-breve-histoire-du-telephone-portable/nokia3100/" data-orig-file="https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2013/11/Nokia3100.jpg?fit=334%2C550&amp;ssl=1" data-orig-size="334,550" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;Capturefile: E:NOKIAMaxineRAW\\Maxine-008033.TIF\rCaptureSN: 00019759.008033\rSoftware: Capture One DSLR 1.0 for Windows&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;}" data-image-title="Nokia3100" data-image-description="" data-image-caption="&lt;p&gt;Nokia 3100&lt;/p&gt;
" data-medium-file="https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2013/11/Nokia3100.jpg?fit=182%2C300&amp;ssl=1" data-large-file="https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2013/11/Nokia3100.jpg?fit=334%2C550&amp;ssl=1" class="wp-image-625 size-medium alignleft" src="https://i0.wp.com/beta.vioix.fr/wp-content/uploads/2013/11/Nokia3100-182x300.jpg?resize=182%2C300&#038;ssl=1" alt="Nokia 3100" width="182" height="300" srcset="https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2013/11/Nokia3100.jpg?resize=182%2C300&amp;ssl=1 182w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2013/11/Nokia3100.jpg?resize=60%2C100&amp;ssl=1 60w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2013/11/Nokia3100.jpg?resize=332%2C546&amp;ssl=1 332w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2013/11/Nokia3100.jpg?w=334&amp;ssl=1 334w" sizes="auto, (max-width: 182px) 100vw, 182px" /></a>Celui là je ne me rappelle plus exactement quand je l&rsquo;ai eu&#8230; On ne change pas une équipe qui gagne, je reste chez Nokia.</p>
<p style="text-align: justify;">Par rapport au 3330 des fonctions supplémentaires commencent à transformer les téléphones en assistants numériques : des vrais répertoires, des emplois du temps,&#8230; J&rsquo;ai usé et abusé de la fonction de rappel de l&rsquo;agenda (mon épouse, grande fan d&rsquo;Harry Potter l&rsquo;avait même surnommé le <em>Rappeltout</em> !).</p>
<p style="text-align: justify;"><span style="border-radius: 2px; text-indent: 20px; width: auto; padding: 0px 4px 0px 0px; text-align: center; font: bold 11px/20px 'Helvetica Neue',Helvetica,sans-serif; color: #ffffff; background: #bd081c no-repeat scroll 3px 50% / 14px 14px; position: absolute; opacity: 1; z-index: 8675309; display: none; cursor: pointer;">Enregistrer</span></p>
<p><span style="border-radius: 2px; text-indent: 20px; width: auto; padding: 0px 4px 0px 0px; text-align: center; font: bold 11px/20px 'Helvetica Neue',Helvetica,sans-serif; color: #ffffff; background: #bd081c no-repeat scroll 3px 50% / 14px 14px; position: absolute; opacity: 1; z-index: 8675309; display: none; cursor: pointer; top: 41px; left: 30px;">Enregistrer</span></p>
					</div>
				</div>

							
				<div class="tm_timeline__event tm_timeline__event-odd">
										<div class="tm_timeline__event__dot"></div>
										<div class="tm_timeline__event__date">2007</div>
											<div class="tm_timeline__event__title">
							<a href="https://jb.vioix.fr/timeline-post/nokia-n70/">Nokia N70</a>
						</div>
										<div class="tm_timeline__event__description">
						<p style="text-align: justify;"><a href="https://i0.wp.com/beta.vioix.fr/wp-content/uploads/2013/11/NokiaN70.jpg?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="627" data-permalink="https://jb.vioix.fr/une-breve-histoire-du-telephone-portable/nokian70/" data-orig-file="https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2013/11/NokiaN70-e1480145642884.jpg?fit=618%2C990&amp;ssl=1" data-orig-size="618,990" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;}" data-image-title="NokiaN70" data-image-description="" data-image-caption="&lt;p&gt;Nokia N70&lt;/p&gt;
" data-medium-file="https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2013/11/NokiaN70-e1480145642884.jpg?fit=187%2C300&amp;ssl=1" data-large-file="https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2013/11/NokiaN70-e1480145642884.jpg?fit=618%2C990&amp;ssl=1" class="alignleft wp-image-627 size-medium" src="https://i0.wp.com/beta.vioix.fr/wp-content/uploads/2013/11/NokiaN70-e1480145642884-187x300.jpg?resize=187%2C300&#038;ssl=1" alt="Nokia N70" width="187" height="300" srcset="https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2013/11/NokiaN70-e1480145642884.jpg?resize=187%2C300&amp;ssl=1 187w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2013/11/NokiaN70-e1480145642884.jpg?resize=62%2C100&amp;ssl=1 62w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2013/11/NokiaN70-e1480145642884.jpg?resize=332%2C532&amp;ssl=1 332w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2013/11/NokiaN70-e1480145642884.jpg?w=618&amp;ssl=1 618w" sizes="auto, (max-width: 187px) 100vw, 187px" /></a>Un beau jour de la fin de l&rsquo;été 2007 le service client Orange m&rsquo;appelle en me proposant de changer de téléphone pour passer profiter de l&rsquo;offre Unik. Elle permettait au mobile de basculer sur le WiFi de la maison (ou sur les hotspot Orange)  pour téléphoner en IP.  Pour moi, cela n&rsquo;avait aucun intérêt par contre en consultant l&rsquo;offre j&rsquo;ai constaté que je pouvais obtenir un smartphone et abandonner mon Palm IIIx (que je n&rsquo;utilisais déjà plus beaucoup&#8230;). Fidèle à Nokia, j&rsquo;ai choisi un N70.</p>
<p style="text-align: justify;">Le système Symbian permettait d&rsquo;écrire des applications, j&rsquo;avais rapidement regardé et laissé tombé ! La seule application externe que j&rsquo;avais ajouté était une minuterie/compte à rebours pour pourvoir faire mes circuits imprimés&#8230;</p>
<p style="text-align: justify;">J&rsquo;ai essayé de le synchroniser avec <a href="https://fr.wikipedia.org/wiki/Evolution_(logiciel)" target="_blank" rel="noopener">Evolution</a> sur le PC avec le protocole SyncML. En filaire ou Bluetooth ça n&rsquo;a jamais bien marché et j&rsquo;ai laissé tombé.</p>
<p style="text-align: justify;"><span style="border-radius: 2px; text-indent: 20px; width: auto; padding: 0px 4px 0px 0px; text-align: center; font: bold 11px/20px 'Helvetica Neue',Helvetica,sans-serif; color: #ffffff; background: #bd081c no-repeat scroll 3px 50% / 14px 14px; position: absolute; opacity: 1; z-index: 8675309; display: none; cursor: pointer; top: 31px; left: 30px;">Enregistrer</span></p>
<p><span style="border-radius: 2px; text-indent: 20px; width: auto; padding: 0px 4px 0px 0px; text-align: center; font: bold 11px/20px 'Helvetica Neue',Helvetica,sans-serif; color: #ffffff; background: #bd081c no-repeat scroll 3px 50% / 14px 14px; position: absolute; opacity: 1; z-index: 8675309; display: none; cursor: pointer; top: 41px; left: 30px;">Enregistrer</span></p>
<p><span style="border-radius: 2px; text-indent: 20px; width: auto; padding: 0px 4px 0px 0px; text-align: center; font: bold 11px/20px 'Helvetica Neue',Helvetica,sans-serif; color: #ffffff; background: #bd081c no-repeat scroll 3px 50% / 14px 14px; position: absolute; opacity: 1; z-index: 8675309; display: none; cursor: pointer;">Enregistrer</span></p>
<p><span style="border-radius: 2px; text-indent: 20px; width: auto; padding: 0px 4px 0px 0px; text-align: center; font: bold 11px/20px 'Helvetica Neue',Helvetica,sans-serif; color: #ffffff; background: #bd081c no-repeat scroll 3px 50% / 14px 14px; position: absolute; opacity: 1; z-index: 8675309; display: none; cursor: pointer;">Enregistrer</span></p>
<p><span style="border-radius: 2px; text-indent: 20px; width: auto; padding: 0px 4px 0px 0px; text-align: center; font: bold 11px/20px 'Helvetica Neue',Helvetica,sans-serif; color: #ffffff; background: #bd081c no-repeat scroll 3px 50% / 14px 14px; position: absolute; opacity: 1; z-index: 8675309; display: none; cursor: pointer;">Enregistrer</span></p>
<p><span style="border-radius: 2px; text-indent: 20px; width: auto; padding: 0px 4px 0px 0px; text-align: center; font: bold 11px/20px 'Helvetica Neue',Helvetica,sans-serif; color: #ffffff; background: #bd081c no-repeat scroll 3px 50% / 14px 14px; position: absolute; opacity: 1; z-index: 8675309; display: none; cursor: pointer;">Enregistrer</span></p>
<p><span style="border-radius: 2px; text-indent: 20px; width: auto; padding: 0px 4px 0px 0px; text-align: center; font: bold 11px/20px 'Helvetica Neue',Helvetica,sans-serif; color: #ffffff; background: #bd081c no-repeat scroll 3px 50% / 14px 14px; position: absolute; opacity: 1; z-index: 8675309; display: none; cursor: pointer; top: 41px; left: 30px;">Enregistrer</span></p>
<p><span style="border-radius: 2px; text-indent: 20px; width: auto; padding: 0px 4px 0px 0px; text-align: center; font: bold 11px/20px 'Helvetica Neue',Helvetica,sans-serif; color: #ffffff; background: #bd081c no-repeat scroll 3px 50% / 14px 14px; position: absolute; opacity: 1; z-index: 8675309; display: none; cursor: pointer;">Enregistrer</span></p>
<p><span style="border-radius: 2px; text-indent: 20px; width: auto; padding: 0px 4px 0px 0px; text-align: center; font: bold 11px/20px 'Helvetica Neue',Helvetica,sans-serif; color: #ffffff; background: #bd081c  no-repeat scroll 3px 50% / 14px 14px; position: absolute; opacity: 1; z-index: 8675309; display: none; cursor: pointer;">Enregistrer</span></p>
					</div>
				</div>

							
				<div class="tm_timeline__event tm_timeline__event-even">
										<div class="tm_timeline__event__dot"></div>
										<div class="tm_timeline__event__date">2009</div>
											<div class="tm_timeline__event__title">
							<a href="https://jb.vioix.fr/timeline-post/apple-iphone-3gs/">Apple iPhone 3GS</a>
						</div>
										<div class="tm_timeline__event__description">
						<p style="text-align: justify;"><a href="https://i0.wp.com/beta.vioix.fr/wp-content/uploads/2013/11/iPhone3GS.jpg?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="624" data-permalink="https://jb.vioix.fr/une-breve-histoire-du-telephone-portable/iphone3gs/" data-orig-file="https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2013/11/iPhone3GS-e1480149906799.jpg?fit=178%2C300&amp;ssl=1" data-orig-size="178,300" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;}" data-image-title="iPhone3GS" data-image-description="" data-image-caption="&lt;p&gt;Apple iPhone 3GS&lt;/p&gt;
" data-medium-file="https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2013/11/iPhone3GS-e1480149906799.jpg?fit=178%2C300&amp;ssl=1" data-large-file="https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2013/11/iPhone3GS-e1480149906799.jpg?fit=178%2C300&amp;ssl=1" class="alignleft wp-image-624 size-medium" src="https://i0.wp.com/beta.vioix.fr/wp-content/uploads/2013/11/iPhone3GS-e1480149906799-178x300.jpg?resize=178%2C300&#038;ssl=1" alt="Apple iPhone 3GS" width="178" height="300" srcset="https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2013/11/iPhone3GS-e1480149906799.jpg?w=178&amp;ssl=1 178w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2013/11/iPhone3GS-e1480149906799.jpg?resize=59%2C100&amp;ssl=1 59w" sizes="auto, (max-width: 178px) 100vw, 178px" /></a>Fin 2008, je déménage et mon nouveau logement n&rsquo;est pas couvert par Orange.</p>
<p style="text-align: justify;">J&rsquo;avais accumulé pas mal de points pour changer de mobile mais à l&rsquo;époque les iPhone n&rsquo;étaient pas proposés dans les offres de renouvellement, ils étaient seulement disponibles pour les nouveaux abonnés. Je vais dans une boutique Orange pour savoir ce qui est possible, la seule réponse du vendeur est de résilier mon abonnement et d&rsquo;en prendre un nouveau (chez Orange) pour avoir un iPhone. C&rsquo;est ce que j&rsquo;ai fait mais je suis retourné chez SFR qui couvre ma commune&#8230; Comment perdre bêtement un client de 10 ans&#8230; Si j&rsquo;avais pu avoir mon iPhone sans changer d&rsquo;opérateur je serais probablement encore chez Orange.</p>
<p style="text-align: justify;">L’utilisation d &lsquo;un smartphone change complètement par rapport à l&rsquo;utilisation d&rsquo;un simple téléphone. Très vite je me suis transformé en <a href="https://fr.wikipedia.org/wiki/Petite_Poucette_(Michel_Serres)" target="_blank" rel="noopener">Petite Poucette</a> et j&rsquo;ai pris l&rsquo;habitude d&rsquo;utiliser mon téléphone pour tout et n&rsquo;importe quoi&#8230;</p>
<p style="text-align: justify;">J&rsquo;ai changé la batterie en janvier 2015 pour que mon épouse le récupère en remplacement de son vieux Samsung. Il fonctionne toujours mais commence à montrer de nouveau des signes de faiblesse sur la batterie (j&rsquo;avais mis une batterie chinoise premier prix en remplacement&#8230; 2 ans c&rsquo;est déjà pas mal !).</p>
					</div>
				</div>

							
				<div class="tm_timeline__event tm_timeline__event-odd">
										<div class="tm_timeline__event__dot"></div>
										<div class="tm_timeline__event__date">2013</div>
											<div class="tm_timeline__event__title">
							<a href="https://jb.vioix.fr/timeline-post/apple-iphone-5c/">Apple iPhone 5C</a>
						</div>
										<div class="tm_timeline__event__description">
						<p style="text-align: justify;"><a href="https://i0.wp.com/beta.vioix.fr/wp-content/uploads/2016/11/full-white-iPhone-5c-standing-sideways-e1480155725596.jpg?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="1230" data-permalink="https://jb.vioix.fr/timeline-post/apple-iphone-5c/full-white-iphone-5c-standing-sideways/" data-orig-file="https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2016/11/full-white-iPhone-5c-standing-sideways-e1480155725596.jpg?fit=1635%2C2258&amp;ssl=1" data-orig-size="1635,2258" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="full-white-iphone-5c-standing-sideways" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2016/11/full-white-iPhone-5c-standing-sideways-e1480155725596.jpg?fit=217%2C300&amp;ssl=1" data-large-file="https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2016/11/full-white-iPhone-5c-standing-sideways-e1480155725596.jpg?fit=741%2C1024&amp;ssl=1" class="alignleft size-medium wp-image-1230" src="https://i0.wp.com/beta.vioix.fr/wp-content/uploads/2016/11/full-white-iPhone-5c-standing-sideways-e1480155725596-217x300.jpg?resize=217%2C300&#038;ssl=1" alt="full-white-iphone-5c-standing-sideways" width="217" height="300" srcset="https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2016/11/full-white-iPhone-5c-standing-sideways-e1480155725596.jpg?resize=217%2C300&amp;ssl=1 217w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2016/11/full-white-iPhone-5c-standing-sideways-e1480155725596.jpg?resize=72%2C100&amp;ssl=1 72w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2016/11/full-white-iPhone-5c-standing-sideways-e1480155725596.jpg?resize=768%2C1061&amp;ssl=1 768w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2016/11/full-white-iPhone-5c-standing-sideways-e1480155725596.jpg?resize=741%2C1024&amp;ssl=1 741w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2016/11/full-white-iPhone-5c-standing-sideways-e1480155725596.jpg?resize=700%2C967&amp;ssl=1 700w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2016/11/full-white-iPhone-5c-standing-sideways-e1480155725596.jpg?resize=332%2C459&amp;ssl=1 332w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2016/11/full-white-iPhone-5c-standing-sideways-e1480155725596.jpg?w=1635&amp;ssl=1 1635w" sizes="auto, (max-width: 217px) 100vw, 217px" /></a>Évolution de la gamme iPhone, la finesse de l&rsquo;écran et la 4G sont les éléments qui m&rsquo;ont le plus marqué par rapport au 3GS. La première fois que j&rsquo;ai profité de la 4G ça a vraiment été l&rsquo;effet « <em>Whaou</em> » !</p>
<p style="text-align: justify;">Sinon, rien à signaler (d&rsquo;ailleurs c&rsquo;est bien ce que je reproche à Apple ces dernières années, ça ronronne mais ça n’innove plus&#8230;)</p>
					</div>
				</div>

										
		</div>
	</div>
</div>
</p>
<h2> Bilan</h2>
<p style="text-align: justify;">En 17 ans (!), j&rsquo;ai changé de téléphone tous les 2 ans et demi en moyenne. Il semblerait que la moyenne nationale soit de 20 mois (<a href="http://www.journaldunet.com/diaporama/0610-mobile/4.shtml" target="_blank" rel="noopener">ici</a>). Concernant les marques, j&rsquo;ai tendance à suivre les grandes de l&rsquo;époque (typiquement Nokia dans les années 2000 et Apple au début des années 2010).</p>
<h1 style="text-align: justify;">Le nouveau</h1>
<p style="text-align: justify;"><a href="https://i0.wp.com/beta.vioix.fr/wp-content/uploads/2013/12/Honor_5X.jpg?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="1233" data-permalink="https://jb.vioix.fr/une-breve-histoire-du-telephone-portable/honor_5x/" data-orig-file="https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2013/12/Honor_5X.jpg?fit=201%2C500&amp;ssl=1" data-orig-size="201,500" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="honor_5x" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2013/12/Honor_5X.jpg?fit=121%2C300&amp;ssl=1" data-large-file="https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2013/12/Honor_5X.jpg?fit=201%2C500&amp;ssl=1" class="alignleft size-medium wp-image-1233" src="https://i0.wp.com/beta.vioix.fr/wp-content/uploads/2013/12/Honor_5X-121x300.jpg?resize=121%2C300&#038;ssl=1" alt="honor_5x" width="121" height="300" srcset="https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2013/12/Honor_5X.jpg?resize=121%2C300&amp;ssl=1 121w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2013/12/Honor_5X.jpg?resize=40%2C100&amp;ssl=1 40w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2013/12/Honor_5X.jpg?w=201&amp;ssl=1 201w" sizes="auto, (max-width: 121px) 100vw, 121px" /></a>Comme je l&rsquo;ai écrit ci-dessus, Apple ronronne depuis plusieurs années, ce qui ne m&rsquo;encourage pas particulièrement à payer pour un nouvel iPhone. D&rsquo;autre part j&rsquo;essaye de plus en plus de mettre en place une autonomie numérique vis-à-vis d&rsquo;Apple, Google, &#8230; donc éviter toutes les solutions de cloud centralisées.</p>
<p style="text-align: justify;">L&rsquo;idée est de choisir un téléphone assez complet (et pas trop cher&#8230;) sur lequel je vais pouvoir installer <a href="https://www.cyanogenmod.org/" target="_blank" rel="noopener">CyanogenMod</a> et synchroniser les contacts, plannings, notes, mots de passes,&#8230; via nextcloud. J&rsquo;ai aussi choisi un format <em>phablette</em> (diagonale de 5.5 pouces contre 4 pouces pour l&rsquo;iPhone 5C) car j&rsquo;utilise pas mal mon smartphone pour lire les mails, faire une recherche rapide sur le web, &#8230; par contre je ne joue pas ni ne regarde de vidéos sur mon téléphone donc je ne suis pas exigeant concernant les capacités graphiques.</p>
<p style="text-align: justify;">La transition ne va pas être instantanée entre les contacts, les agendas, les SMS, &#8230; Je pense que je vais pouvoir rédiger quelques billets là dessus <img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p><span style="border-radius: 2px; text-indent: 20px; width: auto; padding: 0px 4px 0px 0px; text-align: center; font: bold 11px/20px 'Helvetica Neue',Helvetica,sans-serif; color: #ffffff; background: #bd081c no-repeat scroll 3px 50% / 14px 14px; position: absolute; opacity: 1; z-index: 8675309; display: none; cursor: pointer;">Enregistrer</span></p>
<p><span style="border-radius: 2px; text-indent: 20px; width: auto; padding: 0px 4px 0px 0px; text-align: center; font: bold 11px/20px 'Helvetica Neue',Helvetica,sans-serif; color: #ffffff; background: #bd081c no-repeat scroll 3px 50% / 14px 14px; position: absolute; opacity: 1; z-index: 8675309; display: none; cursor: pointer;">Enregistrer</span></p>
<p><span style="border-radius: 2px; text-indent: 20px; width: auto; padding: 0px 4px 0px 0px; text-align: center; font: bold 11px/20px 'Helvetica Neue',Helvetica,sans-serif; color: #ffffff; background: #bd081c no-repeat scroll 3px 50% / 14px 14px; position: absolute; opacity: 1; z-index: 8675309; display: none; cursor: pointer; top: 397px; left: 30px;">Enregistrer</span></p>
<p><span style="border-radius: 2px; text-indent: 20px; width: auto; padding: 0px 4px 0px 0px; text-align: center; font: bold 11px/20px 'Helvetica Neue',Helvetica,sans-serif; color: #ffffff; background: #bd081c no-repeat scroll 3px 50% / 14px 14px; position: absolute; opacity: 1; z-index: 8675309; display: none; cursor: pointer; top: 594px; left: 30px;">Enregistrer</span></p>
<p><span style="border-radius: 2px; text-indent: 20px; width: auto; padding: 0px 4px 0px 0px; text-align: center; font: bold 11px/20px 'Helvetica Neue',Helvetica,sans-serif; color: #ffffff; background: #bd081c no-repeat scroll 3px 50% / 14px 14px; position: absolute; opacity: 1; z-index: 8675309; display: none; cursor: pointer;">Enregistrer</span></p>
<p><span style="border-radius: 2px; text-indent: 20px; width: auto; padding: 0px 4px 0px 0px; text-align: center; font: bold 11px/20px 'Helvetica Neue',Helvetica,sans-serif; color: #ffffff; background: #bd081c no-repeat scroll 3px 50% / 14px 14px; position: absolute; opacity: 1; z-index: 8675309; display: none; cursor: pointer;">Enregistrer</span></p>
<p><span style="border-radius: 2px; text-indent: 20px; width: auto; padding: 0px 4px 0px 0px; text-align: center; font: bold 11px/20px 'Helvetica Neue',Helvetica,sans-serif; color: #ffffff; background: #bd081c no-repeat scroll 3px 50% / 14px 14px; position: absolute; opacity: 1; z-index: 8675309; display: none; cursor: pointer;">Enregistrer</span></p>
<p><span style="border-radius: 2px; text-indent: 20px; width: auto; padding: 0px 4px 0px 0px; text-align: center; font: bold 11px/20px 'Helvetica Neue',Helvetica,sans-serif; color: #ffffff; background: #bd081c no-repeat scroll 3px 50% / 14px 14px; position: absolute; opacity: 1; z-index: 8675309; display: none; cursor: pointer;">Enregistrer</span></p>
<p><span style="border-radius: 2px; text-indent: 20px; width: auto; padding: 0px 4px 0px 0px; text-align: center; font: bold 11px/20px 'Helvetica Neue',Helvetica,sans-serif; color: #ffffff; background: #bd081c no-repeat scroll 3px 50% / 14px 14px; position: absolute; opacity: 1; z-index: 8675309; display: none; cursor: pointer;">Enregistrer</span></p>
<p><span style="border-radius: 2px; text-indent: 20px; width: auto; padding: 0px 4px 0px 0px; text-align: center; font: bold 11px/20px 'Helvetica Neue',Helvetica,sans-serif; color: #ffffff; background: #bd081c no-repeat scroll 3px 50% / 14px 14px; position: absolute; opacity: 1; z-index: 8675309; display: none; cursor: pointer;">Enregistrer</span></p>
<p><span style="border-radius: 2px; text-indent: 20px; width: auto; padding: 0px 4px 0px 0px; text-align: center; font: bold 11px/20px 'Helvetica Neue',Helvetica,sans-serif; color: #ffffff; background: #bd081c no-repeat scroll 3px 50% / 14px 14px; position: absolute; opacity: 1; z-index: 8675309; display: none; cursor: pointer;">Enregistrer</span></p>
<p><span style="border-radius: 2px; text-indent: 20px; width: auto; padding: 0px 4px 0px 0px; text-align: center; font: bold 11px/20px 'Helvetica Neue',Helvetica,sans-serif; color: #ffffff; background: #bd081c no-repeat scroll 3px 50% / 14px 14px; position: absolute; opacity: 1; z-index: 8675309; display: none; cursor: pointer;">Enregistrer</span></p>
<p><span style="border-radius: 2px; text-indent: 20px; width: auto; padding: 0px 4px 0px 0px; text-align: center; font: bold 11px/20px 'Helvetica Neue',Helvetica,sans-serif; color: #ffffff; background: #bd081c no-repeat scroll 3px 50% / 14px 14px; position: absolute; opacity: 1; z-index: 8675309; display: none; cursor: pointer;">Enregistrer</span></p>
<p><span style="border-radius: 2px; text-indent: 20px; width: auto; padding: 0px 4px 0px 0px; text-align: center; font: bold 11px/20px 'Helvetica Neue',Helvetica,sans-serif; color: #ffffff; background: #bd081c no-repeat scroll 3px 50% / 14px 14px; position: absolute; opacity: 1; z-index: 8675309; display: none; cursor: pointer; top: 594px; left: 30px;">Enregistrer</span></p>
]]></content:encoded>
					
					<wfw:commentRss>https://jb.vioix.fr/une-breve-histoire-du-telephone-portable/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">622</post-id>	</item>
		<item>
		<title>Pleine Lune et séismes&#8230;</title>
		<link>https://jb.vioix.fr/pleine-lune-et-seismes/</link>
					<comments>https://jb.vioix.fr/pleine-lune-et-seismes/#respond</comments>
		
		<dc:creator><![CDATA[jb]]></dc:creator>
		<pubDate>Tue, 15 Nov 2016 20:13:38 +0000</pubDate>
				<category><![CDATA[Informatique]]></category>
		<category><![CDATA[Lune]]></category>
		<category><![CDATA[parsing]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[wikipedia]]></category>
		<guid isPermaLink="false">http://jb.vioix.fr/?p=1148</guid>

					<description><![CDATA[En quittant l&#8217;IUT hier, je suis tombé par hasard sur un « journaliste » qui nous parlait les conséquences de la pleine Lune. Le brillant Paul Ferris expliquait sur France Info que « ces quarante dernières années, 80% des tremblements de terre importants ont eu lieu, à deux jours près, autour d&#8217;une nuit de pleine lune« . Surpris par&#8230; <a href="https://jb.vioix.fr/pleine-lune-et-seismes/" class="more-link">Lire la suite <span class="screen-reader-text">Pleine Lune et séismes&#8230;</span></a>]]></description>
										<content:encoded><![CDATA[
<p>En quittant l&rsquo;IUT hier, je suis tombé par hasard sur un « journaliste » qui nous parlait les conséquences de la pleine Lune. Le brillant Paul Ferris <a href="http://www.francetvinfo.fr/sciences/espace/la-super-lune-peut-elle-avoir-une-influence-sur-notre-humeur_1919861.html" target="_blank" rel="noopener">expliquait sur France Info</a> que « <em>ces quarante dernières années, 80% des tremblements de terre importants ont eu lieu, à deux jours près, autour d&rsquo;une nuit de pleine lune</em>« . Surpris par cette affirmation, j&rsquo;ai pris quelques minutes pour vérifier ses dires&#8230;</p>



<p></p>



<span id="more-1148"></span>



<h1 class="wp-block-heading">Distribution des séismes et phase de la Lune</h1>



<p>Pour vérifier cette affirmation, il faut trouver une liste assez conséquente de séismes et connaître les phases de la Lune pour une date donnée. Évidement, on ne va pas faire ça à la main avec le Quid et l&rsquo;almanach Vermot&#8230;</p>



<h2 class="wp-block-heading">Source de données</h2>



<p>Le « journaliste » expliquait que les données sont disponibles sur Wikipédia. Sur la version française de Wikipédia, je n&rsquo;ai trouvé que les 10 plus gros tremblements de terre, faire des statistiques sur 10 éléments, c&rsquo;est pas sérieux&#8230; On va donc les prendre sur Wikipedia anglais où l&rsquo;on trouve une <a href="https://en.wikipedia.org/wiki/List_of_20th-century_earthquakes" target="_blank" rel="noopener">liste des tremblements de terre du XX° siècle</a> ayant une magnitude supérieure à 6. La page est téléchargée avec <code>wget</code> et ensuite, elle est fouillée avec <code>BeautifulSoup</code> pour ne garder que la date et l&rsquo;intensité des tremblements de terre.</p>



<h2 class="wp-block-heading">Calculer les phase de la Lune</h2>



<p>Il existe de nombreux algorithmes pour calculer les phases de la Lune. Sous Python plusieurs librairies sont disponibles pour les éphémérides, j&rsquo;ai retenu la librairie <code>pyephem</code> qui permet de nombreux calculs astronomiques.</p>



<p>La librairie permet de calculer le pourcentage de la surface illuminée de la Lune à partir d&rsquo;une date quelconque. Cette valeur est bien plus précise que la notion de pleine Lune ou de nouvelle Lune.</p>



<h2 class="wp-block-heading">Script Python</h2>



<p>À partir des éléments précédents, j&rsquo;ai fait un script « à l&rsquo;arrache » qui pourrait certainement être amélioré.</p>



<pre class="wp-block-prismatic-blocks"><code class="language-python">import bs4 as BeautifulSoup
from datetime import datetime, timedelta
import ephem
import matplotlib.pyplot as plt

fic = open(&#039;List_of_20th-century_earthquakes&#039;)

html = fic.read()
soup = BeautifulSoup.BeautifulSoup(html, &#039;html.parser&#039;)

intensites = []
phases = []

moon = ephem.Moon()

for line in soup.body.find_all(&#039;tr&#039;):
    try:
        td = line.findAll(&#039;td&#039;)
        date = datetime.strptime(td[0].findAll(&#039;span&#039;)[1].text, &#039;%B %d, %Y&#039;)
        valeur = float(td[6].text)
        moon.compute(date)
        phases.append(moon.moon_phase)
        intensites.append(valeur)
    except Exception as e:
        print(e)
        pass
fic.close()

print(u&quot;Nb. de séismes traités : &quot;,len(phases))

plt.figure(figsize=(15, 13))
plt.scatter(phases, intensites,s=50)
plt.xlim((0,1))
plt.xlabel(&#039;Phase de la Lune(% de la surface illuminée)&#039;)
plt.ylabel(u&#039;Intesité du seisme&#039;)
plt.savefig(&quot;repartition_seismes.png&quot;)
plt.show()</code></pre>



<p>Quelques éléments sont ignorés (date non correcte ou intensité inconnue), le nombre total de séismes traités est de 304.</p>



<p>On obtient la jolie figure ci-dessous qui ressemble plus à une décharge de chevrotine qu&rsquo;à l&rsquo;une des lois statistiques usuelles&#8230;</p>


<div class="wp-block-image">
<figure class="aligncenter"><a href="https://i0.wp.com/beta.vioix.fr/wp-content/uploads/2016/11/repartition_seismes-1.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" width="825" height="715" data-attachment-id="1157" data-permalink="https://jb.vioix.fr/pleine-lune-et-seismes/repartition_seismes-2/" data-orig-file="https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2016/11/repartition_seismes-1.png?fit=1500%2C1300&amp;ssl=1" data-orig-size="1500,1300" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="repartition_seismes" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2016/11/repartition_seismes-1.png?fit=300%2C260&amp;ssl=1" data-large-file="https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2016/11/repartition_seismes-1.png?fit=825%2C715&amp;ssl=1" src="https://i0.wp.com/beta.vioix.fr/wp-content/uploads/2016/11/repartition_seismes-1-1024x887.png?resize=825%2C715&#038;ssl=1" alt="repartition_seismes" class="wp-image-1157" srcset="https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2016/11/repartition_seismes-1.png?resize=1024%2C887&amp;ssl=1 1024w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2016/11/repartition_seismes-1.png?resize=100%2C87&amp;ssl=1 100w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2016/11/repartition_seismes-1.png?resize=300%2C260&amp;ssl=1 300w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2016/11/repartition_seismes-1.png?resize=768%2C666&amp;ssl=1 768w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2016/11/repartition_seismes-1.png?resize=700%2C607&amp;ssl=1 700w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2016/11/repartition_seismes-1.png?resize=332%2C288&amp;ssl=1 332w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2016/11/repartition_seismes-1.png?w=1500&amp;ssl=1 1500w" sizes="auto, (max-width: 825px) 100vw, 825px" /></a></figure></div>


<h1 class="wp-block-heading">Évolution de la surface illuminée de la Lune</h1>



<p>Les plus têtus pourront remarquer une accumulation des points aux extrêmes. C&rsquo;est simplement un effet dû à l&rsquo;évolution de la surface illuminée qui n&rsquo;est pas linéaire. Un petit script Python permet de tracer l&rsquo;évolution de la surface illuminée en fonction du temps.</p>



<pre class="wp-block-prismatic-blocks"><code class="language-python">from datetime import datetime, timedelta
import ephem
import matplotlib.pyplot as plt

today = datetime.now()
dates = []
phases = []
for n in range(-50,50):
    # https://stackoverflow.com/questions/6871016/adding-5-days-to-a-date-in-python
    dates.append(today + timedelta(days=n))
    moon.compute(dates[-1])
    phases.append(moon.moon_phase)

plt.figure(figsize=(16, 9))
plt.plot(dates, phases,)
plt.xlim((today + timedelta(days=-50),today + timedelta(days=49)))
plt.ylim((0,1))
plt.xlabel(&#039;Date&#039;)
plt.ylabel(&#039;Phase de la Lune(% de la surface illuminée)&#039;)
plt.savefig(&quot;phases_Lune.png&quot;)
plt.show()</code></pre>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image size-large"><a href="https://i0.wp.com/beta.vioix.fr/wp-content/uploads/2016/11/phases_Lune-1.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" width="825" height="464" data-attachment-id="1152" data-permalink="https://jb.vioix.fr/pleine-lune-et-seismes/phases_lune-2/" data-orig-file="https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2016/11/phases_Lune-1.png?fit=1600%2C900&amp;ssl=1" data-orig-size="1600,900" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="phases_lune" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2016/11/phases_Lune-1.png?fit=300%2C169&amp;ssl=1" data-large-file="https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2016/11/phases_Lune-1.png?fit=825%2C464&amp;ssl=1" src="https://i0.wp.com/beta.vioix.fr/wp-content/uploads/2016/11/phases_Lune-1-1024x576.png?resize=825%2C464&#038;ssl=1" alt="" class="wp-image-1152" srcset="https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2016/11/phases_Lune-1.png?resize=1024%2C576&amp;ssl=1 1024w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2016/11/phases_Lune-1.png?resize=100%2C56&amp;ssl=1 100w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2016/11/phases_Lune-1.png?resize=300%2C169&amp;ssl=1 300w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2016/11/phases_Lune-1.png?resize=768%2C432&amp;ssl=1 768w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2016/11/phases_Lune-1.png?resize=700%2C393&amp;ssl=1 700w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2016/11/phases_Lune-1.png?resize=332%2C187&amp;ssl=1 332w, https://i0.wp.com/jb.vioix.fr/wp-content/uploads/2016/11/phases_Lune-1.png?w=1600&amp;ssl=1 1600w" sizes="auto, (max-width: 825px) 100vw, 825px" /></a></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<p>La figure obtenue à l&rsquo;aspect ci-contre. Je n&rsquo;ai pas fouillé dans les détails, mais je ne suis pas certain que ce soit une simple sinusoïde. Dans tous les cas, c&rsquo;est non linéaire, ce qui explique « l&rsquo;accumulation » des points aux extrêmes.</p>
</div>
</div>



<p>Il n&rsquo;est donc pas possible d&rsquo;affirmer que 80% des tremblements de terre ont lieu lors des phases de pleine Lune. Pour conclure sur une illustration simple à comprendre, je laisse le crayon à Randall Munroe.</p>


<div class="wp-block-image">
<figure class="aligncenter"><a href="https://i0.wp.com/imgs.xkcd.com/comics/linear_regression.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" decoding="async" src="https://i0.wp.com/imgs.xkcd.com/comics/linear_regression.png?w=825&#038;ssl=1" alt=""/></a></figure></div>


<p>La photo d&rsquo;illustration est de Timo Newton-Syms from Helsinki, Finland and Chalfont St Giles, Bucks, UK — <a href="ttps://commons.wikimedia.org/w/index.php?curid=26293209" target="_blank" rel="noopener">Super Moon</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://jb.vioix.fr/pleine-lune-et-seismes/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1148</post-id>	</item>
		<item>
		<title>Reconstruire des pistes à partir d&#8217;un FLAC</title>
		<link>https://jb.vioix.fr/reconstruire-des-pistes-a-partir-dun-flac/</link>
					<comments>https://jb.vioix.fr/reconstruire-des-pistes-a-partir-dun-flac/#respond</comments>
		
		<dc:creator><![CDATA[jb]]></dc:creator>
		<pubDate>Sun, 25 Sep 2016 17:00:02 +0000</pubDate>
				<category><![CDATA[Informatique]]></category>
		<category><![CDATA[cue]]></category>
		<category><![CDATA[flac]]></category>
		<category><![CDATA[mp3]]></category>
		<guid isPermaLink="false">http://jb.vioix.fr/?p=1105</guid>

					<description><![CDATA[Flacon permet de reconstruire les pistes d&#8217;un album à partir du flac et du cue &#160;]]></description>
										<content:encoded><![CDATA[<p><a href="http://flacon.github.io/" target="_blank" rel="noopener">Flacon</a> permet de reconstruire les pistes d&rsquo;un album à partir du <code>flac</code> et du <code>cue</code></p>
<p>&nbsp;</p>
]]></content:encoded>
					
					<wfw:commentRss>https://jb.vioix.fr/reconstruire-des-pistes-a-partir-dun-flac/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1105</post-id>	</item>
		<item>
		<title>Installation d&#8217;un imprimante Canon LBP-1120 sous Mint 18</title>
		<link>https://jb.vioix.fr/installation-dun-imprimante-canon-lbp-1120-sous-mint-18/</link>
					<comments>https://jb.vioix.fr/installation-dun-imprimante-canon-lbp-1120-sous-mint-18/#respond</comments>
		
		<dc:creator><![CDATA[jb]]></dc:creator>
		<pubDate>Sun, 11 Sep 2016 13:59:12 +0000</pubDate>
				<category><![CDATA[Informatique]]></category>
		<category><![CDATA[Canon]]></category>
		<category><![CDATA[imprimante laser]]></category>
		<category><![CDATA[Mint]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<guid isPermaLink="false">http://jb.vioix.fr/?p=1032</guid>

					<description><![CDATA[J&#8217;utilise depuis des années une imprimante laser Canon LBP-1120 en imprimante d&#8217;appoint. Elle n&#8217;est pas correctement reconnue sous les systèmes Ubuntu et dérivés. Lors de la mise à jour sous Mint 18 elle n&#8217;était plus reconnue. Après quelques recherches j&#8217;ai réussi à l&#8217;installer&#8230; Installation Téléchargement et installation du pilote Les pilotes Canon sont téléchargés sur&#8230; <a href="https://jb.vioix.fr/installation-dun-imprimante-canon-lbp-1120-sous-mint-18/" class="more-link">Lire la suite <span class="screen-reader-text">Installation d&#8217;un imprimante Canon LBP-1120 sous Mint 18</span></a>]]></description>
										<content:encoded><![CDATA[<p>J&rsquo;utilise depuis des années une imprimante laser Canon LBP-1120 en imprimante d&rsquo;appoint. Elle n&rsquo;est pas correctement reconnue sous les systèmes Ubuntu et dérivés. Lors de la mise à jour sous Mint 18 elle n&rsquo;était plus reconnue. Après quelques recherches j&rsquo;ai réussi à l&rsquo;installer&#8230;<span id="more-1032"></span></p>
<h1>Installation</h1>
<h2>Téléchargement et installation du pilote</h2>
<p>Les pilotes Canon sont téléchargés sur le site officiel, il n&rsquo;est pas nécessaire de se promener sur le site, on peut le faire en ligne de commande :</p>
<pre class="lang:sh highlight:0 decode:true">wget http://gdlp01.c-wss.com/gds/6/0100004596/03/Linux_CAPT_PrinterDriver_V260_uk_EN.tar.gz</pre>
<p>Il existe une version plus récente des pilotes (2.70), je ne l&rsquo;ai pas testée.</p>
<p>L&rsquo;archive obtenue contient plusieurs fichiers. Les paquets contenus dans <code>64-bit_Driver/Debian</code> sont ceux qui nous intéressent. Les paquets  <code>cndrvcups-common_2.60-1_amd64.deb</code> et <code>cndrvcups-capt_2.60-1_amd64.deb</code> doivent d&rsquo;abord être installés (et dans cet ordre).</p>
<h2>Paquets complémentaires</h2>
<p>L&rsquo;installation des paquets Canon n&rsquo;est pas suffisante, il faut installer des paquets complémentaires pour l&rsquo;architecture i386. Rien de bien méchant (une fois qu&rsquo;on le sait&#8230;) :</p>
<pre class="lang:sh highlight:0 decode:true">sudo apt-get install libstdc++6:i386 libxml2:i386 zlib1g:i386 libpopt0:i386</pre>
<h2>Configuration et enregistrement du pilote</h2>
<p>Pour commencer il faut rechercher sur quel port l&rsquo;imprimante est branchée. La commande <code>ls -l /dev/usb/</code> permet de trouver le port utilisé par l&rsquo;imprimante. Par un des hasards de l&rsquo;informatique ici, j&rsquo;obtiens :</p>
<p><code>crw-rw---- 1 root lp 180, 1 sept. 8 18:32 lp1</code></p>
<p>L&rsquo;imprimante est donc connecté sur <code>lp1</code></p>
<pre class="lang:sh highlight:0 decode:true">sudo /usr/sbin/lpadmin -p LBP1120 -m CNCUPSLBP1120CAPTK.ppd -v ccp://localhost:59787 -E
sudo /usr/sbin/ccpdadmin -p LBP1120 -o /dev/usb/lp1
sudo /etc/init.d/ccpd restart</pre>
<p>L&rsquo;imprimante est alors accessible par le nom LBP1120 dans le gestionnaire d&rsquo;imprimantes. Il fait laisser l&rsquo;imprimante qui a été trouvée par Linux et la mettre en pause (sinon il va la redétecter à chaque démarrage). Ici, c&rsquo;est celle qui est identifiée LASER-SHOT-LBP-1120.</p>
<p>Normalement la commande <code>sudo /etc/init.d/ccpd status</code> doit retourner deux valeurs (ce sont des numéros de processus).</p>
<h2>Automatisation des commandes</h2>
<p>Pour éviter de relancer les pilotes à la main à chaque démarrage du système on créé (ou complète) le fichier <code>/etc/rc.local</code>.</p>
<pre class="lang:sh highlight:0 decode:true">sudo vim /etc/rc.local</pre>
<p>Dans ce fichier on ajoute les lignes suivantes :</p>
<pre class="lang:sh highlight:0 decode:true ">sleep 120
/etc/init.d/ccpd stop
/etc/init.d/ccpd restart</pre>
<p>Normalement, si l&rsquo;imprimante est alimentée avant que le PC ne soit allumé, tout doit fonctionner.</p>
<h1>Afficher l&rsquo;état du pilote au démarrage</h1>
<p>Dans le menu principal de Mint, aller sur le menu <em>Applications au démarrage</em>. Créer une nouvelle application en cliquant sur <em>Ajouter</em>. Les champs sont remplis avec les éléments suivant :</p>
<ul>
<li>Nom : Imprimante Canon (ou un truc comme ça ! )</li>
</ul>
<p>Commande :   <code>captstatusui  -P LBP1120</code> en ajoutant l&rsquo;option <code>-e</code> la fenêtre n’apparaîtra qu&rsquo;en cas d&rsquo;erreur.</p>
<ul>
<li>Commentaire : comme vous voulez <img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /></li>
<li>Délai d&rsquo;exécution : 5, permet aux autres services d&rsquo;être démarré avant, je ne sais pas si c&rsquo;est indispensable mais ça marche comme ça, donc on change rien !</li>
</ul>
<h1>Liens utiles</h1>
<ul>
<li>La procédure d’installation issue du <a href="https://translate.google.fr/translate?hl=fr&amp;sl=fi&amp;u=http://forum.ubuntu-fi.org/index.php%3Ftopic%3D50571.0&amp;prev=search" target="_blank" rel="noopener">forum Ubuntu</a> (traduite par Google depuis le finnois !).</li>
<li>Pour avoir l&rsquo;interface graphique du pilote affichée en permanence je me suis inspiré de <a href="https://help.ubuntu.com/community/CanonCaptDrv190" target="_blank" rel="noopener">ce post</a>.</li>
</ul>
<p>Note du 2/10/2016 : de temps en temps l&rsquo;imprimante n&rsquo;est plus sur <code>/dev/usb/lp1</code> mais repasse sur <code>/dev/usb/lp0</code> sans explication. Un lien symbolique permet de résoudre le problème <code>sudo ln -s /dev/usb/lp1 /dev/sub/lp0</code>&#8230; C&rsquo;est pas beau mais ça marche !</p>
<p><span style="border-radius: 2px; text-indent: 20px; width: auto; padding: 0px 4px 0px 0px; text-align: center; font: bold 11px/20px 'Helvetica Neue',Helvetica,sans-serif; color: #ffffff; background: #bd081c no-repeat scroll 3px 50% / 14px 14px; position: absolute; opacity: 1; z-index: 8675309; display: none; cursor: pointer;">Enregistrer</span></p>
<p><span style="border-radius: 2px; text-indent: 20px; width: auto; padding: 0px 4px 0px 0px; text-align: center; font: bold 11px/20px 'Helvetica Neue',Helvetica,sans-serif; color: #ffffff; background: #bd081c no-repeat scroll 3px 50% / 14px 14px; position: absolute; opacity: 1; z-index: 8675309; display: none; cursor: pointer;">Enregistrer</span></p>
<p><span style="border-radius: 2px; text-indent: 20px; width: auto; padding: 0px 4px 0px 0px; text-align: center; font: bold 11px/20px 'Helvetica Neue',Helvetica,sans-serif; color: #ffffff; background: #bd081c no-repeat scroll 3px 50% / 14px 14px; position: absolute; opacity: 1; z-index: 8675309; display: none; cursor: pointer;">Enregistrer</span></p>
<p><span style="border-radius: 2px; text-indent: 20px; width: auto; padding: 0px 4px 0px 0px; text-align: center; font: bold 11px/20px 'Helvetica Neue',Helvetica,sans-serif; color: #ffffff; background: #bd081c no-repeat scroll 3px 50% / 14px 14px; position: absolute; opacity: 1; z-index: 8675309; display: none; cursor: pointer;">Enregistrer</span></p>
<p><span style="border-radius: 2px; text-indent: 20px; width: auto; padding: 0px 4px 0px 0px; text-align: center; font: bold 11px/20px 'Helvetica Neue',Helvetica,sans-serif; color: #ffffff; background: #bd081c no-repeat scroll 3px 50% / 14px 14px; position: absolute; opacity: 1; z-index: 8675309; display: none; cursor: pointer;">Enregistrer</span></p>
<p><span style="border-radius: 2px; text-indent: 20px; width: auto; padding: 0px 4px 0px 0px; text-align: center; font: bold 11px/20px 'Helvetica Neue',Helvetica,sans-serif; color: #ffffff; background: #bd081c no-repeat scroll 3px 50% / 14px 14px; position: absolute; opacity: 1; z-index: 8675309; display: none; cursor: pointer;">Enregistrer</span></p>
<p><span style="border-radius: 2px; text-indent: 20px; width: auto; padding: 0px 4px 0px 0px; text-align: center; font: bold 11px/20px 'Helvetica Neue',Helvetica,sans-serif; color: #ffffff; background: #bd081c no-repeat scroll 3px 50% / 14px 14px; position: absolute; opacity: 1; z-index: 8675309; display: none; cursor: pointer;">Enregistrer</span></p>
<p><span style="border-radius: 2px; text-indent: 20px; width: auto; padding: 0px 4px 0px 0px; text-align: center; font: bold 11px/20px 'Helvetica Neue',Helvetica,sans-serif; color: #ffffff; background: #bd081c no-repeat scroll 3px 50% / 14px 14px; position: absolute; opacity: 1; z-index: 8675309; display: none; cursor: pointer;">Enregistrer</span></p>
]]></content:encoded>
					
					<wfw:commentRss>https://jb.vioix.fr/installation-dun-imprimante-canon-lbp-1120-sous-mint-18/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1032</post-id>	</item>
		<item>
		<title>Génération de tableaux LaTeX</title>
		<link>https://jb.vioix.fr/generation-de-tableaux-latex/</link>
					<comments>https://jb.vioix.fr/generation-de-tableaux-latex/#respond</comments>
		
		<dc:creator><![CDATA[jb]]></dc:creator>
		<pubDate>Sun, 13 Mar 2016 19:29:08 +0000</pubDate>
				<category><![CDATA[Informatique]]></category>
		<category><![CDATA[latex]]></category>
		<category><![CDATA[tableaux]]></category>
		<guid isPermaLink="false">http://jb.vioix.fr/?p=943</guid>

					<description><![CDATA[Fini la galère pour construire des tableaux avec LaTeX Table Generator !]]></description>
										<content:encoded><![CDATA[<p>Fini la galère pour construire des tableaux avec <a href="http://www.tablesgenerator.com" target="_blank" rel="noopener">LaTeX Table Generator</a> !</p>
]]></content:encoded>
					
					<wfw:commentRss>https://jb.vioix.fr/generation-de-tableaux-latex/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">943</post-id>	</item>
	</channel>
</rss>
