This commit is contained in:
Tykayn 2024-11-08 18:16:36 +01:00 committed by tykayn
parent 0a189bd6ad
commit 381ac44b8b
906 changed files with 28485 additions and 12762 deletions

View file

@ -1,266 +0,0 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<title>cipherbliss_blog</title>
<style type='text/css'>{css_content}</style><link type='stylesheet/css' href='/style.css'></link></head>
<body>
<a href='/'>Retour à l'Accueil</a><hr/><!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="">
<head>
<meta charset="utf-8" />
<meta name="generator" content="pandoc" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
<title>cipherbliss_blog</title>
<style>
html {
color: #1a1a1a;
background-color: #fdfdfd;
}
body {
margin: 0 auto;
max-width: 36em;
padding-left: 50px;
padding-right: 50px;
padding-top: 50px;
padding-bottom: 50px;
hyphens: auto;
overflow-wrap: break-word;
text-rendering: optimizeLegibility;
font-kerning: normal;
}
@media (max-width: 600px) {
body {
font-size: 0.9em;
padding: 12px;
}
h1 {
font-size: 1.8em;
}
}
@media print {
html {
background-color: white;
}
body {
background-color: transparent;
color: black;
font-size: 12pt;
}
p, h2, h3 {
orphans: 3;
widows: 3;
}
h2, h3, h4 {
page-break-after: avoid;
}
}
p {
margin: 1em 0;
}
a {
color: #1a1a1a;
}
a:visited {
color: #1a1a1a;
}
img {
max-width: 100%;
}
h1, h2, h3, h4, h5, h6 {
margin-top: 1.4em;
}
h5, h6 {
font-size: 1em;
font-style: italic;
}
h6 {
font-weight: normal;
}
ol, ul {
padding-left: 1.7em;
margin-top: 1em;
}
li > ol, li > ul {
margin-top: 0;
}
blockquote {
margin: 1em 0 1em 1.7em;
padding-left: 1em;
border-left: 2px solid #e6e6e6;
color: #606060;
}
code {
font-family: Menlo, Monaco, Consolas, 'Lucida Console', monospace;
font-size: 85%;
margin: 0;
hyphens: manual;
}
pre {
margin: 1em 0;
overflow: auto;
}
pre code {
padding: 0;
overflow: visible;
overflow-wrap: normal;
}
.sourceCode {
background-color: transparent;
overflow: visible;
}
hr {
background-color: #1a1a1a;
border: none;
height: 1px;
margin: 1em 0;
}
table {
margin: 1em 0;
border-collapse: collapse;
width: 100%;
overflow-x: auto;
display: block;
font-variant-numeric: lining-nums tabular-nums;
}
table caption {
margin-bottom: 0.75em;
}
tbody {
margin-top: 0.5em;
border-top: 1px solid #1a1a1a;
border-bottom: 1px solid #1a1a1a;
}
th {
border-top: 1px solid #1a1a1a;
padding: 0.25em 0.5em 0.25em 0.5em;
}
td {
padding: 0.125em 0.5em 0.25em 0.5em;
}
header {
margin-bottom: 4em;
text-align: center;
}
#TOC li {
list-style: none;
}
#TOC ul {
padding-left: 1.3em;
}
#TOC > ul {
padding-left: 0;
}
#TOC a:not(:hover) {
text-decoration: none;
}
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
div.columns{display: flex; gap: min(4vw, 1.5em);}
div.column{flex: auto; overflow-x: auto;}
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
/* The extra [class] is a hack that increases specificity enough to
override a similar rule in reveal.js */
ul.task-list[class]{list-style: none;}
ul.task-list li input[type="checkbox"] {
font-size: inherit;
width: 0.8em;
margin: 0 0.8em 0.2em -1.6em;
vertical-align: middle;
}
.display.math{display: block; text-align: center; margin: 0.5rem auto;}
</style>
</head>
<body>
<header id="title-block-header">
<h1 class="title">cipherbliss_blog</h1>
</header>
<h1 id="article">Article</h1>
<ul>
<li><p>ID: 196</p></li>
<li><p>guid:</p></li>
<li><p>status: publish</p></li>
<li><p>publié le: &lt;2016-01-02 11:07:25&gt;</p></li>
<li><p>modifié: &lt;2018-08-22 15:09:59&gt;</p></li>
<li><p>Index des articles du blog <a
href="id:39e91a2e-d003-4acd-a99a-b58dca74df77">Cipherbliss blog</a></p>
<p><a href="id:53ffed85-03d0-4fb2-90b5-af2ffbcc3a0d">méthode
gtd</a></p></li>
</ul>
<h2 id="gestion-de-projet">Gestion de projet</h2>
<p>(image de chez <a href="https://www.hteumeuleu.fr/">Hteumeuleu</a>)
Vous avez sans doute réalisé quelques projets et réalisé la déconvenue
qu'entraîne une gestion de projet inexistante quand la bise fut venue.
Voici donc une série de posts sur mon expérience de la gestion de
projets web de plusieurs mois en petites équipes jusqu'a une quinzaine
de personnes, applicable également à d'autres domaines que le web comme
par example la publication de livres collectifs auto édités auquel j'ai
pu contribuer dans une équipe entre ving et trente contributeurs.</p>
<h2 dir="ltr" style="line-height: 1.38;"
id="causes-générales-de-retard-dans-un-projet">Causes générales de
retard dans un projet</h2>
<p>Un projet s'étire dans le temps bien souvent pour ces raisons:</p>
<ul>
<li>des réponses trop lentes entre les parties, client et autres équipes
sans cesse en congés.</li>
<li>des personnes incapables de se débrouiller seules un minimum.</li>
<li>deux personnes ont travaillé sur la même chose sans le savoir et se
marchent sur les pieds.</li>
<li>on ne sait pas à qui s'adresser ni ce dont nos collègues
s'occupent.</li>
<li>le présentéisme tuant la productivité et la motivation des troupes
en leur faisant croire que rester longtemps sur son lieu de travail (et
donc ne plus avoir de vie privée ou de sommeil) est une bonne
chose.</li>
<li>les membres n'ont pas les informations dont ils ont besoin pour
travailler.</li>
<li>rester avec des pratiques dépassées de plusieurs années.</li>
<li>empêcher les gens de travailler pour des raisons de politiques
d'entreprise.</li>
<li>n'avoir aucune formation aux outils utilisés, ou ne pas avoir
d'outils mis en place pour faire gagner du temps.</li>
<li>pas de tests automatisés. Vous n'avez donc aucune idée de ce que les
dernières modifications impactent dans le reste du code.</li>
<li>pas de retour utilisateur. Vous ne pouvez donc pas deviner que ce
que vous trouviez très joli est en fait un frein à l'utilisabilité de
votre site en plus d'énerver ses utilisateurs.</li>
<li>un réseau pourri qui vous empêche de transmettre de gros fichiers en
un clin d'oeil</li>
<li>du matériel trop vieux pour travailler sans attendre qu'il réagisse.
Si vous radinez sur le matériel, vous le paierez en rallongeant le temps
que prendra le projet, ce qui coûte en général bien plus cher.</li>
<li>pas de backups ni de gestion de version, au moindre disque dur qui
meurt vous perdez des semaines de travail.</li>
<li>des mises en production peu fréquentes.</li>
<li>des boites noires avec lequelles on doit interagir mais dont on a
aucun moyen de deviner le fonctionnement.</li>
<li>des priorités indéfinies ou incorrectes, un mauvais ordre des
tâches.</li>
<li>des tâches trop grosses ou trop vagues pour savoir par où commencer,
il faut les découper en des étapes bien plus petites.</li>
<li>n'avoir aucune vue d'ensemble de l'avancement du projet.</li>
<li>croire que tout est urgent, c'est manquer cruellement de
discernement.</li>
<li>la documentation laisse à désirer, le code n'est pas commenté.</li>
<li>on ne retrouve pas des infos que l'on cherche</li>
<li>des estimations à trop long terme, ne prévoyez que pour la semaine
en cours.</li>
<li>l'illusion que l'on peut tout prévoir et que tout se passera sans la
moindre difficulté ou changement de cap.</li>
<li>accepter toutes les modifications demandées par le client parce
qu'on ne veut pas dire non, et vouloir donc faire davantage de boulot
dans le même délai.</li>
</ul>
<p>Nous allons voir plus en détail comment résoudre ces problèmes
courants dans les posts suivants.</p>
<p>Et bonne nanée 2016!</p>
<h1 id="liens">Liens</h1>
<ul>
<li>cipherbliss <a
href="id:d14d8051-bbb9-4279-a574-84d78bfe5b66">Cipherbliss blog</a></li>
</ul>
</body>
</html>
<footer><hr/><a href='/'>Retour à l'Accueil</a></footer></body>
</html>

View file

@ -1,212 +0,0 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<title>cipherbliss_blog</title>
<style type='text/css'>{css_content}</style><link type='stylesheet/css' href='/style.css'></link></head>
<body>
<a href='/'>Retour à l'Accueil</a><hr/><!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="">
<head>
<meta charset="utf-8" />
<meta name="generator" content="pandoc" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
<title>cipherbliss_blog</title>
<style>
html {
color: #1a1a1a;
background-color: #fdfdfd;
}
body {
margin: 0 auto;
max-width: 36em;
padding-left: 50px;
padding-right: 50px;
padding-top: 50px;
padding-bottom: 50px;
hyphens: auto;
overflow-wrap: break-word;
text-rendering: optimizeLegibility;
font-kerning: normal;
}
@media (max-width: 600px) {
body {
font-size: 0.9em;
padding: 12px;
}
h1 {
font-size: 1.8em;
}
}
@media print {
html {
background-color: white;
}
body {
background-color: transparent;
color: black;
font-size: 12pt;
}
p, h2, h3 {
orphans: 3;
widows: 3;
}
h2, h3, h4 {
page-break-after: avoid;
}
}
p {
margin: 1em 0;
}
a {
color: #1a1a1a;
}
a:visited {
color: #1a1a1a;
}
img {
max-width: 100%;
}
h1, h2, h3, h4, h5, h6 {
margin-top: 1.4em;
}
h5, h6 {
font-size: 1em;
font-style: italic;
}
h6 {
font-weight: normal;
}
ol, ul {
padding-left: 1.7em;
margin-top: 1em;
}
li > ol, li > ul {
margin-top: 0;
}
blockquote {
margin: 1em 0 1em 1.7em;
padding-left: 1em;
border-left: 2px solid #e6e6e6;
color: #606060;
}
code {
font-family: Menlo, Monaco, Consolas, 'Lucida Console', monospace;
font-size: 85%;
margin: 0;
hyphens: manual;
}
pre {
margin: 1em 0;
overflow: auto;
}
pre code {
padding: 0;
overflow: visible;
overflow-wrap: normal;
}
.sourceCode {
background-color: transparent;
overflow: visible;
}
hr {
background-color: #1a1a1a;
border: none;
height: 1px;
margin: 1em 0;
}
table {
margin: 1em 0;
border-collapse: collapse;
width: 100%;
overflow-x: auto;
display: block;
font-variant-numeric: lining-nums tabular-nums;
}
table caption {
margin-bottom: 0.75em;
}
tbody {
margin-top: 0.5em;
border-top: 1px solid #1a1a1a;
border-bottom: 1px solid #1a1a1a;
}
th {
border-top: 1px solid #1a1a1a;
padding: 0.25em 0.5em 0.25em 0.5em;
}
td {
padding: 0.125em 0.5em 0.25em 0.5em;
}
header {
margin-bottom: 4em;
text-align: center;
}
#TOC li {
list-style: none;
}
#TOC ul {
padding-left: 1.3em;
}
#TOC > ul {
padding-left: 0;
}
#TOC a:not(:hover) {
text-decoration: none;
}
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
div.columns{display: flex; gap: min(4vw, 1.5em);}
div.column{flex: auto; overflow-x: auto;}
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
/* The extra [class] is a hack that increases specificity enough to
override a similar rule in reveal.js */
ul.task-list[class]{list-style: none;}
ul.task-list li input[type="checkbox"] {
font-size: inherit;
width: 0.8em;
margin: 0 0.8em 0.2em -1.6em;
vertical-align: middle;
}
.display.math{display: block; text-align: center; margin: 0.5rem auto;}
</style>
</head>
<body>
<header id="title-block-header">
<h1 class="title">cipherbliss_blog</h1>
</header>
<h1 id="article">Article</h1>
<ul>
<li>ID: 316</li>
<li>guid:</li>
<li>status: publish</li>
<li>publié le: &lt;2016-08-24 15:39:18&gt;</li>
<li>modifié: &lt;2016-08-24 15:39:18&gt;</li>
<li>Index des articles du blog <a
href="id:39e91a2e-d003-4acd-a99a-b58dca74df77">Cipherbliss blog</a></li>
</ul>
<h2 id="changer-léditeur-de-texte-associé-à-git">changer l'éditeur de
texte associé à git</h2>
<p>J'utilise beaucoup Nano comme éditeur de texte en ligne de commande,
certains fous furieux utilisent Vi ou Vim, mais vous pouvez être encore
plus un hipster en utilisant carrément gedit sur votre bureau perso
lorsque vous voulez faire une bidouille de message de commit ou un
<em>git rebase interactif</em> sans vous embêter à retenir des
raccourcis chelous pour déplacer des lignes ou faire des
remplacements.</p>
<pre class="example"><code>git config --global core.editor gedit
</code></pre>
<p>notez aussi que gedit peut faire de la mise en couleur de code avec
plusieurs profils au choix (menu edition/préférence/couleurs) pour se
faire moins éblouir à la longue, ce qui peut aider quand on passe plein
de temps devant un écran.</p>
<h1 id="liens">Liens</h1>
<ul>
<li>cipherbliss <a
href="id:d14d8051-bbb9-4279-a574-84d78bfe5b66">Cipherbliss blog</a></li>
</ul>
</body>
</html>
<footer><hr/><a href='/'>Retour à l'Accueil</a></footer></body>
</html>

