-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathatom.xml
More file actions
227 lines (157 loc) · 22.8 KB
/
atom.xml
File metadata and controls
227 lines (157 loc) · 22.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<title>Nicolas Chevolot</title>
<link href="/atom.xml" rel="self"/>
<link href="http://nch3v.github.io/"/>
<updated>2016-07-29T08:51:48.512Z</updated>
<id>http://nch3v.github.io/</id>
<author>
<name>Nicolas Chevolot</name>
</author>
<generator uri="http://hexo.io/">Hexo</generator>
<entry>
<title>Migration to github.io</title>
<link href="http://nch3v.github.io/2016/02/16/Migration-to-github-io/"/>
<id>http://nch3v.github.io/2016/02/16/Migration-to-github-io/</id>
<published>2016-02-16T18:59:29.000Z</published>
<updated>2016-07-29T08:51:48.512Z</updated>
<content type="html"><p>Le contenu de mes précédents blogs, relativement délaissés ces dernières années,<br>a été migré sur <a href="http://nch3v.github.io">http://nch3v.github.io</a>. La génération du site est faite avec<br><a href="https://hexo.io/" target="_blank" rel="external">Hexo</a>.</p>
</content>
<summary type="html">
<p>Le contenu de mes précédents blogs, relativement délaissés ces dernières années,<br>a été migré sur <a href="http://nch3v.github.io">http
</summary>
<category term="tech" scheme="http://nch3v.github.io/categories/tech/"/>
<category term="tools" scheme="http://nch3v.github.io/categories/tech/tools/"/>
<category term="blog" scheme="http://nch3v.github.io/tags/blog/"/>
<category term="lang:fr" scheme="http://nch3v.github.io/tags/lang-fr/"/>
<category term="perso" scheme="http://nch3v.github.io/tags/perso/"/>
<category term="tools" scheme="http://nch3v.github.io/tags/tools/"/>
</entry>
<entry>
<title>Mixins with type checking in Typescript</title>
<link href="http://nch3v.github.io/2016/02/09/Mixins-with-type-checking-in-Typescript/"/>
<id>http://nch3v.github.io/2016/02/09/Mixins-with-type-checking-in-Typescript/</id>
<published>2016-02-09T11:08:14.000Z</published>
<updated>2016-02-16T09:22:34.824Z</updated>
<content type="html"><!-- excerpt -->
<p>If you want to use Typescript because you think that type checking is a good thing, and that your IDE is much more clever with Typescript, you’ll soon discover that one of best feature of JavaScript is missing in Typescript : the <strong>mixins</strong>. It is a very important design patern to reduce code repetition by composing objects using reusable pieces of code.</p>
<p>The only available solution, until now, was to duplicate class properties and method, in order to make the compiler happy then use a function to copy properties properties from mixin to the composed object. See <a href="https://github.com/Microsoft/TypeScript-Handbook/blob/master/pages/Mixins.md" target="_blank" rel="external">official documentation on the subject</a>.</p>
<p>Here I propose a way to compose objects using regular classes with no code duplication, no performance overhead, and with type checking.</p>
<h2 id="Create_the_mixins_with_concrete_classes"><a href="#Create_the_mixins_with_concrete_classes" class="headerlink" title="Create the mixins with concrete classes"></a>Create the mixins with concrete classes</h2><p>Let’s imagine we have 3 capabilities (our mixins) implemented as classes. To make it more fun, each of them initialize its data differently.</p>
<script src="//gist.github.com/4c8c0ac5e03f220462a9.js?file=swimmer.ts"></script>
<script src="//gist.github.com/4c8c0ac5e03f220462a9.js?file=walker.ts"></script>
<script src="//gist.github.com/4c8c0ac5e03f220462a9.js?file=talker.ts"></script>
<p>and we want some animals to have these capabilities</p>
<ul>
<li>the Duck is a Swimmer, a Walker, and a Talker (saying <em>coin</em>)</li>
<li>the Fish is a Swimmer and a Talker (saying <em>bloup</em>)</li>
</ul>
<h2 id="Create_an_interface_that_extends_the_classes"><a href="#Create_an_interface_that_extends_the_classes" class="headerlink" title="Create an interface that extends the classes"></a>Create an interface that extends the classes</h2><p>It’s not possible in Typescript to create a class that extends those three classes. But what we can do is to create an interface that extends those classes. We can even define what signature the constructore should be.</p>
<p>In the same file we will create a variable with same name as the interface to store a constructor for this interface. Yes it’s valid Typescript. For now let’s imagine we have a <code>compose</code> function that will create this constructor function.</p>
<script src="//gist.github.com/4c8c0ac5e03f220462a9.js?file=duck.ts"></script>
<p>All we have to do now, is to find a way to create concrete classes that implements theses interfaces.</p>
<h2 id="Create_a_constructor_function_implementing_the_capabilities"><a href="#Create_a_constructor_function_implementing_the_capabilities" class="headerlink" title="Create a constructor function implementing the capabilities"></a>Create a constructor function implementing the capabilities</h2><p>The idea is to create a constructor function, whose prototype will receive the properties of our mixins. So here is the compose functon</p>
<script src="//gist.github.com/4c8c0ac5e03f220462a9.js?file=class-composer.ts"></script>
<h2 id="Use_new_operator_or_a_factory_to_create_the_objects"><a href="#Use_new_operator_or_a_factory_to_create_the_objects" class="headerlink" title="Use new operator or a factory to create the objects"></a>Use new operator or a factory to create the objects</h2><p>You can then use you Duck interface like in this sample.</p>
<script src="//gist.github.com/4c8c0ac5e03f220462a9.js?file=index.ts"></script>
<h2 id="A_note_on_mixin_initialization"><a href="#A_note_on_mixin_initialization" class="headerlink" title="A note on mixin initialization"></a>A note on mixin initialization</h2><p>What is really cool with this solution, is that mixins work as expected when reading the code:</p>
<ul>
<li>the properties are initialized</li>
<li>the constructor is called</li>
</ul>
<p>This is because Typescript aggregate all the initialization in the constructor function of the mixin, that we call when instantiating our composed object.</p>
<h3 id="Full_code"><a href="#Full_code" class="headerlink" title="Full code"></a>Full code</h3><p>A working sample is available here: <a href="https://github.com/nch3v/typescript-mixins" target="_blank" rel="external">https://github.com/nch3v/typescript-mixins</a></p></content>
<summary type="html">
<p>How to create mixins in Typescript using regular classes with no code duplication, no performance overhead, and with type checking.</p>
</summary>
<category term="tech" scheme="http://nch3v.github.io/categories/tech/"/>
<category term="dev" scheme="http://nch3v.github.io/categories/tech/dev/"/>
<category term="lang:en" scheme="http://nch3v.github.io/tags/lang-en/"/>
<category term="nodejs" scheme="http://nch3v.github.io/tags/nodejs/"/>
<category term="typescript" scheme="http://nch3v.github.io/tags/typescript/"/>
</entry>
<entry>
<title>Utilisation de Truecrypt pour sécuriser ses données sur une clé USB</title>
<link href="http://nch3v.github.io/2009/04/09/Utilisation-de-Truecrypt-pour-securiser-ses-donnees-sur-une-cle-USB/"/>
<id>http://nch3v.github.io/2009/04/09/Utilisation-de-Truecrypt-pour-securiser-ses-donnees-sur-une-cle-USB/</id>
<published>2009-04-09T21:51:43.000Z</published>
<updated>2016-07-29T08:48:52.128Z</updated>
<content type="html"><p>Avoir toutes ses données on the cloud permet de pouvoir y accéder depuis n’importe quel PC. Cependant il arrive qu’on ne puisse avoir accès qu’à un PC sans internet ou avec un accès restreint (connexion lente, proxy avec filtrage,…) ou bien avoir besoin d’application qui n’ont pas d’équivalent en ligne. Pour être sûr d’accéder à ses données et programmes en permanence, la seule solution est de les emporter avec soi sur une clé USB.</p>
<a id="more"></a>
<h2 id="Utilisation_d_u2019applications_portables"><a href="#Utilisation_d_u2019applications_portables" class="headerlink" title="Utilisation d’applications portables"></a>Utilisation d’applications portables</h2><p>Pour les données, pas de problème, il suffit de copier les fichiers en question sur la clé. Pour les applications, c’est un peu plus compliqué car il faut que l’application puisse s’exécuter sans avoir été installée au préalable et soit conçue pour stocker ses paramètres de configuration et autres données de travail en local et non sur le système hôte. On parle dans ce cas d’applications portables ou portable apps. Vous trouverez plus loin dans ce billet quelques exemples de portable apps gratuites (et même open source). Les plus pressés peuvent se rendre directement sur le site de référence <a href="http://portableapps.com/" target="_blank" rel="external">http://portableapps.com/</a>. Notez qu’il existe d’autre applications portables que celles référencées sur ce site.</p>
<p>Cependant, stocker données et applications sur une clé USB pose les problèmes suivant :</p>
<h3 id="S_E9curit_E9"><a href="#S_E9curit_E9" class="headerlink" title="Sécurité"></a>Sécurité</h3><p>Vos données ne sont peut-être pas destinées à être rendu publique, c’est pourtant ce qui va arriver si vous égarez votre clé. La seule solution pour cela est le cryptage de la clé. Heureusement nous allons voir qu’il existe une solution simple et pratique pour crypter vos données de manière totalement transparente.</p>
<h3 id="Fiabilit_E9"><a href="#Fiabilit_E9" class="headerlink" title="Fiabilité"></a>Fiabilité</h3><p>Une clé USB n’est pas, tout comme les disques durs, un moyen de stockage fiable. Il ne faut donc jamais se contenter d’un seul exemplaire de ses données sur un clé USB car celle vous lâchera forcément un jour. La seule solution est de mettre en place une procédure de sauvegarde des données sur d’autre support et même si besoin faire des sauvegardes en ligne.</p>
<h2 id="La_solution__3A_TrueCrypt"><a href="#La_solution__3A_TrueCrypt" class="headerlink" title="La solution : TrueCrypt"></a>La solution : TrueCrypt</h2><p>Pour ceux qui ne connaissent pas, TrueCrypt (<a href="http://www.truecrypt.org/" target="_blank" rel="external">http://www.truecrypt.org/</a>) est un un outil open source, et par conséquent gratuit et fiable, pour crypter les données à la volée. Le cryptage à la volée permet de travailler sans changer ses habitudes, le logiciel s’occupant de décrypter à la lecture d’un fichier et de le crypter à la sauvegarde. Il devient donc possible, par exemple, de travailler avec Word sur un document crypté sur votre clé USB.</p>
<p>La mise en place de TrueCrypt est simplissime. Une fois dézippé (TrueCrypt étant une application portable donc sans installation), il suffit de lancer TrueCryptFormat et de se laisser guider pour créer une partition cryptée. Cette partition peut-ête stockée dans un fichier classique sur votre clé USB. Le programme TrueCrypt agit ensuite comme un driver permettant d’accéder à cette partition, à condition bien sûr de rentrer le mot passe adéquat.</p>
<p>Le cryptage de TrueCrypt est basé sur des algorithmes certifiés par la NSA, son implémentation open source garantissant qu’il n’y a pas de fonctionnalités cachées pour permettre l’accès à vos données.</p>
<h3 id="Les_autres_avantages_d_u2019une_partition_TrueCrypt"><a href="#Les_autres_avantages_d_u2019une_partition_TrueCrypt" class="headerlink" title="Les autres avantages d’une partition TrueCrypt"></a>Les autres avantages d’une partition TrueCrypt</h3><p>Même si l’utilité première de TrueCrypt est que les données sont protégées d’un accès malveillant, il y a pourtant un autre avantage. Le stockage de toute une partition dans un seul fichier permet de manipuler tous ces fichiers à travers un seul. Il suffit par exemple de copier ce fichier pour faire une sauvegarde de toute la partition. En automatisant la copie du fichier/partition lors de l’introduction de la clé USB, nous avons alors la possibilité de mettre en place un système relativement fiable de sauvegarde de vos données. De plus le tout étant crypté, vous pouvez vous permettre le luxe de laisser des copies multiples de vos données même sur des ordinateurs publiques. Même si quelqu’un à accès au fichier, il lui sera impossible d’accéder aux données sans le mot de passe. Il est par conséquent possible de stocker votre partition sur l’un des multiples service de backup en ligne disponible actuellement. Personnellement j’utilise à l’occasion le service partage de fichier de free <a href="http://dl.free.fr" target="_blank" rel="external">http://dl.free.fr</a> qui me garantit un accès à mon fichier pendant 30 jours.</p>
<p>Notez aussi qu’avec TrueCrypt, on peut choisir le lecteur qui sur lequel sera mountée la partition. En fixant celle-ci dans les préférences, vous permettez à certains logiciels qui utilisent des chemins en dur de retrouver leur petits quelque soit la configuration du PC hôte.</p>
<h2 id="En_pratique"><a href="#En_pratique" class="headerlink" title="En pratique"></a>En pratique</h2><p>Personnellement, je me sers d’une partition cryptée pour sauvegarder mon environnement de travail et pourvoir intervenir en urgence sur un projet où que je sois. J’ai donc installé les logiciels suivants, la plupart disponibles sur <a href="http://portableapps.com/" target="_blank" rel="external">http://portableapps.com/</a> :</p>
<ul>
<li>Firefox (et les extensions qui vont bien) : Le navigateur étant un des logiciels les plus importants, il est évident que j’emmène le mien partout. De plus avec l’extension Google Gears, je peux accédez à mes mails (GMail) et à mes flux RSS (Google Reader) même en l’absence de connexion internet.</li>
<li>Notepad++ : Excellent éditeur de code qui peut être enrichi grâce à ses nombreux plugins</li>
<li>FileZilla : client FTP</li>
<li>putty : pour administrer le serveur via ssh</li>
<li>XAMPLite : Apache/MySQL/PHP pour bosser en local</li>
</ul>
<p>Le fait de travailler dans une partition cryptée me permet d’avoir mes outils et mes différents comptes paramétrés en permanence ainsi que mes scripts pour mettre à jour les serveurs ou faire des sauvegardes manuelles. Je ne crains absolument pas qu’en perdant ma clé USB, quelqu’un puisse accéder mon serveur ou a des données qui mettraient celui-ci en danger.</p>
<p>J’ai aussi écrit un petit script batch qui me fais une copie de la partition sur le disque sur du PC avant de l’utiliser. Je peux ainsi travailler l’esprit tranquille sachant qu’une copie (et même celles des jours précédents) existe. En fait, je travaille directement sur cette copie afin de ne pas user prématurément la clé USB avec des accès trop fréquents, un script s’occupant d’unmounter la partition et de la recopier sur la clé.</p>
</content>
<summary type="html">
<p>Avoir toutes ses données on the cloud permet de pouvoir y accéder depuis n’importe quel PC. Cependant il arrive qu’on ne puisse avoir accès qu’à un PC sans internet ou avec un accès restreint (connexion lente, proxy avec filtrage,…) ou bien avoir besoin d’application qui n’ont pas d’équivalent en ligne. Pour être sûr d’accéder à ses données et programmes en permanence, la seule solution est de les emporter avec soi sur une clé USB.</p>
</summary>
<category term="tech" scheme="http://nch3v.github.io/categories/tech/"/>
<category term="tools" scheme="http://nch3v.github.io/categories/tech/tools/"/>
<category term="lang:fr" scheme="http://nch3v.github.io/tags/lang-fr/"/>
<category term="securité" scheme="http://nch3v.github.io/tags/securite/"/>
<category term="tools" scheme="http://nch3v.github.io/tags/tools/"/>
</entry>
<entry>
<title>Pixbreak : photo social bookmarking</title>
<link href="http://nch3v.github.io/2008/03/30/Pixbreak-photo-social-bookmarking/"/>
<id>http://nch3v.github.io/2008/03/30/Pixbreak-photo-social-bookmarking/</id>
<published>2008-03-30T07:07:22.000Z</published>
<updated>2016-07-29T08:50:48.644Z</updated>
<content type="html"><p><strong>EDIT : Le projet n’est plus maintenu et le site n’est plus en ligne.</strong></p>
<p>Amateur de photos, laissez moi vous présenter , une application en ligne pour conserver et partager les photos qui vous plaisent sur le web. Il s’agit d’un projet personnel encore à l’état de concept qui s’appelait auparavant BudBud.</p>
<p>Jusqu’à maintenant, lorsque vous tombiez sur une belle photo, vous deviez la mettre dans les favoris de votre navigateur ou sur un site de partage de liens comme del.ico.us. Autant dire que ça ne sert pas à grand chose et que la photo est perdue. Vous pouvez aussi la télécharger sur votre disque dur mais cela prends vite du temps, de l’espace et à moins d’avoir un outil de gestion de photos cela n’est guère plus utile.</p>
<p>C’est pour résoudre ce problème que j’ai développé <a href="http://pixbreak.com" target="_blank" rel="external">pixbreak</a> qui est à ma connaissance le premier site de “photo social bookmarking”. Avec un petit programme en JavaScript il vous suffit de sélectionner la photo qui vous intéresse sur n’importe quel site , d’ajouter des mots clefs pour que celle-ci soit indexée sur <a href="http://pixbreak.com" target="_blank" rel="external">pixbreak</a> pour que vous pussiez la retrouvez demain ou dans quelques années.</p>
<p>Mais ce n’est pas fini…</p>
<p>Toutes ces photos sont classées en fonction de leur contenu et des votes des utilisateurs et les meilleurs photos sont mises en avant sur la page d’accueil (à la Digg). Bien sûr, il est possible de faire des recherches parmi toutes ces photos et pour chaque photo <a href="http://pixbreak.com" target="_blank" rel="external">pixbreak</a> vous proposera automatiquement une sélection des plus belles photos correspondantes.</p>
<p>Si vous aimez la photo, je vous mets au défi d’aller sur <a href="http://pixbreak.com" target="_blank" rel="external">pixbreak</a>, de cliquer sur une miniature et de ne pas continuer sur le site en sautant de photo en photo.</p>
</content>
<summary type="html">
<p><strong>EDIT : Le projet n’est plus maintenu et le site n’est plus en ligne.</strong></p>
<p>Amateur de photos, laissez moi vous présente
</summary>
<category term="art" scheme="http://nch3v.github.io/categories/art/"/>
<category term="photo" scheme="http://nch3v.github.io/categories/art/photo/"/>
<category term="lang:fr" scheme="http://nch3v.github.io/tags/lang-fr/"/>
<category term="perso" scheme="http://nch3v.github.io/tags/perso/"/>
<category term="photos" scheme="http://nch3v.github.io/tags/photos/"/>
<category term="pixbreak" scheme="http://nch3v.github.io/tags/pixbreak/"/>
<category term="website" scheme="http://nch3v.github.io/tags/website/"/>
</entry>
<entry>
<title>TiddlyWiki</title>
<link href="http://nch3v.github.io/2005/06/24/TiddlyWiki/"/>
<id>http://nch3v.github.io/2005/06/24/TiddlyWiki/</id>
<published>2005-06-24T07:18:01.000Z</published>
<updated>2016-07-29T08:50:06.980Z</updated>
<content type="html"><p>C’est tout simplement fantastique: un wiki complet qui tient dans une seul page HTML. Ca donne des tas d’idées d’applications ce genre de technologie.</p>
<p><a href="http://tiddlywiki.com/" target="_blank" rel="external">TiddlyWiki - a reusable non-linear personal web notebook</a></p>
<p>D’autant plus intéressant que les mises à jours sont fréquentes et qu’il existe une communauté autour de ce projet ce qui permet de le faire évoluer.</p>
<p>La syntaxe wiki est une des meilleurs que je connaisse. A mon avis, c’est un concept à suivre, ne serait-ce que pour en repiquer certaines idées géniales.</p>
</content>
<summary type="html">
<p>C’est tout simplement fantastique: un wiki complet qui tient dans une seul page HTML. Ca donne des tas d’idées d’applications ce genre de
</summary>
<category term="tech" scheme="http://nch3v.github.io/categories/tech/"/>
<category term="tools" scheme="http://nch3v.github.io/categories/tech/tools/"/>
<category term="fav" scheme="http://nch3v.github.io/tags/fav/"/>
<category term="lang:fr" scheme="http://nch3v.github.io/tags/lang-fr/"/>
<category term="tiddlywiki" scheme="http://nch3v.github.io/tags/tiddlywiki/"/>
<category term="tools" scheme="http://nch3v.github.io/tags/tools/"/>
</entry>
</feed>