<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Dev on Jerome.Flesch.info</title>
    <link>/blog/categories/dev/</link>
    <description>Recent content in Dev on Jerome.Flesch.info</description>
    <generator>Hugo</generator>
    <language>fr-fr</language>
    <copyright>WTFPL 2.0</copyright>
    <lastBuildDate>Mon, 04 Apr 2022 11:58:26 +0100</lastBuildDate>
    <atom:link href="/blog/categories/dev/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Markdown documentation</title>
      <link>/blog/posts/20220404-markdown-documentation/</link>
      <pubDate>Mon, 04 Apr 2022 11:58:26 +0100</pubDate>
      <guid>/blog/posts/20220404-markdown-documentation/</guid>
      <description>&lt;h1 id=&#34;introduction&#34;&gt;Introduction&lt;/h1&gt;
&lt;p&gt;Documentation should live with the code. Therefore a common problem is to keep
your code documentation beside your source code, in a Git-friendly manner,
while also being able to transform it later in a user-friendly format. In other
words, you want to keep your documentation written in easy-to-read and
easy-to-modify text files while also being able to generate PDF files from it
(or HTML).&lt;/p&gt;
&lt;p&gt;You may want also to be able to include nice diagrams in your
documentation, while also being able to version them in a Git-friendly manner.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python: packaging data and translation files</title>
      <link>/blog/posts/20220404-python-data-and-translation-files/</link>
      <pubDate>Mon, 04 Apr 2022 10:58:26 +0100</pubDate>
      <guid>/blog/posts/20220404-python-data-and-translation-files/</guid>
      <description>&lt;h1 id=&#34;data-files-in-your-python-package&#34;&gt;Data files in your Python package&lt;/h1&gt;
&lt;p&gt;The cleanest way I&amp;rsquo;ve found has 3 steps.&lt;/p&gt;
&lt;h2 id=&#34;manifestin&#34;&gt;&lt;code&gt;MANIFEST.in&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;Your &lt;code&gt;MANIFEST.in&lt;/code&gt; must include the files you want in the package.
For example, to include all .mo files:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;recursive-include multisense_processes *.py *.mo
recursive-include tests *
include *.md
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;__init__py&#34;&gt;&lt;code&gt;__init__.py&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;All the directories containing data files must be Python modules, even if they
don&amp;rsquo;t actually contain any actual code. In other words, they must all have files
called &lt;code&gt;__init__.py&lt;/code&gt;. For instance:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Git, MariaDB and Python3</title>
      <link>/blog/posts/20150901-git-mariadb-python3/</link>
      <pubDate>Tue, 01 Sep 2015 22:58:26 +0100</pubDate>
      <guid>/blog/posts/20150901-git-mariadb-python3/</guid>
      <description>&lt;p&gt;Pour un projet perso top secret, je me suis retrouvé dans une situation où je
souhaitais être capable de :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;stocker un grand nombre de petits dépôts Git&lt;/li&gt;
&lt;li&gt;les avoir en haute-disponibilité (99.9% d&amp;rsquo;uptime)&lt;/li&gt;
&lt;li&gt;encaisser une forte charge en lecture sur ces dépôts&lt;/li&gt;
&lt;li&gt;être capable de &lt;a href=&#34;https://fr.wikipedia.org/wiki/Scalability&#34;&gt;monter en charge verticalement mais aussi horizontalement&lt;/a&gt; rapidement si besoin est&lt;/li&gt;
&lt;li&gt;toujours avoir un contenu apparent cohérent : Quand on fait un push sur une
des machines du cluster et qu&amp;rsquo;on enchaîne sur un pull depuis une autre, il
faut que le contenu du push soit systématiquement apparent&lt;/li&gt;
&lt;li&gt;accéder et manipuler ces dépôts depuis un programme en Python 3.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Autrement dit, il me fallait essentiellement un moyen de répliquer des dépôts
Git sur plusieurs machines efficacement.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Git Dumb Protocol</title>
      <link>/blog/posts/20160124-git-dumb-protocol/</link>
      <pubDate>Sat, 05 Oct 2013 22:58:26 +0100</pubDate>
      <guid>/blog/posts/20160124-git-dumb-protocol/</guid>
      <description>&lt;p&gt;Git supports various protocols. One of them is called the &amp;ldquo;dumb&amp;rdquo; protocol.&lt;/p&gt;
&lt;p&gt;This dumb protocol is based on HTTP+Webdav. There is also a smart protocol,
but this one is not really HTTP compliant (it starts as HTTP for an handshake,
but then switches to a custom protocol).&lt;/p&gt;
&lt;p&gt;The dumb protocol is really handy in scenarios where you can only expose a Git
repository through standard HTTP+WebDav. For instance, if you have a firewall
in front of your webserver. Or if you want to implement a &amp;ldquo;fake&amp;rdquo; Git repository
using a standard web framework (Django for instance).&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