View file

@ -1,286 +0,0 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<title>cipherbliss_blog</title>
<style type='text/css'>{css_content}</style><link type='stylesheet/css' href='/style.css'></link></head>
<body>
<a href='/'>Retour à l'Accueil</a><hr/><!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="">
<head>
<meta charset="utf-8" />
<meta name="generator" content="pandoc" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
<title>cipherbliss_blog</title>
<style>
html {
color: #1a1a1a;
background-color: #fdfdfd;
}
body {
margin: 0 auto;
max-width: 36em;
padding-left: 50px;
padding-right: 50px;
padding-top: 50px;
padding-bottom: 50px;
hyphens: auto;
overflow-wrap: break-word;
text-rendering: optimizeLegibility;
font-kerning: normal;
}
@media (max-width: 600px) {
body {
font-size: 0.9em;
padding: 12px;
}
h1 {
font-size: 1.8em;
}
}
@media print {
html {
background-color: white;
}
body {
background-color: transparent;
color: black;
font-size: 12pt;
}
p, h2, h3 {
orphans: 3;
widows: 3;
}
h2, h3, h4 {
page-break-after: avoid;
}
}
p {
margin: 1em 0;
}
a {
color: #1a1a1a;
}
a:visited {
color: #1a1a1a;
}
img {
max-width: 100%;
}
h1, h2, h3, h4, h5, h6 {
margin-top: 1.4em;
}
h5, h6 {
font-size: 1em;
font-style: italic;
}
h6 {
font-weight: normal;
}
ol, ul {
padding-left: 1.7em;
margin-top: 1em;
}
li > ol, li > ul {
margin-top: 0;
}
blockquote {
margin: 1em 0 1em 1.7em;
padding-left: 1em;
border-left: 2px solid #e6e6e6;
color: #606060;
}
code {
font-family: Menlo, Monaco, Consolas, 'Lucida Console', monospace;
font-size: 85%;
margin: 0;
hyphens: manual;
}
pre {
margin: 1em 0;
overflow: auto;
}
pre code {
padding: 0;
overflow: visible;
overflow-wrap: normal;
}
.sourceCode {
background-color: transparent;
overflow: visible;
}
hr {
background-color: #1a1a1a;
border: none;
height: 1px;
margin: 1em 0;
}
table {
margin: 1em 0;
border-collapse: collapse;
width: 100%;
overflow-x: auto;
display: block;
font-variant-numeric: lining-nums tabular-nums;
}
table caption {
margin-bottom: 0.75em;
}
tbody {
margin-top: 0.5em;
border-top: 1px solid #1a1a1a;
border-bottom: 1px solid #1a1a1a;
}
th {
border-top: 1px solid #1a1a1a;
padding: 0.25em 0.5em 0.25em 0.5em;
}
td {
padding: 0.125em 0.5em 0.25em 0.5em;
}
header {
margin-bottom: 4em;
text-align: center;
}
#TOC li {
list-style: none;
}
#TOC ul {
padding-left: 1.3em;
}
#TOC > ul {
padding-left: 0;
}
#TOC a:not(:hover) {
text-decoration: none;
}
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
div.columns{display: flex; gap: min(4vw, 1.5em);}
div.column{flex: auto; overflow-x: auto;}
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
/* The extra [class] is a hack that increases specificity enough to
override a similar rule in reveal.js */
ul.task-list[class]{list-style: none;}
ul.task-list li input[type="checkbox"] {
font-size: inherit;
width: 0.8em;
margin: 0 0.8em 0.2em -1.6em;
vertical-align: middle;
}
.display.math{display: block; text-align: center; margin: 0.5rem auto;}
</style>
</head>
<body>
<header id="title-block-header">
<h1 class="title">cipherbliss_blog</h1>
</header>
<h1 id="article">Article</h1>
<ul>
<li>ID: 339</li>
<li>guid:</li>
<li>status: publish</li>
<li>publié le: &lt;2016-09-25 22:07:50&gt;</li>
<li>modifié: &lt;2018-07-25 12:52:19&gt;</li>
<li>Index des articles du blog <a
href="id:39e91a2e-d003-4acd-a99a-b58dca74df77">Cipherbliss blog</a></li>
</ul>
<h2 id="ne-vous-dites-pas-programmeur-1">ne vous dites pas
programmeur</h2>
<p>  Dans son article <a
href="https://www.kalzumeus.com/2011/10/28/dont-call-yourself-a-programmer/">Don't
call yourself a programmer</a>, <a
href="https://www.kalzumeus.com/">Patrick McKenzie</a> donne des
conseils de gestion de carrière pour toute personne exerçant dans le
métier, en comparant les légendes scolaires et le marché de la vraie vie
de Auchan où parler d'argent est une phobie et savoir négocier fait
peur. Voici quelques sujets abordés: 90% des boulots de programmation
sont des programmes réservés à l'usage interne d'entreprises. Ils
consistent principalement à faire des CRUD plus ou moins ennuyeux. Ne
vous attendez donc pas à des challenges techniques à tout bout de champ.
Les ingénieurs sont embauchés pour apporter de la valeur à un business,
soit en lui faisant gagner de l'argent soit en lui permettant d'en
dépenser moins. pas pour programmer des trucs. Ne vous appelez pas un
programmeur. "programmeur" sonne comme "péon anonyme qui coûte cher pour
taper du biduule-chose dans un autre bidule-chose ". Vous n'êtes pas
défini par la stack logicielle que vous connaissez. Les personnes qui
ont besoin de vos services n'ont que faire du langage et des frameworks
que vous utilisez du moment que vous améliorez leur business. Vos
collègues et supérieurs ne seront habituellement pas des amis, et en
conséquence vous demanderont de faire des choses que jamais des amis ne
vous demanderaient. Vous surestimez radicalement le talent moyen dans la
compétition à cause des personnes qui vous entourent
professionnellement. "Voir une annonce, envoyer un CV, aller à un
entretien, recevoir une offre" est l'exception, pas la règle, pour
obtenir un emploi. Le réseau, ce n'est pas que pour les paquets TCP. Les
études supérieures ne sont pas représentatives du monde réel. (Comme
dirait Coluche "le commissaire de l'armée il me dit: on ne vous apprend
rien à l'école? j'y répond : ben non, mais si vous y aviez été vous le
sauriez) <img
src="https://www.cipherbliss.com/wp-content/uploads/2016/09/popopo_antoine_daniel_wtc.jpg" />
(PO PO POOOOOOO!!) Combien gagnent les ingénieurs? Mauvaise question. La
bonne question c'est "<em>pour quels genres d'offres est ce que les
ingénieurs travaillent-ils?</em>", car le salaire est un des nombreux
leviers que les gens peuvent utiliser pour vous motiver. La réponse à
cela, pas des plus utiles est, "les opportunités sont aux quatre coins
de la rue". Les personnes douées en négociation gagnent plus que celles
qui ne le sont pas. Patrick ajoute que si il était un complotiste
Marxiste, il dirait que c'est une construction sociale en faveur des
entreprises afin de toujours gagner plus sur le dos de leurs employés en
toute impunité. :D [caption id="" align="aligncenter" width="640"]<a
href="https://laughingsquid.com/marxist-utopia-a-t-shirt-design-uniting-yo-mamma-jokes-marxism/">[[<span>https://laughingsquid.com/wp-content/uploads/2013/05/shirtFrontBig.jpg</span></a>]]
un t-shirt de marx dessiné par Zach Weiner[/caption] Comment devenir
meilleur en négociation? (large sujet que Patrick développe dans
plusieurs autres posts) En lisant des manuels sur le sujet, en
améliorant ses compétences verbales, en écrivant, en croyant en ce que
l'on a à offrir, en étant curieux. C'est une compétence qui vaut jusqu'à
plusieurs (centaines de) milliers d'euros chaque année de toute votre
vie. Est ce que les startups sont géniales pour commencer votre carrière
juste après les études? non. il vaut mieux commencer par des grosses
entreprises qui vous permettront d'améliorer votre réseau sans faire
peser sur votre dos tout le poids de la structure statup qui a 80% de
chances de faire faillite dans les trois ans sans en avoir les
avantages. Les startups peuvent être géniales, mais clairement pas pour
commencer une carrière en sortant de l'école. <a
href="https://www.cipherbliss.com/wp-content/uploads/2016/09/office-monkey.jpg">[[<span>https://www.cipherbliss.com/wp-content/uploads/2016/09/office-monkey-1024x708.jpg</span></a>]]
Votre compétence professionnelle la plus importante est la
communication: Vous vous rappelez que <a
href="https://www.cipherbliss.com/inspirer-les-femmes-prendre-les-postes-qui-faconnent-le-monde/">les
ingénieur-e-s</a> ne sont pas embauchés pour créer des programmes mais
pour créer de la valeur dans un business? La qualité dominante qui vous
donne les boulots est votre habilité à donner aux gens la perception que
vous allez créer cette valeur. Ce qui n'est pas nécessairement
corollaire de votre habilité à créer de la valeur. Vous pouvez être un
dieu du programme super efficace, si vous ne savez bien vendre vos idées
personne ne voudra vous les acheter. (L'auteur déplore d'ailleurs que
les ingénieurs ont pour la plupart énormément de mal à tenir une simple
conversation entre collègues tant ils ont des difficultés orales
handicapantes. on tombe un peu dans un trope de mauvais film mettant en
scène des informaticiens clichés, mais c'est vrai que c'est peu fréquent
de croiser des gens très à l'aise en expression orale) On vous
appellera fréquemment pour faire le vendeur d'entreprise et d'autres
trucs que vous cherchiez précisément à ne pas faire en étant ingénieur.
La modestie n'est pas un trait de caractère permettant d'améliorer votre
carrière. Si vous avez contribué à quelque chose de bien pour votre
carrière, ne vous en cachez pas, et ne réduisez pas l'importance de
votre rôle. Toutes les décisions de business sont faites au final par un
ou une poignée d'organismes multi-cellulaires proches du chimpanzés, par
par des règles ou des algorithmes. (à une vache près, il suffit de voir
combien pèsent les algos de google dans le monde. ce que veut dire notre
ami c'est que les décisions sont toujours politiques, mêmes quand elles
n'en ont pas l'air ou qu'on vous dit que ça n'a rien de politique) Au
bout du compte, la joie que vous ressentez dans votre vie n'est pas
dominée par votre carrière. S'épanouir dans son boulot est important,
mais par pitié ayez une vie en dehors de votre travail sans attendre que
ça tombe du ciel. <img
src="https://www.theloop.ca/wp-content/uploads/2015/06/Shia-LaBeouf-really-wants-you-to-justdoit.jpg" /></p>
<h1 id="liens">Liens</h1>
<ul>
<li>cipherbliss <a
href="id:d14d8051-bbb9-4279-a574-84d78bfe5b66">Cipherbliss blog</a></li>
</ul>
</body>
</html>
<footer><hr/><a href='/'>Retour à l'Accueil</a></footer></body>
</html>

View file

@ -1,397 +0,0 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<title>cipherbliss_blog</title>
<style type='text/css'>{css_content}</style><link type='stylesheet/css' href='/style.css'></link></head>
<body>
<a href='/'>Retour à l'Accueil</a><hr/><!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="">
<head>
<meta charset="utf-8" />
<meta name="generator" content="pandoc" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
<title>cipherbliss_blog</title>
<style>
html {
color: #1a1a1a;
background-color: #fdfdfd;
}
body {
margin: 0 auto;
max-width: 36em;
padding-left: 50px;
padding-right: 50px;
padding-top: 50px;
padding-bottom: 50px;
hyphens: auto;
overflow-wrap: break-word;
text-rendering: optimizeLegibility;
font-kerning: normal;
}
@media (max-width: 600px) {
body {
font-size: 0.9em;
padding: 12px;
}
h1 {
font-size: 1.8em;
}
}
@media print {
html {
background-color: white;
}
body {
background-color: transparent;
color: black;
font-size: 12pt;
}
p, h2, h3 {
orphans: 3;
widows: 3;
}
h2, h3, h4 {
page-break-after: avoid;
}
}
p {
margin: 1em 0;
}
a {
color: #1a1a1a;
}
a:visited {
color: #1a1a1a;
}
img {
max-width: 100%;
}
h1, h2, h3, h4, h5, h6 {
margin-top: 1.4em;
}
h5, h6 {
font-size: 1em;
font-style: italic;
}
h6 {
font-weight: normal;
}
ol, ul {
padding-left: 1.7em;
margin-top: 1em;
}
li > ol, li > ul {
margin-top: 0;
}
blockquote {
margin: 1em 0 1em 1.7em;
padding-left: 1em;
border-left: 2px solid #e6e6e6;
color: #606060;
}
code {
font-family: Menlo, Monaco, Consolas, 'Lucida Console', monospace;
font-size: 85%;
margin: 0;
hyphens: manual;
}
pre {
margin: 1em 0;
overflow: auto;
}
pre code {
padding: 0;
overflow: visible;
overflow-wrap: normal;
}
.sourceCode {
background-color: transparent;
overflow: visible;
}
hr {
background-color: #1a1a1a;
border: none;
height: 1px;
margin: 1em 0;
}
table {
margin: 1em 0;
border-collapse: collapse;
width: 100%;
overflow-x: auto;
display: block;
font-variant-numeric: lining-nums tabular-nums;
}
table caption {
margin-bottom: 0.75em;
}
tbody {
margin-top: 0.5em;
border-top: 1px solid #1a1a1a;
border-bottom: 1px solid #1a1a1a;
}
th {
border-top: 1px solid #1a1a1a;
padding: 0.25em 0.5em 0.25em 0.5em;
}
td {
padding: 0.125em 0.5em 0.25em 0.5em;
}
header {
margin-bottom: 4em;
text-align: center;
}
#TOC li {
list-style: none;
}
#TOC ul {
padding-left: 1.3em;
}
#TOC > ul {
padding-left: 0;
}
#TOC a:not(:hover) {
text-decoration: none;
}
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
div.columns{display: flex; gap: min(4vw, 1.5em);}
div.column{flex: auto; overflow-x: auto;}
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
/* The extra [class] is a hack that increases specificity enough to
override a similar rule in reveal.js */
ul.task-list[class]{list-style: none;}
ul.task-list li input[type="checkbox"] {
font-size: inherit;
width: 0.8em;
margin: 0 0.8em 0.2em -1.6em;
vertical-align: middle;
}
.display.math{display: block; text-align: center; margin: 0.5rem auto;}
</style>
</head>
<body>
<header id="title-block-header">
<h1 class="title">cipherbliss_blog</h1>
</header>
<h1 id="article">Article</h1>
<ul>
<li>ID: 365</li>
<li>guid:</li>
<li>status: publish</li>
<li>publié le: &lt;2016-12-26 17:42:42&gt;</li>
<li>modifié: &lt;2016-12-27 14:02:20&gt;</li>
<li>Index des articles du blog <a
href="id:39e91a2e-d003-4acd-a99a-b58dca74df77">Cipherbliss blog</a></li>
</ul>
<h2 id="faire-ses-factures-avec-libreoffice-ou-google-sheet-1">faire ses
factures avec libreOffice ou google sheet</h2>
<p><a
href="https://www.libreoffice.org/download/libreoffice-fresh/"><strong>Libre
office</strong></a> est la suite bureautique gratuite fournie de base
sur ubuntu et disponible pour toutes les plateformes. Si comme moi vous
avez longtemps galéré a trouver le logiciel ultime pour faire des
factures un tant soit peu sérieuses, sachez qu'il est tout a fait
valable d'utiliser un simple tableur capable d'exporter en pdf ses
fichiers. Faire des factures constitue des calculs simples mais relou à
reporter dans un fichier. Pour une AE ça va, mais quand vous changez de
structure pour une SARL ou une EIRL, ou une EI, ou une SAS, ou JEEJ,
vous aurez sans doute a faire de savants calculs de TVA. D'aucuns vous
diraient d'investir dans des service de comptabilité en ligne, mais vous
pouvez faire déjà énormément de choses avec un seul fichier de calcul.
Faire ses feuilles de calcul n'exclue pas de faire appel à un pro de la
comptabilité, c'est d'ailleurs ce que je fais régulièrement et c'est
ultra conseillé dès qu'on a une structure qui sort de l'auto entreprise.
Si vous êtes en AE, ça pourrait aussi vous servir. Dans tous les cas
commencez à trier vos paperasses administratives minutieusement sur
votre ordi, et faites vraiment des backups. Ce que j'ai donc fait c'est
un fichier de calcul sur <a
href="https://www.google.com/sheets/about/"><strong>google
sheets</strong></a> afin de pouvoir le modifier de plusieurs gens à la
fois, mais surtout de plusieurs endroits différents avec de merveilleux
graphiques et l'exporter en format ouvert .odt , lisible par libre
office par exemple. Ce fichier contient plusieurs feuilles dont chacune
a un seul but:</p>
<ul>
<li>statistifier mes dépenses perso et pro sur le long terme (en
utilisant les cellules des autres feuilles du classeur)</li>
<li>compter mes kilomètres parcourus au nom de mon activité</li>
<li>compter mes déjeuners</li>
<li>compter mes factures</li>
<li>mes paiements trimestriels à l'URSSAF</li>
<li>mes achats au nom de l'entreprise</li>
<li>prévoir la disponibilité de ma trésorerie sur le long terme en
majorant mes dépenses moyennes</li>
<li>exporter une facture en pdf.</li>
</ul>
<p>On va surtout s'intéresser aujourd'hui au contenu de la feuille
permettant de remplir les infos pour faire les factures et les envoyer à
votre client avant la fin du mois. les lignes se présentent ainsi:</p>
<table>
<tbody>
<tr class="odd">
<td>objet</td>
<td>N° client dans l'année</td>
<td>majuscule de clients</td>
<td>commentaire</td>
<td>tarif jour HT</td>
<td>tarif jour TTC</td>
<td>jours facturés</td>
<td>congés</td>
<td>jours ouvrés</td>
<td>date start</td>
<td>date end</td>
<td>ce mois</td>
<td>à venir</td>
<td>HT</td>
<td>TVA</td>
<td>TTC</td>
<td>prévu</td>
<td>fait</td>
<td>reçu</td>
<td>retard</td>
<td>val charges</td>
<td>facture envoyée le</td>
<td>délai jours</td>
<td>attendu</td>
<td>reçu</td>
<td>diff date</td>
<td>mois</td>
<td>trimestre</td>
<td>n° facture</td>
<td>moyen</td>
</tr>
</tbody>
</table>
<p>Dans cette première feuille, une ligne correspond à une facture.
Petite subtilité chez google drive, les dates ne sont pas écrites de
façon classique (croissante) jour/mois/année , mais de façon bourrée
dégueulasse signée Murica mois/jour/année. Quelques fonctions vachement
bien (/à chaque fois je vous donne la version google sheet, puis la
version libre office en français si c'est différent, qui traduit aussi
ses fonctions et a quelques différences de notation, notamment des
virgules qui deviennent des points virgules, et des noms de fonctions
découpées par des points/): <strong>Avoir le nombre de jours
ouvrés</strong> entre deux choix dans la date:</p>
<blockquote>
<p>=NETWORKDAYS( date<sub>début</sub>, date<sub>fin</sub> )
=NB.JOURS.OUVRES( date<sub>début</sub> ; date<sub>fin</sub>)</p>
</blockquote>
<p><strong>Utiliser SI, pour ne pas avoir des cases provoquant des
erreurs.</strong> par exemple si on a des jours ouvrés à facturer,
calculer le tarif hors taxes, sinon afficher du vide.</p>
<blockquote>
<p>=IF( nombre<sub>dejoursouvrés</sub> ,
nombre<sub>dejoursouvrés</sub>*tarif<sub>jourhorstaxes</sub> , "")</p>
<p>=SI( nombre<sub>dejoursouvrés</sub> ,
nombre<sub>dejoursouvrés</sub>*tarif<sub>jourhorstaxes</sub> , "")</p>
</blockquote>
<p><strong>Calculer la date prévue d'arrivée du paiement</strong> est
plus facile que ce qu'on pourrait croire. Enfin, une fois le calcul fait
il reste a bien formater le résultat sous forme de date.</p>
<blockquote>
<p>=date<sub>envoi</sub>+délai<sub>paiementenjours</sub></p>
</blockquote>
<p>N'oubliez pas qu'un délai de paiement est toujours un truc
négociable, qu'il est en moyenne de 30 jours continus (c'est pas pareil
que des jours ouvrés) après l'envoi de votre facture à la fin du mois
ouvré. Mais il peut aussi plus étendu jusqu'à 60 jours, ou être bien
plus rapide: "à date", voire être réglé en partie ou en totalité (plus
rare) en avance. Il arrive par exemple que je demande 30% d'avance pour
des missions très courtes. <strong>Ajouter 20% au tarif hors
taxes</strong> (ma TVA reste a 20% car je fais de la prestation de
service, et non de la vente de marchandises)</p>
<blockquote>
<p>=tarif<sub>ht</sub>+tarif<sub>ht</sub>*0.2</p>
</blockquote>
<p>Voilà, avec ça vous avez déjà tout ce qu'il vous faut pour faire des
lignes de facture. Plus complexe, on va <strong>trouver le trimestre
correspondant à la date de réception d'un paiement</strong> pour une
facture.</p>
<blockquote>
<p>=ROUNDUP( MONTH(date<sub>reception</sub>)/3,0 ) =ARRONDI.SUP(
MOIS(date<sub>reception</sub>)/3;0 )</p>
</blockquote>
<p>Avec ce trimestre on va ensuite pouvoir faire des sommes
conditionnelles des paiements reçus par trimestre avec la fonction
Somme.si.</p>
<p>=SUMIF( plage<sub>pourcritère</sub> ; critère ;
plage<sub>desommesicritèrevrai</sub> )</p>
<p>=SOMME.SI( plage<sub>pourcritère</sub> ; critère ;
plage<sub>desommesicritèrevrai</sub> )</p>
<p>Faites gaffe à ne pas utiliser la même colonne pour la date
d'estimation de la réception et la réception réelle. Vous pourrez ainsi
déduire les retards de paiement et savoir à qui vous devez mener la vie
dure facilement et faire valoir vos <a
href="https://www.service-public.fr/professionnels-entreprises/vosdroits/F23211">indemnités
de retard au tarif légal</a>. (Ne bossez jamais avec de mauvais payeurs.
Indiquez clairement la date d'exigibilité sur vos factures, car des
surplus pour cause de retard, l'URSSAF ne se gênera pas de vous en
donner) Pour mettre à jour le contenu de cette feuille j'ai utilisé
plusieurs fonctions qui font références a des concaténations de contenus
d'autres cellules afin de faire par exemple, une phrase rassemblant
"facture n°" et le n° de la ligne dont je souhaite exporter une
facture.</p>
<blockquote>
<p>si F1 est le numéro de facture contenant 1234 =CONCATENATE("Facture
n° ",F1) =CONCATENER("Facture n° ";F1) cela vaut facture n° 1234</p>
</blockquote>
<p>Mettons que la ligne de ma facture à faire pour ce mois ci soit la
42e sur ma feuille nommée compta. Je dois donc placer dans ma facture
une référence vers le tarif TTC total de la ligne 42, qui se trouve donc
dans la cellule T42. Mais comme je suis dans une autre feuille il faut
dire aussi dans quelle feuille prendre notre numéro de cellule.</p>
<blockquote>
<p>="compta!T42" ="compta.T42"</p>
</blockquote>
<p>Mais je devrai aussi l'écrire pour les autres mentions obligatoires
d'une facture. la quantité de jours ouvrés, le tarif hors taxes, le
tarif ttc, la tva, le total hors taxe, la date du jour… =TODAY()
=AUJOURDHUI() Mais ce serait un peu trop fatiguant de modifier une
dizaine de références à chaque fois que je veux faire une facture. j'ai
donc utilisé la fonction INDIRECT() afin de variabiliser les références
dans ces formules dans ma facture. de cette façon je n'ai qu'une seule
cellule à mettre à jour pour changer toutes les références de ma
facture. Pour cela je me fais une cellule remplie de la ligne de la
facture que je veux réaliser, je prends une case, L1, et je mets
dedans</p>
<ol>
<li>Ensuite, avec indirect() je vais pouvoir utiliser le résultat
de</li>
</ol>
<p>cette cellule pour fabriquer une formule. Je n'aurai plus qu'a réunir
<em>compta!T</em> et <em>42</em> pour obtenir le résultat de
<em>compta!T42.</em></p>
<blockquote>
<p>=INDIRECT(CONCATENATE("compta!T", L1)) ce qui calculera:
="compta!T42"</p>
</blockquote>
<p>et si je change la case avec marqué 42 dedans en 43 pour voir la
facture suivante, ça calculera</p>
<blockquote>
<p>="compta!T43"</p>
</blockquote>
<p>nickel non? Vous pouvez aussi faire les choses encore plus proprement
en créant une feuille exprès pour ces calculs à placer dans la facture
pour ne pas encombrer la page de facture. Il ne reste plus qu'a faire
"fichier &gt; exporter en pdf" et choisir de limiter a la feuille
courante (celle de la facture) cacher le quadrillage dans les options
d'export, choisir l'orientation en portrait pour avoir votre facture
toute belle toute calculée les doigts dans le nez. Bon, il faudra sans
doute que vous joueiez sur les tailles des cellules afin de remplir une
feuille A4 pour que ça soit propre, mais à tâtons d'exportation vous y
arriverez en deux minutes maxi. Et si vous êtes un warrior des feuilles
de calcul vous pouvez auto remplir la ligne désignant la facture selon
la date courante en utilisant des comparaisons entre TODAY() et les
dates de début et de fin des jours ouvrés. Joyeux noël!</p>
<h1 id="liens">Liens</h1>
<ul>
<li>cipherbliss <a
href="id:d14d8051-bbb9-4279-a574-84d78bfe5b66">Cipherbliss blog</a></li>
</ul>
</body>
</html>
<footer><hr/><a href='/'>Retour à l'Accueil</a></footer></body>
</html>

View file

@ -1,223 +0,0 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<title>cipherbliss_blog</title>
<style type='text/css'>{css_content}</style><link type='stylesheet/css' href='/style.css'></link></head>
<body>
<a href='/'>Retour à l'Accueil</a><hr/><!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="">
<head>
<meta charset="utf-8" />
<meta name="generator" content="pandoc" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
<title>cipherbliss_blog</title>
<style>
html {
color: #1a1a1a;
background-color: #fdfdfd;
}
body {
margin: 0 auto;
max-width: 36em;
padding-left: 50px;
padding-right: 50px;
padding-top: 50px;
padding-bottom: 50px;
hyphens: auto;
overflow-wrap: break-word;
text-rendering: optimizeLegibility;
font-kerning: normal;
}
@media (max-width: 600px) {
body {
font-size: 0.9em;
padding: 12px;
}
h1 {
font-size: 1.8em;
}
}
@media print {
html {
background-color: white;
}
body {
background-color: transparent;
color: black;
font-size: 12pt;
}
p, h2, h3 {
orphans: 3;
widows: 3;
}
h2, h3, h4 {
page-break-after: avoid;
}
}
p {
margin: 1em 0;
}
a {
color: #1a1a1a;
}
a:visited {
color: #1a1a1a;
}
img {
max-width: 100%;
}
h1, h2, h3, h4, h5, h6 {
margin-top: 1.4em;
}
h5, h6 {
font-size: 1em;
font-style: italic;
}
h6 {
font-weight: normal;
}
ol, ul {
padding-left: 1.7em;
margin-top: 1em;
}
li > ol, li > ul {
margin-top: 0;
}
blockquote {
margin: 1em 0 1em 1.7em;
padding-left: 1em;
border-left: 2px solid #e6e6e6;
color: #606060;
}
code {
font-family: Menlo, Monaco, Consolas, 'Lucida Console', monospace;
font-size: 85%;
margin: 0;
hyphens: manual;
}
pre {
margin: 1em 0;
overflow: auto;
}
pre code {
padding: 0;
overflow: visible;
overflow-wrap: normal;
}
.sourceCode {
background-color: transparent;
overflow: visible;
}
hr {
background-color: #1a1a1a;
border: none;
height: 1px;
margin: 1em 0;
}
table {
margin: 1em 0;
border-collapse: collapse;
width: 100%;
overflow-x: auto;
display: block;
font-variant-numeric: lining-nums tabular-nums;
}
table caption {
margin-bottom: 0.75em;
}
tbody {
margin-top: 0.5em;
border-top: 1px solid #1a1a1a;
border-bottom: 1px solid #1a1a1a;
}
th {
border-top: 1px solid #1a1a1a;
padding: 0.25em 0.5em 0.25em 0.5em;
}
td {
padding: 0.125em 0.5em 0.25em 0.5em;
}
header {
margin-bottom: 4em;
text-align: center;
}
#TOC li {
list-style: none;
}
#TOC ul {
padding-left: 1.3em;
}
#TOC > ul {
padding-left: 0;
}
#TOC a:not(:hover) {
text-decoration: none;
}
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
div.columns{display: flex; gap: min(4vw, 1.5em);}
div.column{flex: auto; overflow-x: auto;}
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
/* The extra [class] is a hack that increases specificity enough to
override a similar rule in reveal.js */
ul.task-list[class]{list-style: none;}
ul.task-list li input[type="checkbox"] {
font-size: inherit;
width: 0.8em;
margin: 0 0.8em 0.2em -1.6em;
vertical-align: middle;
}
.display.math{display: block; text-align: center; margin: 0.5rem auto;}
</style>
</head>
<body>
<header id="title-block-header">
<h1 class="title">cipherbliss_blog</h1>
</header>
<h1 id="article">Article</h1>
<ul>
<li>ID: 187</li>
<li>guid:</li>
<li>status: publish</li>
<li>publié le: &lt;2016-07-26 20:48:35&gt;</li>
<li>modifié: &lt;2016-08-19 10:53:01&gt;</li>
<li>Index des articles du blog <a
href="id:39e91a2e-d003-4acd-a99a-b58dca74df77">Cipherbliss blog</a></li>
</ul>
<h2 id="la-galaxie-des-fanzines-1">la galaxie des fanzines</h2>
<p><a
href="https://tykayn.fr/wp-content/uploads/i/2016/fanzines_melu.png?1395265948918018947">[[<span>https://tykayn.fr/wp-content/uploads/i/2016/.fanzines_melu_m.png?652419532881844912</span></a>]]
Je me suis essayé à la visualisation de données avec Gephi, un logiciel
libre connu pour être le photoshop de la DataViz, tout en étant gratuit.
J'en ai profité d'avoir la main sur la base de données de fanzines de <a
href="www.meluzine.org">file:www.meluzine.org</a> pour proposer des
exportations en csv, un format de feuille de calcul ouverte (lisible
avec Libre Office par exemple). Après avoir suivi le rapide tour
d'horizon de la doc officielle, j'ai rajouté une colonne Souce, et une
colonne Target à l'export de la page de fanzines pour faire des liens
entre les noms des associations et les titres des fanzines. Quelques
ajustements de couleur par propriété sur les liens, la taille des labels
correspond aux séries de fanzines ayant plein de titres en commun avec
les autres (donc en tête de file des titres de numéros de fanzines, le
nom "1", puis le nom "2", puis "3", etc…) Les liens entre les noeuds en
vert représentent les fanzines toujours disponible, et en rouge ceux qui
sont épuisés. Les tas de liens forment des petites galaxies rapprochées
par des choses communes entre les fanzines, telles que leur prix et leur
nombre de pages, non affichés pour ne pas alourdir la visualisation.
Cette infographie montre qu'il y a une bonne partie de rouge, surtout
sur les séries extérieures. Ce qu'on ne voit pas ici c'est que moins
d'un pour cent des fanzines enregistrés sont sortis cette année. Et 9%
sont sortis en 1991, première année de production du site. Donc, si vous
êtes un fanzineux, inscrivez vos productions en créant un compte sur <a
href="www.meluzine.org">file:www.meluzine.org</a> :) Enjoy!</p>
<h1 id="liens">Liens</h1>
<ul>
<li>cipherbliss <a
href="id:d14d8051-bbb9-4279-a574-84d78bfe5b66">Cipherbliss blog</a></li>
</ul>
</body>
</html>
<footer><hr/><a href='/'>Retour à l'Accueil</a></footer></body>
</html>

View file

@ -1,252 +0,0 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<title>cipherbliss_blog</title>
<style type='text/css'>{css_content}</style><link type='stylesheet/css' href='/style.css'></link></head>
<body>
<a href='/'>Retour à l'Accueil</a><hr/><!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="">
<head>
<meta charset="utf-8" />
<meta name="generator" content="pandoc" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
<title>cipherbliss_blog</title>
<style>
html {
color: #1a1a1a;
background-color: #fdfdfd;
}
body {
margin: 0 auto;
max-width: 36em;
padding-left: 50px;
padding-right: 50px;
padding-top: 50px;
padding-bottom: 50px;
hyphens: auto;
overflow-wrap: break-word;
text-rendering: optimizeLegibility;
font-kerning: normal;
}
@media (max-width: 600px) {
body {
font-size: 0.9em;
padding: 12px;
}
h1 {
font-size: 1.8em;
}
}
@media print {
html {
background-color: white;
}
body {
background-color: transparent;
color: black;
font-size: 12pt;
}
p, h2, h3 {
orphans: 3;
widows: 3;
}
h2, h3, h4 {
page-break-after: avoid;
}
}
p {
margin: 1em 0;
}
a {
color: #1a1a1a;
}
a:visited {
color: #1a1a1a;
}
img {
max-width: 100%;
}
h1, h2, h3, h4, h5, h6 {
margin-top: 1.4em;
}
h5, h6 {
font-size: 1em;
font-style: italic;
}
h6 {
font-weight: normal;
}
ol, ul {
padding-left: 1.7em;
margin-top: 1em;
}
li > ol, li > ul {
margin-top: 0;
}
blockquote {
margin: 1em 0 1em 1.7em;
padding-left: 1em;
border-left: 2px solid #e6e6e6;
color: #606060;
}
code {
font-family: Menlo, Monaco, Consolas, 'Lucida Console', monospace;
font-size: 85%;
margin: 0;
hyphens: manual;
}
pre {
margin: 1em 0;
overflow: auto;
}
pre code {
padding: 0;
overflow: visible;
overflow-wrap: normal;
}
.sourceCode {
background-color: transparent;
overflow: visible;
}
hr {
background-color: #1a1a1a;
border: none;
height: 1px;
margin: 1em 0;
}
table {
margin: 1em 0;
border-collapse: collapse;
width: 100%;
overflow-x: auto;
display: block;
font-variant-numeric: lining-nums tabular-nums;
}
table caption {
margin-bottom: 0.75em;
}
tbody {
margin-top: 0.5em;
border-top: 1px solid #1a1a1a;
border-bottom: 1px solid #1a1a1a;
}
th {
border-top: 1px solid #1a1a1a;
padding: 0.25em 0.5em 0.25em 0.5em;
}
td {
padding: 0.125em 0.5em 0.25em 0.5em;
}
header {
margin-bottom: 4em;
text-align: center;
}
#TOC li {
list-style: none;
}
#TOC ul {
padding-left: 1.3em;
}
#TOC > ul {
padding-left: 0;
}
#TOC a:not(:hover) {
text-decoration: none;
}
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
div.columns{display: flex; gap: min(4vw, 1.5em);}
div.column{flex: auto; overflow-x: auto;}
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
/* The extra [class] is a hack that increases specificity enough to
override a similar rule in reveal.js */
ul.task-list[class]{list-style: none;}
ul.task-list li input[type="checkbox"] {
font-size: inherit;
width: 0.8em;
margin: 0 0.8em 0.2em -1.6em;
vertical-align: middle;
}
.display.math{display: block; text-align: center; margin: 0.5rem auto;}
</style>
</head>
<body>
<header id="title-block-header">
<h1 class="title">cipherbliss_blog</h1>
</header>
<h1 id="article">Article</h1>
<ul>
<li>ID: 188</li>
<li>guid:</li>
<li>status: publish</li>
<li>publié le: &lt;2016-07-26 09:26:48&gt;</li>
<li>modifié: &lt;2016-09-06 21:52:35&gt;</li>
<li>Index des articles du blog <a
href="id:39e91a2e-d003-4acd-a99a-b58dca74df77">Cipherbliss blog</a></li>
</ul>
<h2 id="ubuntu-party-15.10">ubuntu party 15.10</h2>
<p><img
src="https://www.cipherbliss.com/wp-content/uploads/2016/07/DSC09195-1024x768.jpg" />Y'a
pas longtemps j'ai découvert les Ubuntu Party de Paris. C'est super
sympa et convivial. J'étais étonné de voir que les install party
pouvaient ameuter autant de gens, et surtout, pas seulement des mecs
barbus. Justement y'a une grande diversité d'interessés par la culture
du libre et ubuntu. La communauté est inclusive et c'est super cool!
<img
src="https://www.cipherbliss.com/wp-content/uploads/2016/07/notion_geek-1024x554.jpg" />
J'ai bien aimé la conférence d'Androsème sur le sacré et le profane.
Elle y réfléchit à la notion de geek, on y voit comment ce concept est
exclusif des profanes, et ce qui se passe lorsque le profane essaie de
toucher au sacré. On y voit aussi comment le harcèlement en ligne est
rendu possible via facebook et autres choses, mais que ça ne tient pas
spécifiquement aux outils en ligne et qu'on retrouve ces comportements
d'exclusion hors ligne. <a
href="https://twitter.com/androseme">https://twitter.com/androseme</a>
<img
src="https://www.cipherbliss.com/wp-content/uploads/2016/07/harcelement_sacre_profane-1024x554.jpg" />
La conférence interactive sur le projet Do Not Track d'Arte était super
bien pour expliquer les enjeux de l'espionnage de masse légalisé, on y a
vu qu'avoir des choses à cacher est parfaitement naturel et n'est pas
réservé aux gens louches. Le suivi de toutes vos données vaut de l'or,
vous devez vous protéger vous même ainsi que les personnes avec qui vous
communiquez. Surtout que dans ces histoires de suivi vous n'avez pas
autorité pour savoir ce qui est retenu contre vous, qui détient ces
informations, pour combien de temps, ce qui en sera fait, et à fortiori
dans les mains de qui elles tomberont par inadvertance. vous ne
manquerez pas d'en entendre parler dans les mois qui suivent. <a
href="https://donottrack-doc.com/fr/">https://donottrack-doc.com/fr/</a>
<img
src="https://www.cipherbliss.com/wp-content/uploads/2016/07/internet_des_objets-1024x565.jpg" />
Il y a eu aussi une conférence sur Mycroft, un projet ouvert
d'intelligence artificielle ayant pour but d'être installée dans des
objets. un projet qui a l'air vachement chouette, et compatible Arduino
entre autre. de quoi fabriquer mille bidules utiles ou simplement pour
le plaisir d'apprendre comment fonctionnent les choses. <a
href="https://github.com/MycroftAI/mycroft-core"><span>https://github.com/MycroftAI/mycrof</span></a><a
href="https://github.com/MycroftAI/mycroft-core">[[<span>https://www.cipherbliss.com/wp-content/uploads/2016/07/internet_objets_mycroft-1024x565.jpg</span></a>]]
Donc wouala, ubuntu party ce sont des évènements à la cité des sciences
de paris qui se produisent deux fois par an, pour chaque sortie de
version d'ubuntu. en Octobre et en Avril. Vous pouvez y venir avec vos
parents et leur faire essayer le système dans sa version la plus
récente. N'oubliez pas de faire une sauvegarde de vos fichiers sur un
disque externe avant, par précaution ;) Perso, ubuntu 15.10 installé sur
mon vieux EeePC 1005HA a permis de lui redonner une certaine jeunesse,
nickel pour faire du développement arduino sans se trimballer un gros
ordi. Et surtout, il a une autonomie incroyable pour un ordi de 2009, on
peut bien le laisser allumé 6 heures et bidouiller dessus sans avoir à
le brancher. suivez la communauté ubuntu-fr sur twouiteur :3 <a
href="https://twitter.com/ubuntuparty">https://twitter.com/ubuntuparty</a>
Retrouvez les vidéos des conférences ubuntu party sur le site officiel
:) <a
href="https://media.ubuntu-paris.org/">https://media.ubuntu-paris.org/</a></p>
<h1 id="liens">Liens</h1>
<ul>
<li>cipherbliss <a
href="id:d14d8051-bbb9-4279-a574-84d78bfe5b66">Cipherbliss blog</a></li>
</ul>
</body>
</html>
<footer><hr/><a href='/'>Retour à l'Accueil</a></footer></body>
</html>

View file

@ -1,217 +0,0 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<title>cipherbliss_blog</title>
<style type='text/css'>{css_content}</style><link type='stylesheet/css' href='/style.css'></link></head>
<body>
<a href='/'>Retour à l'Accueil</a><hr/><!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="">
<head>
<meta charset="utf-8" />
<meta name="generator" content="pandoc" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
<title>cipherbliss_blog</title>
<style>
html {
color: #1a1a1a;
background-color: #fdfdfd;
}
body {
margin: 0 auto;
max-width: 36em;
padding-left: 50px;
padding-right: 50px;
padding-top: 50px;
padding-bottom: 50px;
hyphens: auto;
overflow-wrap: break-word;
text-rendering: optimizeLegibility;
font-kerning: normal;
}
@media (max-width: 600px) {
body {
font-size: 0.9em;
padding: 12px;
}
h1 {
font-size: 1.8em;
}
}
@media print {
html {
background-color: white;
}
body {
background-color: transparent;
color: black;
font-size: 12pt;
}
p, h2, h3 {
orphans: 3;
widows: 3;
}
h2, h3, h4 {
page-break-after: avoid;
}
}
p {
margin: 1em 0;
}
a {
color: #1a1a1a;
}
a:visited {
color: #1a1a1a;
}
img {
max-width: 100%;
}
h1, h2, h3, h4, h5, h6 {
margin-top: 1.4em;
}
h5, h6 {
font-size: 1em;
font-style: italic;
}
h6 {
font-weight: normal;
}
ol, ul {
padding-left: 1.7em;
margin-top: 1em;
}
li > ol, li > ul {
margin-top: 0;
}
blockquote {
margin: 1em 0 1em 1.7em;
padding-left: 1em;
border-left: 2px solid #e6e6e6;
color: #606060;
}
code {
font-family: Menlo, Monaco, Consolas, 'Lucida Console', monospace;
font-size: 85%;
margin: 0;
hyphens: manual;
}
pre {
margin: 1em 0;
overflow: auto;
}
pre code {
padding: 0;
overflow: visible;
overflow-wrap: normal;
}
.sourceCode {
background-color: transparent;
overflow: visible;
}
hr {
background-color: #1a1a1a;
border: none;
height: 1px;
margin: 1em 0;
}
table {
margin: 1em 0;
border-collapse: collapse;
width: 100%;
overflow-x: auto;
display: block;
font-variant-numeric: lining-nums tabular-nums;
}
table caption {
margin-bottom: 0.75em;
}
tbody {
margin-top: 0.5em;
border-top: 1px solid #1a1a1a;
border-bottom: 1px solid #1a1a1a;
}
th {
border-top: 1px solid #1a1a1a;
padding: 0.25em 0.5em 0.25em 0.5em;
}
td {
padding: 0.125em 0.5em 0.25em 0.5em;
}
header {
margin-bottom: 4em;
text-align: center;
}
#TOC li {
list-style: none;
}
#TOC ul {
padding-left: 1.3em;
}
#TOC > ul {
padding-left: 0;
}
#TOC a:not(:hover) {
text-decoration: none;
}
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
div.columns{display: flex; gap: min(4vw, 1.5em);}
div.column{flex: auto; overflow-x: auto;}
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
/* The extra [class] is a hack that increases specificity enough to
override a similar rule in reveal.js */
ul.task-list[class]{list-style: none;}
ul.task-list li input[type="checkbox"] {
font-size: inherit;
width: 0.8em;
margin: 0 0.8em 0.2em -1.6em;
vertical-align: middle;
}
.display.math{display: block; text-align: center; margin: 0.5rem auto;}
</style>
</head>
<body>
<header id="title-block-header">
<h1 class="title">cipherbliss_blog</h1>
</header>
<h1 id="article">Article</h1>
<ul>
<li>ID: 189</li>
<li>guid:</li>
<li>status: publish</li>
<li>publié le: &lt;2016-07-26 08:47:00&gt;</li>
<li>modifié: &lt;2016-08-24 14:23:30&gt;</li>
<li>Index des articles du blog <a
href="id:39e91a2e-d003-4acd-a99a-b58dca74df77">Cipherbliss blog</a></li>
</ul>
<h2 id="exporter-une-visualisation-de-son-schéma-sql">exporter une
visualisation de son schéma SQL</h2>
<p><a
href="https://nsaunders.files.wordpress.com/2009/01/bio.png?w=300&amp;h=129">https://nsaunders.files.wordpress.com/2009/01/bio.png?w=300&amp;h=129</a>
Vous voulez visualiser les relations entre vos tables SQL assez
facilement? vous pouvez le faire avec phpmyadmin, ou en ligne de
commande avec un dump de votre base (en exportant seulement le schéma,
sans données)</p>
<pre class="example"><code>#! /bin/bash DBNAME = $1; FILENAME = $2; mysqldump $DBNAME $(mysql -D DBNAME -Bse &quot;show tables like &#39;wp_%&#39;&quot;) &gt; FILENAME.sql
</code></pre>
<p>Vous pouvez utiliser SQLfairy sur votre dump de base pour en sortir
un png.</p>
<pre class="example"><code>sudo apt-get install sqlfairy
</code></pre>
<p> </p>
<pre class="example"><code>sqlt-graph -f MySQL -o mydatabase.png -t png FILENAME.sql
</code></pre>
<p>astuce trouvée sur <a
href="https://nsaunders.wordpress.com/2009/01/11/easy-visualisation-of-database-schemas-using-sqlfairy">ce
post de nsaunders</a></p>
<h1 id="liens">Liens</h1>
<ul>
<li>cipherbliss <a
href="id:d14d8051-bbb9-4279-a574-84d78bfe5b66">Cipherbliss blog</a></li>
</ul>
</body>
</html>
<footer><hr/><a href='/'>Retour à l'Accueil</a></footer></body>
</html>

View file

@ -1,199 +0,0 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<title>cipherbliss_blog</title>
<style type='text/css'>{css_content}</style><link type='stylesheet/css' href='/style.css'></link></head>
<body>
<a href='/'>Retour à l'Accueil</a><hr/><!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="">
<head>
<meta charset="utf-8" />
<meta name="generator" content="pandoc" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
<title>cipherbliss_blog</title>
<style>
html {
color: #1a1a1a;
background-color: #fdfdfd;
}
body {
margin: 0 auto;
max-width: 36em;
padding-left: 50px;
padding-right: 50px;
padding-top: 50px;
padding-bottom: 50px;
hyphens: auto;
overflow-wrap: break-word;
text-rendering: optimizeLegibility;
font-kerning: normal;
}
@media (max-width: 600px) {
body {
font-size: 0.9em;
padding: 12px;
}
h1 {
font-size: 1.8em;
}
}
@media print {
html {
background-color: white;
}
body {
background-color: transparent;
color: black;
font-size: 12pt;
}
p, h2, h3 {
orphans: 3;
widows: 3;
}
h2, h3, h4 {
page-break-after: avoid;
}
}
p {
margin: 1em 0;
}
a {
color: #1a1a1a;
}
a:visited {
color: #1a1a1a;
}
img {
max-width: 100%;
}
h1, h2, h3, h4, h5, h6 {
margin-top: 1.4em;
}
h5, h6 {
font-size: 1em;
font-style: italic;
}
h6 {
font-weight: normal;
}
ol, ul {
padding-left: 1.7em;
margin-top: 1em;
}
li > ol, li > ul {
margin-top: 0;
}
blockquote {
margin: 1em 0 1em 1.7em;
padding-left: 1em;
border-left: 2px solid #e6e6e6;
color: #606060;
}
code {
font-family: Menlo, Monaco, Consolas, 'Lucida Console', monospace;
font-size: 85%;
margin: 0;
hyphens: manual;
}
pre {
margin: 1em 0;
overflow: auto;
}
pre code {
padding: 0;
overflow: visible;
overflow-wrap: normal;
}
.sourceCode {
background-color: transparent;
overflow: visible;
}
hr {
background-color: #1a1a1a;
border: none;
height: 1px;
margin: 1em 0;
}
table {
margin: 1em 0;
border-collapse: collapse;
width: 100%;
overflow-x: auto;
display: block;
font-variant-numeric: lining-nums tabular-nums;
}
table caption {
margin-bottom: 0.75em;
}
tbody {
margin-top: 0.5em;
border-top: 1px solid #1a1a1a;
border-bottom: 1px solid #1a1a1a;
}
th {
border-top: 1px solid #1a1a1a;
padding: 0.25em 0.5em 0.25em 0.5em;
}
td {
padding: 0.125em 0.5em 0.25em 0.5em;
}
header {
margin-bottom: 4em;
text-align: center;
}
#TOC li {
list-style: none;
}
#TOC ul {
padding-left: 1.3em;
}
#TOC > ul {
padding-left: 0;
}
#TOC a:not(:hover) {
text-decoration: none;
}
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
div.columns{display: flex; gap: min(4vw, 1.5em);}
div.column{flex: auto; overflow-x: auto;}
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
/* The extra [class] is a hack that increases specificity enough to
override a similar rule in reveal.js */
ul.task-list[class]{list-style: none;}
ul.task-list li input[type="checkbox"] {
font-size: inherit;
width: 0.8em;
margin: 0 0.8em 0.2em -1.6em;
vertical-align: middle;
}
.display.math{display: block; text-align: center; margin: 0.5rem auto;}
</style>
</head>
<body>
<header id="title-block-header">
<h1 class="title">cipherbliss_blog</h1>
</header>
<h1 id="article">Article</h1>
<ul>
<li>ID: 190</li>
<li>guid:</li>
<li>status: publish</li>
<li>publié le: &lt;2016-07-26 08:27:22&gt;</li>
<li>modifié: &lt;2016-07-26 08:32:32&gt;</li>
<li>Index des articles du blog <a
href="id:39e91a2e-d003-4acd-a99a-b58dca74df77">Cipherbliss blog</a></li>
</ul>
<h2 id="le-dysoon-de-djo-1">le dysoon de djo</h2>
<p>Quel déconneur ce Djo :D</p>
<h1 id="liens">Liens</h1>
<ul>
<li>cipherbliss <a
href="id:d14d8051-bbb9-4279-a574-84d78bfe5b66">Cipherbliss blog</a></li>
</ul>
</body>
</html>
<footer><hr/><a href='/'>Retour à l'Accueil</a></footer></body>
</html>

View file

@ -1,287 +0,0 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<title>cipherbliss_blog</title>
<style type='text/css'>{css_content}</style><link type='stylesheet/css' href='/style.css'></link></head>
<body>
<a href='/'>Retour à l'Accueil</a><hr/><!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="">
<head>
<meta charset="utf-8" />
<meta name="generator" content="pandoc" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
<title>cipherbliss_blog</title>
<style>
html {
color: #1a1a1a;
background-color: #fdfdfd;
}
body {
margin: 0 auto;
max-width: 36em;
padding-left: 50px;
padding-right: 50px;
padding-top: 50px;
padding-bottom: 50px;
hyphens: auto;
overflow-wrap: break-word;
text-rendering: optimizeLegibility;
font-kerning: normal;
}
@media (max-width: 600px) {
body {
font-size: 0.9em;
padding: 12px;
}
h1 {
font-size: 1.8em;
}
}
@media print {
html {
background-color: white;
}
body {
background-color: transparent;
color: black;
font-size: 12pt;
}
p, h2, h3 {
orphans: 3;
widows: 3;
}
h2, h3, h4 {
page-break-after: avoid;
}
}
p {
margin: 1em 0;
}
a {
color: #1a1a1a;
}
a:visited {
color: #1a1a1a;
}
img {
max-width: 100%;
}
h1, h2, h3, h4, h5, h6 {
margin-top: 1.4em;
}
h5, h6 {
font-size: 1em;
font-style: italic;
}
h6 {
font-weight: normal;
}
ol, ul {
padding-left: 1.7em;
margin-top: 1em;
}
li > ol, li > ul {
margin-top: 0;
}
blockquote {
margin: 1em 0 1em 1.7em;
padding-left: 1em;
border-left: 2px solid #e6e6e6;
color: #606060;
}
code {
font-family: Menlo, Monaco, Consolas, 'Lucida Console', monospace;
font-size: 85%;
margin: 0;
hyphens: manual;
}
pre {
margin: 1em 0;
overflow: auto;
}
pre code {
padding: 0;
overflow: visible;
overflow-wrap: normal;
}
.sourceCode {
background-color: transparent;
overflow: visible;
}
hr {
background-color: #1a1a1a;
border: none;
height: 1px;
margin: 1em 0;
}
table {
margin: 1em 0;
border-collapse: collapse;
width: 100%;
overflow-x: auto;
display: block;
font-variant-numeric: lining-nums tabular-nums;
}
table caption {
margin-bottom: 0.75em;
}
tbody {
margin-top: 0.5em;
border-top: 1px solid #1a1a1a;
border-bottom: 1px solid #1a1a1a;
}
th {
border-top: 1px solid #1a1a1a;
padding: 0.25em 0.5em 0.25em 0.5em;
}
td {
padding: 0.125em 0.5em 0.25em 0.5em;
}
header {
margin-bottom: 4em;
text-align: center;
}
#TOC li {
list-style: none;
}
#TOC ul {
padding-left: 1.3em;
}
#TOC > ul {
padding-left: 0;
}
#TOC a:not(:hover) {
text-decoration: none;
}
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
div.columns{display: flex; gap: min(4vw, 1.5em);}
div.column{flex: auto; overflow-x: auto;}
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
/* The extra [class] is a hack that increases specificity enough to
override a similar rule in reveal.js */
ul.task-list[class]{list-style: none;}
ul.task-list li input[type="checkbox"] {
font-size: inherit;
width: 0.8em;
margin: 0 0.8em 0.2em -1.6em;
vertical-align: middle;
}
.display.math{display: block; text-align: center; margin: 0.5rem auto;}
</style>
</head>
<body>
<header id="title-block-header">
<h1 class="title">cipherbliss_blog</h1>
</header>
<h1 id="article">Article</h1>
<ul>
<li>ID: 191</li>
<li>guid:</li>
<li>status: publish</li>
<li>publié le: &lt;2016-05-11 19:25:05&gt;</li>
<li>modifié: &lt;2020-08-03 11:55:32&gt;</li>
<li>Index des articles du blog <a
href="id:39e91a2e-d003-4acd-a99a-b58dca74df77">Cipherbliss blog</a></li>
</ul>
<h2 id="conversion-de-pdf-en-image-et-ocr-1">Conversion de pdf en image
et OCR</h2>
<p><img
src="https://www.clubdesmonstres.com/best/img/disc_world9jpg.jpg" /> <a
href="https://imagemagick.org">ImageMagick</a> permet de convertir des
tas de fichiers en des tas d'autres. Il est fourni de base dans pas mal
de <a
href="https://fr.wikipedia.org/wiki/Distribution_Linux">distributions
linux</a>. convertir un pdf en un jpg par page de 300dpi c'est aussi
simple que lancer cette commande: (dans un terminal, dans le dossier de
votre fichier pdf, par exemple, mon dossier de Téléchargements)</p>
<pre class="example"><code>convert -density 300 -quality 100 monFichierPDF.pdf mesFichiersJpg.jpg
</code></pre>
<p>Et boum! aussitôt plopent dans le même dossier des jpg mesFichiersJpg
(1).jpg pour chaque page. Trop magique. L'option <strong>-density
300</strong> donne une résolution de 300dpi. L'option <strong>-quality
100</strong> compresse la sortie au meilleur de sa qualité. Il faut
nommer le fichier d'entrée et celui de sortie, j'aurai pu marquer
mesFichiersJpg.png ça aurait fait des vrais png, mais ça supporte aussi
des tas d'autres formats.</p>
<h2 id="option-de-sécurité-dimagemagick">Option de sécurité
d'ImageMagick</h2>
<p>Il est possible que vous ayez une version d'ImageMagick avec des
restrictions de conversion qui ont été mises en place pour des raisons
de sécurité à une époque où GhostScript avait un problème, corrigé
depuis. Si la commande convert ne veut pas convertir votre pdf, regardez
dans la config du fichier de police: <code
class="verbatim">sudo editor /etc/ImageMagick-7/policy.xml</code> (le
dossier peut se nommer ImageMagick-6 ou autre selon votre version), et
changez la ligne concernant les pdf:</p>
<pre class="example"><code>&lt;policy domain=&quot;coder&quot; rights=&quot;none&quot; pattern=&quot;PDF&quot; /&gt;
</code></pre>
<p>En ceci:</p>
<pre class="example"><code>&lt;policy domain=&quot;coder&quot; rights=&quot;read | write&quot; pattern=&quot;PDF&quot; /&gt;
</code></pre>
<p>Relancez votre terminal et ça devrait bien vouloir convertir votre
pdf en jpg.</p>
<h2 id="une-commande-en-alias-de-bash">Une commande en alias de
bash</h2>
<p>Vous pouvez vous en faire un alias dans votre fichier
<em>~</em>.bash<sub>aliases</sub>/</p>
<pre class="example"><code>alias pdf2jpg=&#39;convert -density 300 -trim -quality 100&#39;
</code></pre>
<p>Ainsi vous pourrez lancer:</p>
<pre class="example"><code>pdf2jpg machin.pdf machin.jpg
</code></pre>
<p>Et paf, ça fait des images de jolie qualité pour chaque page.</p>
<h2 id="le-cube-qui-sait-lire">Le cube qui sait lire</h2>
<p>Et donc voilà, il arrive aussi qu'on vous file un pdf contenant un
contrat ou un texte (avec ou sans images) qui serait bien plus efficace
en format texte pour y faire des recherches par exemple. vous avez bien
entendu autre chose à faire de votre vie que de recopier tout le texte.
aint nobody got time for that. <img
src="https://static.skynetblogs.be/media/80918/4017077379.jpg" /></p>
<pre class="example"><code>Il convient donc d&#39;utiliser un soft qui sait faire de l&#39;Optical Character Recognition, de la reconnaissance de caractères optiques.
</code></pre>
<p><img
src="https://pbs.twimg.com/profile_images/3311637316/fa2e60c43dea540aa029bd9f9596d674_400x400.png" />
Le Tesseract, ce n'est pas un cube produisant une énergie infinie au
pays d'Iron Man, c'est un soft capable de lire des caractères dans une
image et de pondre un texte en conséquence. Bien sûr il faut relire le
texte ensuite pour corriger quelques typos, mais il fait déjà un boulot
impressionnant. installez le avec son extension pour le français avec
apt-get:</p>
<pre class="example"><code>sudo apt-get install tesseract-ocr tesseract-ocr-fra
</code></pre>
<p>Une fois que c'est fait revenons à nos animaux laineux. Vous avez
donc plein de fichiers jpg dans un dossier. Dans un terminal, mettez
vous dans le dossier en question. Nous allons donc faire une boucle sur
tous les fichiers du dossier courant se terminant par jpg, les lire et
en ressortir dans un fichier page<sub>truc</sub>.txt pour chaque
image.</p>
<pre class="example"><code>a=0
for i in $(ls -v *.jpg); do
echo &quot;$i page_${a}.txt&quot;
# on affiche ce qu&#39;on fait
tesseract $i page_${a}.txt
let a=a+1
done
</code></pre>
<p>l'option -l fra sert à dire qu'on traite un texte en français et
maintenant on concatène les sorties de chaque image en un seul
fichier</p>
<pre class="example"><code>cat page_* &gt; all_pages.txt
</code></pre>
<p>Et vous pourrez maintenant avoir un texte sur lequel vous pouvez
faire une recherche intégrale avec votre éditeur de texte préféré, à la
recherche de l'arnaque contractuelle qui va bien. Astuce de l'OCR
trouvée sur <a href="https://doc.ubuntu-fr.org/tesseract-ocr">la doc
ubuntu</a> Enjoy!</p>
<h1 id="liens">Liens</h1>
<ul>
<li>cipherbliss <a
href="id:d14d8051-bbb9-4279-a574-84d78bfe5b66">Cipherbliss blog</a></li>
</ul>
</body>
</html>
<footer><hr/><a href='/'>Retour à l'Accueil</a></footer></body>
</html>

View file

@ -1,217 +0,0 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<title>cipherbliss_blog</title>
<style type='text/css'>{css_content}</style><link type='stylesheet/css' href='/style.css'></link></head>
<body>
<a href='/'>Retour à l'Accueil</a><hr/><!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="">
<head>
<meta charset="utf-8" />
<meta name="generator" content="pandoc" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
<title>cipherbliss_blog</title>
<style>
html {
color: #1a1a1a;
background-color: #fdfdfd;
}
body {
margin: 0 auto;
max-width: 36em;
padding-left: 50px;
padding-right: 50px;
padding-top: 50px;
padding-bottom: 50px;
hyphens: auto;
overflow-wrap: break-word;
text-rendering: optimizeLegibility;
font-kerning: normal;
}
@media (max-width: 600px) {
body {
font-size: 0.9em;
padding: 12px;
}
h1 {
font-size: 1.8em;
}
}
@media print {
html {
background-color: white;
}
body {
background-color: transparent;
color: black;
font-size: 12pt;
}
p, h2, h3 {
orphans: 3;
widows: 3;
}
h2, h3, h4 {
page-break-after: avoid;
}
}
p {
margin: 1em 0;
}
a {
color: #1a1a1a;
}
a:visited {
color: #1a1a1a;
}
img {
max-width: 100%;
}
h1, h2, h3, h4, h5, h6 {
margin-top: 1.4em;
}
h5, h6 {
font-size: 1em;
font-style: italic;
}
h6 {
font-weight: normal;
}
ol, ul {
padding-left: 1.7em;
margin-top: 1em;
}
li > ol, li > ul {
margin-top: 0;
}
blockquote {
margin: 1em 0 1em 1.7em;
padding-left: 1em;
border-left: 2px solid #e6e6e6;
color: #606060;
}
code {
font-family: Menlo, Monaco, Consolas, 'Lucida Console', monospace;
font-size: 85%;
margin: 0;
hyphens: manual;
}
pre {
margin: 1em 0;
overflow: auto;
}
pre code {
padding: 0;
overflow: visible;
overflow-wrap: normal;
}
.sourceCode {
background-color: transparent;
overflow: visible;
}
hr {
background-color: #1a1a1a;
border: none;
height: 1px;
margin: 1em 0;
}
table {
margin: 1em 0;
border-collapse: collapse;
width: 100%;
overflow-x: auto;
display: block;
font-variant-numeric: lining-nums tabular-nums;
}
table caption {
margin-bottom: 0.75em;
}
tbody {
margin-top: 0.5em;
border-top: 1px solid #1a1a1a;
border-bottom: 1px solid #1a1a1a;
}
th {
border-top: 1px solid #1a1a1a;
padding: 0.25em 0.5em 0.25em 0.5em;
}
td {
padding: 0.125em 0.5em 0.25em 0.5em;
}
header {
margin-bottom: 4em;
text-align: center;
}
#TOC li {
list-style: none;
}
#TOC ul {
padding-left: 1.3em;
}
#TOC > ul {
padding-left: 0;
}
#TOC a:not(:hover) {
text-decoration: none;
}
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
div.columns{display: flex; gap: min(4vw, 1.5em);}
div.column{flex: auto; overflow-x: auto;}
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
/* The extra [class] is a hack that increases specificity enough to
override a similar rule in reveal.js */
ul.task-list[class]{list-style: none;}
ul.task-list li input[type="checkbox"] {
font-size: inherit;
width: 0.8em;
margin: 0 0.8em 0.2em -1.6em;
vertical-align: middle;
}
.display.math{display: block; text-align: center; margin: 0.5rem auto;}
</style>
</head>
<body>
<header id="title-block-header">
<h1 class="title">cipherbliss_blog</h1>
</header>
<h1 id="article">Article</h1>
<ul>
<li>ID: 192</li>
<li>guid:</li>
<li>status: publish</li>
<li>publié le: &lt;2016-05-10 14:56:57&gt;</li>
<li>modifié: &lt;2016-06-06 13:02:32&gt;</li>
<li>Index des articles du blog <a
href="id:39e91a2e-d003-4acd-a99a-b58dca74df77">Cipherbliss blog</a></li>
</ul>
<h2 id="retour-dexpérience">Retour d'expérience</h2>
<p>Apprendre de son expérience est une capacité trop souvent laissée de
côté. avez vous déjà essayé d'identifier les éléments qui vous ont fait
perdre du temps dans vos anciens projets? Laissez de côté vos différents
entre collègues (si vous en avez, comme dans la plupart des boites), et
prenez le temps de leur demander ce qui les empêche de travailler,
quelles sont leur principales difficultés dernièrement, et comment les
résoudre selon leur avis. En tant que membre de l'équipe, lorsque vous
résolvez un souci après bien des recherches pour vous rendre compte que
c'était un truc tout simple, notez le dans un carnet. Vous verrez ainsi
quels sont les choses qui vous font perdre du temps et que ce sont
souvent les mêmes qui reviennent. Durant les démonstrations
d'avancement, il est bon de faire un tour de table de retour
d'expérience en évoquant des points positifs et des axes
d'améliorations. Notez cependant qu'en groupe on ose moins dénoncer
certaines choses ou désigner des fautifs. C'est pourquoi il est
nécessaire de se renseigner entre quatre zyeux auprès des autres gens.
Le but de la manoeuvre n'est pas le lynchage collectif, il convient donc
de rester courtois dans ses remarques. Vous serez surpris de voir comme
l'esprit d'équipe peut être amélioré juste de cette façon.</p>
<h1 id="liens">Liens</h1>
<ul>
<li>cipherbliss <a
href="id:d14d8051-bbb9-4279-a574-84d78bfe5b66">Cipherbliss blog</a></li>
</ul>
</body>
</html>
<footer><hr/><a href='/'>Retour à l'Accueil</a></footer></body>
</html>

View file

@ -1,391 +0,0 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<title>cipherbliss_blog</title>
<style type='text/css'>{css_content}</style><link type='stylesheet/css' href='/style.css'></link></head>
<body>
<a href='/'>Retour à l'Accueil</a><hr/><!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="">
<head>
<meta charset="utf-8" />
<meta name="generator" content="pandoc" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
<title>cipherbliss_blog</title>
<style>
html {
color: #1a1a1a;
background-color: #fdfdfd;
}
body {
margin: 0 auto;
max-width: 36em;
padding-left: 50px;
padding-right: 50px;
padding-top: 50px;
padding-bottom: 50px;
hyphens: auto;
overflow-wrap: break-word;
text-rendering: optimizeLegibility;
font-kerning: normal;
}
@media (max-width: 600px) {
body {
font-size: 0.9em;
padding: 12px;
}
h1 {
font-size: 1.8em;
}
}
@media print {
html {
background-color: white;
}
body {
background-color: transparent;
color: black;
font-size: 12pt;
}
p, h2, h3 {
orphans: 3;
widows: 3;
}
h2, h3, h4 {
page-break-after: avoid;
}
}
p {
margin: 1em 0;
}
a {
color: #1a1a1a;
}
a:visited {
color: #1a1a1a;
}
img {
max-width: 100%;
}
h1, h2, h3, h4, h5, h6 {
margin-top: 1.4em;
}
h5, h6 {
font-size: 1em;
font-style: italic;
}
h6 {
font-weight: normal;
}
ol, ul {
padding-left: 1.7em;
margin-top: 1em;
}
li > ol, li > ul {
margin-top: 0;
}
blockquote {
margin: 1em 0 1em 1.7em;
padding-left: 1em;
border-left: 2px solid #e6e6e6;
color: #606060;
}
code {
font-family: Menlo, Monaco, Consolas, 'Lucida Console', monospace;
font-size: 85%;
margin: 0;
hyphens: manual;
}
pre {
margin: 1em 0;
overflow: auto;
}
pre code {
padding: 0;
overflow: visible;
overflow-wrap: normal;
}
.sourceCode {
background-color: transparent;
overflow: visible;
}
hr {
background-color: #1a1a1a;
border: none;
height: 1px;
margin: 1em 0;
}
table {
margin: 1em 0;
border-collapse: collapse;
width: 100%;
overflow-x: auto;
display: block;
font-variant-numeric: lining-nums tabular-nums;
}
table caption {
margin-bottom: 0.75em;
}
tbody {
margin-top: 0.5em;
border-top: 1px solid #1a1a1a;
border-bottom: 1px solid #1a1a1a;
}
th {
border-top: 1px solid #1a1a1a;
padding: 0.25em 0.5em 0.25em 0.5em;
}
td {
padding: 0.125em 0.5em 0.25em 0.5em;
}
header {
margin-bottom: 4em;
text-align: center;
}
#TOC li {
list-style: none;
}
#TOC ul {
padding-left: 1.3em;
}
#TOC > ul {
padding-left: 0;
}
#TOC a:not(:hover) {
text-decoration: none;
}
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
div.columns{display: flex; gap: min(4vw, 1.5em);}
div.column{flex: auto; overflow-x: auto;}
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
/* The extra [class] is a hack that increases specificity enough to
override a similar rule in reveal.js */
ul.task-list[class]{list-style: none;}
ul.task-list li input[type="checkbox"] {
font-size: inherit;
width: 0.8em;
margin: 0 0.8em 0.2em -1.6em;
vertical-align: middle;
}
.display.math{display: block; text-align: center; margin: 0.5rem auto;}
</style>
</head>
<body>
<header id="title-block-header">
<h1 class="title">cipherbliss_blog</h1>
</header>
<h1 id="article">Article</h1>
<ul>
<li>ID: 193</li>
<li>guid:</li>
<li>status: publish</li>
<li>publié le: &lt;2016-04-21 13:10:07&gt;</li>
<li>modifié: &lt;2016-05-12 14:30:14&gt;</li>
<li>Index des articles du blog <a
href="id:39e91a2e-d003-4acd-a99a-b58dca74df77">Cipherbliss blog</a></li>
</ul>
<h2 id="le-petit-printf-1">Le petit Printf</h2>
<p>ont devenus un problème."<br />
Et tandis que l'homme se tenait là en silence (sur son nouveau bureau à
roulettes trop cool), le petit printf se dirigea hors de la salle.<br />
</p>
<h2 id="chapitre-8"><strong>Chapitre 8</strong></h2>
<p><img src="https://ferd.ca/static/img/printf/ops.png" /><br />
Dans le bureau d'à côté se trouvait un employé fatigué, avec des
dizaines de tasses à café vides, recroquevillée sur ton clavier, à taper
avec énervement.<br />
"Salut, dit le petit printf."<br />
La femme n'a pas arrêté ce qu'elle faisait. Elle a continué à taper
furieusement.<br />
"Bonjour?" demanda-t-il à nouveau.<br />
La femme s'arrêta d'un coup, pris un flacon d'un tiroir dans son bureau,
et a pris une gorgée.<br />
"J'ai un travail terrible, dit-elle. Je fais DevOps. ça avait bien
commencé, la plupart du temps je développais et puis parfois je
debuguais des choses, mais plus le temps passait, plus à a a empiré.
J'ai commencé à lutter contre les incendies dans notre pile, puis plus
d'incendies ont commencé à se produire. Je me suis débarrassé de la
plupart d'entre eux, tirant de petits miracles ici et là pour ensuite
respecter les délais de dev sur des choses que je devais aussi faire en
plus.<br />
-Et ont-ils embauché quelqu'un pour aider?<br />
-Non, c'est ça le truc. Les petits feux continuent de se produire ici et
là, et en raison du temps que je prends pour les combattre, je ne peux
pas être aussi prudente qu' avant avec le dev, donc je crée plus de feux
tout le temps. Maintenant, je lutte contre les incendies toute la
journée et toute la nuit et je déteste mon travail. -Pourquoi votre
employeur ne fait pas quelque chose?<br />
-Je suis douée à faire mon travail, et je suis parvenu à garder les
choses sous contrôle assez longtemps que tout le monde s'y soit habitué.
Lorsque vous prenez l'habitude de petits miracles, les gens sont
habitués. Ensuite, vous êtes coincé à faire des miracles tout le temps
ou ils vont penser que vous ne faites pas votre travail du tout.<br />
-Cela semble très triste<br />
-ça l'est; et parce que vous êtes la personne la plus familière avec ces
feux, vous obtenez seulement de travailler sur eux de plus en plus,
jusqu'à ce que votre employeur embauche quelqu'un d'autre pour couvrir
votre ancien emploi, celui que vous aimiez. Si vous vous souciez assez
dur sur votre travail pour être celui qui fait les choses que tout le
monde déteste, on vous remerciera en vous donnant de plus en plus de ce
travail qui ne vous plaît pas, jusqu'à ce que ce soit tout ce que vous
faites. Et puis il n'y a plus rien pour vous plaire dans votre
job.<br />
-Alors, vous êtes malchanceuse," dit le petit printf.<br />
Et son pager sonna encore.<br />
"Cette femme," dit le petit printf à lui-même, en continuant plus loin
son voyage, "cette femme serait méprisée par tous les autres: par
l'expert spécialisé, par le développeur de rockstar, par l'adoptant
premier. Néanmoins, elle est la seule d'entre eux tous à sembler utile.
Peut-être est parce qu'elle pense à autre chose qu'à elle-même.</p>
<h2 id="chapitre-9"><strong>Chapitre 9</strong></h2>
<p><img src="https://ferd.ca/static/img/printf/architect.png" /> A
l'angle du bâtiment, printf trouvé un grand bureau avec de grandes
fenêtres donnant une vue imprenable sur la région. Dedans, est assis un
vieux monsieur avec des rames de documentation sur son bureau.<br />
"Ah, voici un développeur!" s'écria l'homme, alors que printf se tenait
à la porte. "Entrez!" En regardant à travers les fenêtres, le petit
printf a remarqué qu'ils étaient pleins d'écriture. Avec l'aide d'un
stylo effaçable à sec, la vue sur le monde extérieur a été masqué par
des tonnes de cercles, des flèches, des cylindres, et les nuages. Alors
qu'il était curieux les nuages de l'homme nécessaire tirées où les vrais
pouvaient être vus à l'extérieur, tout l'ensemble était plus
intrigant.<br />
"Qu'est-ce que c'est ?," demanda notre ami, en montrant les
fenêtres.<br />
"Oh ça? Ceci est notre système de production!" Dit l'homme, en pensant
non pas une seule fois que la question portait sur le monde extérieur.
"Je suis un architecte logiciel.<br />
-Qu'est-ce qu'un architecte logiciel?<br />
-La plupart du temps, il est quelqu'un qui sait comment structurer au
mieux et coordonne les composants d'un grand système pour que tout aille
bien ensemble. Il est quelqu'un qui doit connaître les bases de données,
des langages, des framewords, des éditeurs de code, des formats de
sérialisation, des protocoles et des concepts tels que l'encapsulation
et la séparation des préoccupations.<br />
-Très intéressant! dit le petit printf, voici quelqu'un qui peut
répondre à toutes mes questions! Il regarda les diagrammes
d'architecture. Votre système est très impressionnant. Est-il très
rapide à fonctionner?<br />
-Je ne pouvais pas vous dire, dit l'architecte. ça doit être le cas, je
pense. -Comment est le code alors, est-il bon?<br />
-Je ne pouvais pas vous dire<br />
-les utilisateurs sont-ils heureux?<br />
-Je ne pouvais pas vous dire non plus, je crains<br />
-Mais vous êtes un architecte logiciel!<br />
-Exactement! Mais je ne suis pas un développeur. Ce n'est pas
l'architecte qui va et écrit les modules et les classes, combine les
bibliothèques. L'architecte logiciel est beaucoup trop important pour
aller toucher au code. Mais il parle avec les programmeurs et les
développeurs, leur pose des questions, leur donne des conseils. Et si le
problème se trouve être assez intéressant, l'architecte prend en charge
la planification.<br />
-Et pourquoi ça?<br />
-Parce que nous sommes plus expérimentés. Nous en savons plus sur les
systèmes et ce qui fonctionne ou non. Les développeurs peuvent alors
être une extension de nos connaissances pour produire de grands
systèmes!<br />
-Mais comment savez-vous si les choses vont bien sans s'impliquer avec
le code?<br />
-Nous faisons confiance aux développeurs<br />
-Donc, vous leur faites confiance pour mettre en œuvre vos idées
correctement, mais pas assez pour venir avec leurs propres idées?"<br />
L'architecte logiciel était visiblement ébranlé par ce commentaire. "Je
suppose que je pourrais avoir été un peu déconnecté," il a finalement
admis. "Le problème est que, après un certain temps, vous êtes invité à
travailler avec des idées tellement vous ne disposez pas d'un bon moyen
de les faire tester ou vérifier…" Il baissa les yeux, pensif. "Parfois,
un architecte logiciel ne fait ni logiciel, ni architecture, on
dirait."<br />
Le petit printf a quitté la salle, ayant terminé de sa visite, il quitta
le bâtiment.<br />
</p>
<h2 id="chapitre-10"><strong>Chapitre 10</strong></h2>
<p><img src="https://ferd.ca/static/img/printf/charity.png" /></p>
<p>le petit printf, une fois à l'extérieur, a rencontré un homme
collectant de l'argent pour la charité.<br />
"Salut, dit l'homme. Que diriez vous d'aider quelqu'un
aujourd'hui?<br />
-ça m'aiderait sans doute à me faire sentir mieux, répondit printf. Je
suis allé dans ce bureau toute la journée, et maintenant je suis plus
confus que jamais.<br />
-Ah, je vois. Ces personnes sont tous les développeurs. Ils ne sont pas
vraiment utiles, n'est-ce pas? Ce qu'ils aiment à dire est qu'ils
changent le monde, et ils ont pas mal réussir à à le faire, en
fait.<br />
-Pourquoi est ce que je me sens si gêné, alors? questionna le petit
printf.<br />
-Eh bien, le meilleur qu'ils font est souvent d'aider à convertir les
emplois de certaines personnes dans des programmes, ou de rendre les
loisirs de tout le monde plus tranquilles.<br />
Le logiciel est en train de manger le monde et de lui faire changer de
visage, c'est certain… mais au fond, c'est le même vieux monde, avec un
visage mutilé. La raison pour laquelle on se sent gêné est que le
changement de cette façon ne veut pas dire les choses deviennent mieux.
Nous avons les mêmes défauts et les problèmes que nous avons toujours
eu, les mêmes trous à combler à l'intérieur.<br />
-Alors, comment puis-je me sentir mieux?" le petit printf était
visiblement anxieux.<br />
L'homme a pensé pendant un certain temps, et a offert printf à venir
l'aider à aider les autres, car c'était la façon que cet homme avait de
se sentir mieux. Au cours de l'après-midi, printf raconta à l'homme ses
problèmes et son aventure. Après un long silence, l'homme dit:<br />
"Les jeux que les gens jouent, les rôles et les réputations qu'ils
poursuivent et entretiennent, le plaisir éphémère qu'ils tirent de la
résolution de problèmes complexes, c'est amusant pendant un certain
temps. En fin de compte, si vous ne résolvez pas quelque chose de
valable, si vous oubliez les personnes impliquées, ça ne va jamais être
vraiment satisfaisant.<br />
Et cela peut être très bien, ou ça pourrait ne pas l'être, et vous
pouvez ou ne pouvez pas obtenir cela par ailleurs que sur votre lieu de
travail quand vous grandissez. Le travail peut être un travail; il peut
être pour l'argent, il peut être pour le plaisir. C'est bon. Tant que
vous parvenez à obtenir de l'accomplissement quelque part dans votre
vie. À la fin cependant, il est seulement quand vous résoudre les
problèmes avec un visage humain que vous pouvez vraiment sentir bien; Ce
qui est essentiel est invisible pour l'ordinateur.<br />
C' est le temps que vous avez passé sur votre système qui le rend si
important », l'homme a ajouté," et quand vous avez perdu de vue pourquoi
il était logique de passer du temps là-dessus, quand il est devenu un
jeu d'orgueil, alors il a causé plus de douleur que de
soulagement.<br />
Les développeurs ont souvent oublié cette vérité; Si vous perdez de vue
des choses, travailler sur votre système devient son propre problème, et
la solution la plus efficace est de se débarrasser du système, étant
donné qu'il est le problème."<br />
"C'est seulement quand vous résolvez les problèmes avec un visage humain
que vous pouvez sentir vraiment bien", répéta le petit printf à
lui-même, de sorte qu'il s'en souvienne.</p>
<h2 id="chapitre-11"><strong>Chapitre 11</strong></h2>
<p><img src="https://ferd.ca/static/img/printf/printf-end.png" /></p>
<p><br />
Printf, qui est maintenant assis juste en face de moi, est sur le chemin
du retour. Parler avec lui m'a fait réaliser à quel point ce que je fais
m'éloigne ce que je voulais, ce pour quoi j'ai commencé à programmer.
Chacune des personnes que le petit Printf a rencontré sont les rôles que
je me vois prendre moi-même un jour ou l'autre au fil du temps. J'ai été
encouragé par eux pour devenir comme eux, et j'ai probablement encouragé
des gens à faire la même chose.<br />
Lorsque je me suis lancé dans le jeu d'essayer de devenir un véritable
programmeur, Printf ne l'a pas fait. Il a dit qu'il était correct de ne
pas être un vrai programmeur, qu'il préférait être un programmeur avec
un visage humain.<br />
Aujourd'hui, je suis coincé dans la situation où je regarde en arrière,
je dois comprendre si je peux, aussi, devenir un programmeur avec un
visage humain ; ou si tout ce que je fais est juste un emploi. Il ne
semble pas y avoir tellement de choses qui vaille la peine
entre-deux.<br />
En tous les cas, là où printf a estimé qu'il n'a pas besoin d'être un
vrai programmeur, je pense que je ressens la même chose
maintenant.<br />
</p>
<h1 id="liens">Liens</h1>
<ul>
<li>cipherbliss <a
href="id:d14d8051-bbb9-4279-a574-84d78bfe5b66">Cipherbliss blog</a></li>
</ul>
</body>
</html>
<footer><hr/><a href='/'>Retour à l'Accueil</a></footer></body>
</html>