From 5ee50a0f0f7f9fdfbb7e17dc46ff274dd62d8fcf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Pelletier?= Date: Mon, 19 May 2025 18:46:59 -0400 Subject: [PATCH] =?UTF-8?q?=F0=9F=9A=80=20Add=20feature:=20WordPress=20con?= =?UTF-8?q?version?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/app/config.py | 3 +- backend/app/convert/convert_wordpress_xml.py | 66 + backend/app/routers/convert_router.py | 6 +- backend/requirements.txt | 4 +- convert_requests_test.http | 10 + minio_sample_data/datafiles/wordpress.xml | 66974 +++++++++++++++++ requirements.txt | 5 +- 7 files changed, 67064 insertions(+), 4 deletions(-) create mode 100644 backend/app/convert/convert_wordpress_xml.py create mode 100644 minio_sample_data/datafiles/wordpress.xml diff --git a/backend/app/config.py b/backend/app/config.py index c83c671..c0bcca3 100644 --- a/backend/app/config.py +++ b/backend/app/config.py @@ -1,5 +1,6 @@ import logging import os + import dotenv from minio import Minio @@ -72,7 +73,7 @@ available_sources = AvailableSourcesResponse( display_name="Markdown", name="markdown", format="markdown" ), AvailableSource( - display_name="Wordpress", name="wordpress_xml", format="xml" + display_name="Wordpress", name="wordpress", format="xml" ), AvailableSource(display_name="Ebook", name="ebook_pdf", format="pdf"), AvailableSource( diff --git a/backend/app/convert/convert_wordpress_xml.py b/backend/app/convert/convert_wordpress_xml.py new file mode 100644 index 0000000..adafe79 --- /dev/null +++ b/backend/app/convert/convert_wordpress_xml.py @@ -0,0 +1,66 @@ +import datetime +import re +from typing import Dict, Union, List + +import markdownify +import pandas as pd +import xmltodict + +from app.config import logger +from app.convert.base_converter import BaseConverter + + +class WordPressXmlConverter(BaseConverter): + def __init__(self, content: Union[str, bytes]): + super().__init__(content) + self.wordpress_dict = None + self.df = None + + def read_file(self) -> None: + self.wordpress_dict = xmltodict.parse(self.content) + self.df = pd.DataFrame(self.wordpress_dict['rss']['channel']['item']) + + def add_metadata(self) -> None: + self.df['source'] = 'WordPress' + self.df['type'] = self.df['wp:post_type'].map( + {'post': 'Article WordPress', 'page': 'Page WordPress'}) + + def convert_columns(self) -> None: + self.df = self.df[ + (self.df['wp:post_type'].isin(['page', 'post'])) & + (self.df['wp:status'] == 'publish') + ].copy() + + self.df['date'] = self.df['wp:post_date'].apply( + lambda x: str(datetime.datetime.fromisoformat(x).isoformat()) + ) + + self.df['content'] = self.df['content:encoded'].apply( + self.wp_to_markdown) + + def rename_columns(self) -> None: + self.df.rename(columns={"link": "url"}, inplace=True) + + def clean_data(self) -> None: + self.df = self.df[['source', 'type', 'date', 'url', 'content']].copy() + self.df['path'] = "" # Add empty 'path' column + self.df.fillna(value="", inplace=True) + + @staticmethod + def wp_to_markdown(x): + try: + md_text = re.sub(r'\n+', ' ', markdownify.markdownify(x, + heading_style='ATX')).strip() + except Exception as e: + logger.error( + f"Error converting WordPress content to Markdown: {str(e)}") + md_text = "" + return md_text + + +def convert_wordpress_xml(content: Union[str, bytes]) -> List[Dict]: + logger.info(f"Starting conversion of WordPress XML content") + converter = WordPressXmlConverter(content) + result = converter.convert() + + return converter.convert() diff --git a/backend/app/routers/convert_router.py b/backend/app/routers/convert_router.py index 0e124ad..f8d7f2f 100644 --- a/backend/app/routers/convert_router.py +++ b/backend/app/routers/convert_router.py @@ -1,7 +1,7 @@ import datetime import json import os -from typing import Any, Dict, Union, List +from typing import Dict, Union, List from fastapi import APIRouter, HTTPException @@ -37,6 +37,7 @@ from app.convert.convert_linkedin_comments_csv import ( ) from app.convert.convert_linkedin_shares_csv import convert_linkedin_shares_csv from app.convert.convert_markdown_txt import convert_markdown_txt +from app.convert.convert_wordpress_xml import convert_wordpress_xml from app.convert.convert_youtube_shorts_video import ( convert_youtube_shorts_video, ) @@ -90,6 +91,9 @@ CONVERTERS = { }, "export": { "txt": convert_export_txt + }, + "wordpress": { + "xml": convert_wordpress_xml } } diff --git a/backend/requirements.txt b/backend/requirements.txt index 129c244..d7bbfd6 100644 --- a/backend/requirements.txt +++ b/backend/requirements.txt @@ -4,4 +4,6 @@ pydantic pytest pandas minio -python-dotenv \ No newline at end of file +python-dotenv +xmltodict +markdownify diff --git a/convert_requests_test.http b/convert_requests_test.http index 4172421..59c1360 100644 --- a/convert_requests_test.http +++ b/convert_requests_test.http @@ -18,4 +18,14 @@ Content-Type: application/json "source_type": "linkedin_shares", "source_format": "csv", "filename": "linkedin_shares.csv" +} + +### Convert WordPress Posts +POST {{baseUrl}}/convert +Content-Type: application/json + +{ + "source_type": "wordpress", + "source_format": "xml", + "filename": "wordpress.xml" } \ No newline at end of file diff --git a/minio_sample_data/datafiles/wordpress.xml b/minio_sample_data/datafiles/wordpress.xml new file mode 100644 index 0000000..d2e196e --- /dev/null +++ b/minio_sample_data/datafiles/wordpress.xml @@ -0,0 +1,66974 @@ + + + + + + + + + + + + + + + + + + + + + + + Je valide ça, service-conseil + https://jevalide.ca + Informatique durable, gestion des données et cybersécurité pour humains + Thu, 18 Jul 2024 16:24:47 +0000 + fr-FR + 1.2 + https://jevalide.ca + https://jevalide.ca + + 1 + + + 107 + + + + + + + + + + + 9 + + + + +
  • L'analyse de contenu avec les techniques du langage naturel
  • +
  • L'intersection entre la technologie et la société, notamment au niveau de l'inclusion et de la responsabilité sociale
  • +
  • Les stratégie de données et la protection de la vie privée pour les petites entreprises
  • +
  • Mes geekeries d'informatique libre, parce que ça fait partie de moi !
  • + +Si tu recherches davantage mon contenu technique, avec du code et des solutions, tu vas pouvoir les trouver sur le bar@code]]>
    + + + + +
    + + 371 + + + + + + + 278 + + + + + + 1 + + + + + + 207 + + + + + 212 + + + + + 317 + + + + + 36 + + + + + 170 + + + + + 314 + + + + + 290 + + + + + 248 + + + + + 227 + + + + + 318 + + + + + 42 + + + + + 47 + + + + + 89 + + + + + 18 + + + + + 223 + + + + + 191 + + + + + 201 + + + + + 120 + + + + + 252 + + + + + 163 + + + + + 241 + + + + + 258 + + + + + 199 + + + + + 281 + + + + + 221 + + + + + 133 + + + + + 194 + + + + + 63 + + + + + 369 + + + + + 326 + + + + + 192 + + + + + 19 + + + + + 118 + + + + + 164 + + + + + 20 + + + + + 267 + + + + + 48 + + + + + 147 + + + + + 22 + + + + + 112 + + + + + 299 + + + + + 208 + + + + + 35 + + + + + 336 + + + + + 247 + + + + + 232 + + + + + 58 + + + + + 259 + + + + + 176 + + + + + 70 + + + + + 90 + + + + + 343 + + + + + 293 + + + + + 337 + + + + + 108 + + + + + 134 + + + + + 177 + + + + + 100 + + + + + 350 + + + + + 168 + + + + + 101 + + + + + 187 + + + + + 249 + + + + + 365 + + + + + 121 + + + + + 198 + + + + + 235 + + + + + 328 + + + + + 166 + + + + + 361 + + + + + 298 + + + + + 137 + + + + + 122 + + + + + 129 + + + + + 64 + + + + + 238 + + + + + 292 + + + + + 154 + + + + + 55 + + + + + 102 + + + + + 270 + + + + + 116 + + + + + 243 + + + + + 30 + + + + + 376 + + + + + 193 + + + + + 262 + + + + + 265 + + + + + 374 + + + + + 195 + + + + + 179 + + + + + 132 + + + + + 255 + + + + + 59 + + + + + 286 + + + + + 27 + + + + + 49 + + + + + 330 + + + + + 50 + + + + + 23 + + + + + 65 + + + + + 186 + + + + + 172 + + + + + 340 + + + + + 39 + + + + + 117 + + + + + 40 + + + + + 323 + + + + + 142 + + + + + 219 + + + + + 71 + + + + + 72 + + + + + 148 + + + + + 138 + + + + + 143 + + + + + 356 + + + + + 28 + + + + + 185 + + + + + 303 + + + + + 373 + + + + + 60 + + + + + 335 + + + + + 61 + + + + + 312 + + + + + 302 + + + + + 218 + + + + + 322 + + + + + 91 + + + + + 325 + + + + + 162 + + + + + 295 + + + + + 339 + + + + + 264 + + + + + 377 + + + + + 338 + + + + + 341 + + + + + 43 + + + + + 78 + + + + + 372 + + + + + 184 + + + + + 301 + + + + + 351 + + + + + 37 + + + + + 305 + + + + + 169 + + + + + 231 + + + + + 150 + + + + + 127 + + + + + 250 + + + + + 203 + + + + + 140 + + + + + 307 + + + + + 165 + + + + + 103 + + + + + 283 + + + + + 225 + + + + + 155 + + + + + 73 + + + + + 375 + + + + + 260 + + + + + 311 + + + + + 31 + + + + + 268 + + + + + 346 + + + + + 24 + + + + + 104 + + + + + 320 + + + + + 309 + + + + + 345 + + + + + 111 + + + + + 180 + + + + + 344 + + + + + 316 + + + + + 197 + + + + + 319 + + + + + 190 + + + + + 254 + + + + + 79 + + + + + 228 + + + + + 29 + + + + + 332 + + + + + 38 + + + + + 66 + + + + + 80 + + + + + 233 + + + + + 149 + + + + + 144 + + + + + 363 + + + + + 331 + + + + + 81 + + + + + 196 + + + + + 128 + + + + + 256 + + + + + 151 + + + + + 171 + + + + + 92 + + + + + 211 + + + + + 315 + + + + + 189 + + + + + 206 + + + + + 10 + + + + + 119 + + + + + 300 + + + + + 93 + + + + + 276 + + + + + 11 + + + + + 294 + + + + + 240 + + + + + 282 + + + + + 310 + + + + + 109 + + + + + 44 + + + + + 32 + + + + + 178 + + + + + 67 + + + + + 347 + + + + + 378 + + + + + 244 + + + + + 358 + + + + + 215 + + + + + 174 + + + + + 175 + + + + + 213 + + + + + 13 + + + + + 51 + + + + + 275 + + + + + 52 + + + + + 274 + + + + + 277 + + + + + 202 + + + + + 237 + + + + + 204 + + + + + 242 + + + + + 229 + + + + + 25 + + + + + 220 + + + + + 82 + + + + + 94 + + + + + 110 + + + + + 362 + + + + + 83 + + + + + 45 + + + + + 217 + + + + + 279 + + + + + 68 + + + + + 334 + + + + + 156 + + + + + 366 + + + + + 288 + + + + + 367 + + + + + 214 + + + + + 352 + + + + + 234 + + + + + 139 + + + + + 152 + + + + + 125 + + + + + 113 + + + + + 14 + + + + + 272 + + + + + 370 + + + + + 263 + + + + + 173 + + + + + 95 + + + + + 287 + + + + + 269 + + + + + 245 + + + + + 329 + + + + + 284 + + + + + 230 + + + + + 145 + + + + + 364 + + + + + 253 + + + + + 333 + + + + + 353 + + + + + 209 + + + + + 157 + + + + + 74 + + + + + 12 + + + + + 46 + + + + + 26 + + + + + 75 + + + + + 56 + + + + + 69 + + + + + 360 + + + + + 280 + + + + + 114 + + + + + 261 + + + + + 226 + + + + + 57 + + + + + 304 + + + + + 126 + + + + + 210 + + + + + 354 + + + + + 306 + + + + + 130 + + + + + 273 + + + + + 84 + + + + + 62 + + + + + 85 + + + + + 15 + + + + + 183 + + + + + 222 + + + + + 105 + + + + + 158 + + + + + 21 + + + + + 159 + + + + + 16 + + + + + 266 + + + + + 86 + + + + + 153 + + + + + 324 + + + + + 17 + + + + + 146 + + + + + 167 + + + + + 246 + + + + + 96 + + + + + 297 + + + + + 308 + + + + + 160 + + + + + 53 + + + + + 141 + + + + + 97 + + + + + 200 + + + + + 182 + + + + + 181 + + + + + 76 + + + + + 257 + + + + + 349 + + + + + 348 + + + + + 123 + + + + + 124 + + + + + 321 + + + + + 224 + + + + + 98 + + + + + 271 + + + + + 251 + + + + + 216 + + + + + 106 + + + + + 161 + + + + + 54 + + + + + 291 + + + + + 77 + + + + + 115 + + + + + 313 + + + + + 289 + + + + + 296 + + + + + 285 + + + + + 327 + + + + + 236 + + + + + 41 + + + + + 357 + + + + + 135 + + + + + 99 + + + + + 136 + + + + + 205 + + + + + 131 + + + + + 87 + + + + + 239 + + + + + 359 + + + + + 342 + + + + + 33 + + + + + 368 + + + + + 88 + + + + + 188 + + + + + 34 + + + + + 207 + + + + + + + 6 + + + + + + + 212 + + + + + + + 317 + + + + + + + 36 + + + + + + + 170 + + + + + + + 314 + + + + + + + 290 + + + + + + + 248 + + + + + + + 227 + + + + + + + 318 + + + + + + + 42 + + + + + + + 47 + + + + + + + 89 + + + + + + + 18 + + + + + + + 223 + + + + + + + 191 + + + + + + + 201 + + + + + + + 120 + + + + + + + 252 + + + + + + + 163 + + + + + + + 355 + + + + + + + 241 + + + + + + + 258 + + + + + + + 199 + + + + + + + 281 + + + + + + + 221 + + + + + + + 133 + + + + + + + 194 + + + + + + + 63 + + + + + + + 369 + + + + + + + 326 + + + + + + + 192 + + + + + + + 19 + + + + + + + 118 + + + + + + + 164 + + + + + + + 20 + + + + + + + 267 + + + + + + + 107 + + + + + + + + + + + + 48 + + + + + + + 147 + + + + + + + 22 + + + + + + + 112 + + + + + + + 299 + + + + + + + 208 + + + + + + + 35 + + + + + + + 336 + + + + + + + 247 + + + + + + + 232 + + + + + + + 58 + + + + + + + 259 + + + + + + + 176 + + + + + + + 70 + + + + + + + 90 + + + + + + + 343 + + + + + + + 293 + + + + + + + 337 + + + + + + + 108 + + + + + + + 134 + + + + + + + 177 + + + + + + + 100 + + + + + + + 350 + + + + + + + 168 + + + + + + + 101 + + + + + + + 187 + + + + + + + 249 + + + + + + + 365 + + + + + + + 121 + + + + + + + 198 + + + + + + + 235 + + + + + + + 328 + + + + + + + 166 + + + + + + + 361 + + + + + + + 298 + + + + + + + 137 + + + + + + + 122 + + + + + + + 129 + + + + + + + 64 + + + + + + + 238 + + + + + + + 292 + + + + + + + 154 + + + + + + + 55 + + + + + + + 102 + + + + + + + 270 + + + + + + + 116 + + + + + + + 243 + + + + + + + 30 + + + + + + + 376 + + + + + + + 193 + + + + + + + 262 + + + + + + + 265 + + + + + + + 374 + + + + + + + 195 + + + + + + + 179 + + + + + + + 132 + + + + + + + 255 + + + + + + + 59 + + + + + + + 286 + + + + + + + 27 + + + + + + + 49 + + + + + + + 330 + + + + + + + 50 + + + + + + + 23 + + + + + + + 65 + + + + + + + 186 + + + + + + + 172 + + + + + + + 340 + + + + + + + 39 + + + + + + + 117 + + + + + + + 40 + + + + + + + 323 + + + + + + + 142 + + + + + + + 219 + + + + + + + 71 + + + + + + + 72 + + + + + + + 148 + + + + + + + 138 + + + + + + + 143 + + + + + + + 356 + + + + + + + 185 + + + + + + + 28 + + + + + + + 303 + + + + + + + 373 + + + + + + + 60 + + + + + + + 335 + + + + + + + 61 + + + + + + + 312 + + + + + + + 302 + + + + + + + 218 + + + + + + + 322 + + + + + + + 91 + + + + + + + 325 + + + + + + + 162 + + + + + + + 295 + + + + + + + 339 + + + + + + + 264 + + + + + + + 377 + + + + + + + 338 + + + + + + + 341 + + + + + + + 43 + + + + + + + 78 + + + + + + + 372 + + + + + + + 184 + + + + + + + 301 + + + + + + + 351 + + + + + + + 37 + + + + + + + 305 + + + + + + + 169 + + + + + + + 231 + + + + + + + 150 + + + + + + + 127 + + + + + + + 250 + + + + + + + 203 + + + + + + + 140 + + + + + + + 307 + + + + + + + 165 + + + + + + + 2 + + + + + + + 103 + + + + + + + 283 + + + + + + + 225 + + + + + + + 155 + + + + + + + 73 + + + + + + + 375 + + + + + + + 260 + + + + + + + 311 + + + + + + + 31 + + + + + + + 268 + + + + + + + 346 + + + + + + + 24 + + + + + + + 104 + + + + + + + 320 + + + + + + + 309 + + + + + + + 345 + + + + + + + 111 + + + + + + + 180 + + + + + + + 344 + + + + + + + 316 + + + + + + + 197 + + + + + + + 319 + + + + + + + 190 + + + + + + + 254 + + + + + + + 79 + + + + + + + 228 + + + + + + + 29 + + + + + + + 332 + + + + + + + 38 + + + + + + + 66 + + + + + + + 80 + + + + + + + 233 + + + + + + + 149 + + + + + + + 144 + + + + + + + 363 + + + + + + + 331 + + + + + + + 81 + + + + + + + 196 + + + + + + + 128 + + + + + + + 256 + + + + + + + 9 + + + + + +
  • L'analyse de contenu avec les techniques du langage naturel
  • +
  • L'intersection entre la technologie et la société, notamment au niveau de l'inclusion et de la responsabilité sociale
  • +
  • Les stratégie de données et la protection de la vie privée pour les petites entreprises
  • +
  • Mes geekeries d'informatique libre, parce que ça fait partie de moi !
  • + +Si tu recherches davantage mon contenu technique, avec du code et des solutions, tu vas pouvoir les trouver sur le bar@code]]>
    + + + + +
    + + 151 + + + + + + + 171 + + + + + + + 92 + + + + + + + 211 + + + + + + + 315 + + + + + + + 189 + + + + + + + 206 + + + + + + + 10 + + + + + + + 119 + + + + + + + 300 + + + + + + + 93 + + + + + + + 276 + + + + + + + 11 + + + + + + + 294 + + + + + + + 240 + + + + + + + 282 + + + + + + + 310 + + + + + + + 109 + + + + + + + 44 + + + + + + + 32 + + + + + + + 178 + + + + + + + 67 + + + + + + + 347 + + + + + + + 378 + + + + + + + 3 + + + + + + + 244 + + + + + + + 358 + + + + + + + 215 + + + + + + + 174 + + + + + + + 175 + + + + + + + 213 + + + + + + + 13 + + + + + + + 51 + + + + + + + 275 + + + + + + + 52 + + + + + + + 274 + + + + + + + 277 + + + + + + + 202 + + + + + + + 237 + + + + + + + 204 + + + + + + + 242 + + + + + + + 229 + + + + + + + 25 + + + + + + + 220 + + + + + + + 82 + + + + + + + 94 + + + + + + + 110 + + + + + + + 362 + + + + + + + 4 + + + + + + + 83 + + + + + + + 45 + + + + + + + 217 + + + + + + + 279 + + + + + + + 68 + + + + + + + 334 + + + + + + + 156 + + + + + + + 366 + + + + + + + 288 + + + + + + + 367 + + + + + + + 214 + + + + + + + 352 + + + + + + + 234 + + + + + + + 139 + + + + + + + 152 + + + + + + + 125 + + + + + + + 113 + + + + + + + 14 + + + + + + + 272 + + + + + + + 370 + + + + + + + 371 + + + + + + + + 263 + + + + + + + 173 + + + + + + + 95 + + + + + + + 287 + + + + + + + 269 + + + + + + + 245 + + + + + + + 329 + + + + + + + 284 + + + + + + + 230 + + + + + + + 145 + + + + + + + 364 + + + + + + + 253 + + + + + + + 333 + + + + + + + 353 + + + + + + + 209 + + + + + + + 157 + + + + + + + 74 + + + + + + + 12 + + + + + + + 46 + + + + + + + 26 + + + + + + + 75 + + + + + + + 56 + + + + + + + 69 + + + + + + + 360 + + + + + + + 280 + + + + + + + 114 + + + + + + + 261 + + + + + + + 226 + + + + + + + 57 + + + + + + + 304 + + + + + + + 5 + + + + + + + 126 + + + + + + + 210 + + + + + + + 354 + + + + + + + 306 + + + + + + + 130 + + + + + + + 273 + + + + + + + 84 + + + + + + + 62 + + + + + + + 85 + + + + + + + 15 + + + + + + + 183 + + + + + + + 222 + + + + + + + 105 + + + + + + + 158 + + + + + + + 21 + + + + + + + 159 + + + + + + + 278 + + + + + + + 16 + + + + + + + 266 + + + + + + + 86 + + + + + + + 153 + + + + + + + 324 + + + + + + + 17 + + + + + + + 146 + + + + + + + 167 + + + + + + + 246 + + + + + + + 96 + + + + + + + 297 + + + + + + + 308 + + + + + + + 160 + + + + + + + 53 + + + + + + + 141 + + + + + + + 97 + + + + + + + 200 + + + + + + + 182 + + + + + + + 181 + + + + + + + 76 + + + + + + + 257 + + + + + + + 349 + + + + + + + 348 + + + + + + + 123 + + + + + + + 124 + + + + + + + 321 + + + + + + + 224 + + + + + + + 98 + + + + + + + 271 + + + + + + + 251 + + + + + + + 216 + + + + + + + 106 + + + + + + + 161 + + + + + + + 54 + + + + + + + 291 + + + + + + + 77 + + + + + + + 1 + + + + + + + 115 + + + + + + + 313 + + + + + + + 289 + + + + + + + 296 + + + + + + + 285 + + + + + + + 327 + + + + + + + 236 + + + + + + + 41 + + + + + + + 357 + + + + + + + 135 + + + + + + + 99 + + + + + + + 136 + + + + + + + 205 + + + + + + + 131 + + + + + + + 87 + + + + + + + 239 + + + + + + + 359 + + + + + + + 342 + + + + + + + 33 + + + + + + + 368 + + + + + + + 88 + + + + + + + 188 + + + + + + + 34 + + + + + + 6nav_menu + + 3nav_menu + + 4nav_menu + + 5nav_menu + + + https://wordpress.org/?v=6.5.5 + + + https://jevalide.ca/wp-content/uploads/2022/06/cropped-logo-case-cocher-32x32.png + Je valide ça, service-conseil + https://jevalide.ca + 32 + 32 + + + + <![CDATA[default-img]]> + https://jevalide.ca/default-img/ + Thu, 05 Aug 2021 18:49:20 +0000 + + https://jevalide.ca/wp-content/uploads/2021/08/default-img.jpg + + + + 19 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[cropped-logo-case-cocher.png]]> + https://jevalide.ca/cropped-logo-case-cocher-png-2/ + Thu, 05 Aug 2021 20:23:42 +0000 + + https://jevalide.ca/wp-content/uploads/2021/08/cropped-logo-case-cocher.png + + + + 41 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[selfie]]> + https://jevalide.ca/selfie/ + Thu, 05 Aug 2021 20:29:09 +0000 + + https://jevalide.ca/wp-content/uploads/2021/08/selfie.jpg + + + + 44 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[En-vacances-Twitter]]> + https://jevalide.ca/en-vacances-twitter/ + Fri, 06 Aug 2021 20:54:50 +0000 + + https://jevalide.ca/wp-content/uploads/2021/08/En-vacances-Twitter.png + + + + 131 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[traitement_donnees]]> + https://jevalide.ca/traitement_donnees/ + Sat, 07 Aug 2021 02:27:02 +0000 + + https://jevalide.ca/wp-content/uploads/2021/08/traitement_donnees.png + + + + 323 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[travaux_routiers_sfplot]]> + https://jevalide.ca/travaux_routiers_sfplot/ + Sat, 07 Aug 2021 02:27:03 +0000 + + https://jevalide.ca/wp-content/uploads/2021/08/travaux_routiers_sfplot.png + + + + 324 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[unnamed-chunk-13-1]]> + https://jevalide.ca/unnamed-chunk-13-1/ + Sat, 07 Aug 2021 02:41:18 +0000 + + https://jevalide.ca/wp-content/uploads/2021/08/unnamed-chunk-13-1.png + + + + 335 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[unnamed-chunk-14-1]]> + https://jevalide.ca/unnamed-chunk-14-1/ + Sat, 07 Aug 2021 02:41:27 +0000 + + https://jevalide.ca/wp-content/uploads/2021/08/unnamed-chunk-14-1.png + + + + 336 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[unnamed-chunk-15-1]]> + https://jevalide.ca/unnamed-chunk-15-1/ + Sat, 07 Aug 2021 02:41:36 +0000 + + https://jevalide.ca/wp-content/uploads/2021/08/unnamed-chunk-15-1.png + + + + 337 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[comm-fb-presse-small]]> + https://jevalide.ca/comm-fb-presse-small/ + Sat, 07 Aug 2021 02:47:25 +0000 + + https://jevalide.ca/wp-content/uploads/2021/08/comm-fb-presse-small.png + + + + 341 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[comm-fb-presse-small-1]]> + https://jevalide.ca/comm-fb-presse-small-1/ + Sat, 07 Aug 2021 02:53:50 +0000 + + https://jevalide.ca/wp-content/uploads/2021/08/comm-fb-presse-small-1.png + + + + 344 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[comm-fb-presse-small-2]]> + https://jevalide.ca/comm-fb-presse-small-2/ + Sat, 07 Aug 2021 03:04:56 +0000 + + https://jevalide.ca/wp-content/uploads/2021/08/comm-fb-presse-small-2.png + + + + 350 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[g000]]> + https://jevalide.ca/g000/ + Sat, 07 Aug 2021 03:06:42 +0000 + + https://jevalide.ca/wp-content/uploads/2021/08/g000.png + + + + 351 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[g000-1]]> + https://jevalide.ca/g000-1/ + Sat, 07 Aug 2021 03:07:24 +0000 + + https://jevalide.ca/wp-content/uploads/2021/08/g000-1.png + + + + 352 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[woocommerce-placeholder]]> + https://jevalide.ca/woocommerce-placeholder/ + Thu, 05 Aug 2021 16:32:18 +0000 + + https://jevalide.ca/wp-content/uploads/2021/08/woocommerce-placeholder.png + + + + 2793 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[logo-case-cocher]]> + https://jevalide.ca/logo-case-cocher-2/ + Thu, 05 Aug 2021 16:45:15 +0000 + + https://jevalide.ca/wp-content/uploads/2021/08/logo-case-cocher.png + + + + 2794 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[default-img]]> + https://jevalide.ca/default-img-4/ + Thu, 05 Aug 2021 18:49:22 +0000 + + https://jevalide.ca/wp-content/uploads/2021/08/default-img-1.jpg + + + + 2795 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[cropped-cropped-logo-case-cocher.png]]> + https://jevalide.ca/cropped-cropped-logo-case-cocher-png/ + Thu, 05 Aug 2021 20:59:33 +0000 + + https://jevalide.ca/wp-content/uploads/2021/08/cropped-cropped-logo-case-cocher.png + + + + 2796 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Autonomie avec les logiciels libres]]> + https://jevalide.ca/autonomie-avec-les-logiciels-libres/ + Thu, 05 Aug 2021 21:02:36 +0000 + + https://jevalide.ca/wp-content/uploads/2021/08/Autonomie-avec-les-logiciels-libres.png + + + + 2797 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Librairies-utilisees-pour-extraire-des-informations-depuis-une-URL-avec-Python]]> + https://jevalide.ca/librairies-utilisees-pour-extraire-des-informations-depuis-une-url-avec-python/ + Fri, 06 Aug 2021 02:00:34 +0000 + + https://jevalide.ca/wp-content/uploads/2021/08/Librairies-utilisees-pour-extraire-des-informations-depuis-une-URL-avec-Python.jpg + + +
    Librairies utilisées pour
+extraire des informations depuis une URL avec Python vers des liens Markdown: requests, bs4, urllib et plac
    +

    + + + +
    • requests, qui permet d'appeler des services web via le protocole HTTP
    • bs4, habituellement reconnu sous le nom de BeautifulSoup, qui permet de traiter le code HTML reçu avec requests et d'extraire les éléments qui nous intéressent
    • urllib, qui permet d'extraire des éléments depuis une URL, tel que des paramètres, des fragments ou des éléments du nom de domaine.
    • plac, qui fournit une interface simple en ligne de commande pour les fonctions Python
    +
    +]]>
    + + 2798 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[Nextcloud-Installation-VirtualBox-007]]> + https://jevalide.ca/nextcloud-installation-virtualbox-007/ + Sat, 07 Aug 2021 00:38:18 +0000 + + https://jevalide.ca/wp-content/uploads/2021/04/Nextcloud-Installation-VirtualBox-007.png + + + + 189 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[g001]]> + https://jevalide.ca/g001/ + Sat, 07 Aug 2021 03:07:32 +0000 + + https://jevalide.ca/wp-content/uploads/2021/08/g001.png + + + + 353 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[g002]]> + https://jevalide.ca/g002/ + Sat, 07 Aug 2021 03:07:38 +0000 + + https://jevalide.ca/wp-content/uploads/2021/08/g002.png + + + + 354 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[g003]]> + https://jevalide.ca/g003/ + Sat, 07 Aug 2021 03:07:47 +0000 + + https://jevalide.ca/wp-content/uploads/2021/08/g003.png + + + + 355 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[g004]]> + https://jevalide.ca/g004/ + Sat, 07 Aug 2021 03:07:57 +0000 + + https://jevalide.ca/wp-content/uploads/2021/08/g004.png + + + + 356 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[g005]]> + https://jevalide.ca/g005/ + Sat, 07 Aug 2021 03:08:04 +0000 + + https://jevalide.ca/wp-content/uploads/2021/08/g005.png + + + + 357 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[g006]]> + https://jevalide.ca/g006/ + Sat, 07 Aug 2021 03:08:15 +0000 + + https://jevalide.ca/wp-content/uploads/2021/08/g006.png + + + + 358 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[g007]]> + https://jevalide.ca/g007/ + Sat, 07 Aug 2021 03:08:22 +0000 + + https://jevalide.ca/wp-content/uploads/2021/08/g007.png + + + + 359 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[route_autonomie]]> + https://jevalide.ca/route_autonomie/ + Sat, 07 Aug 2021 00:30:00 +0000 + + https://jevalide.ca/wp-content/uploads/2021/07/route_autonomie.jpg + + + + 2799 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[arch-manjaro-video]]> + https://jevalide.ca/arch-manjaro-video/ + Sat, 07 Aug 2021 00:33:20 +0000 + + https://jevalide.ca/wp-content/uploads/2021/01/arch-manjaro-video.jpg + + + + 2800 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[fruhjahrsputz-2066605_720]]> + https://jevalide.ca/fruhjahrsputz-2066605_720/ + Sat, 07 Aug 2021 00:34:54 +0000 + + https://jevalide.ca/wp-content/uploads/2021/05/fruhjahrsputz-2066605_720.jpg + + + + 2801 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Nextcloud-Installation-VirtualBox-001]]> + https://jevalide.ca/nextcloud-installation-virtualbox-001/ + Sat, 07 Aug 2021 00:38:14 +0000 + + https://jevalide.ca/wp-content/uploads/2021/04/Nextcloud-Installation-VirtualBox-001.png + + + + 2802 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Nextcloud-Installation-VirtualBox-002]]> + https://jevalide.ca/nextcloud-installation-virtualbox-002/ + Sat, 07 Aug 2021 00:38:15 +0000 + + https://jevalide.ca/wp-content/uploads/2021/04/Nextcloud-Installation-VirtualBox-002.png + + + + 2803 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Nextcloud-Installation-VirtualBox-003]]> + https://jevalide.ca/nextcloud-installation-virtualbox-003/ + Sat, 07 Aug 2021 00:38:15 +0000 + + https://jevalide.ca/wp-content/uploads/2021/04/Nextcloud-Installation-VirtualBox-003.png + + + + 2804 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Nextcloud-Installation-VirtualBox-005]]> + https://jevalide.ca/nextcloud-installation-virtualbox-005/ + Sat, 07 Aug 2021 00:38:16 +0000 + + https://jevalide.ca/wp-content/uploads/2021/04/Nextcloud-Installation-VirtualBox-005.png + + + + 2805 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Nextcloud-Installation-VirtualBox-006]]> + https://jevalide.ca/nextcloud-installation-virtualbox-006/ + Sat, 07 Aug 2021 00:38:17 +0000 + + https://jevalide.ca/wp-content/uploads/2021/04/Nextcloud-Installation-VirtualBox-006.png + + + + 2806 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Nextcloud-Installation-VirtualBox-008]]> + https://jevalide.ca/nextcloud-installation-virtualbox-008/ + Sat, 07 Aug 2021 00:38:20 +0000 + + https://jevalide.ca/wp-content/uploads/2021/04/Nextcloud-Installation-VirtualBox-008.png + + + + 2807 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Nextcloud-Installation-VirtualBox-009]]> + https://jevalide.ca/nextcloud-installation-virtualbox-009/ + Sat, 07 Aug 2021 00:38:21 +0000 + + https://jevalide.ca/wp-content/uploads/2021/04/Nextcloud-Installation-VirtualBox-009.png + + + + 2808 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Nextcloud-Installation-VirtualBox-010]]> + https://jevalide.ca/nextcloud-installation-virtualbox-010/ + Sat, 07 Aug 2021 00:38:22 +0000 + + https://jevalide.ca/wp-content/uploads/2021/04/Nextcloud-Installation-VirtualBox-010.png + + + + 2809 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Nextcloud-Installation-VirtualBox-011]]> + https://jevalide.ca/nextcloud-installation-virtualbox-011/ + Sat, 07 Aug 2021 00:38:23 +0000 + + https://jevalide.ca/wp-content/uploads/2021/04/Nextcloud-Installation-VirtualBox-011.png + + + + 2810 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Nextcloud-Installation-VirtualBox-017]]> + https://jevalide.ca/nextcloud-installation-virtualbox-017/ + Sat, 07 Aug 2021 00:38:28 +0000 + + https://jevalide.ca/wp-content/uploads/2021/04/Nextcloud-Installation-VirtualBox-017.png + + + + 199 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Nextcloud-Installation-VirtualBox-018]]> + https://jevalide.ca/nextcloud-installation-virtualbox-018/ + Sat, 07 Aug 2021 00:38:29 +0000 + + https://jevalide.ca/wp-content/uploads/2021/04/Nextcloud-Installation-VirtualBox-018.png + + + + 200 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Nextcloud-Installation-VirtualBox-021]]> + https://jevalide.ca/nextcloud-installation-virtualbox-021/ + Sat, 07 Aug 2021 00:38:32 +0000 + + https://jevalide.ca/wp-content/uploads/2021/04/Nextcloud-Installation-VirtualBox-021.png + + + + 203 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Nextcloud-Installation-VirtualBox-022]]> + https://jevalide.ca/nextcloud-installation-virtualbox-022/ + Sat, 07 Aug 2021 00:38:33 +0000 + + https://jevalide.ca/wp-content/uploads/2021/04/Nextcloud-Installation-VirtualBox-022.png + + + + 204 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Nextcloud-Installation-VirtualBox-023]]> + https://jevalide.ca/nextcloud-installation-virtualbox-023/ + Sat, 07 Aug 2021 00:38:34 +0000 + + https://jevalide.ca/wp-content/uploads/2021/04/Nextcloud-Installation-VirtualBox-023.png + + + + 205 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Nextcloud-Installation-VirtualBox-026]]> + https://jevalide.ca/nextcloud-installation-virtualbox-026/ + Sat, 07 Aug 2021 00:38:37 +0000 + + https://jevalide.ca/wp-content/uploads/2021/04/Nextcloud-Installation-VirtualBox-026.png + + + + 208 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Nextcloud-Installation-VirtualBox-031]]> + https://jevalide.ca/nextcloud-installation-virtualbox-031/ + Sat, 07 Aug 2021 00:38:41 +0000 + + https://jevalide.ca/wp-content/uploads/2021/04/Nextcloud-Installation-VirtualBox-031.png + + + + 213 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Nextcloud-Installation-VirtualBox-012]]> + https://jevalide.ca/nextcloud-installation-virtualbox-012/ + Sat, 07 Aug 2021 00:38:24 +0000 + + https://jevalide.ca/wp-content/uploads/2021/04/Nextcloud-Installation-VirtualBox-012.png + + + + 2811 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Nextcloud-Installation-VirtualBox-013]]> + https://jevalide.ca/nextcloud-installation-virtualbox-013/ + Sat, 07 Aug 2021 00:38:24 +0000 + + https://jevalide.ca/wp-content/uploads/2021/04/Nextcloud-Installation-VirtualBox-013.png + + + + 2812 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Nextcloud-Installation-VirtualBox-014]]> + https://jevalide.ca/nextcloud-installation-virtualbox-014/ + Sat, 07 Aug 2021 00:38:25 +0000 + + https://jevalide.ca/wp-content/uploads/2021/04/Nextcloud-Installation-VirtualBox-014.png + + + + 2813 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Nextcloud-Installation-VirtualBox-015]]> + https://jevalide.ca/nextcloud-installation-virtualbox-015/ + Sat, 07 Aug 2021 00:38:26 +0000 + + https://jevalide.ca/wp-content/uploads/2021/04/Nextcloud-Installation-VirtualBox-015.png + + + + 2814 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Nextcloud-Installation-VirtualBox-016]]> + https://jevalide.ca/nextcloud-installation-virtualbox-016/ + Sat, 07 Aug 2021 00:38:27 +0000 + + https://jevalide.ca/wp-content/uploads/2021/04/Nextcloud-Installation-VirtualBox-016.png + + + + 2815 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Nextcloud-Installation-VirtualBox-019]]> + https://jevalide.ca/nextcloud-installation-virtualbox-019/ + Sat, 07 Aug 2021 00:38:30 +0000 + + https://jevalide.ca/wp-content/uploads/2021/04/Nextcloud-Installation-VirtualBox-019.png + + + + 2816 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Nextcloud-Installation-VirtualBox-020]]> + https://jevalide.ca/nextcloud-installation-virtualbox-020/ + Sat, 07 Aug 2021 00:38:31 +0000 + + https://jevalide.ca/wp-content/uploads/2021/04/Nextcloud-Installation-VirtualBox-020.png + + + + 2817 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Nextcloud-Installation-VirtualBox-024]]> + https://jevalide.ca/nextcloud-installation-virtualbox-024/ + Sat, 07 Aug 2021 00:38:35 +0000 + + https://jevalide.ca/wp-content/uploads/2021/04/Nextcloud-Installation-VirtualBox-024.png + + + + 2818 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Nextcloud-Installation-VirtualBox-025]]> + https://jevalide.ca/nextcloud-installation-virtualbox-025/ + Sat, 07 Aug 2021 00:38:36 +0000 + + https://jevalide.ca/wp-content/uploads/2021/04/Nextcloud-Installation-VirtualBox-025.png + + + + 2819 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Nextcloud-Installation-VirtualBox-027]]> + https://jevalide.ca/nextcloud-installation-virtualbox-027/ + Sat, 07 Aug 2021 00:38:38 +0000 + + https://jevalide.ca/wp-content/uploads/2021/04/Nextcloud-Installation-VirtualBox-027.png + + + + 2820 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Nextcloud-Installation-VirtualBox-028]]> + https://jevalide.ca/nextcloud-installation-virtualbox-028/ + Sat, 07 Aug 2021 00:38:39 +0000 + + https://jevalide.ca/wp-content/uploads/2021/04/Nextcloud-Installation-VirtualBox-028.png + + + + 2821 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Nextcloud-Installation-VirtualBox-029]]> + https://jevalide.ca/nextcloud-installation-virtualbox-029/ + Sat, 07 Aug 2021 00:38:40 +0000 + + https://jevalide.ca/wp-content/uploads/2021/04/Nextcloud-Installation-VirtualBox-029.png + + + + 2822 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Nextcloud-Installation-VirtualBox-030]]> + https://jevalide.ca/nextcloud-installation-virtualbox-030/ + Sat, 07 Aug 2021 00:38:40 +0000 + + https://jevalide.ca/wp-content/uploads/2021/04/Nextcloud-Installation-VirtualBox-030.png + + + + 2823 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Nextcloud-Installation-VirtualBox-034]]> + https://jevalide.ca/nextcloud-installation-virtualbox-034/ + Sat, 07 Aug 2021 00:38:44 +0000 + + https://jevalide.ca/wp-content/uploads/2021/04/Nextcloud-Installation-VirtualBox-034.png + + + + 216 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Nextcloud-Installation-VirtualBox-036]]> + https://jevalide.ca/nextcloud-installation-virtualbox-036/ + Sat, 07 Aug 2021 00:38:45 +0000 + + https://jevalide.ca/wp-content/uploads/2021/04/Nextcloud-Installation-VirtualBox-036.png + + + + 218 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Nextcloud-Installation-VirtualBox-038]]> + https://jevalide.ca/nextcloud-installation-virtualbox-038/ + Sat, 07 Aug 2021 00:59:54 +0000 + + https://jevalide.ca/wp-content/uploads/2021/04/Nextcloud-Installation-VirtualBox-038.png + + + + 225 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Nextcloud-Installation-VirtualBox-045]]> + https://jevalide.ca/nextcloud-installation-virtualbox-045/ + Sat, 07 Aug 2021 01:00:01 +0000 + + https://jevalide.ca/wp-content/uploads/2021/04/Nextcloud-Installation-VirtualBox-045.png + + + + 232 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Nextcloud-Installation-VirtualBox-046]]> + https://jevalide.ca/nextcloud-installation-virtualbox-046/ + Sat, 07 Aug 2021 01:04:39 +0000 + + https://jevalide.ca/wp-content/uploads/2021/04/Nextcloud-Installation-VirtualBox-046.png + + + + 235 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Nextcloud-Installation-VirtualBox-047]]> + https://jevalide.ca/nextcloud-installation-virtualbox-047/ + Sat, 07 Aug 2021 01:04:40 +0000 + + https://jevalide.ca/wp-content/uploads/2021/04/Nextcloud-Installation-VirtualBox-047.png + + + + 236 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Nextcloud-Installation-VirtualBox-048]]> + https://jevalide.ca/nextcloud-installation-virtualbox-048/ + Sat, 07 Aug 2021 01:04:42 +0000 + + https://jevalide.ca/wp-content/uploads/2021/04/Nextcloud-Installation-VirtualBox-048.png + + + + 237 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Nextcloud-Installation-VirtualBox-049]]> + https://jevalide.ca/nextcloud-installation-virtualbox-049/ + Sat, 07 Aug 2021 01:04:42 +0000 + + https://jevalide.ca/wp-content/uploads/2021/04/Nextcloud-Installation-VirtualBox-049.png + + + + 238 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Nextcloud-Installation-VirtualBox-050]]> + https://jevalide.ca/nextcloud-installation-virtualbox-050/ + Sat, 07 Aug 2021 01:04:43 +0000 + + https://jevalide.ca/wp-content/uploads/2021/04/Nextcloud-Installation-VirtualBox-050.png + + + + 239 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[YunoHost_logo]]> + https://jevalide.ca/yunohost_logo/ + Sat, 07 Aug 2021 01:14:26 +0000 + + https://jevalide.ca/wp-content/uploads/2021/02/YunoHost_logo.png + + + + 247 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[borg-logo]]> + https://jevalide.ca/borg-logo/ + Sat, 07 Aug 2021 01:15:12 +0000 + + https://jevalide.ca/wp-content/uploads/2021/02/borg-logo.png + + + + 248 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Nextcloud-Installation-VirtualBox-032]]> + https://jevalide.ca/nextcloud-installation-virtualbox-032/ + Sat, 07 Aug 2021 00:38:42 +0000 + + https://jevalide.ca/wp-content/uploads/2021/04/Nextcloud-Installation-VirtualBox-032.png + + + + 2824 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Nextcloud-Installation-VirtualBox-033]]> + https://jevalide.ca/nextcloud-installation-virtualbox-033/ + Sat, 07 Aug 2021 00:38:43 +0000 + + https://jevalide.ca/wp-content/uploads/2021/04/Nextcloud-Installation-VirtualBox-033.png + + + + 2825 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Nextcloud-Installation-VirtualBox-035]]> + https://jevalide.ca/nextcloud-installation-virtualbox-035/ + Sat, 07 Aug 2021 00:38:45 +0000 + + https://jevalide.ca/wp-content/uploads/2021/04/Nextcloud-Installation-VirtualBox-035.png + + + + 2826 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Nextcloud-Installation-VirtualBox-037]]> + https://jevalide.ca/nextcloud-installation-virtualbox-037/ + Sat, 07 Aug 2021 00:59:53 +0000 + + https://jevalide.ca/wp-content/uploads/2021/04/Nextcloud-Installation-VirtualBox-037.png + + + + 2827 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Nextcloud-Installation-VirtualBox-039]]> + https://jevalide.ca/nextcloud-installation-virtualbox-039/ + Sat, 07 Aug 2021 00:59:54 +0000 + + https://jevalide.ca/wp-content/uploads/2021/04/Nextcloud-Installation-VirtualBox-039.png + + + + 2828 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Nextcloud-Installation-VirtualBox-041]]> + https://jevalide.ca/nextcloud-installation-virtualbox-041/ + Sat, 07 Aug 2021 00:59:56 +0000 + + https://jevalide.ca/wp-content/uploads/2021/04/Nextcloud-Installation-VirtualBox-041.png + + + + 2829 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Nextcloud-Installation-VirtualBox-042]]> + https://jevalide.ca/nextcloud-installation-virtualbox-042/ + Sat, 07 Aug 2021 00:59:57 +0000 + + https://jevalide.ca/wp-content/uploads/2021/04/Nextcloud-Installation-VirtualBox-042.png + + + + 2830 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Nextcloud-Installation-VirtualBox-043]]> + https://jevalide.ca/nextcloud-installation-virtualbox-043/ + Sat, 07 Aug 2021 00:59:58 +0000 + + https://jevalide.ca/wp-content/uploads/2021/04/Nextcloud-Installation-VirtualBox-043.png + + + + 2831 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Nextcloud-Installation-VirtualBox-044]]> + https://jevalide.ca/nextcloud-installation-virtualbox-044/ + Sat, 07 Aug 2021 01:00:00 +0000 + + https://jevalide.ca/wp-content/uploads/2021/04/Nextcloud-Installation-VirtualBox-044.png + + + + 2832 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[app-calendar-installe]]> + https://jevalide.ca/app-calendar-installe/ + Sat, 07 Aug 2021 01:17:23 +0000 + + https://jevalide.ca/wp-content/uploads/2021/06/app-calendar-installe.png + + + + 252 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[contacts-carnet-adresses-tbsync]]> + https://jevalide.ca/contacts-carnet-adresses-tbsync/ + Sat, 07 Aug 2021 01:17:24 +0000 + + https://jevalide.ca/wp-content/uploads/2021/06/contacts-carnet-adresses-tbsync.png + + + + 253 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[copier-adresse-caldav]]> + https://jevalide.ca/copier-adresse-caldav/ + Sat, 07 Aug 2021 01:17:24 +0000 + + https://jevalide.ca/wp-content/uploads/2021/06/copier-adresse-caldav.png + + + + 254 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Courriel_Nextcloud]]> + https://jevalide.ca/courriel_nextcloud/ + Sat, 07 Aug 2021 01:17:25 +0000 + + https://jevalide.ca/wp-content/uploads/2021/06/Courriel_Nextcloud.png + + + + 255 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[deck-task-nextcloud]]> + https://jevalide.ca/deck-task-nextcloud/ + Sat, 07 Aug 2021 01:17:26 +0000 + + https://jevalide.ca/wp-content/uploads/2021/06/deck-task-nextcloud.png + + + + 256 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[fastmail-app-password]]> + https://jevalide.ca/fastmail-app-password/ + Sat, 07 Aug 2021 01:17:26 +0000 + + https://jevalide.ca/wp-content/uploads/2021/06/fastmail-app-password.png + + + + 257 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[lightning-filtre-taches-par-tableau-deck]]> + https://jevalide.ca/lightning-filtre-taches-par-tableau-deck/ + Sat, 07 Aug 2021 01:17:27 +0000 + + https://jevalide.ca/wp-content/uploads/2021/06/lightning-filtre-taches-par-tableau-deck.png + + + + 258 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[modules-complementaires-thunderbird]]> + https://jevalide.ca/modules-complementaires-thunderbird/ + Sat, 07 Aug 2021 01:17:28 +0000 + + https://jevalide.ca/wp-content/uploads/2021/06/modules-complementaires-thunderbird.png + + + + 259 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[nextcloud-sync-informations-dav]]> + https://jevalide.ca/nextcloud-sync-informations-dav/ + Sat, 07 Aug 2021 01:17:29 +0000 + + https://jevalide.ca/wp-content/uploads/2021/06/nextcloud-sync-informations-dav.png + + + + 260 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[nextcloud-sync-informations-dav-2]]> + https://jevalide.ca/nextcloud-sync-informations-dav-2/ + Sat, 07 Aug 2021 01:17:29 +0000 + + https://jevalide.ca/wp-content/uploads/2021/06/nextcloud-sync-informations-dav-2.png + + + + 261 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[nouvel-agenda-regulier]]> + https://jevalide.ca/nouvel-agenda-regulier/ + Sat, 07 Aug 2021 01:17:30 +0000 + + https://jevalide.ca/wp-content/uploads/2021/06/nouvel-agenda-regulier.png + + + + 262 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[nouvel-agenda-regulier-nom]]> + https://jevalide.ca/nouvel-agenda-regulier-nom/ + Sat, 07 Aug 2021 01:17:30 +0000 + + https://jevalide.ca/wp-content/uploads/2021/06/nouvel-agenda-regulier-nom.png + + + + 263 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[nouvelle-activite-linux-meetup]]> + https://jevalide.ca/nouvelle-activite-linux-meetup/ + Sat, 07 Aug 2021 01:17:31 +0000 + + https://jevalide.ca/wp-content/uploads/2021/06/nouvelle-activite-linux-meetup.png + + + + 264 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[parametres-importation]]> + https://jevalide.ca/parametres-importation/ + Sat, 07 Aug 2021 01:17:32 +0000 + + https://jevalide.ca/wp-content/uploads/2021/06/parametres-importation.png + + + + 265 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[tache-linuq-lightning]]> + https://jevalide.ca/tache-linuq-lightning/ + Sat, 07 Aug 2021 01:17:32 +0000 + + https://jevalide.ca/wp-content/uploads/2021/06/tache-linuq-lightning.png + + + + 266 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[tbsync-caldav-automatique]]> + https://jevalide.ca/tbsync-caldav-automatique/ + Sat, 07 Aug 2021 01:17:33 +0000 + + https://jevalide.ca/wp-content/uploads/2021/06/tbsync-caldav-automatique.png + + + + 267 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[tbsync-lightning-1]]> + https://jevalide.ca/tbsync-lightning-1/ + Sat, 07 Aug 2021 01:17:34 +0000 + + https://jevalide.ca/wp-content/uploads/2021/06/tbsync-lightning-1.png + + + + 268 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[tbsync-lightning-deck]]> + https://jevalide.ca/tbsync-lightning-deck/ + Sat, 07 Aug 2021 01:17:35 +0000 + + https://jevalide.ca/wp-content/uploads/2021/06/tbsync-lightning-deck.png + + + + 269 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[tbsync-nouveau-compte]]> + https://jevalide.ca/tbsync-nouveau-compte/ + Sat, 07 Aug 2021 01:17:36 +0000 + + https://jevalide.ca/wp-content/uploads/2021/06/tbsync-nouveau-compte.png + + + + 270 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[thunderbird-parametres-de-synchronisation]]> + https://jevalide.ca/thunderbird-parametres-de-synchronisation/ + Sat, 07 Aug 2021 01:17:37 +0000 + + https://jevalide.ca/wp-content/uploads/2021/06/thunderbird-parametres-de-synchronisation.png + + + + 271 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[capture_piwigo_francois]]> + https://jevalide.ca/capture_piwigo_francois/ + Sat, 07 Aug 2021 01:21:12 +0000 + + https://jevalide.ca/wp-content/uploads/2021/07/capture_piwigo_francois.png + + + + 275 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[heart.black_]]> + https://jevalide.ca/heart-black_/ + Sat, 07 Aug 2021 01:31:04 +0000 + + https://jevalide.ca/wp-content/uploads/2021/08/heart.black_.png + + + + 287 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[hbase_replication_overview]]> + https://jevalide.ca/hbase_replication_overview/ + Sat, 07 Aug 2021 13:00:03 +0000 + + https://jevalide.ca/wp-content/uploads/2021/08/hbase_replication_overview.png + + + + 365 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[data-model-denormalized.bakedsvg.svg_]]> + https://jevalide.ca/data-model-denormalized-bakedsvg-svg_/ + Sat, 07 Aug 2021 13:00:31 +0000 + + https://jevalide.ca/wp-content/uploads/2021/08/data-model-denormalized.bakedsvg.svg_.png + + + + 366 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[neo4jgraph]]> + https://jevalide.ca/neo4jgraph/ + Sat, 07 Aug 2021 13:01:06 +0000 + + https://jevalide.ca/wp-content/uploads/2021/08/neo4jgraph.png + + + + 367 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Big-data-concepts-20-638]]> + https://jevalide.ca/big-data-concepts-20-638/ + Sat, 07 Aug 2021 13:01:30 +0000 + + https://jevalide.ca/wp-content/uploads/2021/08/Big-data-concepts-20-638.jpg + + + + 368 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[300px-LinearRegression.svg]]> + https://jevalide.ca/300px-linearregression-svg/ + Sat, 07 Aug 2021 13:03:05 +0000 + + https://jevalide.ca/wp-content/uploads/2018/01/300px-LinearRegression.svg_.png + + + + 370 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[800px-Graph-scan]]> + https://jevalide.ca/800px-graph-scan/ + Sat, 07 Aug 2021 13:03:06 +0000 + + https://jevalide.ca/wp-content/uploads/2018/01/800px-Graph-scan.png + + + + 371 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[1280px-Anscombe's_quartet_3.svg]]> + https://jevalide.ca/1280px-anscombes_quartet_3-svg/ + Sat, 07 Aug 2021 13:03:07 +0000 + + https://jevalide.ca/wp-content/uploads/2018/01/1280px-Anscombes_quartet_3.svg_.png + + + + 372 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[8542284473_14a87218ef_b]]> + https://jevalide.ca/8542284473_14a87218ef_b/ + Sat, 07 Aug 2021 13:03:09 +0000 + + https://jevalide.ca/wp-content/uploads/2018/01/8542284473_14a87218ef_b.jpg + + + + 373 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Big-data-concepts-20-638]]> + https://jevalide.ca/big-data-concepts-20-638-2/ + Sat, 07 Aug 2021 13:03:10 +0000 + + https://jevalide.ca/wp-content/uploads/2018/01/Big-data-concepts-20-638.jpg + + + + 374 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Can+we+trust+the+predictions+of+classifiers]]> + https://jevalide.ca/canwetrustthepredictionsofclassifiers/ + Sat, 07 Aug 2021 13:03:11 +0000 + + https://jevalide.ca/wp-content/uploads/2018/01/Canwetrustthepredictionsofclassifiers.jpg + + + + 375 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[cnnweights]]> + https://jevalide.ca/cnnweights/ + Sat, 07 Aug 2021 13:03:11 +0000 + + https://jevalide.ca/wp-content/uploads/2018/01/cnnweights.jpeg + + + + 376 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[CoreNLP-Xi-Jinping]]> + https://jevalide.ca/corenlp-xi-jinping/ + Sat, 07 Aug 2021 13:03:12 +0000 + + https://jevalide.ca/wp-content/uploads/2018/01/CoreNLP-Xi-Jinping.png + + + + 377 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[DL-Breast-Cancer-Detection-Image-768x433]]> + https://jevalide.ca/dl-breast-cancer-detection-image-768x433/ + Sat, 07 Aug 2021 13:03:14 +0000 + + https://jevalide.ca/wp-content/uploads/2018/01/DL-Breast-Cancer-Detection-Image-768x433-1.png + + + + 379 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Easyrec_architecture]]> + https://jevalide.ca/easyrec_architecture/ + Sat, 07 Aug 2021 13:03:16 +0000 + + https://jevalide.ca/wp-content/uploads/2018/01/Easyrec_architecture.png + + + + 380 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[example_captions]]> + https://jevalide.ca/example_captions/ + Sat, 07 Aug 2021 13:03:17 +0000 + + https://jevalide.ca/wp-content/uploads/2018/01/example_captions.jpg + + + + 381 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Factory2]]> + https://jevalide.ca/factory2/ + Sat, 07 Aug 2021 13:03:19 +0000 + + https://jevalide.ca/wp-content/uploads/2018/01/Factory2.png + + + + 382 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Fig-3-Illustration-of-the-bag-of-words-model-for-images-along-with-the-images]]> + https://jevalide.ca/fig-3-illustration-of-the-bag-of-words-model-for-images-along-with-the-images/ + Sat, 07 Aug 2021 13:03:21 +0000 + + https://jevalide.ca/wp-content/uploads/2018/01/Fig-3-Illustration-of-the-bag-of-words-model-for-images-along-with-the-images.png + + + + 383 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Graph_comparison]]> + https://jevalide.ca/graph_comparison/ + Sat, 07 Aug 2021 13:03:22 +0000 + + https://jevalide.ca/wp-content/uploads/2018/01/Graph_comparison.jpg + + + + 384 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[hbase_replication_overview]]> + https://jevalide.ca/hbase_replication_overview-2/ + Sat, 07 Aug 2021 13:03:23 +0000 + + https://jevalide.ca/wp-content/uploads/2018/01/hbase_replication_overview.png + + + + 385 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[HDLTex]]> + https://jevalide.ca/hdltex/ + Sat, 07 Aug 2021 13:03:25 +0000 + + https://jevalide.ca/wp-content/uploads/2018/01/HDLTex.jpg + + + + 386 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[InvertedIndex]]> + https://jevalide.ca/invertedindex/ + Sat, 07 Aug 2021 13:03:27 +0000 + + https://jevalide.ca/wp-content/uploads/2018/01/InvertedIndex.jpg + + + + 387 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Iris_Flowers_Clustering_kMeans.svg]]> + https://jevalide.ca/iris_flowers_clustering_kmeans-svg/ + Sat, 07 Aug 2021 13:03:28 +0000 + + https://jevalide.ca/wp-content/uploads/2018/01/Iris_Flowers_Clustering_kMeans.svg_.png + + + + 388 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[LogstashGeoIP]]> + https://jevalide.ca/logstashgeoip/ + Sat, 07 Aug 2021 13:03:30 +0000 + + https://jevalide.ca/wp-content/uploads/2018/01/LogstashGeoIP.png + + + + 389 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[LogstashGrok]]> + https://jevalide.ca/logstashgrok/ + Sat, 07 Aug 2021 13:03:30 +0000 + + https://jevalide.ca/wp-content/uploads/2018/01/LogstashGrok.png + + + + 390 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[On-demenage-sur-Wordpress--512x512]]> + https://jevalide.ca/on-demenage-sur-wordpress-512x512/ + Sat, 07 Aug 2021 14:34:46 +0000 + + https://jevalide.ca/wp-content/uploads/2021/08/On-demenage-sur-Wordpress-512x512-1.png + + + + 399 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[La-liste-de-diffusion]]> + https://jevalide.ca/la-liste-de-diffusion/ + Mon, 09 Aug 2021 19:39:10 +0000 + + https://jevalide.ca/wp-content/uploads/2021/08/La-liste-de-diffusion.png + + + + 404 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[La-liste-de-diffusion]]> + https://jevalide.ca/la-liste-de-diffusion-2/ + Mon, 09 Aug 2021 19:39:56 +0000 + + https://jevalide.ca/wp-content/uploads/2021/08/La-liste-de-diffusion.jpg + + + + 406 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[1]]> + https://jevalide.ca/1/ + Tue, 10 Aug 2021 00:34:38 +0000 + + https://jevalide.ca/wp-content/uploads/2021/08/1.png + + + + 409 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[1-1]]> + https://jevalide.ca/1-1/ + Tue, 10 Aug 2021 00:35:33 +0000 + + https://jevalide.ca/wp-content/uploads/2021/08/1-1.png + + + + 410 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[unnamed-chunk-5-1]]> + https://jevalide.ca/unnamed-chunk-5-1/ + Wed, 11 Aug 2021 01:18:21 +0000 + + https://jevalide.ca/wp-content/uploads/2021/08/unnamed-chunk-5-1.png + + + + 420 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[unnamed-chunk-9-1]]> + https://jevalide.ca/unnamed-chunk-9-1/ + Wed, 11 Aug 2021 01:18:41 +0000 + + https://jevalide.ca/wp-content/uploads/2021/08/unnamed-chunk-9-1.png + + + + 421 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[unnamed-chunk-11-1]]> + https://jevalide.ca/unnamed-chunk-11-1/ + Wed, 11 Aug 2021 01:19:00 +0000 + + https://jevalide.ca/wp-content/uploads/2021/08/unnamed-chunk-11-1.png + + + + 422 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[unnamed-chunk-13-1]]> + https://jevalide.ca/unnamed-chunk-13-1-2/ + Wed, 11 Aug 2021 01:19:18 +0000 + + https://jevalide.ca/wp-content/uploads/2021/08/unnamed-chunk-13-1-1.png + + + + 423 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[unnamed-chunk-15-1]]> + https://jevalide.ca/unnamed-chunk-15-1-2/ + Wed, 11 Aug 2021 01:19:51 +0000 + + https://jevalide.ca/wp-content/uploads/2021/08/unnamed-chunk-15-1-1.png + + + + 424 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[unnamed-chunk-16-1]]> + https://jevalide.ca/unnamed-chunk-16-1/ + Wed, 11 Aug 2021 01:20:05 +0000 + + https://jevalide.ca/wp-content/uploads/2021/08/unnamed-chunk-16-1.png + + + + 425 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[unnamed-chunk-21-1]]> + https://jevalide.ca/unnamed-chunk-21-1/ + Wed, 11 Aug 2021 01:20:20 +0000 + + https://jevalide.ca/wp-content/uploads/2021/08/unnamed-chunk-21-1.png + + + + 426 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Logo - Accueil - Détaillé]]> + https://jevalide.ca/logo-accueil-detaille/ + Sun, 15 Aug 2021 16:53:47 +0000 + + https://jevalide.ca/wp-content/uploads/2021/08/Logo-Accueil-Detaille.png + + + + 462 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[dockerhub-images-custom-cloche]]> + https://jevalide.ca/dockerhub-images-custom-cloche/ + Mon, 16 Aug 2021 19:28:51 +0000 + + https://jevalide.ca/wp-content/uploads/2021/08/dockerhub-images-custom-cloche.png + + + + 475 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[image]]> + https://jevalide.ca/image/ + Wed, 18 Aug 2021 01:49:46 +0000 + + https://jevalide.ca/wp-content/uploads/2021/08/image.png + + + + 478 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[image-1]]> + https://jevalide.ca/image-1/ + Wed, 18 Aug 2021 01:51:38 +0000 + + https://jevalide.ca/wp-content/uploads/2021/08/image-1.png + + + + 479 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[image-2]]> + https://jevalide.ca/image-2/ + Thu, 19 Aug 2021 22:19:23 +0000 + + https://jevalide.ca/wp-content/uploads/2021/08/image-2.png + + + + 532 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Fonctionnement-interne-dune-commande-git-clone]]> + https://jevalide.ca/fonctionnement-interne-dune-commande-git-clone/ + Fri, 20 Aug 2021 16:42:47 +0000 + + https://jevalide.ca/wp-content/uploads/2021/08/Fonctionnement-interne-dune-commande-git-clone.png + + + + 545 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Fonctionnement-interne-dune-commande-git-clone-1]]> + https://jevalide.ca/fonctionnement-interne-dune-commande-git-clone-1/ + Fri, 20 Aug 2021 16:43:53 +0000 + + https://jevalide.ca/wp-content/uploads/2021/08/Fonctionnement-interne-dune-commande-git-clone-1.png + + + + 546 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Capture-decran_2021-08-29_10-46-48]]> + https://jevalide.ca/capture-decran_2021-08-29_10-46-48/ + Sun, 29 Aug 2021 15:44:22 +0000 + + https://jevalide.ca/wp-content/uploads/2021/08/Capture-decran_2021-08-29_10-46-48.png + + + + 560 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[1920px-Vue_du_Cap_trinite_pres_de_la_Statue]]> + https://jevalide.ca/1920px-vue_du_cap_trinite_pres_de_la_statue/ + Sun, 29 Aug 2021 15:50:51 +0000 + + https://jevalide.ca/wp-content/uploads/2021/08/1920px-Vue_du_Cap_trinite_pres_de_la_Statue.jpg + + + + 563 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Capture-decran_2021-08-27_17-30-25]]> + https://jevalide.ca/capture-decran_2021-08-27_17-30-25/ + Sun, 29 Aug 2021 17:32:16 +0000 + + https://jevalide.ca/wp-content/uploads/2021/08/Capture-decran_2021-08-27_17-30-25.png + + + + 565 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[613139c59f74c_16x9-gagner]]> + https://jevalide.ca/613139c59f74c_16x9-gagner/ + Sat, 04 Sep 2021 03:38:19 +0000 + + https://jevalide.ca/wp-content/uploads/2021/09/613139c59f74c_16x9-gagner.jpg + + + + 568 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[61313a092f250_feed-lead]]> + https://jevalide.ca/61313a092f250_feed-lead/ + Sat, 04 Sep 2021 03:48:38 +0000 + + https://jevalide.ca/wp-content/uploads/2021/09/61313a092f250_feed-lead.png + + + + 569 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[1]]> + https://jevalide.ca/1-2/ + Mon, 06 Sep 2021 23:55:13 +0000 + + https://jevalide.ca/wp-content/uploads/2021/09/1.png + + + + 612 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[bad-data]]> + https://jevalide.ca/bad-data/ + Sat, 18 Sep 2021 16:58:50 +0000 + + https://jevalide.ca/wp-content/uploads/2021/01/bad-data.jpg + + + + 672 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[5 star open data]]> + https://jevalide.ca/5-star-open-data/ + Sat, 18 Sep 2021 17:00:38 +0000 + + https://jevalide.ca/wp-content/uploads/2021/01/5-star-open-data.png + + + + 673 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Fracture numérique - Je fais le portrait de ma situation]]> + https://jevalide.ca/fracture-numerique-je-fais-le-portrait-de-ma-situation/ + Tue, 21 Sep 2021 19:14:47 +0000 + + https://jevalide.ca/wp-content/uploads/2021/09/Fracture-numerique-Je-fais-le-portrait-de-ma-situation.jpg + + + + 791 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[image]]> + https://jevalide.ca/image-3/ + Fri, 24 Sep 2021 02:16:41 +0000 + + https://jevalide.ca/wp-content/uploads/2021/09/image.png + + + + 842 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Les-technologies-enseignees]]> + https://jevalide.ca/les-technologies-enseignees/ + Fri, 24 Sep 2021 16:17:29 +0000 + + https://jevalide.ca/wp-content/uploads/2021/09/Les-technologies-enseignees.png + + + + 869 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Analyse-de-marche-Formation-sur-le-logiciel-Nextcloud-Annonce]]> + https://jevalide.ca/analyse-de-marche-formation-sur-le-logiciel-nextcloud-annonce/ + Wed, 29 Sep 2021 00:41:35 +0000 + + https://jevalide.ca/wp-content/uploads/2021/09/Analyse-de-marche-Formation-sur-le-logiciel-Nextcloud-Annonce.png + + + + 888 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[image]]> + https://jevalide.ca/image-4/ + Fri, 08 Oct 2021 03:10:25 +0000 + + https://jevalide.ca/wp-content/uploads/2021/10/image.png + + + + 974 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[image-1]]> + https://jevalide.ca/image-1-2/ + Fri, 08 Oct 2021 03:13:17 +0000 + + https://jevalide.ca/wp-content/uploads/2021/10/image-1.png + + + + 975 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[image-2]]> + https://jevalide.ca/image-2-2/ + Fri, 08 Oct 2021 03:14:20 +0000 + + https://jevalide.ca/wp-content/uploads/2021/10/image-2.png + + + + 976 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[image-3]]> + https://jevalide.ca/image-3-2/ + Fri, 08 Oct 2021 03:19:40 +0000 + + https://jevalide.ca/wp-content/uploads/2021/10/image-3.png + + + + 977 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[image-4]]> + https://jevalide.ca/image-4-2/ + Fri, 08 Oct 2021 03:39:15 +0000 + + https://jevalide.ca/wp-content/uploads/2021/10/image-4.png + + + + 993 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[20210930_122744]]> + https://jevalide.ca/20210930_122744/ + Sat, 09 Oct 2021 04:29:00 +0000 + + https://jevalide.ca/wp-content/uploads/2021/10/20210930_122744-scaled-1.jpg + + + + 1022 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[1]]> + https://jevalide.ca/1-3/ + Sat, 23 Oct 2021 03:00:17 +0000 + + https://jevalide.ca/wp-content/uploads/2021/10/1.png + + + + 1064 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Manipulation-de-fichiers-avec-R-Novembre-2021]]> + https://jevalide.ca/manipulation-de-fichiers-avec-r-novembre-2021/ + Sat, 30 Oct 2021 19:46:42 +0000 + + https://jevalide.ca/wp-content/uploads/2021/10/Manipulation-de-fichiers-avec-R-Novembre-2021.png + + + + 1092 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[pink-unicorn]]> + https://jevalide.ca/pink-unicorn/ + Mon, 01 Nov 2021 18:54:08 +0000 + + https://jevalide.ca/wp-content/uploads/2021/11/pink-unicorn.png + + + + 1104 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[dates]]> + https://jevalide.ca/dates/ + Thu, 04 Nov 2021 17:39:49 +0000 + + https://jevalide.ca/wp-content/uploads/2021/11/dates.png + + + + 1115 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[dates-1]]> + https://jevalide.ca/dates-1/ + Thu, 04 Nov 2021 17:43:57 +0000 + + https://jevalide.ca/wp-content/uploads/2021/11/dates-1.png + + + + 1116 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[external-content.duckduckgo.com_]]> + https://jevalide.ca/external-content-duckduckgo-com_/ + Sun, 07 Nov 2021 01:12:43 +0000 + + https://jevalide.ca/wp-content/uploads/2021/11/external-content.duckduckgo.com_-scaled-1.jpg + + + + 1162 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Capture-decran_2021-11-04_15-09-56]]> + https://jevalide.ca/capture-decran_2021-11-04_15-09-56/ + Sun, 07 Nov 2021 01:24:28 +0000 + + https://jevalide.ca/wp-content/uploads/2021/11/Capture-decran_2021-11-04_15-09-56.png + + + + 1167 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Chaine-dapprovisionnement-et-infonuagique-memes-defis-]]> + https://jevalide.ca/chaine-dapprovisionnement-et-infonuagique-memes-defis-2/ + Thu, 11 Nov 2021 21:14:24 +0000 + + https://jevalide.ca/wp-content/uploads/2021/11/Chaine-dapprovisionnement-et-infonuagique-memes-defis-.png + + + + 1187 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[contact-par-courriel]]> + https://jevalide.ca/contact-par-courriel/ + Fri, 12 Nov 2021 16:30:45 +0000 + + https://jevalide.ca/wp-content/uploads/2021/11/contact-par-courriel.png + + + + 1193 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[contact-par-courriel-1]]> + https://jevalide.ca/contact-par-courriel-1/ + Fri, 12 Nov 2021 16:32:52 +0000 + + https://jevalide.ca/wp-content/uploads/2021/11/contact-par-courriel-1.png + + + + 1195 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[contact-par-courriel-2]]> + https://jevalide.ca/contact-par-courriel-2/ + Fri, 12 Nov 2021 16:41:24 +0000 + + https://jevalide.ca/wp-content/uploads/2021/11/contact-par-courriel-2.png + + + + 1197 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[grid_table_match_sexe]]> + https://jevalide.ca/grid_table_match_sexe/ + Wed, 17 Nov 2021 15:25:23 +0000 + + https://jevalide.ca/wp-content/uploads/2021/11/grid_table_match_sexe.png + + + + 1224 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[match_sexe]]> + https://jevalide.ca/match_sexe/ + Wed, 17 Nov 2021 16:47:55 +0000 + + https://jevalide.ca/wp-content/uploads/2021/11/match_sexe.png + + + + 1238 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Mon-expertise]]> + https://jevalide.ca/mon-expertise/ + Wed, 17 Nov 2021 22:51:53 +0000 + + https://jevalide.ca/wp-content/uploads/2021/11/Mon-expertise.png + + + + 1267 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Les-technologies-enseignees]]> + https://jevalide.ca/les-technologies-enseignees-2/ + Wed, 17 Nov 2021 23:13:10 +0000 + + https://jevalide.ca/wp-content/uploads/2021/11/Les-technologies-enseignees.png + + + + 1281 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[1]]> + https://jevalide.ca/1-4/ + Sat, 20 Nov 2021 17:27:45 +0000 + + https://jevalide.ca/wp-content/uploads/2021/11/1.png + + + + 1290 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[1-1]]> + https://jevalide.ca/1-1-2/ + Sat, 20 Nov 2021 17:28:00 +0000 + + https://jevalide.ca/wp-content/uploads/2021/11/1-1.png + + + + 1291 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[La-liste-de-diffusion]]> + https://jevalide.ca/la-liste-de-diffusion-3/ + Sat, 20 Nov 2021 18:20:24 +0000 + + https://jevalide.ca/wp-content/uploads/2021/11/La-liste-de-diffusion.png + + + + 1307 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[by-sa]]> + https://jevalide.ca/by-sa/ + Sun, 28 Nov 2021 20:26:38 +0000 + + https://jevalide.ca/wp-content/uploads/2021/11/by-sa.png + + + + 1354 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[2021-11-30]]> + https://jevalide.ca/2021-11-30/ + Wed, 01 Dec 2021 14:37:28 +0000 + + https://jevalide.ca/wp-content/uploads/2021/12/2021-11-30.png + + + + 1372 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Restauration-de-Yunohost-avec-Borg-apres-un-desastre]]> + https://jevalide.ca/restauration-de-yunohost-avec-borg-apres-un-desastre-2/ + Tue, 07 Dec 2021 03:51:26 +0000 + + https://jevalide.ca/wp-content/uploads/2021/12/Restauration-de-Yunohost-avec-Borg-apres-un-desastre.png + + + + 1397 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[etapes-client]]> + https://jevalide.ca/etapes-client/ + Sat, 11 Dec 2021 23:53:06 +0000 + + https://jevalide.ca/wp-content/uploads/2021/12/etapes-client.png + + + + 1414 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[étapes données]]> + https://jevalide.ca/etapes-donnees/ + Sun, 12 Dec 2021 01:14:02 +0000 + + https://jevalide.ca/wp-content/uploads/2021/12/etapes-donnees.png + + + + 1420 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[exemple-fidelisation-commerce-uml]]> + https://jevalide.ca/exemple-fidelisation-commerce-uml/ + Sun, 12 Dec 2021 03:36:00 +0000 + + https://jevalide.ca/wp-content/uploads/2021/12/exemple-fidelisation-commerce-uml.png + + + + 1459 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[dataReporter_pirate_attacks_sf_ss]]> + https://jevalide.ca/datareporter_pirate_attacks_sf_ss/ + Tue, 21 Dec 2021 04:15:40 +0000 + + https://jevalide.ca/wp-content/uploads/2021/12/dataReporter_pirate_attacks_sf_ss.pdf + + + + 1533 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + <![CDATA[capture_leaflet_exploration]]> + https://jevalide.ca/capture_leaflet_exploration/ + Tue, 21 Dec 2021 04:32:56 +0000 + + https://jevalide.ca/wp-content/uploads/2021/12/capture_leaflet_exploration.png + + + + 1537 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[pirate]]> + https://jevalide.ca/pirate/ + Tue, 21 Dec 2021 04:52:58 +0000 + + https://jevalide.ca/wp-content/uploads/2021/12/pirate.png + + + + 1548 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[pirate-ombre]]> + https://jevalide.ca/pirate-ombre/ + Tue, 21 Dec 2021 04:53:47 +0000 + + https://jevalide.ca/wp-content/uploads/2021/12/pirate-ombre.png + + + + 1549 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[image]]> + https://jevalide.ca/image-5/ + Thu, 30 Dec 2021 20:02:21 +0000 + + https://jevalide.ca/wp-content/uploads/2021/12/image.png + + + + 1599 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[CIM-10-extended-model-instantiation-UML-classes-diagram]]> + https://jevalide.ca/cim-10-extended-model-instantiation-uml-classes-diagram/ + Thu, 30 Dec 2021 20:10:11 +0000 + + https://jevalide.ca/wp-content/uploads/2021/12/CIM-10-extended-model-instantiation-UML-classes-diagram.png + + + + 1601 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Suivi-des-medicaments]]> + https://jevalide.ca/suivi-des-medicaments/ + Thu, 30 Dec 2021 20:19:19 +0000 + + https://jevalide.ca/wp-content/uploads/2021/12/Suivi-des-medicaments.png + + + + 1609 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Interoperabilite]]> + https://jevalide.ca/interoperabilite/ + Thu, 30 Dec 2021 20:19:39 +0000 + + https://jevalide.ca/wp-content/uploads/2021/12/Interoperabilite.png + + + + 1610 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Suivi-des-medicaments-2]]> + https://jevalide.ca/suivi-des-medicaments-2/ + Thu, 30 Dec 2021 20:20:55 +0000 + + https://jevalide.ca/wp-content/uploads/2021/12/Suivi-des-medicaments-2.png + + + + 1611 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Screenshot-2022-01-02-at-12-32-17-Modifier-larticle-‹-Je-valide-ca-service-conseil-—-WordPress]]> + https://jevalide.ca/screenshot-2022-01-02-at-12-32-17-modifier-larticle-je-valide-ca-service-conseil-wordpress/ + Sun, 02 Jan 2022 17:47:30 +0000 + + https://jevalide.ca/wp-content/uploads/2022/01/Screenshot-2022-01-02-at-12-32-17-Modifier-larticle-‹-Je-valide-ca-service-conseil-—-WordPress.png + + + + 1710 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[image]]> + https://jevalide.ca/image-6/ + Sat, 15 Jan 2022 16:24:25 +0000 + + https://jevalide.ca/wp-content/uploads/2022/01/image.png + + + + 1852 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[image-1]]> + https://jevalide.ca/image-1-3/ + Sat, 15 Jan 2022 16:34:28 +0000 + + https://jevalide.ca/wp-content/uploads/2022/01/image-1.png + + + + 1854 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[image-2]]> + https://jevalide.ca/image-2-3/ + Sat, 15 Jan 2022 16:55:33 +0000 + + https://jevalide.ca/wp-content/uploads/2022/01/image-2.png + + + + 1859 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[image-3]]> + https://jevalide.ca/image-3-3/ + Sat, 15 Jan 2022 17:00:46 +0000 + + https://jevalide.ca/wp-content/uploads/2022/01/image-3.png + + + + 1864 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[image-4]]> + https://jevalide.ca/image-4-3/ + Sat, 15 Jan 2022 17:01:26 +0000 + + https://jevalide.ca/wp-content/uploads/2022/01/image-4.png + + + + 1865 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[frigo_carte]]> + https://jevalide.ca/frigo_carte/ + Sat, 15 Jan 2022 17:02:34 +0000 + + https://jevalide.ca/wp-content/uploads/2022/01/frigo_carte.html + + + + 1867 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + <![CDATA[Screenshot_20220127_104630]]> + https://jevalide.ca/screenshot_20220127_104630/ + Thu, 27 Jan 2022 16:15:46 +0000 + + https://jevalide.ca/wp-content/uploads/2022/01/Screenshot_20220127_104630.png + + + + 1933 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Screenshot_20220127_111723]]> + https://jevalide.ca/screenshot_20220127_111723/ + Thu, 27 Jan 2022 16:18:39 +0000 + + https://jevalide.ca/wp-content/uploads/2022/01/Screenshot_20220127_111723.png + + + + 1934 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Screenshot_20220127_111747]]> + https://jevalide.ca/screenshot_20220127_111747/ + Thu, 27 Jan 2022 16:18:44 +0000 + + https://jevalide.ca/wp-content/uploads/2022/01/Screenshot_20220127_111747.png + + + + 1935 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Screenshot_20220127_111807]]> + https://jevalide.ca/screenshot_20220127_111807/ + Thu, 27 Jan 2022 16:19:12 +0000 + + https://jevalide.ca/wp-content/uploads/2022/01/Screenshot_20220127_111807.png + + + + 1936 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Présentation Je valide ça - Service Conseil]]> + https://jevalide.ca/presentation-je-valide-ca-service-conseil/ + Mon, 31 Jan 2022 16:18:11 +0000 + + https://jevalide.ca/wp-content/uploads/2022/01/Presentation-Je-valide-ca-Service-Conseil.pdf + + + + 1957 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + <![CDATA[www.goodreads.com_lists_krause]]> + https://jevalide.ca/www-goodreads-com_lists_krause/ + Fri, 04 Feb 2022 20:51:21 +0000 + + https://jevalide.ca/wp-content/uploads/2022/02/www.goodreads.com_lists_krause.png + + + + 1966 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[a.bookTitle]]> + https://jevalide.ca/a-booktitle/ + Sat, 05 Feb 2022 05:47:19 +0000 + + https://jevalide.ca/wp-content/uploads/2022/02/a.bookTitle.png + + + + 1969 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[div.metacol]]> + https://jevalide.ca/div-metacol/ + Sat, 05 Feb 2022 14:36:31 +0000 + + https://jevalide.ca/wp-content/uploads/2022/02/div.metacol.png + + + + 1987 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[krausebooklist]]> + https://jevalide.ca/krausebooklist/ + Sat, 05 Feb 2022 23:04:48 +0000 + + https://jevalide.ca/wp-content/uploads/2022/02/krausebooklist.png + + + + 2001 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[annees_publication]]> + https://jevalide.ca/annees_publication/ + Sat, 05 Feb 2022 23:13:45 +0000 + + https://jevalide.ca/wp-content/uploads/2022/02/annees_publication.png + + + + 2003 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[utilisation-gpu]]> + https://jevalide.ca/utilisation-gpu/ + Sun, 06 Feb 2022 20:27:37 +0000 + + https://jevalide.ca/wp-content/uploads/2022/02/utilisation-gpu.png + + + + 2029 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[dictionnaires-jetons]]> + https://jevalide.ca/dictionnaires-jetons/ + Sun, 06 Feb 2022 20:33:35 +0000 + + https://jevalide.ca/wp-content/uploads/2022/02/dictionnaires-jetons.png + + + + 2030 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[tableau_jetons_final]]> + https://jevalide.ca/tableau_jetons_final/ + Sun, 06 Feb 2022 20:37:57 +0000 + + https://jevalide.ca/wp-content/uploads/2022/02/tableau_jetons_final.png + + + + 2032 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[wordcloud_words_regular]]> + https://jevalide.ca/wordcloud_words_regular/ + Sun, 06 Feb 2022 20:53:43 +0000 + + https://jevalide.ca/wp-content/uploads/2022/02/wordcloud_words_regular.png + + + + 2037 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[tableau_chunks_final]]> + https://jevalide.ca/tableau_chunks_final/ + Sun, 06 Feb 2022 21:05:35 +0000 + + https://jevalide.ca/wp-content/uploads/2022/02/tableau_chunks_final.png + + + + 2040 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[wordcloud_regular]]> + https://jevalide.ca/wordcloud_regular/ + Sun, 06 Feb 2022 21:09:53 +0000 + + https://jevalide.ca/wp-content/uploads/2022/02/wordcloud_regular.png + + + + 2043 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[heart]]> + https://jevalide.ca/heart/ + Sun, 06 Feb 2022 21:15:13 +0000 + + https://jevalide.ca/wp-content/uploads/2022/02/heart.png + + + + 2044 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[logo-complet-noir]]> + https://jevalide.ca/logo-complet-noir/ + Wed, 29 Jun 2022 22:58:58 +0000 + + https://nouveau.jevalide.ca/wp-content/uploads/2022/06/logo-complet-noir.png + + + + 20 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[cropped-logo-complet-noir.png]]> + https://jevalide.ca/cropped-logo-complet-noir-png/ + Wed, 29 Jun 2022 23:13:28 +0000 + + https://nouveau.jevalide.ca/wp-content/uploads/2022/06/cropped-logo-complet-noir.png + + + + 23 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[logo-case-cocher]]> + https://jevalide.ca/logo-case-cocher/ + Wed, 29 Jun 2022 23:14:57 +0000 + + https://nouveau.jevalide.ca/wp-content/uploads/2022/06/logo-case-cocher.png + + + + 25 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[cropped-logo-case-cocher.png]]> + https://jevalide.ca/cropped-logo-case-cocher-png/ + Wed, 29 Jun 2022 23:15:05 +0000 + + https://nouveau.jevalide.ca/wp-content/uploads/2022/06/cropped-logo-case-cocher.png + + + + 26 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[gymnastics-g2c197d25b_640]]> + https://jevalide.ca/informatique-durable-donnees-et-cybersecurite-pour-humains/gymnastics-g2c197d25b_640/ + Fri, 08 Jul 2022 15:43:21 +0000 + + https://nouveau.jevalide.ca/wp-content/uploads/2022/07/gymnastics-g2c197d25b_640.png + + + + 56 + + + + + + + + + 35 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[communist-gf1d807630_640]]> + https://jevalide.ca/informatique-durable-donnees-et-cybersecurite-pour-humains/communist-gf1d807630_640/ + Fri, 08 Jul 2022 17:27:47 +0000 + + https://nouveau.jevalide.ca/wp-content/uploads/2022/07/communist-gf1d807630_640.png + + + + 65 + + + + + + + + + 35 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[crooner-gfbc043c51_640]]> + https://jevalide.ca/informatique-durable-donnees-et-cybersecurite-pour-humains/crooner-gfbc043c51_640/ + Fri, 08 Jul 2022 18:02:20 +0000 + + https://nouveau.jevalide.ca/wp-content/uploads/2022/07/crooner-gfbc043c51_640.png + + + + 66 + + + + + + + + + 35 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[wordcloud_heart]]> + https://jevalide.ca/wordcloud_heart/ + Sun, 06 Feb 2022 21:19:05 +0000 + + https://jevalide.ca/wp-content/uploads/2022/02/wordcloud_heart.png + + + + 2045 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Sigma-64-Creative-Commons]]> + https://jevalide.ca/sigma-64-creative-commons/ + Wed, 16 Feb 2022 22:26:55 +0000 + + https://jevalide.ca/wp-content/uploads/2022/02/Sigma-64-Creative-Commons.jpg + + + + 2167 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[dossiers_alphanumeriques_dolphin]]> + https://jevalide.ca/dossiers_alphanumeriques_dolphin/ + Sat, 19 Mar 2022 16:02:08 +0000 + + https://jevalide.ca/wp-content/uploads/2022/03/dossiers_alphanumeriques_dolphin.png + + + + 2196 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[ghostwork3-769x1024-1]]> + https://jevalide.ca/ghostwork3-769x1024-1/ + Fri, 15 Apr 2022 20:31:36 +0000 + + https://jevalide.ca/wp-content/uploads/2022/04/ghostwork3-769x1024-1.jpg + + + + 2274 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[6e26ea54b1a7ca8038a9ce200a3eca75ce97da8c-2000x964-1]]> + https://jevalide.ca/6e26ea54b1a7ca8038a9ce200a3eca75ce97da8c-2000x964-1/ + Fri, 15 Apr 2022 20:52:27 +0000 + + https://jevalide.ca/wp-content/uploads/2022/04/6e26ea54b1a7ca8038a9ce200a3eca75ce97da8c-2000x964-1.png + + + + 2303 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Screenshot_20220420_140133]]> + https://jevalide.ca/screenshot_20220420_140133/ + Wed, 20 Apr 2022 18:04:10 +0000 + + https://jevalide.ca/wp-content/uploads/2022/04/Screenshot_20220420_140133.png + + + + 2312 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Visibilite-des-projets-dun-groupe-GitLab]]> + https://jevalide.ca/visibilite-des-projets-dun-groupe-gitlab-2/ + Wed, 20 Apr 2022 21:25:32 +0000 + + https://jevalide.ca/wp-content/uploads/2022/04/Visibilite-des-projets-dun-groupe-GitLab.png + + + + 2315 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[www.instagram.com_p_CdUnhX3t0io_]]> + https://jevalide.ca/www-instagram-com_p_cdunhx3t0io_/ + Fri, 20 May 2022 03:44:06 +0000 + + https://jevalide.ca/wp-content/uploads/2022/05/www.instagram.com_p_CdUnhX3t0io_.png + + + + 2451 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[La-securite-informatique-]]> + https://jevalide.ca/la-securite-informatique/ + Wed, 01 Jun 2022 14:27:25 +0000 + + https://jevalide.ca/wp-content/uploads/2022/06/La-securite-informatique-.png + + + + 2462 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[convertkit_api_tokens]]> + https://jevalide.ca/convertkit_api_tokens/ + Wed, 01 Jun 2022 17:09:25 +0000 + + https://jevalide.ca/wp-content/uploads/2022/06/convertkit_api_tokens.png + + + + 2481 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[pagination-formulaire-abonnes.drawio]]> + https://jevalide.ca/pagination-formulaire-abonnes-drawio/ + Wed, 01 Jun 2022 19:44:06 +0000 + + https://jevalide.ca/wp-content/uploads/2022/06/pagination-formulaire-abonnes.drawio.png + + + + 2492 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Regles-de-la-communaute-pour-favoriser-linclusion]]> + https://jevalide.ca/regles-de-la-communaute-pour-favoriser-linclusion-2/ + Sat, 04 Jun 2022 16:54:35 +0000 + + https://jevalide.ca/wp-content/uploads/2022/06/Regles-de-la-communaute-pour-favoriser-linclusion.png + + + + 2502 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[image]]> + https://jevalide.ca/image-7/ + Sat, 11 Jun 2022 17:22:11 +0000 + + https://jevalide.ca/wp-content/uploads/2022/06/image.png + + + + 2575 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[ballet-g912c9a259_640]]> + https://jevalide.ca/informatique-durable-donnees-et-cybersecurite-pour-humains/ballet-g912c9a259_640/ + Fri, 08 Jul 2022 18:11:22 +0000 + + https://nouveau.jevalide.ca/wp-content/uploads/2022/07/ballet-g912c9a259_640.png + + + + 68 + + + + + + + + + 35 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[flower-gf3700dbcb_640]]> + https://jevalide.ca/informatique-durable-donnees-et-cybersecurite-pour-humains/flower-gf3700dbcb_640/ + Fri, 08 Jul 2022 18:12:24 +0000 + + https://nouveau.jevalide.ca/wp-content/uploads/2022/07/flower-gf3700dbcb_640.png + + + + 69 + + + + + + + + + 35 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[DSC01813-lohalo-1080]]> + https://jevalide.ca/informatique-durable-donnees-et-cybersecurite-pour-humains/dsc01813-lohalo-1080/ + Fri, 08 Jul 2022 20:19:12 +0000 + + https://nouveau.jevalide.ca/wp-content/uploads/2022/07/DSC01813-lohalo-1080.jpg + + + + 71 + + + + + + + + + 35 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[L'analyse du langage naturel à ton service]]> + https://jevalide.ca/informatique-durable-donnees-et-cybersecurite-pour-humains/lanalyse-du-langage-naturel-a-ton-service-2/ + Fri, 08 Jul 2022 21:22:55 +0000 + + https://nouveau.jevalide.ca/wp-content/uploads/2022/07/Lanalyse-du-langage-naturel-a-ton-service.png + + + + 92 + + + + + + + + + 35 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[communist-gf1d807630_640-1]]> + https://jevalide.ca/informatique-durable-donnees-et-cybersecurite-pour-humains/communist-gf1d807630_640-1/ + Fri, 08 Jul 2022 21:58:46 +0000 + + https://nouveau.jevalide.ca/wp-content/uploads/2022/07/communist-gf1d807630_640-1.png + + + + 94 + + + + + + + + + 35 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[cabaret-g27eec96b6_640]]> + https://jevalide.ca/cabaret-g27eec96b6_640/ + Sun, 10 Jul 2022 13:58:38 +0000 + + https://nouveau.jevalide.ca/wp-content/uploads/2022/07/cabaret-g27eec96b6_640.png + + + + 2780 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[profilnova]]> + https://jevalide.ca/page-geek/profilnova/ + Sun, 10 Jul 2022 16:35:51 +0000 + + https://jevalide.ca/wp-content/uploads/2022/07/profilnova.png + + + + 2846 + + + + + + + + + 37 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[black-and-white-g6241a688a_640]]> + https://jevalide.ca/formations-en-ligne/black-and-white-g6241a688a_640/ + Fri, 22 Jul 2022 03:49:44 +0000 + + https://jevalide.ca/wp-content/uploads/2022/07/black-and-white-g6241a688a_640.png + + + + 3076 + + + + + + + + + 28 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[machine-learning-gb391e97c1_640]]> + https://jevalide.ca/formations-en-ligne/machine-learning-gb391e97c1_640/ + Fri, 22 Jul 2022 03:53:01 +0000 + + https://jevalide.ca/wp-content/uploads/2022/07/machine-learning-gb391e97c1_640.png + + + + 3077 + + + + + + + + + 28 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[pixel-cells-g427691124_1280]]> + https://jevalide.ca/collaborations/pixel-cells-g427691124_1280/ + Fri, 29 Jul 2022 02:24:12 +0000 + + https://jevalide.ca/wp-content/uploads/2022/07/pixel-cells-g427691124_1280.png + + + + 3346 + + + + + + + + + 30 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[binary-g9d1b50020_640]]> + https://jevalide.ca/collaborations/binary-g9d1b50020_640/ + Fri, 29 Jul 2022 02:35:24 +0000 + + https://jevalide.ca/wp-content/uploads/2022/07/binary-g9d1b50020_640.png + + + + 3354 + + + + + + + + + 30 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[room-gbb8fa3b57_640]]> + https://jevalide.ca/?attachment_id=3373 + Fri, 29 Jul 2022 16:19:10 +0000 + + https://jevalide.ca/wp-content/uploads/2022/07/room-gbb8fa3b57_640.jpg + + + + 3373 + + + + + + + + + 3370 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[cropped-cropped-logo-complet-noir.png]]> + https://jevalide.ca/cropped-cropped-logo-complet-noir-png/ + Sat, 30 Jul 2022 01:39:29 +0000 + + https://jevalide.ca/wp-content/uploads/2022/06/cropped-cropped-logo-complet-noir.png + + + + 3383 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[image]]> + https://jevalide.ca/licence-creative-commons/image-8/ + Tue, 02 Aug 2022 17:20:18 +0000 + + https://jevalide.ca/wp-content/uploads/2022/08/image.png + + + + 3397 + + + + + + + + + 3396 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Libere-tes-chaines-Cover-IG-Carre]]> + https://jevalide.ca/2022/08/10/analyse-du-langage-naturel-en-francais-quels-sont-les-principaux-defis/libere-tes-chaines-cover-ig-carre/ + Wed, 10 Aug 2022 15:18:18 +0000 + + https://jevalide.ca/wp-content/uploads/2022/08/Libere-tes-chaines-Cover-IG-Carre.jpg + + + + 3426 + + + + + + + + + 3412 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Analyse-du-langage-naturel-en-francais-Quels-sont-les-principaux-defis-]]> + https://jevalide.ca/2022/08/10/analyse-du-langage-naturel-en-francais-quels-sont-les-principaux-defis/analyse-du-langage-naturel-en-francais-quels-sont-les-principaux-defis-2/ + Wed, 10 Aug 2022 15:41:14 +0000 + + https://jevalide.ca/wp-content/uploads/2022/08/Analyse-du-langage-naturel-en-francais-Quels-sont-les-principaux-defis-.jpg + + + + 3443 + + + + + + + + + 3412 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Logiciels-libres-de-mind-mapping]]> + https://jevalide.ca/2022/08/11/les-meilleurs-logiciels-libres-de-mind-mapping/logiciels-libres-de-mind-mapping/ + Fri, 12 Aug 2022 02:24:15 +0000 + + https://jevalide.ca/wp-content/uploads/2022/08/Logiciels-libres-de-mind-mapping.jpg + + + + 3463 + + + + + + + + + 3452 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[capture-freeplane]]> + https://jevalide.ca/2022/08/11/les-meilleurs-logiciels-libres-de-mind-mapping/capture-freeplane/ + Fri, 12 Aug 2022 02:27:32 +0000 + + https://jevalide.ca/wp-content/uploads/2022/08/capture-freeplane.png + + + + 3464 + + + + + + + + + 3452 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[capture-nextcloud-mindmap]]> + https://jevalide.ca/2022/08/11/les-meilleurs-logiciels-libres-de-mind-mapping/capture-nextcloud-mindmap/ + Fri, 12 Aug 2022 02:29:07 +0000 + + https://jevalide.ca/wp-content/uploads/2022/08/capture-nextcloud-mindmap.png + + + + 3465 + + + + + + + + + 3452 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[capture-diagrams]]> + https://jevalide.ca/2022/08/11/les-meilleurs-logiciels-libres-de-mind-mapping/capture-diagrams/ + Fri, 12 Aug 2022 02:37:03 +0000 + + https://jevalide.ca/wp-content/uploads/2022/08/capture-diagrams.png + + + + 3466 + + + + + + + + + 3452 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[capture-naotu]]> + https://jevalide.ca/2022/08/11/les-meilleurs-logiciels-libres-de-mind-mapping/capture-naotu/ + Fri, 12 Aug 2022 02:42:08 +0000 + + https://jevalide.ca/wp-content/uploads/2022/08/capture-naotu.png + + + + 3467 + + + + + + + + + 3452 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[vokoscreenNG-2022-08-11_22-59-04]]> + https://jevalide.ca/2022/08/11/les-meilleurs-logiciels-libres-de-mind-mapping/vokoscreenng-2022-08-11_22-59-04/ + Fri, 12 Aug 2022 03:00:52 +0000 + + https://jevalide.ca/wp-content/uploads/2022/08/vokoscreenNG-2022-08-11_22-59-04.mkv + + + + 3468 + + + + + + + + + 3452 + 0 + + + 0 + + + + + + + + + + + + <![CDATA[capture-treesheets0]]> + https://jevalide.ca/2022/08/11/les-meilleurs-logiciels-libres-de-mind-mapping/capture-treesheets0/ + Fri, 12 Aug 2022 03:04:25 +0000 + + https://jevalide.ca/wp-content/uploads/2022/08/capture-treesheets0.png + + + + 3469 + + + + + + + + + 3452 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[capture-treesheets]]> + https://jevalide.ca/2022/08/11/les-meilleurs-logiciels-libres-de-mind-mapping/capture-treesheets/ + Fri, 12 Aug 2022 03:04:47 +0000 + + https://jevalide.ca/wp-content/uploads/2022/08/capture-treesheets.png + + + + 3470 + + + + + + + + + 3452 + 0 + + + 0 + + + + + + + + + + + + <![CDATA[brain-g790815da1_640]]> + https://jevalide.ca/2022/08/11/les-meilleurs-logiciels-libres-de-mind-mapping/brain-g790815da1_640/ + Fri, 12 Aug 2022 13:50:02 +0000 + + https://jevalide.ca/wp-content/uploads/2022/08/brain-g790815da1_640.jpg + + + + 3494 + + + + + + + + + 3452 + 0 + + + 0 + + + + + + + + + + + + <![CDATA[2022-08-16-code-postal]]> + https://jevalide.ca/2022/08/16/code-postal-pourquoi-le-demander-dans-un-commerce/2022-08-16-code-postal/ + Tue, 16 Aug 2022 15:16:22 +0000 + + https://jevalide.ca/wp-content/uploads/2022/08/2022-08-16-code-postal.png + + + + 3501 + + + + + + + + + 3500 + 0 + + + 0 + + + + + + + + + + + + <![CDATA[President Maria Klawe at Graduation]]> + https://jevalide.ca/2022/08/23/5-conseils-pour-favoriser-la-diversite-en-stim/president-maria-klawe-at-graduation/ + Tue, 23 Aug 2022 17:55:13 +0000 + + https://jevalide.ca/wp-content/uploads/2022/08/Maria_Klawe_2015.jpg + + + + 3597 + + + + + + + + + 3537 + 0 + + + 0 + + + + + + + + + + + + <![CDATA[5-conseils-pour-favoriser-la-diversite-en-STIM]]> + https://jevalide.ca/2022/08/23/5-conseils-pour-favoriser-la-diversite-en-stim/5-conseils-pour-favoriser-la-diversite-en-stim-2/ + Tue, 23 Aug 2022 18:09:34 +0000 + + https://jevalide.ca/wp-content/uploads/2022/08/5-conseils-pour-favoriser-la-diversite-en-STIM.jpg + + + + 3603 + + + + + + + + + 3537 + 0 + + + 0 + + + + + + + + + + + + <![CDATA[formulaire-les-affaires-collecte-abusive]]> + https://jevalide.ca/2022/08/24/5-conseils-pour-des-formulaires-en-ligne/formulaire-les-affaires-collecte-abusive/ + Wed, 24 Aug 2022 20:33:41 +0000 + + https://jevalide.ca/wp-content/uploads/2022/08/formulaire-les-affaires-collecte-abusive.jpeg + + + + 3650 + + + + + + + + + 3613 + 0 + + + 0 + + + + + + + + + + + + <![CDATA[5 conseils pour des formulaires en ligne respectueux]]> + https://jevalide.ca/2022/08/24/5-conseils-pour-des-formulaires-en-ligne/5-conseils-pour-des-formulaires-en-ligne-respectueux-2/ + Wed, 24 Aug 2022 20:46:16 +0000 + + https://jevalide.ca/wp-content/uploads/2022/08/5-conseils-pour-des-formulaires-en-ligne-respectueux.png + + + + 3670 + + + + + + + + + 3613 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Architecture-dentreprise.drawio]]> + https://jevalide.ca/politique-de-confidentialite/architecture-dentreprise-drawio/ + Fri, 16 Sep 2022 11:57:42 +0000 + + https://jevalide.ca/wp-content/uploads/2022/09/Architecture-dentreprise.drawio.png + + + + 3727 + + + + + + + + + 21 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Architecture-dentreprise.drawio-1]]> + https://jevalide.ca/politique-de-confidentialite/architecture-dentreprise-drawio-1/ + Fri, 16 Sep 2022 11:58:06 +0000 + + https://jevalide.ca/wp-content/uploads/2022/09/Architecture-dentreprise.drawio-1.png + + + + 3728 + + + + + + + + + 21 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Screenshot_20220917_130601]]> + https://jevalide.ca/2022/09/17/sauvegarder-ses-donnees-instagram-et-se-proteger/screenshot_20220917_130601/ + Sun, 18 Sep 2022 01:03:43 +0000 + + https://jevalide.ca/wp-content/uploads/2022/09/Screenshot_20220917_130601.png + + + + 3742 + + + + + + + + + 3741 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Screenshot_20220917_130651]]> + https://jevalide.ca/2022/09/17/sauvegarder-ses-donnees-instagram-et-se-proteger/screenshot_20220917_130651/ + Sun, 18 Sep 2022 01:04:16 +0000 + + https://jevalide.ca/wp-content/uploads/2022/09/Screenshot_20220917_130651.png + + + + 3743 + + + + + + + + + 3741 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Screenshot_20220917_211525]]> + https://jevalide.ca/2022/09/17/sauvegarder-ses-donnees-instagram-et-se-proteger/screenshot_20220917_211525/ + Sun, 18 Sep 2022 01:15:56 +0000 + + https://jevalide.ca/wp-content/uploads/2022/09/Screenshot_20220917_211525.png + + + + 3745 + + + + + + + + + 3741 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Mon-projet-1]]> + https://jevalide.ca/2022/09/17/sauvegarder-ses-donnees-instagram-et-se-proteger/mon-projet-1/ + Sun, 18 Sep 2022 01:57:41 +0000 + + https://jevalide.ca/wp-content/uploads/2022/09/Mon-projet-1.png + + + + 3757 + + + + + + + + + 3741 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[aide comptes instagram-cover]]> + https://jevalide.ca/2022/09/17/sauvegarder-ses-donnees-instagram-et-se-proteger/aide-comptes-instagram-cover/ + Sun, 18 Sep 2022 02:03:56 +0000 + + https://jevalide.ca/wp-content/uploads/2022/09/aide-comptes-instagram-cover.png + + + + 3760 + + + + + + + + + 3741 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[crossword-2022-09-18-3-page1]]> + https://jevalide.ca/crossword-2022-09-18-3-page1/ + Sun, 18 Sep 2022 13:47:57 +0000 + + https://jevalide.ca/wp-content/uploads/2022/09/crossword-2022-09-18-3-page1.pdf + + + + 3763 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + <![CDATA[francois-pelletier-podcast-la-talenterie]]> + https://jevalide.ca/collaborations/francois-pelletier-podcast-la-talenterie/ + Tue, 04 Oct 2022 02:46:28 +0000 + + https://jevalide.ca/wp-content/uploads/2022/10/francois-pelletier-podcast-la-talenterie.png + + + + 3778 + + + + + + + + + 30 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[1]]> + https://jevalide.ca/webinaire-du-26-octobre-2022-ton-offre-fait-ti-peur/1-5/ + Mon, 31 Oct 2022 15:49:58 +0000 + + https://jevalide.ca/wp-content/uploads/2022/10/1.png + + + + 3815 + + + + + + + + + 3810 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[map-ti-partage-mini]]> + https://jevalide.ca/webinaire-du-26-octobre-2022-ton-offre-fait-ti-peur/map-ti-partage-mini/ + Mon, 31 Oct 2022 16:21:09 +0000 + + https://jevalide.ca/wp-content/uploads/2022/10/map-ti-partage-mini.png + + + + 3821 + + + + + + + + + 3810 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Persona_GAB_Kandea-mini]]> + https://jevalide.ca/webinaire-du-26-octobre-2022-ton-offre-fait-ti-peur/persona_gab_kandea-mini/ + Mon, 31 Oct 2022 16:22:00 +0000 + + https://jevalide.ca/wp-content/uploads/2022/10/Persona_GAB_Kandea-mini.png + + + + 3822 + + + + + + + + + 3810 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[kubernetes-plan-de-controle.drawio]]> + https://jevalide.ca/2022/11/11/securite-de-kubernetes/kubernetes-plan-de-controle-drawio/ + Fri, 11 Nov 2022 00:47:13 +0000 + + https://jevalide.ca/wp-content/uploads/2022/11/kubernetes-plan-de-controle.drawio.png + + + + 3834 + + + + + + + + + 3828 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[kubernetes-plan-de-controle.drawio-1]]> + https://jevalide.ca/2022/11/11/securite-de-kubernetes/kubernetes-plan-de-controle-drawio-1/ + Fri, 11 Nov 2022 00:49:39 +0000 + + https://jevalide.ca/wp-content/uploads/2022/11/kubernetes-plan-de-controle.drawio-1.png + + + + 3835 + + + + + + + + + 3828 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[336716715_749a4975e2_w]]> + https://jevalide.ca/2022/11/11/securite-de-kubernetes/336716715_749a4975e2_w/ + Fri, 11 Nov 2022 02:15:18 +0000 + + https://jevalide.ca/wp-content/uploads/2022/11/336716715_749a4975e2_w.jpg + + + + 3844 + + + + + + + + + 3828 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[kubernetes-plan-de-controle.drawio-2]]> + https://jevalide.ca/2022/11/11/securite-de-kubernetes/kubernetes-plan-de-controle-drawio-2/ + Fri, 11 Nov 2022 02:17:38 +0000 + + https://jevalide.ca/wp-content/uploads/2022/11/kubernetes-plan-de-controle.drawio-2.png + + + + 3846 + + + + + + + + + 3828 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Statistiques-courriel_-8-raisons-de-ne-plus-paniquer-1]]> + https://jevalide.ca/2022/11/16/statistiques-courriel-8-raisons-de-ne-plus-paniquer/statistiques-courriel_-8-raisons-de-ne-plus-paniquer-1/ + Wed, 16 Nov 2022 05:42:51 +0000 + + https://jevalide.ca/wp-content/uploads/2022/11/Statistiques-courriel_-8-raisons-de-ne-plus-paniquer-1.jpg + + + + 3908 + + + + + + + + + 3883 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[image]]> + https://jevalide.ca/2022/11/20/comment-ameliorer-ma-securite-informatique/image-9/ + Tue, 22 Nov 2022 16:08:03 +0000 + + https://jevalide.ca/wp-content/uploads/2022/11/image.png + + + + 3916 + + + + + + + + + 3913 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[image-1]]> + https://jevalide.ca/2022/11/20/comment-ameliorer-ma-securite-informatique/image-1-4/ + Wed, 23 Nov 2022 14:16:09 +0000 + + https://jevalide.ca/wp-content/uploads/2022/11/image-1.png + + + + 3920 + + + + + + + + + 3913 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[image-2]]> + https://jevalide.ca/2022/11/20/comment-ameliorer-ma-securite-informatique/image-2-4/ + Wed, 23 Nov 2022 14:16:09 +0000 + + https://jevalide.ca/wp-content/uploads/2022/11/image-2.png + + + + 3921 + + + + + + + + + 3913 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[image-3]]> + https://jevalide.ca/2022/11/20/comment-ameliorer-ma-securite-informatique/image-3-4/ + Wed, 23 Nov 2022 23:51:32 +0000 + + https://jevalide.ca/wp-content/uploads/2022/11/image-3.png + + + + 3923 + + + + + + + + + 3913 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[image-4]]> + https://jevalide.ca/2022/11/20/comment-ameliorer-ma-securite-informatique/image-4-4/ + Wed, 23 Nov 2022 23:51:32 +0000 + + https://jevalide.ca/wp-content/uploads/2022/11/image-4.png + + + + 3924 + + + + + + + + + 3913 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[image-5]]> + https://jevalide.ca/2022/11/20/comment-ameliorer-ma-securite-informatique/image-5-2/ + Sat, 26 Nov 2022 15:21:59 +0000 + + https://jevalide.ca/wp-content/uploads/2022/11/image-5.png + + + + 3927 + + + + + + + + + 3913 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[image-7]]> + https://jevalide.ca/2022/11/20/comment-ameliorer-ma-securite-informatique/image-7-2/ + Sat, 26 Nov 2022 15:21:59 +0000 + + https://jevalide.ca/wp-content/uploads/2022/11/image-7.png + + + + 3928 + + + + + + + + + 3913 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[image-6]]> + https://jevalide.ca/2022/11/20/comment-ameliorer-ma-securite-informatique/image-6-2/ + Sat, 26 Nov 2022 15:21:59 +0000 + + https://jevalide.ca/wp-content/uploads/2022/11/image-6.png + + + + 3929 + + + + + + + + + 3913 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[image-8]]> + https://jevalide.ca/2022/11/20/comment-ameliorer-ma-securite-informatique/image-8-2/ + Mon, 28 Nov 2022 19:18:39 +0000 + + https://jevalide.ca/wp-content/uploads/2022/11/image-8.png + + + + 3938 + + + + + + + + + 3913 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[extraction-web-illustration-blog.drawio]]> + https://jevalide.ca/2022/11/28/extraction-web-comment-bien-planifier-son-projet/extraction-web-illustration-blog-drawio/ + Mon, 28 Nov 2022 23:37:43 +0000 + + https://jevalide.ca/wp-content/uploads/2022/11/extraction-web-illustration-blog.drawio.png + + + + 3953 + + + + + + + + + 3940 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Screenshot_20221130_091030]]> + https://jevalide.ca/collaborations/screenshot_20221130_091030/ + Wed, 30 Nov 2022 14:13:09 +0000 + + https://jevalide.ca/wp-content/uploads/2022/11/Screenshot_20221130_091030.png + + + + 3956 + + + + + + + + + 30 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[image-9]]> + https://jevalide.ca/2022/11/20/comment-ameliorer-ma-securite-informatique/image-9-2/ + Wed, 30 Nov 2022 14:35:09 +0000 + + https://jevalide.ca/wp-content/uploads/2022/11/image-9.png + + + + 3958 + + + + + + + + + 3913 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[image-10]]> + https://jevalide.ca/2022/11/20/comment-ameliorer-ma-securite-informatique/image-10/ + Wed, 30 Nov 2022 14:35:09 +0000 + + https://jevalide.ca/wp-content/uploads/2022/11/image-10.png + + + + 3959 + + + + + + + + + 3913 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[image]]> + https://jevalide.ca/2022/11/20/comment-ameliorer-ma-securite-informatique/image-11/ + Thu, 01 Dec 2022 15:14:20 +0000 + + https://jevalide.ca/wp-content/uploads/2022/12/image.png + + + + 3963 + + + + + + + + + 3913 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[image-1]]> + https://jevalide.ca/2022/11/20/comment-ameliorer-ma-securite-informatique/image-1-5/ + Thu, 01 Dec 2022 15:14:20 +0000 + + https://jevalide.ca/wp-content/uploads/2022/12/image-1.png + + + + 3964 + + + + + + + + + 3913 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[image-2]]> + https://jevalide.ca/2022/11/20/comment-ameliorer-ma-securite-informatique/image-2-5/ + Fri, 09 Dec 2022 16:21:19 +0000 + + https://jevalide.ca/wp-content/uploads/2022/12/image-2.png + + + + 4010 + + + + + + + + + 3913 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[image-3]]> + https://jevalide.ca/2022/11/20/comment-ameliorer-ma-securite-informatique/image-3-5/ + Fri, 09 Dec 2022 16:21:19 +0000 + + https://jevalide.ca/wp-content/uploads/2022/12/image-3.png + + + + 4011 + + + + + + + + + 3913 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[image-3]]> + https://jevalide.ca/2022/11/20/comment-ameliorer-ma-securite-informatique/image-3-6/ + Fri, 09 Dec 2022 16:21:19 +0000 + + https://jevalide.ca/wp-content/uploads/2022/12/image-3.png + + + + 4012 + + + + + + + + + 3913 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[image-4]]> + https://jevalide.ca/2022/11/20/comment-ameliorer-ma-securite-informatique/image-4-5/ + Fri, 09 Dec 2022 16:21:19 +0000 + + https://jevalide.ca/wp-content/uploads/2022/12/image-4.png + + + + 4013 + + + + + + + + + 3913 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[image-5]]> + https://jevalide.ca/2022/11/20/comment-ameliorer-ma-securite-informatique/image-5-3/ + Fri, 09 Dec 2022 16:21:20 +0000 + + https://jevalide.ca/wp-content/uploads/2022/12/image-5.png + + + + 4014 + + + + + + + + + 3913 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[partage-google-drive]]> + https://jevalide.ca/2022/11/20/comment-ameliorer-ma-securite-informatique/partage-google-drive/ + Mon, 19 Dec 2022 02:04:30 +0000 + + https://jevalide.ca/wp-content/uploads/2022/12/partage-google-drive.png + + + + 4031 + + + + + + + + + 3913 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Statistiques courriel_ 8 raisons de ne plus paniquer-4]]> + https://jevalide.ca/2022/12/25/liste-de-priorite-pour-changer-ses-mots-de-passe/statistiques-courriel_-8-raisons-de-ne-plus-paniquer-4/ + Sun, 25 Dec 2022 17:43:46 +0000 + + https://jevalide.ca/wp-content/uploads/2022/12/Statistiques-courriel_-8-raisons-de-ne-plus-paniquer-4.jpg + + + + 4047 + + + + + + + + + 4043 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[missioncyber-linkedin-12-30-2022-output-0]]> + https://jevalide.ca/2022/11/20/comment-ameliorer-ma-securite-informatique/missioncyber-linkedin-12-30-2022-output-0/ + Fri, 30 Dec 2022 19:22:27 +0000 + + https://jevalide.ca/wp-content/uploads/2022/12/missioncyber-linkedin-12-30-2022-output-0.jpg + + + + 4066 + + + + + + + + + 3913 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[My-project-1]]> + https://jevalide.ca/2022/12/31/16-publications-qui-resument-mon-annee-2022/my-project-1/ + Sat, 31 Dec 2022 23:14:58 +0000 + + https://jevalide.ca/wp-content/uploads/2022/12/My-project-1.jpg + + + + 4076 + + + + + + + + + 4075 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[My-project-1]]> + https://jevalide.ca/2023/01/13/on-demonte-le-robot/my-project-1-2/ + Fri, 13 Jan 2023 05:12:10 +0000 + + https://jevalide.ca/wp-content/uploads/2023/01/My-project-1.png + + + + 4090 + + + + + + + + + 4089 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[missioncyber-pointcommun-2]]> + https://jevalide.ca/2023/01/31/tu-es-la-cible-parfaite-pour-les-pirates/missioncyber-pointcommun-2/ + Wed, 01 Feb 2023 01:07:47 +0000 + + https://jevalide.ca/wp-content/uploads/2023/01/missioncyber-pointcommun-2.png + + + + 4100 + + + + + + + + + 4099 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Mission Cybersécurité - Images-1]]> + https://jevalide.ca/2023/01/31/tu-es-la-cible-parfaite-pour-les-pirates/mission-cybersecurite-images-1/ + Wed, 01 Feb 2023 01:08:32 +0000 + + https://jevalide.ca/wp-content/uploads/2023/01/Mission-Cybersecurite-Images-1.png + + + + 4101 + + + + + + + + + 4099 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[go-pyrate-brisons-les-mythes]]> + https://jevalide.ca/collaborations/go-pyrate-brisons-les-mythes/ + Fri, 17 Feb 2023 14:34:50 +0000 + + https://jevalide.ca/wp-content/uploads/2023/02/go-pyrate-brisons-les-mythes.png + + + + 4151 + + + + + + + + + 30 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[ballon-tiktok]]> + https://jevalide.ca/2023/03/01/est-ce-que-je-devrais-abandonner-tiktok/ballon-tiktok/ + Wed, 01 Mar 2023 14:30:41 +0000 + + https://jevalide.ca/wp-content/uploads/2023/03/ballon-tiktok.png + + + + 4164 + + + + + + + + + 4162 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[1669661443916]]> + https://jevalide.ca/2023/03/11/un-graphe-des-problemes-systemiques/attachment/1669661443916/ + Sun, 12 Mar 2023 02:10:37 +0000 + + https://jevalide.ca/wp-content/uploads/2023/03/1669661443916.jpeg + + + + 4188 + + + + + + + + + 4187 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[wicked_problems_standalone]]> + https://jevalide.ca/wicked_problems_standalone/ + Sun, 12 Mar 2023 02:13:11 +0000 + + https://jevalide.ca/wp-content/uploads/2023/03/wicked_problems_standalone.html + + + + 4189 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + <![CDATA[wicked-problems-static]]> + https://jevalide.ca/2023/03/11/un-graphe-des-problemes-systemiques/wicked-problems-static/ + Sun, 12 Mar 2023 02:17:16 +0000 + + https://jevalide.ca/wp-content/uploads/2023/03/wicked-problems-static.png + + + + 4190 + + + + + + + + + 4187 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Passe-a-lApption-Liste-dattente-1]]> + https://jevalide.ca/passe-a-lapption-liste-dattente-1/ + Sun, 19 Mar 2023 21:59:41 +0000 + + https://jevalide.ca/wp-content/uploads/2023/03/Passe-a-lApption-Liste-dattente-1.jpg + + + + 4233 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Passe-a-lApption-Liste-dattente-1]]> + https://jevalide.ca/passe-a-lapption-liste-dattente-1-2/ + Mon, 20 Mar 2023 03:26:14 +0000 + + https://jevalide.ca/wp-content/uploads/2023/03/Passe-a-lApption-Liste-dattente-1.png + + + + 4288 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Passe-a-lApption-Liste-dattente-1-1]]> + https://jevalide.ca/passe-a-lapption-liste-dattente-1-1/ + Mon, 20 Mar 2023 03:34:22 +0000 + + https://jevalide.ca/wp-content/uploads/2023/03/Passe-a-lApption-Liste-dattente-1-1.png + + + + 4297 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Yapp-pas-dprobleme-1]]> + https://jevalide.ca/yapp-pas-dprobleme-1/ + Wed, 22 Mar 2023 17:54:42 +0000 + + https://jevalide.ca/wp-content/uploads/2023/03/Yapp-pas-dprobleme-1.jpg + + + + 4348 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Yapp-pas-dprobleme-1-1]]> + https://jevalide.ca/yapp-pas-dprobleme-1-1/ + Wed, 22 Mar 2023 19:21:05 +0000 + + https://jevalide.ca/wp-content/uploads/2023/03/Yapp-pas-dprobleme-1-1.jpg + + + + 4368 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[image]]> + https://jevalide.ca/2023/04/01/on-demonte-le-robot-1-les-reseaux-de-neurones/image-12/ + Sat, 01 Apr 2023 19:45:35 +0000 + + https://jevalide.ca/wp-content/uploads/2023/04/image.png + + + + 4380 + + + + + + + + + 4379 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[image-1]]> + https://jevalide.ca/2023/04/01/on-demonte-le-robot-1-les-reseaux-de-neurones/image-1-6/ + Sat, 01 Apr 2023 19:53:20 +0000 + + https://jevalide.ca/wp-content/uploads/2023/04/image-1.png + + + + 4381 + + + + + + + + + 4379 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[image-2]]> + https://jevalide.ca/2023/04/01/on-demonte-le-robot-1-les-reseaux-de-neurones/image-2-6/ + Sat, 01 Apr 2023 19:55:13 +0000 + + https://jevalide.ca/wp-content/uploads/2023/04/image-2.png + + + + 4382 + + + + + + + + + 4379 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[image-3]]> + https://jevalide.ca/2023/04/01/on-demonte-le-robot-1-les-reseaux-de-neurones/image-3-7/ + Sat, 01 Apr 2023 19:55:34 +0000 + + https://jevalide.ca/wp-content/uploads/2023/04/image-3.png + + + + 4383 + + + + + + + + + 4379 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[image-4]]> + https://jevalide.ca/2023/04/01/on-demonte-le-robot-1-les-reseaux-de-neurones/image-4-6/ + Sat, 01 Apr 2023 19:57:29 +0000 + + https://jevalide.ca/wp-content/uploads/2023/04/image-4.png + + + + 4385 + + + + + + + + + 4379 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[image-5]]> + https://jevalide.ca/2023/04/01/on-demonte-le-robot-1-les-reseaux-de-neurones/image-5-4/ + Sat, 01 Apr 2023 19:58:55 +0000 + + https://jevalide.ca/wp-content/uploads/2023/04/image-5.png + + + + 4386 + + + + + + + + + 4379 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[image-6]]> + https://jevalide.ca/2023/04/01/on-demonte-le-robot-1-les-reseaux-de-neurones/image-6-3/ + Sat, 01 Apr 2023 20:10:18 +0000 + + https://jevalide.ca/wp-content/uploads/2023/04/image-6.png + + + + 4388 + + + + + + + + + 4379 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[image-7]]> + https://jevalide.ca/2023/04/01/on-demonte-le-robot-1-les-reseaux-de-neurones/image-7-3/ + Sat, 01 Apr 2023 20:16:13 +0000 + + https://jevalide.ca/wp-content/uploads/2023/04/image-7.png + + + + 4391 + + + + + + + + + 4379 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[image-8]]> + https://jevalide.ca/2023/04/01/on-demonte-le-robot-1-les-reseaux-de-neurones/image-8-3/ + Sat, 01 Apr 2023 20:41:52 +0000 + + https://jevalide.ca/wp-content/uploads/2023/04/image-8.png + + + + 4393 + + + + + + + + + 4379 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Contrat-de-formation-Mission-Cybersecurite]]> + https://jevalide.ca/legal/contrat-de-formation-mission-cybersecurite/ + Sat, 08 Apr 2023 00:52:12 +0000 + + https://jevalide.ca/wp-content/uploads/2023/04/Contrat-de-formation-Mission-Cybersecurite.pdf + + + + 4416 + + + + + + + + + 4415 + 0 + + + 0 + + + + + + + + + + + + <![CDATA[donnees_etiquetees]]> + https://jevalide.ca/2023/04/07/on-demonte-le-robot-2-entrainement-des-reseaux-de-neurones/donnees_etiquetees/ + Sat, 08 Apr 2023 03:29:32 +0000 + + https://jevalide.ca/wp-content/uploads/2023/04/donnees_etiquetees.png + + + + 4420 + + + + + + + + + 4402 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[evaluation]]> + https://jevalide.ca/2023/04/07/on-demonte-le-robot-2-entrainement-des-reseaux-de-neurones/evaluation/ + Sat, 08 Apr 2023 03:30:03 +0000 + + https://jevalide.ca/wp-content/uploads/2023/04/evaluation.png + + + + 4421 + + + + + + + + + 4402 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[erreur]]> + https://jevalide.ca/2023/04/07/on-demonte-le-robot-2-entrainement-des-reseaux-de-neurones/erreur/ + Sat, 08 Apr 2023 03:30:40 +0000 + + https://jevalide.ca/wp-content/uploads/2023/04/erreur.png + + + + 4422 + + + + + + + + + 4402 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[retropropagation]]> + https://jevalide.ca/2023/04/07/on-demonte-le-robot-2-entrainement-des-reseaux-de-neurones/retropropagation/ + Sat, 08 Apr 2023 03:31:47 +0000 + + https://jevalide.ca/wp-content/uploads/2023/04/retropropagation.png + + + + 4423 + + + + + + + + + 4402 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Architecture-dentreprise.drawio]]> + https://jevalide.ca/politique-de-confidentialite/architecture-dentreprise-drawio-2/ + Fri, 14 Apr 2023 02:08:58 +0000 + + https://jevalide.ca/wp-content/uploads/2023/04/Architecture-dentreprise.drawio.png + + + + 4548 + + + + + + + + + 21 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Yapp-pas-dprobleme-4]]> + https://jevalide.ca/yapp-pas-dprobleme-4/ + Thu, 20 Apr 2023 18:29:33 +0000 + + https://jevalide.ca/wp-content/uploads/2023/04/Yapp-pas-dprobleme-4.jpg + + + + 4614 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[nextcloud-instantupload-sources]]> + https://jevalide.ca/2023/04/23/sauvegarde-facile-de-contenu-mobile-avec-nextcloud/nextcloud-instantupload-sources/ + Sun, 23 Apr 2023 23:09:50 +0000 + + https://jevalide.ca/wp-content/uploads/2023/04/nextcloud-instantupload-sources.png + + + + 4621 + + + + + + + + + 4620 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[nextcloud-instantupload-televersement-automatique]]> + https://jevalide.ca/2023/04/23/sauvegarde-facile-de-contenu-mobile-avec-nextcloud/nextcloud-instantupload-televersement-automatique/ + Sun, 23 Apr 2023 23:09:59 +0000 + + https://jevalide.ca/wp-content/uploads/2023/04/nextcloud-instantupload-televersement-automatique.png + + + + 4622 + + + + + + + + + 4620 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[nextcloud-instantupload-options]]> + https://jevalide.ca/2023/04/23/sauvegarde-facile-de-contenu-mobile-avec-nextcloud/nextcloud-instantupload-options/ + Sun, 23 Apr 2023 23:13:04 +0000 + + https://jevalide.ca/wp-content/uploads/2023/04/nextcloud-instantupload-options.png + + + + 4623 + + + + + + + + + 4620 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Contrat de formation Yapp]]> + https://jevalide.ca/contrat-de-formation-yapp/ + Thu, 11 May 2023 14:34:48 +0000 + + https://jevalide.ca/wp-content/uploads/2023/05/Contrat-de-formation-Yapp.pdf + + + + 4662 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + <![CDATA[ebook-webinaire-zen]]> + https://jevalide.ca/ebook-webinaire-zen/ + Thu, 11 May 2023 18:38:40 +0000 + + https://jevalide.ca/wp-content/uploads/2023/05/ebook-webinaire-zen.pdf + + + + 4667 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + <![CDATA[slides-webinaire-zen]]> + https://jevalide.ca/slides-webinaire-zen/ + Thu, 11 May 2023 18:38:44 +0000 + + https://jevalide.ca/wp-content/uploads/2023/05/slides-webinaire-zen.pdf + + + + 4668 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + <![CDATA[Le-webinaire-zen-contenus-7]]> + https://jevalide.ca/le-webinaire-zen-contenus-7/ + Thu, 11 May 2023 18:46:54 +0000 + + https://jevalide.ca/wp-content/uploads/2023/05/Le-webinaire-zen-contenus-7.png + + + + 4676 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[blog-sauvegarde-borg-manuelle]]> + https://jevalide.ca/2023/05/12/script-de-sauvegarde-manuelle-borg-pour-yunohost/blog-sauvegarde-borg-manuelle/ + Sat, 13 May 2023 00:59:57 +0000 + + https://jevalide.ca/wp-content/uploads/2023/05/blog-sauvegarde-borg-manuelle.jpg + + + + 4694 + + + + + + + + + 4686 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[capture-ecran-mac-cleanup-py]]> + https://jevalide.ca/2023/05/21/nettoyer-son-mac/capture-ecran-mac-cleanup-py/ + Sun, 21 May 2023 18:09:45 +0000 + + https://jevalide.ca/wp-content/uploads/2023/05/capture-ecran-mac-cleanup-py.png + + + + 4705 + + + + + + + + + 4698 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[capture-finder-applications-menage]]> + https://jevalide.ca/2023/05/21/nettoyer-son-mac/capture-finder-applications-menage/ + Sun, 21 May 2023 18:13:23 +0000 + + https://jevalide.ca/wp-content/uploads/2023/05/capture-finder-applications-menage.png + + + + 4706 + + + + + + + + + 4698 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[capture-corbeille-mac]]> + https://jevalide.ca/2023/05/21/nettoyer-son-mac/capture-corbeille-mac/ + Sun, 21 May 2023 18:14:47 +0000 + + https://jevalide.ca/wp-content/uploads/2023/05/capture-corbeille-mac.png + + + + 4707 + + + + + + + + + 4698 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Comment-préserver-lanonymat-dans-un-sondage-1]]> + https://jevalide.ca/2023/04/20/anonymat-dans-un-sondage-de-diversite/comment-preserver-lanonymat-dans-un-sondage-1/ + Sun, 21 May 2023 20:58:18 +0000 + + https://jevalide.ca/wp-content/uploads/2023/05/Comment-préserver-lanonymat-dans-un-sondage-1.jpg + + + + 4725 + + + + + + + + + 4558 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + <![CDATA[brittani-burns-98uYQ-KupiE-unsplash]]> + https://jevalide.ca/2023/06/02/le-spectre-des-opinions-sur-les-mesures-inclusives/brittani-burns-98uyq-kupie-unsplash/ + Fri, 02 Jun 2023 16:51:45 +0000 + + https://jevalide.ca/wp-content/uploads/2023/06/brittani-burns-98uYQ-KupiE-unsplash.jpg + + + + 4738 + + + + + + + + + 4735 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Screenshot_20230613_150546]]> + https://jevalide.ca/2023/06/13/postmark-avec-nextcloud-comme-service-smtp/screenshot_20230613_150546/ + Tue, 13 Jun 2023 19:08:21 +0000 + + https://jevalide.ca/wp-content/uploads/2023/06/Screenshot_20230613_150546.png + + + + 4753 + + + + + + + + + 4752 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Screenshot_20230613_150709]]> + https://jevalide.ca/2023/06/13/postmark-avec-nextcloud-comme-service-smtp/screenshot_20230613_150709/ + Tue, 13 Jun 2023 19:08:45 +0000 + + https://jevalide.ca/wp-content/uploads/2023/06/Screenshot_20230613_150709.png + + + + 4754 + + + + + + + + + 4752 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Screenshot_20230613_124145]]> + https://jevalide.ca/2023/06/13/postmark-avec-nextcloud-comme-service-smtp/screenshot_20230613_124145/ + Tue, 13 Jun 2023 19:10:01 +0000 + + https://jevalide.ca/wp-content/uploads/2023/06/Screenshot_20230613_124145.png + + + + 4755 + + + + + + + + + 4752 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Screenshot_20230613_151025]]> + https://jevalide.ca/2023/06/13/postmark-avec-nextcloud-comme-service-smtp/screenshot_20230613_151025/ + Tue, 13 Jun 2023 19:11:09 +0000 + + https://jevalide.ca/wp-content/uploads/2023/06/Screenshot_20230613_151025.png + + + + 4756 + + + + + + + + + 4752 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[2023-06-10 18-02-23-0]]> + https://jevalide.ca/2023-06-10-18-02-23-0/ + Wed, 14 Jun 2023 19:01:30 +0000 + + https://jevalide.ca/wp-content/uploads/2023/06/2023-06-10-18-02-23-0.png + + + + 4784 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + <![CDATA[2023-06-10 18-02-54-0]]> + https://jevalide.ca/2023-06-10-18-02-54-0/ + Wed, 14 Jun 2023 19:01:31 +0000 + + https://jevalide.ca/wp-content/uploads/2023/06/2023-06-10-18-02-54-0.png + + + + 4785 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[2023-06-10 18-03-14-0]]> + https://jevalide.ca/2023-06-10-18-03-14-0/ + Wed, 14 Jun 2023 19:01:33 +0000 + + https://jevalide.ca/wp-content/uploads/2023/06/2023-06-10-18-03-14-0.png + + + + 4786 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + <![CDATA[2023-06-10 18-03-36-0]]> + https://jevalide.ca/2023-06-10-18-03-36-0/ + Wed, 14 Jun 2023 19:01:34 +0000 + + https://jevalide.ca/wp-content/uploads/2023/06/2023-06-10-18-03-36-0.png + + + + 4787 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[2023-06-10 18-04-11-0]]> + https://jevalide.ca/2023-06-10-18-04-11-0/ + Wed, 14 Jun 2023 19:01:36 +0000 + + https://jevalide.ca/wp-content/uploads/2023/06/2023-06-10-18-04-11-0.png + + + + 4788 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[courriel_douteux]]> + https://jevalide.ca/2023/06/24/comment-detecter-un-courriel-douteux/courriel_douteux/ + Sun, 25 Jun 2023 01:11:52 +0000 + + https://jevalide.ca/wp-content/uploads/2023/06/courriel_douteux.png + + + + 4833 + + + + + + + + + 4830 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Screenshot-2023-06-26-at-1.37.46-PM]]> + https://jevalide.ca/collaborations/screenshot-2023-06-26-at-1-37-46-pm/ + Mon, 26 Jun 2023 17:38:22 +0000 + + https://jevalide.ca/wp-content/uploads/2023/06/Screenshot-2023-06-26-at-1.37.46-PM.png + + + + 4841 + + + + + + + + + 30 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[LD40-choix-ethique-technologie]]> + https://jevalide.ca/collaborations/ld40-choix-ethique-technologie/ + Mon, 26 Jun 2023 17:41:00 +0000 + + https://jevalide.ca/wp-content/uploads/2023/06/LD40-choix-ethique-technologie.jpg + + + + 4844 + + + + + + + + + 30 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[integration-continue]]> + https://jevalide.ca/2023/06/29/l-integration-continue-meme-pour-les-petites-entreprises/integration-continue/ + Thu, 29 Jun 2023 17:16:41 +0000 + + https://jevalide.ca/wp-content/uploads/2023/06/integration-continue.png + + + + 4858 + + + + + + + + + 4850 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[depannage80]]> + https://jevalide.ca/2023/07/10/le-langage-dot-pour-visualiser-des-graphes/depannage80/ + Wed, 05 Jul 2023 23:32:43 +0000 + + https://jevalide.ca/wp-content/uploads/2023/07/depannage80.png + + + + 4894 + + + + + + + + + 4893 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[graph2]]> + https://jevalide.ca/2023/07/10/le-langage-dot-pour-visualiser-des-graphes/graph2/ + Wed, 05 Jul 2023 23:45:51 +0000 + + https://jevalide.ca/wp-content/uploads/2023/07/graph2.png + + + + 4895 + + + + + + + + + 4893 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[2023-07-07-11.52.13]]> + https://jevalide.ca/2023-07-07-11-52-13/ + Fri, 07 Jul 2023 15:52:33 +0000 + + https://jevalide.ca/wp-content/uploads/2023/07/2023-07-07-11.52.13.jpg + + + + 4910 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[pycharm]]> + https://jevalide.ca/2022/07/10/application-point-median-behind-the-scenes/pycharm/ + Sun, 09 Jul 2023 04:21:54 +0000 + + https://jevalide.ca/wp-content/uploads/2023/07/pycharm.png + + + + 4915 + + + + + + + + + 4914 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[rr2]]> + https://jevalide.ca/2022/07/10/application-point-median-behind-the-scenes/rr2/ + Sun, 09 Jul 2023 04:22:03 +0000 + + https://jevalide.ca/wp-content/uploads/2023/07/rr2.png + + + + 4916 + + + + + + + + + 4914 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[rr3]]> + https://jevalide.ca/2022/07/10/application-point-median-behind-the-scenes/rr3/ + Sun, 09 Jul 2023 04:22:10 +0000 + + https://jevalide.ca/wp-content/uploads/2023/07/rr3.png + + + + 4917 + + + + + + + + + 4914 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[flask]]> + https://jevalide.ca/2022/07/10/application-point-median-behind-the-scenes/flask/ + Sun, 09 Jul 2023 04:22:17 +0000 + + https://jevalide.ca/wp-content/uploads/2023/07/flask.png + + + + 4918 + + + + + + + + + 4914 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[docker-arch]]> + https://jevalide.ca/2022/07/10/application-point-median-behind-the-scenes/docker-arch/ + Sun, 09 Jul 2023 04:22:30 +0000 + + https://jevalide.ca/wp-content/uploads/2023/07/docker-arch.png + + + + 4919 + + + + + + + + + 4914 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[caprover]]> + https://jevalide.ca/2022/07/10/application-point-median-behind-the-scenes/caprover/ + Sun, 09 Jul 2023 04:22:37 +0000 + + https://jevalide.ca/wp-content/uploads/2023/07/caprover.png + + + + 4920 + + + + + + + + + 4914 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[paas]]> + https://jevalide.ca/2022/07/10/application-point-median-behind-the-scenes/paas/ + Sun, 09 Jul 2023 04:22:43 +0000 + + https://jevalide.ca/wp-content/uploads/2023/07/paas.png + + + + 4921 + + + + + + + + + 4914 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[devops]]> + https://jevalide.ca/2022/07/10/application-point-median-behind-the-scenes/devops/ + Sun, 09 Jul 2023 04:22:48 +0000 + + https://jevalide.ca/wp-content/uploads/2023/07/devops.png + + + + 4922 + + + + + + + + + 4914 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[gitlab]]> + https://jevalide.ca/2022/07/10/application-point-median-behind-the-scenes/gitlab/ + Sun, 09 Jul 2023 04:22:54 +0000 + + https://jevalide.ca/wp-content/uploads/2023/07/gitlab.png + + + + 4923 + + + + + + + + + 4914 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[capture_grep]]> + https://jevalide.ca/2023/07/09/manipulation-de-fichiers-texte-avec-sed-awk-grep/capture_grep/ + Sun, 09 Jul 2023 14:33:47 +0000 + + https://jevalide.ca/wp-content/uploads/2023/07/capture_grep.png + + + + 4930 + + + + + + + + + 4929 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[jevalide.ca - Mots Croisés - La sécurité informatique]]> + https://jevalide.ca/jevalide-ca-mots-croises-la-securite-informatique/ + Sat, 22 Jul 2023 17:28:29 +0000 + + https://jevalide.ca/wp-content/uploads/2023/07/jevalide.ca-Mots-Croises-La-securite-informatique.pdf + + + + 4950 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + <![CDATA[jevalide.ca - Mots Croisés - La sécurité informatique - Solutions]]> + https://jevalide.ca/jevalide-ca-mots-croises-la-securite-informatique-solutions/ + Sat, 22 Jul 2023 17:28:29 +0000 + + https://jevalide.ca/wp-content/uploads/2023/07/jevalide.ca-Mots-Croises-La-securite-informatique-Solutions.pdf + + + + 4951 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + <![CDATA[Photo de François Pelletier]]> + https://jevalide.ca/91089378861/ + Sat, 22 Jul 2023 17:55:35 +0000 + + https://jevalide.ca/wp-content/uploads/2023/07/91089378861.webp + + + + 4954 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + <![CDATA[image]]> + https://jevalide.ca/2023/07/22/comment-sauvegarder-une-formation-thrivecart-learn/image-13/ + Sat, 22 Jul 2023 20:27:28 +0000 + + https://jevalide.ca/wp-content/uploads/2023/07/image.png + + + + 4960 + + + + + + + + + 4959 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[image-1]]> + https://jevalide.ca/2023/07/22/comment-sauvegarder-une-formation-thrivecart-learn/image-1-7/ + Sat, 22 Jul 2023 20:27:44 +0000 + + https://jevalide.ca/wp-content/uploads/2023/07/image-1.png + + + + 4961 + + + + + + + + + 4959 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[clone-download-gitlab]]> + https://jevalide.ca/2023/07/22/comment-sauvegarder-une-formation-thrivecart-learn/clone-download-gitlab/ + Sat, 22 Jul 2023 20:34:55 +0000 + + https://jevalide.ca/wp-content/uploads/2023/07/clone-download-gitlab.png + + + + 4963 + + + + + + + + + 4959 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[jevalideca-linkedin-2023-07-22-output-000]]> + https://jevalide.ca/2023/07/22/comment-sauvegarder-une-formation-thrivecart-learn/jevalideca-linkedin-2023-07-22-output-000/ + Sat, 22 Jul 2023 21:16:06 +0000 + + https://jevalide.ca/wp-content/uploads/2023/07/jevalideca-linkedin-2023-07-22-output-000.jpg + + + + 4980 + + + + + + + + + 4959 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[cover-kiosque-1]]> + https://jevalide.ca/2023/08/13/libere-toi-des-ptit-monstres-informatiques/cover-kiosque-1/ + Mon, 31 Jul 2023 21:25:53 +0000 + + https://jevalide.ca/wp-content/uploads/2023/07/cover-kiosque-1.png + + + + 5023 + + + + + + + + + 5021 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Programmation-FWCC2023-Lundi]]> + https://jevalide.ca/collaborations/programmation-fwcc2023-lundi/ + Wed, 16 Aug 2023 01:30:46 +0000 + + https://jevalide.ca/wp-content/uploads/2023/08/Programmation-FWCC2023-Lundi.png + + + + 5112 + + + + + + + + + 30 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Y’app pas d'problème !]]> + https://jevalide.ca/yapp-pas-dprobleme-2/ + Wed, 23 Aug 2023 19:02:12 +0000 + + https://jevalide.ca/wp-content/uploads/2023/08/Yapp-pas-dproblème-.jpeg + + + + 5130 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[2023-08-14-fwcc-ptit-monstre]]> + https://jevalide.ca/2023-08-14-fwcc-ptit-monstre/ + Wed, 30 Aug 2023 00:56:01 +0000 + + https://jevalide.ca/wp-content/uploads/2023/08/2023-08-14-fwcc-ptit-monstre.pdf + + + + 5138 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + <![CDATA[Y’app pas d'problème !-2]]> + https://jevalide.ca/informatique-durable-donnees-et-cybersecurite-pour-humains/yapp-pas-dprobleme-2-2/ + Mon, 04 Sep 2023 03:31:29 +0000 + + https://jevalide.ca/wp-content/uploads/2023/09/Yapp-pas-dprobleme-2.jpeg + + + + 5196 + + + + + + + + + 35 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Yapp-pas-dprobleme-2-1]]> + https://jevalide.ca/informatique-durable-donnees-et-cybersecurite-pour-humains/yapp-pas-dprobleme-2-1/ + Mon, 04 Sep 2023 03:38:09 +0000 + + https://jevalide.ca/wp-content/uploads/2023/09/Yapp-pas-dprobleme-2-1.jpeg + + + + 5197 + + + + + + + + + 35 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[52073431816_c9ff95aeb3_w]]> + https://jevalide.ca/2022/06/24/donnees-planification-familiale-avortement-drip/52073431816_c9ff95aeb3_w/ + Tue, 05 Sep 2023 05:05:34 +0000 + + https://jevalide.ca/wp-content/uploads/2023/09/52073431816_c9ff95aeb3_w.jpg + + + + 5282 + + + + + + + + + 2743 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Les-types-dintelligence-artificielle]]> + https://jevalide.ca/2023/09/08/les-types-dintelligence-artificielle/les-types-dintelligence-artificielle-2/ + Fri, 08 Sep 2023 15:10:20 +0000 + + https://jevalide.ca/wp-content/uploads/2023/09/Les-types-dintelligence-artificielle.jpeg + + + + 5337 + + + + + + + + + 5105 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Contrat_de_formation-Cryptomator]]> + https://jevalide.ca/legal/contrat_de_formation-cryptomator/ + Tue, 12 Sep 2023 02:19:12 +0000 + + https://jevalide.ca/wp-content/uploads/2023/09/Contrat_de_formation-Cryptomator.pdf + + + + 5345 + + + + + + + + + 4415 + 0 + + + 0 + + + + + + + + + + + + <![CDATA[Atelier-Cryptomator-2]]> + https://jevalide.ca/legal/atelier-cryptomator-2/ + Tue, 12 Sep 2023 02:36:00 +0000 + + https://jevalide.ca/wp-content/uploads/2023/09/Atelier-Cryptomator-2.jpeg + + + + 5351 + + + + + + + + + 4415 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Atelier-Cryptomator-carre]]> + https://jevalide.ca/informatique-durable-donnees-et-cybersecurite-pour-humains/atelier-cryptomator-carre/ + Wed, 13 Sep 2023 00:14:27 +0000 + + https://jevalide.ca/wp-content/uploads/2023/09/Atelier-Cryptomator-carre.jpeg + + + + 5354 + + + + + + + + + 35 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[logo-complet-noir]]> + https://jevalide.ca/logo-complet-noir-2/ + Fri, 29 Sep 2023 16:46:40 +0000 + + https://jevalide.ca/wp-content/uploads/2023/09/logo-complet-noir.png + + + + 5384 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[indigenous_health_legislation_2023_1674243504056_fra]]> + https://jevalide.ca/2023/09/30/gouvernance-des-donnees-des-peuples-autochtones/indigenous_health_legislation_2023_1674243504056_fra/ + Sun, 01 Oct 2023 01:56:10 +0000 + + https://jevalide.ca/wp-content/uploads/2023/09/indigenous_health_legislation_2023_1674243504056_fra.jpg + + + + 5440 + + + + + + + + + 5439 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[beurk-IG-4]]> + https://jevalide.ca/informatique-durable-donnees-et-cybersecurite-pour-humains/beurk-ig-4/ + Sat, 07 Oct 2023 21:50:15 +0000 + + https://jevalide.ca/wp-content/uploads/2023/10/beurk-IG-4.png + + + + 5483 + + + + + + + + + 35 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[beurk-cover-linkedin-2]]> + https://jevalide.ca/2023/10/17/beurk-recois-ton-guide-cybersecurite/beurk-cover-linkedin-2/ + Tue, 17 Oct 2023 21:49:06 +0000 + + https://jevalide.ca/wp-content/uploads/2023/10/beurk-cover-linkedin-2.jpg + + + + 5502 + + + + + + + + + 5500 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[feedback-3239454_1280]]> + https://jevalide.ca/2023/11/24/copywriting-et-sondage-melange-toxique/feedback-3239454_1280/ + Fri, 24 Nov 2023 05:42:02 +0000 + + https://jevalide.ca/wp-content/uploads/2023/11/feedback-3239454_1280.jpg + + + + 5641 + + + + + + + + + 5621 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[feedback-3239454_1280-1]]> + https://jevalide.ca/2023/11/24/copywriting-et-sondage-melange-toxique/feedback-3239454_1280-1/ + Fri, 24 Nov 2023 05:46:56 +0000 + + https://jevalide.ca/wp-content/uploads/2023/11/feedback-3239454_1280-1.jpg + + + + 5643 + + + + + + + + + 5621 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Francois]]> + https://jevalide.ca/collaborations/francois/ + Wed, 29 Nov 2023 03:55:57 +0000 + + https://jevalide.ca/wp-content/uploads/2023/11/Francois.png + + + + 5656 + + + + + + + + + 30 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[logo-linuq-inline.svg]]> + https://jevalide.ca/2020/12/30/revue-2020-logiciel-libre-au-quebec/logo-linuq-inline-svg/ + Sat, 02 Dec 2023 02:33:07 +0000 + + https://jevalide.ca/wp-content/uploads/2020/12/logo-linuq-inline.svg_.png + + + + 5675 + + + + + + + + + 228 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[code-carbon-logo-08-01]]> + https://jevalide.ca/2020/12/30/revue-2020-logiciel-libre-au-quebec/code-carbon-logo-08-01/ + Sat, 02 Dec 2023 02:34:33 +0000 + + https://jevalide.ca/wp-content/uploads/2020/12/code-carbon-logo-08-01.png + + + + 5677 + + + + + + + + + 228 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[image]]> + https://jevalide.ca/2023/12/01/le-logiciel-libre-au-quebec/image-14/ + Sat, 02 Dec 2023 02:36:42 +0000 + + https://jevalide.ca/wp-content/uploads/2023/12/image.png + + + + 5679 + + + + + + + + + 5667 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[logo]]> + https://jevalide.ca/2023/12/01/le-logiciel-libre-au-quebec/logo/ + Sat, 02 Dec 2023 02:37:17 +0000 + + https://jevalide.ca/wp-content/uploads/2023/12/logo.png + + + + 5680 + + + + + + + + + 5667 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[logo-adlq-df18f3fecd39d5208c03b20e5910f0f18248fd99e1682453172b2bbcaafc2553]]> + https://jevalide.ca/2023/12/01/le-logiciel-libre-au-quebec/logo-adlq-df18f3fecd39d5208c03b20e5910f0f18248fd99e1682453172b2bbcaafc2553/ + Sat, 02 Dec 2023 02:37:57 +0000 + + https://jevalide.ca/wp-content/uploads/2023/12/logo-adlq-df18f3fecd39d5208c03b20e5910f0f18248fd99e1682453172b2bbcaafc2553.png + + + + 5681 + + + + + + + + + 5667 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[exemple-ghorg-facil]]> + https://jevalide.ca/2023/12/02/ghorg-pour-sauvegarder-tous-tes-depots-git/exemple-ghorg-facil/ + Sat, 02 Dec 2023 22:51:44 +0000 + + https://jevalide.ca/wp-content/uploads/2023/12/exemple-ghorg-facil.png + + + + 5707 + + + + + + + + + 5705 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[forums-du-libre-du-quebec]]> + https://jevalide.ca/2023/12/01/le-logiciel-libre-au-quebec/forums-du-libre-du-quebec/ + Tue, 05 Dec 2023 03:14:13 +0000 + + https://jevalide.ca/wp-content/uploads/2023/12/forums-du-libre-du-quebec.png + + + + 5716 + + + + + + + + + 5667 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[listmonk-principal]]> + https://jevalide.ca/2023/12/08/listmonk-un-logiciel-dinfolettre-libre/listmonk-principal/ + Fri, 08 Dec 2023 16:23:59 +0000 + + https://jevalide.ca/wp-content/uploads/2023/12/listmonk-principal.png + + + + 5720 + + + + + + + + + 5718 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[listmonk-listes]]> + https://jevalide.ca/2023/12/08/listmonk-un-logiciel-dinfolettre-libre/listmonk-listes/ + Fri, 08 Dec 2023 16:24:35 +0000 + + https://jevalide.ca/wp-content/uploads/2023/12/listmonk-listes.png + + + + 5721 + + + + + + + + + 5718 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[listmonk-abonnements]]> + https://jevalide.ca/2023/12/08/listmonk-un-logiciel-dinfolettre-libre/listmonk-abonnements/ + Fri, 08 Dec 2023 16:30:13 +0000 + + https://jevalide.ca/wp-content/uploads/2023/12/listmonk-abonnements.png + + + + 5722 + + + + + + + + + 5718 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[listmonk-abonnes]]> + https://jevalide.ca/2023/12/08/listmonk-un-logiciel-dinfolettre-libre/listmonk-abonnes/ + Fri, 08 Dec 2023 16:30:35 +0000 + + https://jevalide.ca/wp-content/uploads/2023/12/listmonk-abonnes.png + + + + 5723 + + + + + + + + + 5718 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[listmonk-campagne-1]]> + https://jevalide.ca/2023/12/08/listmonk-un-logiciel-dinfolettre-libre/listmonk-campagne-1/ + Fri, 08 Dec 2023 16:33:40 +0000 + + https://jevalide.ca/wp-content/uploads/2023/12/listmonk-campagne-1.png + + + + 5724 + + + + + + + + + 5718 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[listmonk-campagne-2]]> + https://jevalide.ca/2023/12/08/listmonk-un-logiciel-dinfolettre-libre/listmonk-campagne-2/ + Fri, 08 Dec 2023 16:35:20 +0000 + + https://jevalide.ca/wp-content/uploads/2023/12/listmonk-campagne-2.png + + + + 5725 + + + + + + + + + 5718 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[listmonk-modeles]]> + https://jevalide.ca/2023/12/08/listmonk-un-logiciel-dinfolettre-libre/listmonk-modeles/ + Fri, 08 Dec 2023 16:36:56 +0000 + + https://jevalide.ca/wp-content/uploads/2023/12/listmonk-modeles.png + + + + 5726 + + + + + + + + + 5718 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[listmonk-vie-privee]]> + https://jevalide.ca/2023/12/08/listmonk-un-logiciel-dinfolettre-libre/listmonk-vie-privee/ + Fri, 08 Dec 2023 16:38:27 +0000 + + https://jevalide.ca/wp-content/uploads/2023/12/listmonk-vie-privee.png + + + + 5727 + + + + + + + + + 5718 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[listmonk-smtp]]> + https://jevalide.ca/2023/12/08/listmonk-un-logiciel-dinfolettre-libre/listmonk-smtp/ + Fri, 08 Dec 2023 16:48:54 +0000 + + https://jevalide.ca/wp-content/uploads/2023/12/listmonk-smtp.png + + + + 5728 + + + + + + + + + 5718 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Le-biais-dautomatisation]]> + https://jevalide.ca/2024/02/22/le-biais-d-automatisation/le-biais-dautomatisation/ + Tue, 12 Dec 2023 17:13:40 +0000 + + https://jevalide.ca/wp-content/uploads/2023/12/Le-biais-dautomatisation.gif + + + + 5741 + + + + + + + + + 5740 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[champions-of-digital-trust-5-francois-pelletier]]> + https://jevalide.ca/collaborations/champions-of-digital-trust-5-francois-pelletier/ + Thu, 14 Dec 2023 17:26:25 +0000 + + https://jevalide.ca/wp-content/uploads/2023/12/champions-of-digital-trust-5-francois-pelletier.png + + + + 5744 + + + + + + + + + 30 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Mission-Cybersecurite]]> + https://jevalide.ca/mission-cybersecurite/mission-cybersecurite-2/ + Thu, 04 Jan 2024 02:36:08 +0000 + + https://jevalide.ca/wp-content/uploads/2024/01/Mission-Cybersecurite.png + + + + 5861 + + + + + + + + + 5837 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[meme-baton-roue-saas-pas-cher]]> + https://jevalide.ca/meme-baton-roue-saas-pas-cher/ + Wed, 10 Jan 2024 01:45:30 +0000 + + https://jevalide.ca/wp-content/uploads/2024/01/meme-baton-roue-saas-pas-cher.jpg + + + + 5878 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[google-vraiment-pas-gratuit]]> + https://jevalide.ca/google-vraiment-pas-gratuit/ + Wed, 10 Jan 2024 02:13:26 +0000 + + https://jevalide.ca/wp-content/uploads/2024/01/google-vraiment-pas-gratuit.png + + + + 5884 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Contrat_de_formation_Mission_Cybersecurite_2]]> + https://jevalide.ca/legal/contrat_de_formation_mission_cybersecurite_2/ + Thu, 11 Jan 2024 03:44:17 +0000 + + https://jevalide.ca/wp-content/uploads/2024/01/Contrat_de_formation_Mission_Cybersecurite_2.pdf + + + + 5976 + + + + + + + + + 4415 + 0 + + + 0 + + + + + + + + + + + + <![CDATA[Contrat-de-formation-abonnement-yapp]]> + https://jevalide.ca/legal/contrat-de-formation-abonnement-yapp/ + Thu, 11 Jan 2024 03:45:04 +0000 + + https://jevalide.ca/wp-content/uploads/2024/01/Contrat-de-formation-abonnement-yapp.pdf + + + + 5978 + + + + + + + + + 4415 + 0 + + + 0 + + + + + + + + + + + + <![CDATA[Contrat_de_formation_Mission_Cybersecurite_2-1]]> + https://jevalide.ca/legal/contrat_de_formation_mission_cybersecurite_2-1/ + Thu, 11 Jan 2024 03:54:03 +0000 + + https://jevalide.ca/wp-content/uploads/2024/01/Contrat_de_formation_Mission_Cybersecurite_2-1.pdf + + + + 5979 + + + + + + + + + 4415 + 0 + + + 0 + + + + + + + + + + + + <![CDATA[Contrat_de_formation_Libere_tes_Chaines_de_Mots]]> + https://jevalide.ca/legal/contrat_de_formation_libere_tes_chaines_de_mots/ + Thu, 11 Jan 2024 03:54:13 +0000 + + https://jevalide.ca/wp-content/uploads/2024/01/Contrat_de_formation_Libere_tes_Chaines_de_Mots.pdf + + + + 5980 + + + + + + + + + 4415 + 0 + + + 0 + + + + + + + + + + + + <![CDATA[web_Story_1-1]]> + https://jevalide.ca/collaborations/web_story_1-1/ + Wed, 24 Jan 2024 04:56:35 +0000 + + https://jevalide.ca/wp-content/uploads/2024/01/web_Story_1-1.jpg + + + + 6105 + + + + + + + + + 30 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[image]]> + https://jevalide.ca/collaborations/image-15/ + Wed, 24 Jan 2024 05:19:32 +0000 + + https://jevalide.ca/wp-content/uploads/2024/01/image.png + + + + 6106 + + + + + + + + + 30 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Chipset_en_ordenador_de_mesa_con_Intel_Pentium_4]]> + https://jevalide.ca/2024/01/30/la-naissance-de-la-culture-tech-bro/chipset_en_ordenador_de_mesa_con_intel_pentium_4/ + Wed, 31 Jan 2024 03:55:12 +0000 + + https://jevalide.ca/wp-content/uploads/2024/01/Chipset_en_ordenador_de_mesa_con_Intel_Pentium_4.jpg + + + + 6135 + + + + + + + + + 6083 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Chipset_en_ordenador_de_mesa_con_Intel_Pentium_4-1]]> + https://jevalide.ca/2024/01/30/la-naissance-de-la-culture-tech-bro/chipset_en_ordenador_de_mesa_con_intel_pentium_4-1/ + Wed, 31 Jan 2024 03:58:37 +0000 + + https://jevalide.ca/wp-content/uploads/2024/01/Chipset_en_ordenador_de_mesa_con_Intel_Pentium_4-1.jpg + + + + 6136 + + + + + + + + + 6083 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[5151284797_8e7c1d486d_b]]> + https://jevalide.ca/2024/01/30/la-naissance-de-la-culture-tech-bro/5151284797_8e7c1d486d_b/ + Wed, 31 Jan 2024 03:58:43 +0000 + + https://jevalide.ca/wp-content/uploads/2024/01/5151284797_8e7c1d486d_b.jpg + + + + 6137 + + + + + + + + + 6083 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[eniac-women-programmers-6_1-2312299050]]> + https://jevalide.ca/2024/01/30/la-naissance-de-la-culture-tech-bro/eniac-women-programmers-6_1-2312299050/ + Wed, 31 Jan 2024 04:01:29 +0000 + + https://jevalide.ca/wp-content/uploads/2024/01/eniac-women-programmers-6_1-2312299050.jpg + + + + 6138 + + + + + + + + + 6083 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[FT-TOT-COBOL-What-2634689332]]> + https://jevalide.ca/2024/01/30/la-naissance-de-la-culture-tech-bro/ft-tot-cobol-what-2634689332/ + Wed, 31 Jan 2024 04:02:55 +0000 + + https://jevalide.ca/wp-content/uploads/2024/01/FT-TOT-COBOL-What-2634689332.jpg + + + + 6139 + + + + + + + + + 6083 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[jevalideca-instagram-carre-2024-02-06-output-003]]> + https://jevalide.ca/informatique-durable-donnees-et-cybersecurite-pour-humains/jevalideca-instagram-carre-2024-02-06-output-003/ + Wed, 07 Feb 2024 00:55:39 +0000 + + https://jevalide.ca/wp-content/uploads/2024/02/jevalideca-instagram-carre-2024-02-06-output-003.jpg + + + + 6177 + + + + + + + + + 35 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[jevalideca-instagram-carre-2024-02-06-output-001]]> + https://jevalide.ca/informatique-durable-donnees-et-cybersecurite-pour-humains/jevalideca-instagram-carre-2024-02-06-output-001/ + Wed, 07 Feb 2024 00:56:03 +0000 + + https://jevalide.ca/wp-content/uploads/2024/02/jevalideca-instagram-carre-2024-02-06-output-001.jpg + + + + 6178 + + + + + + + + + 35 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[jevalideca-instagram-carre-2024-02-06-output-002]]> + https://jevalide.ca/informatique-durable-donnees-et-cybersecurite-pour-humains/jevalideca-instagram-carre-2024-02-06-output-002/ + Wed, 07 Feb 2024 00:56:21 +0000 + + https://jevalide.ca/wp-content/uploads/2024/02/jevalideca-instagram-carre-2024-02-06-output-002.jpg + + + + 6179 + + + + + + + + + 35 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[jevalideca-instagram-carre-2024-02-06-output-004]]> + https://jevalide.ca/informatique-durable-donnees-et-cybersecurite-pour-humains/jevalideca-instagram-carre-2024-02-06-output-004/ + Wed, 07 Feb 2024 00:56:46 +0000 + + https://jevalide.ca/wp-content/uploads/2024/02/jevalideca-instagram-carre-2024-02-06-output-004.jpg + + + + 6180 + + + + + + + + + 35 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Convertir-des-fichiers-MP3-en-mono]]> + https://jevalide.ca/2024/02/17/conversion-audio-fichiers-mp3-mono-ffmpeg/convertir-des-fichiers-mp3-en-mono/ + Sat, 17 Feb 2024 14:42:36 +0000 + + https://jevalide.ca/wp-content/uploads/2024/02/Convertir-des-fichiers-MP3-en-mono.webp + + + + 6255 + + + + + + + + + 6248 + 0 + + + 0 + + + + + + + + + + + + <![CDATA[1707945143127]]> + https://jevalide.ca/2024/02/21/23-fevrier-2024-viens-decouvrir-l-ecologie-numerique/attachment/1707945143127/ + Wed, 21 Feb 2024 20:30:39 +0000 + + https://jevalide.ca/wp-content/uploads/2024/02/1707945143127.jpeg + + + + 6259 + + + + + + + + + 6258 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[1709910343166]]> + https://jevalide.ca/informatique-durable-donnees-et-cybersecurite-pour-humains/attachment/1709910343166/ + Fri, 08 Mar 2024 21:34:46 +0000 + + https://jevalide.ca/wp-content/uploads/2024/03/1709910343166.jpeg + + + + 6311 + + + + + + + + + 35 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[webinaire-loi-25]]> + https://jevalide.ca/masterclass-cas-pratique-sur-la-loi-25/webinaire-loi-25/ + Wed, 13 Mar 2024 05:17:10 +0000 + + https://jevalide.ca/wp-content/uploads/2024/03/webinaire-loi-25.png + + + + 6317 + + + + + + + + + 6316 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[pistage-sans-cookies-story-cover]]> + https://jevalide.ca/2024/03/25/pistage-sans-cookies-cest-possible-fais-attention/pistage-sans-cookies-story-cover/ + Mon, 25 Mar 2024 19:34:15 +0000 + + https://jevalide.ca/wp-content/uploads/2024/03/pistage-sans-cookies-story-cover.png + + + + 6396 + + + + + + + + + 6395 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Atelier-Cryptomator-5]]> + https://jevalide.ca/chiffre-tes-donnees-simplement-avec-cryptomator/atelier-cryptomator-5/ + Thu, 28 Mar 2024 04:30:41 +0000 + + https://jevalide.ca/wp-content/uploads/2024/03/Atelier-Cryptomator-5.png + + + + 6403 + + + + + + + + + 6401 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Contrat_de_formation-Cryptomator-2024]]> + https://jevalide.ca/legal/contrat_de_formation-cryptomator-2024/ + Thu, 28 Mar 2024 19:05:26 +0000 + + https://jevalide.ca/wp-content/uploads/2024/03/Contrat_de_formation-Cryptomator-2024.pdf + + + + 6407 + + + + + + + + + 4415 + 0 + + + 0 + + + + + + + + + + + + <![CDATA[image]]> + https://jevalide.ca/2024/03/28/comment-nos-mots-servent-a-nous-exprimer/image-16/ + Thu, 28 Mar 2024 21:56:30 +0000 + + https://jevalide.ca/wp-content/uploads/2024/03/image.png + + + + 6412 + + + + + + + + + 6411 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[image-1]]> + https://jevalide.ca/2024/03/28/comment-nos-mots-servent-a-nous-exprimer/image-1-8/ + Thu, 28 Mar 2024 21:57:22 +0000 + + https://jevalide.ca/wp-content/uploads/2024/03/image-1.png + + + + 6413 + + + + + + + + + 6411 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[horaire-consultations]]> + https://jevalide.ca/consultation-express/horaire-consultations/ + Fri, 29 Mar 2024 19:04:06 +0000 + + https://jevalide.ca/wp-content/uploads/2024/03/horaire-consultations.png + + + + 6419 + + + + + + + + + 6163 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[1711643846045]]> + https://jevalide.ca/2024/04/06/le-mensonge-derriere-lia-qui-decuple-la-productivite/attachment/1711643846045/ + Sat, 06 Apr 2024 13:55:57 +0000 + + https://jevalide.ca/wp-content/uploads/2024/04/1711643846045.jpeg + + + + 6460 + + + + + + + + + 6459 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[image]]> + https://jevalide.ca/2024/04/06/le-mensonge-derriere-lia-qui-decuple-la-productivite/image-17/ + Sat, 06 Apr 2024 14:06:39 +0000 + + https://jevalide.ca/wp-content/uploads/2024/04/image.png + + + + 6461 + + + + + + + + + 6459 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[proportion-niaiseries]]> + https://jevalide.ca/2024/04/06/le-mensonge-derriere-lia-qui-decuple-la-productivite/proportion-niaiseries/ + Sat, 06 Apr 2024 15:16:30 +0000 + + https://jevalide.ca/wp-content/uploads/2024/04/proportion-niaiseries.png + + + + 6464 + + + + + + + + + 6459 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[chatgpt-expert]]> + https://jevalide.ca/2024/04/06/le-mensonge-derriere-lia-qui-decuple-la-productivite/chatgpt-expert/ + Sat, 06 Apr 2024 15:30:54 +0000 + + https://jevalide.ca/wp-content/uploads/2024/04/chatgpt-expert.png + + + + 6474 + + + + + + + + + 6459 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[matrix-grincheux-001]]> + https://jevalide.ca/2024/04/26/rejoindre-le-serveur-matrix/matrix-grincheux-001/ + Sat, 27 Apr 2024 02:28:58 +0000 + + https://jevalide.ca/wp-content/uploads/2024/04/matrix-grincheux-001.png + + + + 6525 + + + + + + + + + 6524 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[matrix-grincheux-002]]> + https://jevalide.ca/2024/04/26/rejoindre-le-serveur-matrix/matrix-grincheux-002/ + Sat, 27 Apr 2024 02:29:57 +0000 + + https://jevalide.ca/wp-content/uploads/2024/04/matrix-grincheux-002.png + + + + 6526 + + + + + + + + + 6524 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[matrix-grincheux-003]]> + https://jevalide.ca/2024/04/26/rejoindre-le-serveur-matrix/matrix-grincheux-003/ + Sat, 27 Apr 2024 02:30:33 +0000 + + https://jevalide.ca/wp-content/uploads/2024/04/matrix-grincheux-003.png + + + + 6527 + + + + + + + + + 6524 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[matrix-grincheux-004]]> + https://jevalide.ca/2024/04/26/rejoindre-le-serveur-matrix/matrix-grincheux-004/ + Sat, 27 Apr 2024 02:31:29 +0000 + + https://jevalide.ca/wp-content/uploads/2024/04/matrix-grincheux-004.png + + + + 6528 + + + + + + + + + 6524 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[matrix-grincheux-005]]> + https://jevalide.ca/2024/04/26/rejoindre-le-serveur-matrix/matrix-grincheux-005/ + Sat, 27 Apr 2024 02:31:54 +0000 + + https://jevalide.ca/wp-content/uploads/2024/04/matrix-grincheux-005.png + + + + 6529 + + + + + + + + + 6524 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[matrix-grincheux-006]]> + https://jevalide.ca/2024/04/26/rejoindre-le-serveur-matrix/matrix-grincheux-006/ + Sat, 27 Apr 2024 02:32:56 +0000 + + https://jevalide.ca/wp-content/uploads/2024/04/matrix-grincheux-006.png + + + + 6530 + + + + + + + + + 6524 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[matrix-grincheux-007]]> + https://jevalide.ca/2024/04/26/rejoindre-le-serveur-matrix/matrix-grincheux-007/ + Sat, 27 Apr 2024 02:33:29 +0000 + + https://jevalide.ca/wp-content/uploads/2024/04/matrix-grincheux-007.png + + + + 6531 + + + + + + + + + 6524 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[matrix-grincheux-008]]> + https://jevalide.ca/2024/04/26/rejoindre-le-serveur-matrix/matrix-grincheux-008/ + Sat, 27 Apr 2024 02:33:55 +0000 + + https://jevalide.ca/wp-content/uploads/2024/04/matrix-grincheux-008.png + + + + 6532 + + + + + + + + + 6524 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[matrix-grincheux-009]]> + https://jevalide.ca/2024/04/26/rejoindre-le-serveur-matrix/matrix-grincheux-009/ + Sat, 27 Apr 2024 02:34:31 +0000 + + https://jevalide.ca/wp-content/uploads/2024/04/matrix-grincheux-009.png + + + + 6533 + + + + + + + + + 6524 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[matrix-grincheux-010]]> + https://jevalide.ca/2024/04/26/rejoindre-le-serveur-matrix/matrix-grincheux-010/ + Sat, 27 Apr 2024 03:26:57 +0000 + + https://jevalide.ca/wp-content/uploads/2024/04/matrix-grincheux-010.png + + + + 6537 + + + + + + + + + 6524 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Screenshot_20240426-231327]]> + https://jevalide.ca/2024/04/26/rejoindre-le-serveur-matrix/screenshot_20240426-231327/ + Sat, 27 Apr 2024 03:31:01 +0000 + + https://jevalide.ca/wp-content/uploads/2024/04/Screenshot_20240426-231327.jpg + + + + 6540 + + + + + + + + + 6524 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[logogpt]]> + https://jevalide.ca/2024/04/26/rejoindre-le-serveur-matrix/logogpt/ + Mon, 06 May 2024 05:26:46 +0000 + + https://jevalide.ca/wp-content/uploads/2024/04/logogpt.png + + + + 6597 + + + + + + + + + 6524 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Contrat_de_service-Consultation_Express-Francois_Pelletier]]> + https://jevalide.ca/contrat_de_service-consultation_express-francois_pelletier-2/ + Thu, 09 May 2024 05:12:45 +0000 + + https://jevalide.ca/wp-content/uploads/2024/05/Contrat_de_service-Consultation_Express-Francois_Pelletier.pdf + + + + 6601 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + <![CDATA[webinaire-oppression numérique]]> + https://jevalide.ca/webinaire-comment-eviter-les-mecanismes-doppression-numerique-dans-ton-entreprise/webinaire-oppression-numerique/ + Sun, 12 May 2024 17:39:53 +0000 + + https://jevalide.ca/wp-content/uploads/2024/05/webinaire-oppression-numerique.png + + + + 6608 + + + + + + + + + 6607 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[compressed_webinaire-oppression-numerique]]> + https://jevalide.ca/webinaire-comment-eviter-les-mecanismes-doppression-numerique-dans-ton-entreprise/compressed_webinaire-oppression-numerique/ + Sun, 12 May 2024 18:17:54 +0000 + + https://jevalide.ca/wp-content/uploads/2024/05/compressed_webinaire-oppression-numerique.jpg + + + + 6621 + + + + + + + + + 6607 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[risque technologique]]> + https://jevalide.ca/2024/05/16/la-vision-tunnel-de-la-gestion-du-risque-technologique/risque-technologique/ + Thu, 16 May 2024 15:58:10 +0000 + + https://jevalide.ca/wp-content/uploads/2024/05/risque-technologique.pdf + + + + 6632 + + + + + + + + + 6631 + 0 + + + 0 + + + + + + + + + + + + <![CDATA[element-espace-canaux]]> + https://jevalide.ca/2024/04/26/rejoindre-le-serveur-matrix/element-espace-canaux/ + Sat, 25 May 2024 00:11:58 +0000 + + https://jevalide.ca/wp-content/uploads/2024/04/element-espace-canaux.png + + + + 6670 + + + + + + + + + 6524 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[screen-capture-23236_640]]> + https://jevalide.ca/2024/06/07/recall-windows-ce-programme-est-inutile-rappelle-toi/screen-capture-23236_640/ + Sat, 08 Jun 2024 02:45:33 +0000 + + https://jevalide.ca/wp-content/uploads/2024/06/screen-capture-23236_640.png + + + + 6754 + + + + + + + + + 6734 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[1717787949332]]> + https://jevalide.ca/2024/06/07/recall-windows-ce-programme-est-inutile-rappelle-toi/attachment/1717787949332/ + Sat, 08 Jun 2024 03:12:44 +0000 + + https://jevalide.ca/wp-content/uploads/2024/06/1717787949332.jpg + + + + 6758 + + + + + + + + + 6734 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Architecture_d_entreprise.drawio]]> + https://jevalide.ca/politique-de-confidentialite/architecture_d_entreprise-drawio/ + Tue, 11 Jun 2024 00:41:20 +0000 + + https://jevalide.ca/wp-content/uploads/2024/06/Architecture_d_entreprise.drawio.png + + + + 6770 + + + + + + + + + 21 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Architecture_d_entreprise.drawio-1]]> + https://jevalide.ca/politique-de-confidentialite/architecture_d_entreprise-drawio-1/ + Tue, 11 Jun 2024 01:11:12 +0000 + + https://jevalide.ca/wp-content/uploads/2024/06/Architecture_d_entreprise.drawio-1.png + + + + 6772 + + + + + + + + + 21 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Logo_Je_valide_ca-service_conseil-officiel_matriciel_blanc-150]]> + https://jevalide.ca/logo_je_valide_ca-service_conseil-officiel_matriciel_blanc-150/ + Tue, 11 Jun 2024 03:59:16 +0000 + + https://jevalide.ca/wp-content/uploads/2024/06/Logo_Je_valide_ca-service_conseil-officiel_matriciel_blanc-150.webp + + + + 6776 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + <![CDATA[cropped-Logo_Je_valide_ca-service_conseil-officiel_matriciel_blanc-150.webp]]> + https://jevalide.ca/logo_je_valide_ca-service_conseil-officiel_matriciel_blanc-150/cropped-logo_je_valide_ca-service_conseil-officiel_matriciel_blanc-150-webp/ + Tue, 11 Jun 2024 03:59:23 +0000 + + https://jevalide.ca/wp-content/uploads/2024/06/cropped-Logo_Je_valide_ca-service_conseil-officiel_matriciel_blanc-150.webp + + + + 6777 + + + + + + + + + 6776 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + <![CDATA[utilisations-bash]]> + https://jevalide.ca/2024/06/23/automatiser-des-taches-recurrentes-avec-bash/utilisations-bash/ + Sun, 23 Jun 2024 19:54:21 +0000 + + https://jevalide.ca/wp-content/uploads/2024/06/utilisations-bash.png + + + + 6821 + + + + + + + + + 6803 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Contrat_de_service-Consultation_Express-Francois_Pelletier]]> + https://jevalide.ca/legal/contrat_de_service-consultation_express-francois_pelletier/ + Wed, 26 Jun 2024 00:10:22 +0000 + + https://jevalide.ca/wp-content/uploads/2024/06/Contrat_de_service-Consultation_Express-Francois_Pelletier.pdf + + + + 6845 + + + + + + + + + 4415 + 0 + + + 0 + + + + + + + + + + + + <![CDATA[go-pyrate-doit-on-avoir-peur-de-l-ia-192]]> + https://jevalide.ca/collaborations/go-pyrate-doit-on-avoir-peur-de-l-ia-192/ + Fri, 28 Jun 2024 16:41:34 +0000 + + https://jevalide.ca/wp-content/uploads/2024/06/go-pyrate-doit-on-avoir-peur-de-l-ia-192.png + + + + 6992 + + + + + + + + + 30 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Cyberlettre 📬]]> + https://jevalide.ca/2024/06/28/cyberlettre-decouvre-lautonomie/ + Fri, 08 Jul 2022 23:39:51 +0000 + + https://nouveau.jevalide.ca/?p=127 + + + + 127 + + + + + + + + + 0 + 3 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Ressources gratuites 🎁]]> + https://jevalide.ca/2024/06/28/195/ + Sun, 10 Jul 2022 02:58:49 +0000 + + https://nouveau.jevalide.ca/?p=195 + + + + 195 + + + + + + + + + 0 + 4 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Bar@Code 🤓]]> + https://jevalide.ca/2024/06/28/blog-technique-barcode/ + Fri, 15 Jul 2022 03:42:56 +0000 + + https://jevalide.ca/?p=2925 + + + + 2925 + + + + + + + + + 0 + 5 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Le blogue 📚]]> + https://jevalide.ca/2024/06/28/2926/ + Fri, 15 Jul 2022 03:42:56 +0000 + + https://jevalide.ca/?p=2926 + + + + 2926 + + + + + + + + + 0 + 2 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[go]]> + https://jevalide.ca/2022/07/14/go/ + Fri, 15 Jul 2022 03:59:42 +0000 + + https://jevalide.ca/2022/07/14/go/ + + + + 2928 + + + + + + + + + 0 + 0 + + + 0 + + + <![CDATA[Me contacter 💌]]> + https://jevalide.ca/2024/06/29/me-contacter/ + Fri, 29 Sep 2023 17:23:04 +0000 + + https://jevalide.ca/2023/09/29/me-contacter/ + + + + 5390 + + + + + + + + + 0 + 4 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[]]> + https://jevalide.ca/2024/06/29/consultation-express/ + Mon, 01 Apr 2024 18:32:55 +0000 + + https://jevalide.ca/2024/04/01/consultation-express/ + + + + 6439 + + + + + + + + + 0 + 2 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Matrix 😈]]> + https://jevalide.ca/2024/06/28/discord-%f0%9f%98%88-2/ + Mon, 01 Apr 2024 18:34:55 +0000 + + https://jevalide.ca/2024/04/01/discord-%f0%9f%98%88-2/ + + + + 6441 + + + + + + + + + 0 + 6 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Accès Apprenants 🧑‍🎓]]> + https://jevalide.ca/2024/06/28/acces-apprenants-%f0%9f%a7%91%f0%9f%8e%93/ + Mon, 03 Jun 2024 14:55:24 +0000 + + https://jevalide.ca/?p=6701 + + + + 6701 + + + + + + + + + 0 + 1 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[DéconstruIT ⛏️🧱]]> + https://jevalide.ca/2024/06/29/7022/ + Sat, 29 Jun 2024 03:14:57 +0000 + + https://jevalide.ca/?p=7022 + + + + 7022 + + + + + + + + + 0 + 3 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Liens 🌲]]> + https://jevalide.ca/2024/06/28/liens-%f0%9f%8c%b2-2/ + Sat, 29 Jun 2024 03:16:17 +0000 + + https://jevalide.ca/?p=7024 + + + + 7024 + + + + + + + + + 0 + 7 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[pleineconfiance-slide169-2024-06-29-output-001]]> + https://jevalide.ca/confiance/pleineconfiance-slide169-2024-06-29-output-001/ + Sat, 29 Jun 2024 04:37:15 +0000 + + https://jevalide.ca/wp-content/uploads/2024/06/pleineconfiance-slide169-2024-06-29-output-001.jpg + + + + 7028 + + + + + + + + + 6863 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[]]> + https://jevalide.ca/?p=7081 + + + https://jevalide.ca/?p=7081 + + + + 7081 + + + + + + + + + 0 + 1 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Contrat_de_formation_Pleine_Confiance_20240701]]> + https://jevalide.ca/legal/contrat_de_formation_pleine_confiance_20240701/ + Tue, 02 Jul 2024 03:04:22 +0000 + + https://jevalide.ca/wp-content/uploads/2024/07/Contrat_de_formation_Pleine_Confiance_20240701.pdf + + + + 7149 + + + + + + + + + 4415 + 0 + + + 0 + + + + + + + + + + + + <![CDATA[aide-memoire-donnees-personnelles-lettre]]> + https://jevalide.ca/aide-memoire-donnees-personnelles-lettre-2/ + Thu, 04 Jul 2024 19:25:03 +0000 + + https://jevalide.ca/wp-content/uploads/2024/07/aide-memoire-donnees-personnelles-lettre.pdf + + + + 7172 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + <![CDATA[aide-memoire-donnees-personnelles-a4]]> + https://jevalide.ca/aide-memoire-donnees-personnelles-a4-2/ + Thu, 04 Jul 2024 19:26:36 +0000 + + https://jevalide.ca/wp-content/uploads/2024/07/aide-memoire-donnees-personnelles-a4.pdf + + + + 7173 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + <![CDATA[prudent-rapide-productif-securitaire]]> + https://jevalide.ca/confiance/prudent-rapide-productif-securitaire/ + Tue, 09 Jul 2024 22:00:55 +0000 + + https://jevalide.ca/wp-content/uploads/2024/07/prudent-rapide-productif-securitaire.png + + + + 7211 + + + + + + + + + 6863 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[mario_rebuilt_by_nickmarino-d6bg1ya]]> + https://jevalide.ca/confiance/mario_rebuilt_by_nickmarino-d6bg1ya/ + Tue, 09 Jul 2024 23:32:33 +0000 + + https://jevalide.ca/wp-content/uploads/2024/07/mario_rebuilt_by_nickmarino-d6bg1ya.webp + + + + 7263 + + + + + + + + + 6863 + 0 + + + 0 + + + + + + + + + + + + <![CDATA[pleineconfiance-slide169-2024-07-09-output-000]]> + https://jevalide.ca/confiance/pleineconfiance-slide169-2024-07-09-output-000/ + Tue, 09 Jul 2024 23:52:27 +0000 + + https://jevalide.ca/wp-content/uploads/2024/07/pleineconfiance-slide169-2024-07-09-output-000.webp + + + + 7274 + + + + + + + + + 6863 + 0 + + + 0 + + + + + + + + + + + + <![CDATA[pleineconfiance-instagram-fullscreen-2024-07-15-output-000]]> + https://jevalide.ca/aide-memoire-sur-les-donnees-personnelles/pleineconfiance-instagram-fullscreen-2024-07-15-output-000/ + Mon, 15 Jul 2024 22:13:30 +0000 + + https://jevalide.ca/wp-content/uploads/2024/07/pleineconfiance-instagram-fullscreen-2024-07-15-output-000.jpg + + + + 7311 + + + + + + + + + 6966 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Contacte-moi 💌]]> + https://jevalide.ca/2024/06/30/contact/ + Fri, 08 Jul 2022 23:10:15 +0000 + + https://nouveau.jevalide.ca/?p=122 + + + + 122 + + + + + + + + + 0 + 20 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Outils gratuits 🤑]]> + https://jevalide.ca/2024/06/30/ressources/ + Sun, 10 Jul 2022 03:01:07 +0000 + + https://nouveau.jevalide.ca/?p=197 + + + + 197 + + + + + + + + + 0 + 14 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Collaborations 🫸🫷]]> + https://jevalide.ca/2024/06/30/a-propos/ + Mon, 01 Aug 2022 13:34:33 +0000 + + https://jevalide.ca/?p=3393 + + + + 3393 + + + + + + + + + 0 + 15 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Podcast 🎙️]]> + https://jevalide.ca/2024/06/30/podcast/ + Fri, 28 Oct 2022 14:21:12 +0000 + + https://jevalide.ca/?p=3813 + + + + 3813 + + + + + + + + + 0 + 16 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Ressources 🎁]]> + https://jevalide.ca/2024/06/30/ressources-2/ + Wed, 04 Jan 2023 17:10:54 +0000 + + https://jevalide.ca/?p=4082 + + + + 4082 + + + + + + + + + 0 + 11 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Cyberlettre 💌]]> + https://jevalide.ca/2024/06/30/4329/ + Mon, 20 Mar 2023 03:58:56 +0000 + + https://jevalide.ca/?p=4329 + + + + 4329 + + + + + + + + + 0 + 13 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Bar@Code 🤓]]> + https://jevalide.ca/2024/06/30/5018/ + Wed, 26 Jul 2023 18:33:33 +0000 + + https://jevalide.ca/?p=5018 + + + + 5018 + + + + + + + + + 0 + 17 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Blogue 📚]]> + https://jevalide.ca/2024/06/30/5019/ + Wed, 26 Jul 2023 18:33:33 +0000 + + https://jevalide.ca/?p=5019 + + + + 5019 + + + + + + + + + 0 + 18 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Formations 🎓]]> + https://jevalide.ca/2024/06/30/formations/ + Mon, 18 Sep 2023 20:35:11 +0000 + + https://jevalide.ca/?p=5362 + + + + 5362 + + + + + + + + + 0 + 4 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[À propos 🤓]]> + https://jevalide.ca/2024/06/30/a-propos-2/ + Mon, 23 Oct 2023 15:28:43 +0000 + + https://jevalide.ca/?p=5543 + + + + 5543 + + + + + + + + + 0 + 19 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Services 🧙]]> + https://jevalide.ca/2024/06/30/services/ + Sat, 02 Dec 2023 03:35:00 +0000 + + https://jevalide.ca/?p=5691 + + + + 5691 + + + + + + + + + 0 + 1 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[]]> + https://jevalide.ca/2024/06/30/6265/ + Thu, 22 Feb 2024 14:41:18 +0000 + + https://jevalide.ca/?p=6265 + + + + 6265 + + + + + + + + + 0 + 2 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Chiffre tes données client avec Cryptomator 🤖]]> + https://jevalide.ca/2024/06/30/chiffre-tes-donnees-client-avec-cryptomator/ + Thu, 28 Mar 2024 04:39:13 +0000 + + https://jevalide.ca/?p=6405 + + + + 6405 + + + + + + + + + 0 + 6 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Communauté 😎]]> + https://jevalide.ca/2024/06/30/discord-%f0%9f%98%88/ + Mon, 01 Apr 2024 18:27:01 +0000 + + https://jevalide.ca/?p=6434 + + + + 6434 + + + + + + + + + 0 + 8 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Serveur Matrix 😈]]> + https://jevalide.ca/2024/06/30/serveur-matrix-%f0%9f%98%88/ + Sat, 27 Apr 2024 02:24:18 +0000 + + https://jevalide.ca/?p=6523 + + + + 6523 + + + + + + + + + 0 + 9 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Comment rejoindre 🙋]]> + https://jevalide.ca/2024/06/30/comment-rejoindre-%f0%9f%99%8b/ + Sat, 27 Apr 2024 02:53:15 +0000 + + https://jevalide.ca/?p=6535 + + + + 6535 + + + + + + + + + 0 + 10 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Accès Apprenants 🧑‍🎓]]> + https://jevalide.ca/2024/06/30/acces-apprenants/ + Mon, 03 Jun 2024 14:54:01 +0000 + + https://jevalide.ca/?p=6700 + + + + 6700 + + + + + + + + + 0 + 7 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[]]> + https://jevalide.ca/2024/06/30/6925/ + Thu, 27 Jun 2024 04:56:50 +0000 + + https://jevalide.ca/?p=6925 + + + + 6925 + + + + + + + + + 0 + 5 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Liens 🌲]]> + https://jevalide.ca/2024/06/30/liens-%f0%9f%8c%b2/ + Sat, 29 Jun 2024 03:03:01 +0000 + + https://jevalide.ca/?p=7021 + + + + 7021 + + + + + + + + + 0 + 12 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[]]> + https://jevalide.ca/2024/06/29/7023/ + Sat, 29 Jun 2024 03:14:57 +0000 + + https://jevalide.ca/?p=7023 + + + + 7023 + + + + + + + + + 0 + 1 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Politique de confidentialité]]> + https://jevalide.ca/politique-de-confidentialite/ + Wed, 29 Jun 2022 23:05:07 +0000 + + https://nouveau.jevalide.ca/?page_id=21 + + +

    Mon infrastructure d'entreprise contient deux types de systèmes: certains logiciels sont auto-hébergés sur un serveur dédié ou des serveurs virtuels privés. D'autres sont des logiciels de type SaaS qui ont leurs propres politiques de confidentialité.

    + + + +

    + + + +

    Je te partage ici le maximum d'information à ce sujet. Si tu as des questions, n'hésite pas à me contacter.

    + + + +

    + + + +

    Je veux que cette politique de confidentialité soit le plus clair possible et non un charabia légal, incompréhensible et parfois même malhonnête comme sur la majorité des sites web des grandes entreprises 😤.

    + + + +

    + + + +

    Tu trouveras une illustration à la fin de cette page pour t'aider à t'y retrouver.

    + + + +

    + + + +

    Contenu auto-hébergé

    + + + +
      +
    • Le site jevalide.ca, basé sur Wordpress, est hébergé dans la ville de Beauharnois au Québec chez OVH Canada.
    • + + + +
    • J'utilise un serveur de type VPS (#1 ci-dessous) et j'en contrôle entièrement les accès.
    • + + + +
    • J'utilise le plugin Wordpress Statify pour recenser les visites de pages web. Il ne collecte aucune information personnelle ! Je le mets ici pour te dire que oui, c'est possible de faire de l'analytique web anonyme!
    • + + + +
    • J'utilise aussi le plugin Yoast SEO pour Wordpress qui communique des informations d'utilisation anonymes auprès de l'entreprise Yoast. Yoast héberge ses données en Union Européenne. +
        +
      • Les informations suivantes sont recueillies par Yoast: User Agent
      • + + + +
      • L'utilisation de ces information est à des fins: +
          +
        • de performance du site web
        • +
        +
      • +
      +
    • + + + +
    • Les formulaires de contact et de sondage, ainsi que les fichiers en pièce jointe sont hébergés sur Nextcloud ou sur Forgejo, qui sont installés sur un serveur dédié sous mon contrôle, aussi chez OVH Canada à Beauharnois. +
        +
      • Les informations suivantes sont recueillies par Nextcloud: Nom, prénom, Courriel, Numéro de téléphone, Adresse IP, User Agent
      • + + + +
      • L'utilisation de ces information est à des fins: +
          +
        • création de comptes utilisateur
        • + + + +
        • statistiques
        • + + + +
        • communication client
        • +
        +
      • + + + +
      • Les informations suivantes sont recueillies par Forgejo: Nom, prénom, Courriel, nom d'utilisateur, mot de passe, Clés publiques SSH
      • + + + +
      • L'utilisation de ces information est à des fins: +
          +
        • création de comptes utilisateur
        • + + + +
        • statistiques
        • + + + +
        • communication client
        • +
        +
      • +
      +
    • + + + +
    • Mes vidéos sont hébergés sur la plateforme libre PeerTube sur le même serveur que Nextcloud.
    • + + + +
    • La communauté Chez Grincheux utilise le logiciel libre Synapse qui est hébergé sur le même serveur que Nextcloud.
    • + + + +
    • Les forums de discussion de mes formations et projets sont sur Synapse (Matrix) qui est hébergé sur le même serveur que Nextcloud. +
        +
      • Les informations suivantes sont recueillies par Synapse: nom d'utilisateur, mot de passe, Adresse IP, messages
      • + + + +
      • L'utilisation de ces information est à des fins: +
          +
        • création de comptes utilisateur
        • + + + +
        • statistiques d'utilisation
        • + + + +
        • communication client
        • +
        +
      • +
      +
    • + + + +
    • J'utilise le logiciel GNUCash pour faire ma comptabilité et ma facturation. Ces données sont chiffrées en tout temps au repos et sont situées dans mon instance Nextcloud. +
        +
      • Les informations suivantes sont recueillies par GNUCash: Nom, Prénom, Courriel, Nom d'entreprise, Adresse postale, Facture
      • + + + +
      • L'utilisation de ces information est à des fins: +
          +
        • Facturation
        • + + + +
        • Gestion comptable
        • +
        +
      • +
      +
    • + + + +
    • +
        +
      • Les informations suivantes sont recueillies par DeepSign: Nom, Prénom, Courriel, Nom d'entreprise, Adresse postale, Contenu du contrat +
          +
        • Signature de contrats
        • +
        +
      • +
      +
    • + + + +
    • Ma plateforme de formation est basée sur Moodle, qui est hébergé sur le même serveur que Nextcloud. +
        +
      • Les informations suivantes sont recueillies par Moodle: nom d'utilisateur, mot de passe, adresse courriel, ville, pays, Adresse IP, suivi de la navigation, messages
      • + + + +
      • L'utilisation de ces information est à des fins: +
          +
        • création de comptes utilisateur
        • + + + +
        • statistiques d'utilisation
        • + + + +
        • communication client
        • +
        +
      • +
      +
    • + + + +
    • Ma liste courriel utilise ListMonk, un logiciel libre qui est hébergé sur le même serveur que Nextcloud. +
        +
      • Les informations suivantes sont recueillies par ListMonk: Prénom, Courriel
      • + + + +
      • L'utilisation de ces information est à des fins: +
          +
        • communication client
        • + + + +
        • diffusion de contenu promotionnel
        • +
        +
      • +
      +
    • + + + +
    • Mes outils en développement et applications gratuites, dont le domaine inclus coolify.jevalide.ca, sont hébergés aussi sur un VPS (#2 ci-dessous) chez Contabo à Karlsruhe en Allemagne.
    • + + + +
    • Ces infrastructures, à l'exception des outils de développement, ont une sauvegarde chiffrée localement en AES-256 chez l'entreprise rsync.net située aux États-Unis.
    • +
    + + + +

    + + + +

    Services SaaS externes

    + + + +

    + + + +
      +
    • Mon système de boutique en ligne et de diffusion de contenu de formation utilise ThriveCart ainsi que les plateformes de paiement de Stripe et PayPal. Il est situé à l'adresse jevalideca.thrivecart.com et est intégré sous forme de iFrame dans certaines pages. Ce service a son propre bandeau de consentement, étant donné qu'il utilise des cookies et autres technologies de traçage a des fins de sécurité et de conformité légale (normes PCI). +
        +
      • Les informations suivantes sont recueillies par ThriveCart: Nom, Prénom, Courriel, Adresse, Mode de paiement
      • + + + +
      • La politique de confidentialité de ThriveCart, Stripe ou PayPal s'applique lorsqu'ils sont utilisés. ThriveCart contient un traceur de Google Play que je n'arrive pas à désactiver et qui ne sert absolument à rien. Tu peux le bloquer à l'aide de ton navigateur.
      • + + + +
      • Je t'avise aussi que le bouton de consentement à l'inscription courriel me retourne toujours une réponse positive même si tu ne le coche pas. Je n'inscris personne manuellement à mon infolettre, même pas ma clientèle !
      • + + + +
      • L'utilisation de ces information est à des fins: +
          +
        • communication client
        • + + + +
        • création de comptes utilisateur
        • + + + +
        • facturation
        • +
        +
      • +
      +
    • + + + +
    • Le formulaire d'inscription à la cyberlettre utilise le module hCaptcha pour prévenir les inscriptions de robots sur la liste. +
        +
      • Informations collectées: +
          +
        • Identifiant unique aléatoire
        • + + + +
        • Information de navigation
        • +
        +
      • + + + +
      • L'utilisation de ces information est à des fins: +
          +
        • Cybersécurité
        • +
        +
      • +
      +
    • + + + +
    • Je teste actuellement le module Metricool pour Wordpress comme outil analytique pour mon site web et mes réseaux sociaux. Metricool héberge ses données en Union Européenne. +
        +
      • Informations collectées: +
          +
        • Identifiant unique aléatoire
        • + + + +
        • Information de navigation
        • +
        +
      • + + + +
      • L'utilisation de ces information est à des fins: +
          +
        • Mesure d'audience sur le site web
        • +
        +
      • +
      +
    • + + + +
    • J'utilise le module CookieYes pour la gestion du consentement des cookies pour hCaptcha, Metricool, Stripe, PayPal et ThriveCart. Ce module répond aux exigences de la loi 25. +
        +
      • Informations collectées: +
          +
        • Identifiant unique aléatoire
        • + + + +
        • Information de navigation
        • +
        +
      • + + + +
      • L'utilisation de ces information est à des fins: +
          +
        • Conformité légale
        • +
        +
      • +
      +
    • + + + +
    • ListMonk, Forgejo, Moodle, Synapse et Nextcloud envoient les courriels transactionnels via le service SMTP PostMark qui est situé aux États-Unis et a une politique de rétention de 45 jours maximum. Tu as la possibilité d'utiliser une adresse courriel différente de ton adresse principale via un alias pour te protéger d'une fuite de données. +
        +
      • Les informations suivantes sont recueillies par PostMark: Prénom, Courriel, réponse SMTP de ton fournisseur de courriel, contenu du courriel
      • + + + +
      • L'utilisation de ces information est à des fins: +
          +
        • Communication client
        • + + + +
        • Statistiques
        • +
        +
      • +
      +
    • + + + +
    • J'utilise la solution DeepSign située en Suisse, pour la signature des contrats. Une copie de ces contrats est entreposée dans mon instance Nextcloud et est chiffrée en tout temps. +
        +
      • Les informations suivantes sont recueillies par GNUCash: Nom, Prénom, Courriel, Nom d'entreprise, Adresse postale, Facture
      • + + + +
      • L'utilisation de ces information est à des fins: +
          +
        • Facturation
        • + + + +
        • Gestion comptable
        • +
        +
      • +
      +
    • + + + +
    • Mon service de courriel est FastMail et les données sont hébergée dans l'État de New-York, aux États-Unis. +
        +
      • Le courriel est un moyen de communication peu sécuritaire. Tu dois assumer que tout ce que tu communiques avec moi par courriel peut être intercepté si tu ne les chiffre pas.
      • + + + +
      • Tu peux chiffrer les courriels que tu m'envoies à l'aide de ma clé GPG que tu trouveras ici: Clé GnuPG De François Pelletier
      • +
      +
    • + + + +
    • J'utilise principalement les plateformes de réseaux sociaux LinkedIn et Instagram. +
        +
      • Tu es responsable du contenu de tes messages privés et commentaires sur les réseaux sociaux. Ils ne sont pas couverts par cette politique de confidentialité. Tu dois te référer à celle du service (qui est probablement incompréhensible, désolé 🤦🏻).
      • + + + +
      • Tous mes clients peuvent avoir accès à un canal Matrix ou Signal privé pour communiquer avec moi.
      • +
      +
    • +
    + + + +

    Visuel

    + + + +
    + + + +

    Politique de gouvernance des renseignements personnels

    + + + +

    Voici le bout plate qu'on doit tous copier-coller sur nos sites web. Un énorme merci à l'équipe de mesprocedures.ca

    + + + +


    Procédure de conservation, de destruction et d’anonymisation des renseignements personnels

    + + + +

    Durée de conservation

    + + + +
      +
    • Les renseignements personnels ont été catégorisés de la façon suivante : +
        +
      • renseignements concernant les clients
      • +
      +
    • +
    + + + +
      +
    • La durée de conservation pour chacune de ces catégories a été établit de la façon suivante : +
        +
      • Courriels reçus et envoyés: 45 jours
      • + + + +
      • Documents d'affaires (contrats, factures): illimité
      • + + + +
      • Comptes utilisateurs: 1 an après la dernières activité
      • + + + +
      • Dossiers de projet: 7 ans après la fin du contrat
      • +
      +
    • +
    + + + +

    Méthodes de stockage sécurisé

    + + + +
      +
    • Les renseignements personnels se trouvent aux endroits suivants: +
        +
      • Serveur privé situé dans un centre de données de l'entreprise OVH localisé au Québec. Certifications
      • + + + +
      • Serveur privé situé dans un centre de données de l'entreprise Contabo localisé en Allemagne.
      • + + + +
      • Sauvegarde chiffrée du serveur privé dans un centre de données de l'entreprise rsync.net localisé aux États-unis à Denver, Colorado. Certifications
      • + + + +
      • Copie de la sauvegarde chiffrée sur deux disque dur chiffrés situé dans les locaux de l'entreprise localisé au Québec.
      • + + + +
      • Fournisseurs de solutions SaaS suivants: ThriveCart, FastMail, PostMark, Adobe Sign, Stripe et PayPal. Voir leurs politiques de sécurité et de confidentialité respectives.
      • +
      +
    • +
    + + + +
      +
    • Le degré de sensibilité de chacun de ces lieux de stockage a été établi.
    • + + + +
    • Ces lieux de stockage, qu’ils soient papier ou numérique, sont adéquatement sécurisés.
    • +
    + + + +
      +
    • L’accès à ces lieux de stockage a été restreint aux seules personnes autorisées.
    • +
    + + + +

    Destruction des renseignements personnels

    + + + +
      +
    • Pour les renseignements personnels sur papier, ils devront être totalement déchiquetés.
    • + + + +
    • Pour les renseignements personnels numériques, ils devront être totalement supprimés des appareils (ordinateurs, téléphone, tablette, disque dur externe), des serveurs et des outils infonuagiques.
    • + + + +
    • Le calendrier de destruction en fonction de la durée de conservation établie pour chaque catégorie de renseignements personnels devra être fait. Il est impératif de documenter les dates de destruction prévues.
    • + + + +
    • Il faudra s’assurer que la destruction est réalisée de manière à ce que les renseignements personnels ne puissent pas être récupérés ou reconstitués.
    • +
    + + + +

    Anonymisation des renseignements personnels

    + + + +
      +
    • L’anonymisation des renseignements personnels ne devrait se faire que si l’organisation souhaite les conserver et les utiliser à des fins sérieuses et légitimes.
    • + + + +
    • La méthode d’anonymisation des renseignements personnels choisie est la suivante : Aggrégation statistique univariée (note: la loi ne spécifie aucun moyen d'anonymiser les données, mais je met au défi quelqu'un de prouver qu'il est possible retrouver les données originales d'une aggrégation statistique univariée)
    • +
    + + + +

    Formation et sensibilisation du personnel

    + + + +
      +
    • Il faudra s’assurer de fournir une formation régulière aux employés sur la procédure de conservation, de destruction et d'anonymisation des renseignements personnels, ainsi que sur les risques liés à la violation de la vie privée.
    • + + + +
    • Cela inclut également la sensibilisation du personnel aux bonnes pratiques de sécurité des données et à l'importance du respect des procédures établies.
    • +
    + + + +

    Procédure de demande d’accès aux renseignements personnels

    + + + +

    Soumission de la demande

    + + + +
      +
    • L'individu qui souhaite accéder à ses renseignements personnels doit soumettre une demande écrite au responsable de la protection des renseignements personnels de l’organisation. La demande peut être envoyée par courriel ou par courrier postal.
    • + + + +
    • La demande doit clairement indiquer qu'il s'agit d'une demande d'accès aux renseignements personnels, et fournir des informations suffisantes pour identifier l'individu et les renseignements recherchés.
    • + + + +
    • Ces informations peuvent inclure le nom, l'adresse ainsi que toute autre information pertinente pour identifier de manière fiable l'individu qui effectue la demande.
    • +
    + + + +

    Réception de la demande

    + + + +
      +
    • Une fois la demande reçue, un accusé de réception est envoyé à l'individu pour confirmer que sa demande a été prise en compte.
    • + + + +
    • La demande devra être traitée dans les trente (30) jours suivant sa réception.
    • +
    + + + +

    Vérification de l’identité

    + + + +
      +
    • Avant de traiter la demande, l'identité de l'individu doit être vérifiée de manière raisonnable. Cela peut être fait en demandant des informations supplémentaires ou en vérifiant l'identité de l'individu en personne.
    • + + + +
    • Si l'identité ne peut pas être vérifiée de manière satisfaisante, l'organisation peut refuser de divulguer les renseignements personnels demandés.
    • +
    + + + +

    Réponse aux demandes incomplètes ou excessives

    + + + +
      +
    • Si une demande d'accès aux renseignements personnels est incomplète ou excessive, le responsable de la protection des renseignements personnels communique avec l'individu pour demander des informations supplémentaires ou clarifications.
    • + + + +
    • L'organisation se réserve le droit de refuser une demande si elle est manifestement abusive, excessive ou non justifiée.
    • +
    + + + +

    Traitement de la demande

    + + + +
      +
    • Une fois l'identité vérifiée, le responsable de la protection des renseignements personnels pour traiter les demandes d'accès aux renseignements personnels procède à la collecte des renseignements demandés.
    • + + + +
    • Le responsable consulte les dossiers pertinents pour recueillir les renseignements personnels demandés, en veillant à respecter les restrictions légales éventuelles.
    • +
    + + + +

    Examen des renseignements

    + + + +
      +
    • Avant de communiquer les renseignements personnels à l'individu, le responsable examine attentivement les informations pour s'assurer qu'elles ne contiennent pas de renseignements tiers confidentiels ou susceptibles de porter atteinte à d'autres droits.
    • + + + +
    • Si des renseignements de tiers sont présents, le responsable évalue s'ils peuvent être dissociés ou s'ils doivent être exclus de la divulgation.
    • +
    + + + +

    Communication des renseignements

    + + + +
      +
    • Une fois les vérifications terminées, les renseignements personnels sont communiqués à l'individu dans un délai raisonnable, conformément aux exigences légales en vigueur.
    • + + + +
    • Les renseignements personnels peuvent être communiqués à l'individu par voie électronique, par courrier postal sécurisé ou en personne, selon les préférences de l'individu et les mesures de sécurité appropriées.
    • +
    + + + +

    Suivi et documentation

    + + + +
      +
    • Toutes les étapes du processus de traitement de la demande d'accès aux renseignements personnels doivent être consignées de manière précise et complète.
    • + + + +
    • Les détails de la demande, les actions entreprises, les décisions prises et les dates correspondantes doivent être enregistrés dans un registre de suivi des demandes d'accès. +
        +
      • Date de réception de la demande ;
      • + + + +
      • Date de l’accusé de réception ;
      • + + + +
      • Date de la vérification de l’identité ;
      • + + + +
      • Méthode de vérification de l’identité ;
      • + + + +
      • Décision – demande d’accès acceptée ou refusée ;
      • + + + +
      • Date de la communication des renseignements (si applicable).
      • +
      +
    • +
    + + + +
      +
    • Protection de la confidentialité +
        +
      • Tout le personnel impliqué dans le traitement des demandes d'accès aux renseignements personnels doit respecter la confidentialité et la protection des données.
      • +
      +
    • + + + +
    • Gestion des plaintes et des recours +
        +
      • Si un individu est insatisfait de la réponse à sa demande d'accès aux renseignements personnels, il doit être informé des procédures de réclamation et des recours disponibles devant la Commission d’accès à l’information.
      • + + + +
      • Les plaintes doivent être traitées conformément aux politiques et procédures internes en matière de gestion des plaintes (section suivante).
      • +
      +
    • +
    + + + +

    Procédure de traitement des plaintes

    + + + +
      +
    • Réception des plaintes +
        +
      • Les plaintes peuvent être déposées par écrit, par téléphone, par courrier électronique ou via tout autre canal de communication officiel. Elles doivent être enregistrées dans un registre centralisé, accessible uniquement au personnel désigné.
      • + + + +
      • Les employés doivent informer immédiatement le service responsable de la réception des plaintes.
      • +
      +
    • + + + +
    • Évaluation préliminaire +
        +
      • Le responsable désigné examine chaque plainte pour évaluer sa pertinence et sa gravité.
      • + + + +
      • Les plaintes frivoles, diffamatoires ou sans fondement évident peuvent être rejetées. Toutefois, une justification doit être fournie au plaignant.
      • +
      +
    • + + + +
    • Enquête et analyse +
        +
      • Le responsable chargé de la plainte mène une enquête approfondie en collectant des preuves, en interrogeant les parties concernées et en recueillant tous les documents pertinents.
      • + + + +
      • Le responsable doit être impartial et avoir l'autorité nécessaire pour résoudre la plainte.
      • + + + +
      • Le responsable doit maintenir la confidentialité des informations liées à la plainte et veiller à ce que toutes les parties impliquées soient traitées équitablement.
      • +
      +
    • + + + +
    • Résolution de la plainte +
        +
      • Le responsable de la plainte propose des solutions appropriées pour résoudre la plainte dans les meilleurs délais.
      • + + + +
      • Les solutions peuvent inclure des mesures correctives, des compensations financières ou toute autre action nécessaire pour résoudre la plainte de manière satisfaisante.
      • +
      +
    • + + + +
    • Communication avec le plaignant +
        +
      • Le responsable de la plainte communique régulièrement avec le plaignant pour le tenir informé de l'avancement de l'enquête et de la résolution de la plainte.
      • + + + +
      • Toutes les communications doivent être professionnelles, empathiques et respectueuses.
      • +
      +
    • + + + +
    • Clôture de la plainte +
        +
      • Une fois la plainte résolue, le responsable de la plainte doit fournir une réponse écrite au plaignant, résumant les mesures prises et les solutions proposées.
      • + + + +
      • Toutes les informations et documents relatifs à la plainte doivent être conservés dans un dossier confidentiel.
      • +
      +
    • +
    + + + +

    Procédure de demande de désindexation et de suppression des renseignements personnels

    + + + +
      +
    • Réception des demandes +
        +
      • Les demandes de désindexation et de suppression des renseignements personnels doivent être reçues par l'équipe responsable désignée.
      • + + + +
      • Les clients peuvent soumettre leurs demandes par le biais de canaux spécifiques tels que le formulaire en ligne, l’adresse courriel dédiée ou le numéro de téléphone.
      • +
      +
    • + + + +
    • Vérification de l'identité +
        +
      • Avant de traiter la demande, l'identité de l'individu doit être vérifiée de manière raisonnable.
      • + + + +
      • Cela peut être fait en demandant des informations supplémentaires ou en vérifiant l'identité de l'individu en personne.
      • + + + +
      • Si l'identité ne peut pas être vérifiée de manière satisfaisante, l'organisation peut refuser de donner suite à la demande.
      • +
      +
    • + + + +
    • Évaluation des demandes +
        +
      • L'équipe responsable doit examiner attentivement les demandes et les renseignements personnels concernés pour déterminer leur admissibilité à la désindexation ou à la suppression.
      • + + + +
      • Les demandes doivent être traitées de manière confidentielle et dans le respect des délais prévus.
      • +
      +
    • + + + +
    • Raisons d’un refus +
        +
      • Il existe aussi des raisons parfaitement valables pour lesquelles nous pourrions refuser de supprimer ou de désindexer des renseignements personnels :
      • + + + +
      • Pour continuer à fournir des biens et des services au client ;
      • + + + +
      • Pour des raisons d’exigence du droit du travail ;
      • + + + +
      • Pour des raisons juridiques en cas de litige.
      • +
      +
    • + + + +
    • Désindexation ou suppression des renseignements personnels +
        +
      • L'équipe responsable doit prendre les mesures nécessaires pour désindexer ou supprimer les renseignements personnels conformément aux demandes admissibles.
      • +
      +
    • + + + +
    • Communication du suivi +
        +
      • L'équipe responsable est chargée de communiquer avec les demandeurs tout au long du processus, en fournissant des confirmations d'accusé de réception et des mises à jour régulières sur l'état d'avancement de leur demande.
      • + + + +
      • Tout retard ou problème rencontré lors du traitement des demandes doit être communiqué aux demandeurs avec des explications claires.
      • +
      +
    • + + + +
    • Suivi et documentation +
        +
      • Toutes les demandes de désindexation et de suppression des renseignements personnels, ainsi que les actions entreprises pour y répondre, doivent être consignées dans un système de suivi dédié.
      • + + + +
      • Les enregistrements doivent inclure les détails des demandes, les mesures prises, les dates et les résultats des actions effectuées.
      • +
      +
    • +
    + + + +

    Responsable de la protection des renseignements personnels (loi 25)

    + + + +

    François Pelletier est le responsable de la protection des renseignements personnels de l'entreprise Je valide ça, service-conseil. Il est aussi responsable de l'application de la politique de gouvernance des renseignements personnels.

    + + + +

    + + + +

    Il peut être joint par courriel à l'adresse courriel renseignements [a] jevalide [point] ca ou par la poste à l'adresse figurant au registre des entreprises du Québec. Les demandes et plaintes seront traitées le plus rapidement possible.

    + + + +

    Déclaration d'incidents de cybersécurité

    + + + +
    Date de découverte de l'incidentType d'incidentRenseignements visésSupport ou logicielNombre de personnes viséesMesures mises en place depuis l'incident
    +]]>
    + + 21 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + Qui sommes-nous ?

    Texte suggéré : L’adresse de notre site est : https://jevalide.ca.

    Commentaires

    Texte suggéré : Quand vous laissez un commentaire sur notre site, les données inscrites dans le formulaire de commentaire, ainsi que votre adresse IP et l’agent utilisateur de votre navigateur sont collectés pour nous aider à la détection des commentaires indésirables.

    Une chaîne anonymisée créée à partir de votre adresse e-mail (également appelée hash) peut être envoyée au service Gravatar pour vérifier si vous utilisez ce dernier. Les clauses de confidentialité du service Gravatar sont disponibles ici : https://automattic.com/privacy/. Après validation de votre commentaire, votre photo de profil sera visible publiquement à coté de votre commentaire.

    Médias

    Texte suggéré : Si vous téléversez des images sur le site, nous vous conseillons d’éviter de téléverser des images contenant des données EXIF de coordonnées GPS. Les personnes visitant votre site peuvent télécharger et extraire des données de localisation depuis ces images.

    Cookies

    Texte suggéré : Si vous déposez un commentaire sur notre site, il vous sera proposé d’enregistrer votre nom, adresse e-mail et site dans des cookies. C’est uniquement pour votre confort afin de ne pas avoir à saisir ces informations si vous déposez un autre commentaire plus tard. Ces cookies expirent au bout d’un an.

    Si vous vous rendez sur la page de connexion, un cookie temporaire sera créé afin de déterminer si votre navigateur accepte les cookies. Il ne contient pas de données personnelles et sera supprimé automatiquement à la fermeture de votre navigateur.

    Lorsque vous vous connecterez, nous mettrons en place un certain nombre de cookies pour enregistrer vos informations de connexion et vos préférences d’écran. La durée de vie d’un cookie de connexion est de deux jours, celle d’un cookie d’option d’écran est d’un an. Si vous cochez « Se souvenir de moi », votre cookie de connexion sera conservé pendant deux semaines. Si vous vous déconnectez de votre compte, le cookie de connexion sera effacé.

    En modifiant ou en publiant une publication, un cookie supplémentaire sera enregistré dans votre navigateur. Ce cookie ne comprend aucune donnée personnelle. Il indique simplement l’ID de la publication que vous venez de modifier. Il expire au bout d’un jour.

    Contenu embarqué depuis d’autres sites

    Texte suggéré : Les articles de ce site peuvent inclure des contenus intégrés (par exemple des vidéos, images, articles…). Le contenu intégré depuis d’autres sites se comporte de la même manière que si le visiteur se rendait sur cet autre site.

    Ces sites web pourraient collecter des données sur vous, utiliser des cookies, embarquer des outils de suivis tiers, suivre vos interactions avec ces contenus embarqués si vous disposez d’un compte connecté sur leur site web.

    Utilisation et transmission de vos données personnelles

    Texte suggéré : Si vous demandez une réinitialisation de votre mot de passe, votre adresse IP sera incluse dans l’e-mail de réinitialisation.

    Durées de stockage de vos données

    Texte suggéré : Si vous laissez un commentaire, le commentaire et ses métadonnées sont conservés indéfiniment. Cela permet de reconnaître et approuver automatiquement les commentaires suivants au lieu de les laisser dans la file de modération.

    Pour les comptes qui s’inscrivent sur notre site (le cas échéant), nous stockons également les données personnelles indiquées dans leur profil. Tous les comptes peuvent voir, modifier ou supprimer leurs informations personnelles à tout moment (à l’exception de leur identifiant). Les gestionnaires du site peuvent aussi voir et modifier ces informations.

    Les droits que vous avez sur vos données

    Texte suggéré : Si vous avez un compte ou si vous avez laissé des commentaires sur le site, vous pouvez demander à recevoir un fichier contenant toutes les données personnelles que nous possédons à votre sujet, incluant celles que vous nous avez fournies. Vous pouvez également demander la suppression des données personnelles vous concernant. Cela ne prend pas en compte les données stockées à des fins administratives, légales ou pour des raisons de sécurité.

    Où vos données sont envoyées

    Texte suggéré : Les commentaires des visiteurs peuvent être vérifiés à l’aide d’un service automatisé de détection des commentaires indésirables.

    ";s:5:"added";i:1671311120;}]]>
    +
    + + + + +
    + + <![CDATA[Formations en ligne]]> + https://jevalide.ca/formations-en-ligne/ + Fri, 08 Jul 2022 22:47:41 +0000 + + https://nouveau.jevalide.ca/?page_id=28 + + ]]> + + 28 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Mes collaborations]]> + https://jevalide.ca/collaborations/ + Fri, 08 Jul 2022 23:31:14 +0000 + + https://nouveau.jevalide.ca/?page_id=30 + + +

    Voici les différentes collaborations que j'ai faites comme invité avec d'autres entrepreneuses et entrepreneurs sur leurs plateformes !

    + + + +

    + + + + + + + +

    2024

    + + + +

    Podcast: Doit-on avoir peur de l’IA? - Go Pyrate!, Le Podcast #192

    + + + +
    + + + +

    Outre le fait que, selon la série de films Terminator, nous sommes à risques de nous faire envahir par des robots munis d'une conscience, l'idée selon laquelle nous devons craindre l'intelligence artificielle est pas mal gravée dans notre inconscient collectif.

    + + + + + + + +

    Podcast: L'ambition au Féminin avec Tatiana St-Louis

    + + + +

    Pourquoi la Silicon Valley n’aime pas les femmes ?

    + + + +
    +

    Le monde de la tech est tellement devenu un symbole du capitalisme patriarcal, qu’on a fini par oublier (ou nous faire oublier) que l’informatique a aussi compté de grandes femmes dans son histoire.

    +
    + + + +
    + + + + + + + +

    Webinaire: 2024 Digital Trust Crystal Ball

    + + + +
    +

    Avec cinq experts numériques de premier plan, nous souhaitons mettre en lumière certains des plus grands défis en matière de protection de la vie privée pour l'année à venir. Nous abordons tous les sujets, des cookies aux empreintes numériques en passant par l'IA, les LLM et bien d'autres encore.

    +
    + + + +
    + + + + + + + +

    2023

    + + + +

    Champions of Digital Trust

    + + + +

    J'ai collaboré à la série Champions of Digital Trust de l'organisme britannique Trust 3.0.
    L'épisode est disponible ici (lien Youtube respectant la vie privée via Invidious).

    + + + +
    + + + +

    Pour lire la retranscription (on a corrigé un peu mon anglais matinal saguenéen)

    + + + +

    Le rôle des RH en cybersécurité - La Talenterie

    + + + +

    Sarah m'a invité une seconde fois sur le podcast de La Talenterie, cette fois pour parler de cybersécurité ! https://latalenterie.podbean.com/e/ep114-entrevue-la-cybersecurite-le-role-des-rh-francois-pelletier-je-valide-ca/

    + + + +
    + + + +

    + + + +

    Festival web de création de contenu 2023 (FWCC)

    + + + +

    J'ai participé au panel IA et création de contenu: monstres ou alliés ?

    + + + +
    + + + +

    C'est un événement éphémère. Le contenu est disponible aux participant·es jusqu'au 31 août 2023. https://festivalweb.cc

    + + + +

    La Ligne Diagonale

    + + + +

    Avec Annie, on a toujours des discussions business pas comme les autres. C'est plein de surprises, comme avec les biscuits chinois… J'ai eu le plaisir et l'honneur de faire partie de La Ligne Diagonale. On a parlé d'informatique éthique. Va écouter ça ! slasheuse.co/40

    + + + +
    + + + +

    Mieux gérer les données dans ta business : 5 astuces simples et rapides !

    + + + +

    Une présentation éclair en 30 minutes où je te donne 5 vrais conseils pour mieux gérer les données dans ta business. No bullshit !

    + + + +

    Une collaboration avec la plateforme de collaboration pour entrepreneurs du web Collab Machine

    + + + +
    + + + +

    Tu peux retrouver tout le contenu sur ce billet de blog.

    + + + +

    + + + +

    Brisons les mythes sur les logiciels libres avec Go Pyrate !

    + + + +

    Je te parle souvent des mauvais pirates. Mais, les bons pyrates, eux ? Bien ils m'invitent à leur podcast. Coulons quelques mythes tenaces sur les logiciels libres ! Épisode 162 sur le podcast de Go Pyrate ! sur ta plateforme préférée. (lien Youtube respectant la vie privée via Invidious)

    + + + +
    + + + +

    2022

    + + + +

    Podcast La Talenterie avec Sarah Jodoin-Houle

    + + + +
    + + + +

    L'été dernier, j'ai été invité par Sarah Jodoin-Houle, fondatrice de l'entreprise La Talenterie, sur son podcast.

    + + + +

    Nous avons discuté des communs numériques, de technologie et aussi des droits d'auteurs et de ces fameuses licences Creative Commons dont je te parle de temps en temps. Nous avons aussi parlé du rôle que peuvent avoir la participation aux communs numériques dans la recherche de talents pour les entreprises.

    + + + +

    + + + + + + + +

    + + + +

    Podcast Young, Wild and Freelance avec Thomas Burbidge

    + + + +

    + + + + + + + +

    En vidéo ! Lien Youtube respectant la vie privée via Invidious.

    + + + + + + + +

    Live avec Julie Therrien sur Instagram

    + + + +

    Est-ce que les algorithmes peuvent nous aider à trouver notre voix unique ?

    Julie est experte en voix unique, en rédaction et en copywriting et une collaboratrice de grand coeur !

    + + + +
    Est-ce que les algorithmes peuvent nous aider à trouver notre voix unique ? - Un live Instagram avec Julie Therrien
    + + + +

    Mise à jour: Malheureusement, le compte Instagram de Julie s'est fait pirater en 2022 et ce vidéo n'existe plus.

    + + + +

    Présentation vidéo et panel Sigma 6:4

    + + + +

    Je te présente les modèles d'affaires basés sur les Creative Commons.
    En collaboration avec mon ami libriste Jérémy Viau-Trudel, cofondateur de Drave Développement. Nous avons été invités par TALSOM, une entreprise de consultation en services numériques certifiée B-Corp.

    + + + + + + + +

    Article de blog invité: 5 règles de cybersécurité à suivre

    + + + +

    La cybersécurité c'est super important pour les petites entreprises aussi. Voici comment mieux te protéger !

    + + + +


    Julia et Julie ont été mes premières coach marketing, lorsque je venais tout juste de lancer mon projet d'entreprise. Elles m'ont invité à te partager mes connaissances sur ce sujet.

    + + + + + + + +
    +https://www.idontthink.fr/5-regles-de-cybersecurite-a-suivre +
    + + + +

    2021

    + + + +

    Podcast OpenLayer #40, par David Beauchemin

    + + + +

    On discute de logiciel libre, d'intelligence artificielle, de stratégie de données et de cybersécurité !

    David est un des fondateurs de Baseline, une entreprise coopérative de Québec en analytique et intelligence artificielle.
    Il complète actuellement un doctorat sur le sujet de l'analyse du langage naturel dans le domaine du droit et des assurances.

    + + + + +]]>
    + + 30 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + 5 règles de cybersécurité à suivre]]> + + + + + + + + + + + + + + + + + + + + + + + + 5 règles de cybersécurité à suivre]]> + + + + + + + + 5 règles de cybersécurité à suivre]]> + + + + + +
    + + <![CDATA[Informatique libre et durable, gestion de données et vie privée pour humains !]]> + https://jevalide.ca/ + Fri, 08 Jul 2022 20:40:47 +0000 + + https://nouveau.jevalide.ca/?page_id=35 + + +

    Outil gratuit: aide-mémoire sur les données personnelles

    + + + +

    Ce document aide-mémoire te servira à identifier les renseignements personnels dans ton entreprise.

    + + + +

    Télécharge-le ici

    + + + +
    +
    +

    Salut !

    + + + +

    Moi, c'est François Pelletier (il/iel, accords masculins).

    + + + +

    + + + +

    Je suis ton ami geek 🤓 expert en vie privée, gestion de données et informatique libre et durable !

    + + + +

    Je déteste les GAFAM et les Tech Bros avec amour et je souhaite rendre le web plus inclusif et moins oppressif.

    +
    + + + +
    +
    Photo de François Pelletier, ton ami geek expert en données.
+
+François est debout et tient dans ses mains un ordinateur portable. 
+
+Derrière lui, il y a une table avec des piles de livres dessus.
    +
    +
    + + + +

    Je vais t'accompagner pour que tu utilises l'informatique dans ton entreprise en prenant soin des humains et respectant leur vie privée.

    + + + +

    Je veux contribuer aux plus grands défis de notre société dans les domaines avec le plus grand potentiel d'innovation tangible (lire ici : pas du vent) : la santé globale et les services professionnels avec une touche rebelle.

    + + + +

    + + + +

    Service de consultation

    + + + +

    J'offre deux formats de consultation : express ou accompagnement.

    + + + +

    L'express 🧠

    + + + +
      +
    • Utilise mon jus de cerveau pour tes besoins immédiats dans une rencontre virtuelle d'une heure, suivie d'un résumé et d'un plan d'action. Nous pouvons entre autres : +
        +
      • Configurer tes logiciels pour la sécurité des données et les sauvegardes, en conformité avec la loi 25 ou le RGPD.
      • + + + +
      • Optimiser ta délivrabilité courriel pour éviter de tomber dans le spam.
      • + + + +
      • T'aider à choisir entre deux logiciels, en considérant tes objectifs et tes besoins.
      • + + + +
      • Avoir des recommandations d'outils pour sauver du temps et de l'argent.
      • + + + +
      • Mettre en place de bonnes pratiques pour protéger la vie privée de ta clientèle.
      • +
      +
    • +
    + + + + + + + +

    DéconstruIT ⛏️🧱

    + + + +

    Accompagnement techno-rebelle en petit groupe

    + + + +

    Disponible en septembre 2024

    + + + +

    + + + +

    Libère ton entreprise (et ta clientèle) de l'oppression numérique. Une communauté intime et engagée pour que tu réalises enfin tes projets techno de manière durable et alignée sur tes valeurs.

    + + + +

    Formations en libre accès

    + + + + + +

    Mes derniers articles de blog

    + + +]]>
    + + 35 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Optimisation courriel – Achat]]> + + + + + +
    + + <![CDATA[La page geek de François]]> + https://jevalide.ca/page-geek/ + Thu, 30 Jun 2022 00:14:38 +0000 + + https://nouveau.jevalide.ca/?page_id=37 + + +

    10 faits amusants sur moi !

    + + + +

    Mais qui est vraiment François Pelletier ?

    + + + +
    • Je suis né à Chicoutimi. Là où on mange de la vraie tourtière, pas du pâté à la viande avec des patates 🥧
    • J'ai appris à programmer à 9 ans sur un Commodore 64 ⌨️
    • Au secondaire, j'étais technicien de son pour les spectacles de mon école 🎤
    • J'ai organisé un bal de finissants avec 1000$, repas inclus 🕺
    • J'ai une maîtrise en actuariat, mais j'ai coulé 2 fois l'examen professionnel sur mon sujet de mémoire 🧑‍🎓.
    • J'ai déjà eu les cheveux rouges 🧑‍🦰 !
    • Mon premier voyage en avion a été à Winnipeg en février 🥶
    • J'ai déjà été candidat aux élections provinciales 🪧
    • J'ai enregistré un album démo de métal dans ma chambre de résidence étudiante 🎸
    • J'ai le vertige, même sur le toit de la remise 🪜
    + + + +

    Aider la communauté, c'est essentiel pour moi !

    + + + +

    Je suis membre des associations suivantes:

    + + + +
    • Amnistie Internationale (section Canada Francophone). Un mouvement mondial de plus de 10 millions de personnes, réparties dans plus de 150 pays et qui se battent pour le respect et la protection des droits humains. Voilà comment nous pourrions résumer en une phrase Amnistie internationale.
    • AQIII: Représente la voix de plus de 26 000 travailleurs autonomes, pigistes et micro-entrepreneurs en TI à travers le Québec.
    • Creative Commons: Association à but non lucratif dont la finalité est de proposer une solution alternative légale aux personnes souhaitant libérer leurs œuvres des droits de propriété intellectuelle standard de leur pays, jugés trop restrictifs.
    • Drave Développement est un organisme à but non lucratif (OBNL). Il rassemble une communauté d'individus mobilisée pour répondre aux besoins numériques du Québec. Nous faisons la promotion des données ouvertes et du logiciel libre afin d'atteindre la souveraineté numérique.
    • Équiterre travaille à rendre tangibles, accessibles et inspirantes les transitions vers une société écologique et juste.
    • Fab Lab Créa3D , situé au Patro de Lévis, est un lieu communautaire avec des outils numériques pour apprendre, partager et socialiser vos projets en électronique, programmation, menuiserie et impression 3D.
    • FACiL, pour l'appropriation collective de l'informatique libre (FACIL) est un organisme sans but lucratif. Notre mandat est de promouvoir l'adoption, l'usage et la démocratisation de l'informatique libre.
    • Free Software Foundation: La Free Software Foundation (FSF) est une organisation à but non lucratif dont la mission mondiale est de promouvoir la liberté des utilisateurs d'ordinateurs.
    • Go Pyrate! est un organisme à but non lucratif situé en Montérégie, au Québec, et dédié à la création d'un monde du travail différent, à la fois plus humain et mieux équipé pour affronter les temps incertains.
    • LinuQ est une association pour la promotion des logiciels libres dans la région de Québec.
    + + + +

    Ma clé GnuPG

    + + + +

    Pour m'envoyer des messages secrets 🤫

    + + + + + + + +

    Ma personnalité

    + + + +

    Je crois que ça peut être utile de connaître la personnalité de nos collaborateurs, alors voici la mienne selon certains tests bien connus !

    + + + +

    Profil Nova

    + + + +

    Le profil Nova est basé sur plusieurs théories de la personnalité et des motivations.

    + + + +


    Mes comportements naturels portent vers l'action (rouge), mais je tend aussi à tomber dans la recherche de la conformité et de la précision (bleu)

    Ma principale motivation est l'altruisme (aider les autres avant soi), secondé de peu par des motivations idéologiques (la recherche de justice et de liberté) et cognitives (la recherche de défis intellectuels)

    + + + +
    + + + +

    J'ai eu le plaisir de faire ce test et de découvrir une tonnes de choses sur moi avec la collaboration de Fran Delhoume qui est spécialiste Nova. Alors je t'invite à la contacter si tu aimerais toi-aussi faire ton profil.

    + + + +


    RIASEC (Holland)

    + + + +

    Mon Profil RIASEC est:

    + + + +
    • Investigateur : Habité par une soif de connaissances et de savoir.
    • Entreprenant : Aime avoir des responsabilités, surmonter des défis dans l'espoir de se hisser au sommet.
    • Artistique : Souhaite exprimer ses émotions ou pensées à travers des formes d'art.
    + + + +

    Myers-Briggs

    + + + +
    • Je sais que ce test est ancien et parfois contesté, mais il demeure utile. Mon type de personnalité Myers-Briggs (MBTI) est Architecte (INTJ-T)
    • Comme le mentionne ce profil, je suis imaginatif et stratège, et j'ai une solution pour tout !
    + + + +

    Varia et faits divers !

    + + + +
    • Je suis aussi, selon un test très peu officiel, mais drôlement amusant, un Chaotic Good. Je suis un scientifique au grand coeur et avec l'esprit libre !
    • J'aime aussi faire des jeux de mots douteux, sarcastiques ou passifs-agressifs. J'aime autant t'avertir 😈 !
    +]]>
    + + 37 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + +
    + + <![CDATA[Ressources]]> + https://jevalide.ca/gratuites/ + Sun, 10 Jul 2022 01:41:41 +0000 + + https://nouveau.jevalide.ca/?page_id=47 + + +

    Outils téléchargeables

    + + + + + + + +

    Applications

    + + + + + + + +

    Contenu permanent

    + + + +
      +
    • Inscris-toi à ma cyberlettre: Mon infolettre hebdomadaire où je discute d'enjeux sociaux et de perspectives personnelles en lien avec les données et l'informatique
    • + + + +
    • Mon podcast Aires Communes: À l'intersection de la technologie, de la créativité et de la société
    • + + + +
    • Mon blog: Du contenu riche sur les technologies libres, les données et la cybersécurité
    • + + + +
    • Le Bar@Code: Mes billets de blogs techniques (logiciels, code, ...)
    • +
    + + + +

    Webinaires

    + + + + + + + + + + + + +]]>
    + + 47 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[Clé GnuPG De François Pelletier]]> + https://jevalide.ca/cle-gnupg-de-francois-pelletier/ + Sun, 10 Jul 2022 02:46:37 +0000 + + https://nouveau.jevalide.ca/?page_id=177 + + +

    Ma clé de signature électronique GnuPG (ou PGP) peut servir à deux choses:

    + + + +
      +
    1. Authentifier un courriel que je t'ai envoyé qui contient des informations sensibles, tel que des informations de paiement. Cette clé permet de t'assurer que je suis l'expéditeur du courriel.
    2. + + + +
    3. Me communiquer des informations confidentielles en utilisant la cryptographie asymétrique par clés OpenPGP ou GnuPG.
    4. +
    + + + +

    Voici la clé publique GnuPG pour valider l'authenticité des courriels provenant de l'adresse francois[@]jevalide[.]ca.

    Cette clé GnuPG permet aussi de m'envoyer des courriels chiffrés.

    + + + +

    Pour ce faire, je conseille fortement d'utiliser le client courriel Thunderbird et d'apprendre l'autodéfense courriel.

    + + + +

    Identifiant de la clé: 84F1D193FA9D1E0C15E7837C0BAB11809D47BB0D

    + + + +

    Données de la clé:

    + + + +

    https://gist.github.com/franc00018/b783dfa68efdc52d8acf32bf689c5625

    +]]>
    + + 177 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[Collaborations 🥳]]> + https://jevalide.ca/2024/06/30/192/ + Sun, 10 Jul 2022 02:58:31 +0000 + + https://nouveau.jevalide.ca/?p=192 + + + + 192 + + + + + + + + + 0 + 1 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Page geek 🤓]]> + https://jevalide.ca/2024/06/30/193/ + Sun, 10 Jul 2022 02:58:31 +0000 + + https://nouveau.jevalide.ca/?p=193 + + + + 193 + + + + + + + + + 0 + 2 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Politique de diversité et d'inclusion]]> + https://jevalide.ca/dei/ + Sun, 10 Jul 2022 16:31:44 +0000 + + https://jevalide.ca/?page_id=2842 + + +

    Je valide ça est une entreprise qui a pour mission de favoriser l'autonomie avec la technologie, notamment par l'inclusion sociale.

    + + + +

    Pour devenir autonome, il faut se sentir en sécurité avec ses choix technologiques, mais aussi avec sa communauté. Il faut aussi être libre de s'exprimer dans un environnement sécuritaire.

    + + + +

    Voici donc quelques règles à suivre pour s'assurer d'avoir une vision consensuelle sur les divers réseaux sociaux.

    + + + +

    Règles de vie

    + + + +
      +
    • Chacun d'entre nous est différent et a ses propres défis, ce qui motive nos choix.
    • + + + +
    • Chaque participant doit voir ses droits humains fondamentaux respectés.
    • + + + +
    • Nous sommes d'accords que la technologie devrait servir à l'atteinte de ces droits.
    • + + + +
    • Les groupes marginalisés doivent pouvoir s'exprimer sans contrainte sur leurs enjeux propres.
    • +
    + + + +

    Politique d'inclusion

    + + + +

    L'ensemble des activités de Je valide ça se veut inclusive et sécuritaire pour les groupes marginalisés incluant (liste non exhaustive):

    + + + + + + + +

    Si tu aimerais que je mette en place une mesure d'accessibilité additionnelle. Je t'invite à m'en faire part ! Ce sera selon mes moyens, bien entendu, mais je vais faire un effort !

    J'essaie le plus possible que ce site soit conforme aux recommendations de la norme WCAG 2.

    + + + +
    Texte: Règles de la communauté pour favoriser l’inclusion
+
+Dessin au trait: Une personne en fauteuil roulant manipule un téléphone intelligent. Une autre personne est debout à droite.
    +]]>
    + + 2842 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + +
    + + <![CDATA[Diversité et inclusion 🤗]]> + https://jevalide.ca/2024/06/30/politique-de-diversite-et-dinclusion/ + Sun, 10 Jul 2022 16:32:47 +0000 + + https://jevalide.ca/?p=2845 + + + + 2845 + + + + + + + + + 0 + 3 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Convertisseur point médian]]> + https://jevalide.ca/point-median/ + Fri, 15 Jul 2022 18:28:25 +0000 + + https://jevalide.ca/?page_id=2930 + + +

    + + + +

    Cette application convertit le texte entré dans la boîte en forme inclusive abrégée avec le point régulier . (le tiret - , la barre oblique / et les parenthèses aussi) vers le point médian ·

    + + + + + + + +

    C'est quoi, un point médian ?

    + + + +

    Le point médian est un signe de ponctuation qui sert à mettre bout à bout les accords masculins et féminins d'un mot. C'est une technique de rédaction inclusive.

    Par exemple:

    + + + +

    Je suis là pour t'aider, cher.ère ami.e

    + + + +

    + + + +

    devient

    + + + +

    + + + +

    Je suis là pour t'aider, cher·ère ami·e

    + + + +

    + + + +

    Behind the scenes !

    + + + +

    Si tu veux comprendre comment l'application a été construite !

    + + + +

    Je te donne tout ! Même le code !

    + + + + +]]>
    + + 2930 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[Licence Creative Commons]]> + https://jevalide.ca/licence-creative-commons/ + Tue, 02 Aug 2022 17:28:28 +0000 + + https://jevalide.ca/?page_id=3396 + + +

    Grâce à ma licence Creative Commons, Tu peux partager et copier mon contenu! À certaines conditions ...

    + + + +

    Essentiellement, si toi aussi, tu permets de partager et copier ton contenu, tu peux utiliser le mien !

    + + + +

    Mon contenu est protégé sous la licence Attribution - Partage dans les Mêmes Conditions 4.0 de Creative Commons

    + + + +

    C'est un moyen de redonner des permissions à notre communauté tout en conservant notre droit d'auteur. C'est aussi une façon de léguer notre savoir sous forme de communs numériques pour la postérité. Le droit d'auteur seul souvent va priver les gens de notre contenu pendant près d'un siècle après notre décès.

    + + + +
    "Life is Sharing" by cogdogblog is licensed under CC BY 2.0.
    + + + +

    Creative Commons a été fondé par Lawrence Lessig pour offrir une alternative au droit d'auteur, sans avoir recours au domaine public. Il a décomposé le droit d'auteur en un ensemble de permission pour lesquelles on peut donner notre consentement ou non aux autres humains.

    + + + +

    J'ai donné un atelier sur le sujet des Creative Commons que tu peux consulter sur ma page de présentation.

    + + + +

    Tu peux aussi découvrir les licences Creative Commons grâce à mon quiz Culture Créative.

    +]]>
    + + 3396 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[Creative Commons 🧑‍🎨]]> + https://jevalide.ca/2024/06/30/3405/ + Tue, 02 Aug 2022 17:28:49 +0000 + + https://jevalide.ca/?p=3405 + + + + 3405 + + + + + + + + + 0 + 4 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Ton offre fait TI peur ?]]> + https://jevalide.ca/webinaire-du-26-octobre-2022-ton-offre-fait-ti-peur/ + Tue, 25 Oct 2022 19:45:52 +0000 + + https://jevalide.ca/?page_id=3810 + + +

    Enregistrement du Webinaire du 26 octobre 2022

    + + + +

    + + + +

    + + + +
    + + + +

    Enregistrement

    + + + +

    Vidéo de 1h28

    + + + +
    + + + +

    Annexes

    + + + + +]]>
    + + 3810 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[Cyberlettre]]> + https://jevalide.ca/cyberlettre/ + Mon, 13 Mar 2023 03:34:04 +0000 + + https://jevalide.ca/?page_id=4200 + + +

    Qu'est-ce qui se passe dans ma cyberlettre ?

    + + + +

    + + + +
      +
    • Je vais assez intense dans des sujets de société qui implique la technologie (l'informatique libre, l'intelligence artificielle, la vie privée et la cybersécurité).
    • + + + +
    • Je t'offre de participer au développement de mes produits et à les tester en premier.
    • + + + +
    • Pas de leçons de vie d'entrepreneur, promis !
    • +
    + + + +

    Manque pas ça !

    + + +]]>
    + + 4200 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[Contrats]]> + https://jevalide.ca/legal/ + Sat, 08 Apr 2023 00:54:44 +0000 + + https://jevalide.ca/?page_id=4415 + + +

    Sur cette page, tu trouveras une copie des contrats que je fais signer pour toutes mes formations.

    + + + +

    Pleine Confiance

    + + + +

    Voici le modèle de contrat de formation pour le programme Pleine Confiance. Après ton achat, tu recevras une copie de ce contrat à signer électroniquement en ligne. C'est obligatoire pour conserver les accès au contenu et pouvoir réserver les consultations.

    + + + + + + + +

    Consultation Express

    + + + +

    Voici le modèle de contrat de formation pour la Consultation Express. Après ton achat, tu pourras demander (c'est optionnel pour ce produit) une copie de ce contrat à signer électroniquement en ligne. L'achat en soi confirme l'acceptation du contrat comme c'est une prestation unique.

    + + + + + + + +

    Atelier Cryptomator

    + + + +

    Voici le contrat de formation pour l'Atelier Cryptomator. Après ton achat, tu pourras demander (c'est optionnel pour ce produit) une copie de ce contrat à signer électroniquement en ligne.

    + + + +

    + + + + + + + +

    Conditions générales de vente

    + + + +

    La lecture de ces contrats fait office de conditions générales de vente, puis que tout y est indiqué. Juste à te diriger vers la section pour le produit que tu souhaites te procurer.

    + + + +

    + + + +

    Ces contrats sont protégés par le droit d'auteur de mon avocate Jennifer Guay. Il est strictement interdit de les copier.

    + + + +

    Si tu souhaites faire rédiger tes propres contrats, je t'invite à la contacter.

    +]]>
    + + 4415 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[Conditions d’utilisation 📋]]> + https://jevalide.ca/2024/06/30/conditions-dutilisation/ + Wed, 09 Aug 2023 02:24:37 +0000 + + https://jevalide.ca/?p=5081 + + + + 5081 + + + + + + + + + 0 + 5 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[]]> + https://jevalide.ca/2024/06/30/deconstruit-%e2%9b%8f%ef%b8%8f/ + Sat, 29 Jun 2024 03:22:39 +0000 + + https://jevalide.ca/?p=7025 + + + + 7025 + + + + + + + + + 0 + 3 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[]]> + https://jevalide.ca/2024/06/30/7082/ + Sun, 30 Jun 2024 15:48:52 +0000 + + https://jevalide.ca/?p=7082 + + + + 7082 + + + + + + + + + 0 + 6 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Conditions d'utilisation]]> + https://jevalide.ca/conditions-dutilisation/ + Wed, 09 Aug 2023 02:23:59 +0000 + + https://jevalide.ca/?page_id=5074 + + +

    L'ensemble du contenu sur ce site web est fourni à titre indicatif seulement, sans aucune garantie.

    + + + +

    + + + +

    Je valide ça, service-conseil ne peut en aucun cas être tenu responsable des préjudices subis par l'application des conseils et des techniques décrites sur son site web, y compris le blog, ainsi que sur tout autre site web auquel il réfère via une mention ou un hyperlien.

    + + + +

    + + + +

    Le contenu est disponible sous la licence Creative Commons Attribution - Partage dans les mêmes conditions 4.0

    + + + +

    + + + +

    Aucune transaction financière n'est effectuée directement depuis ce site web. Elles sont effectuées exclusivement via la plateforme ThriveCart (nom de domaine: jevalideca.thrivecart.com) à moins d'une entente spécifiée par un contrat ou une entente de gré à gré.

    + + + +

    + + + +

    Ce site web contient des formulaires d'inscription à des infolettres demandant une adresse courriel et un prénom. Les services d'infolettre sont séparés des opérations de ce site web et sont hébergés à l'adresse listmonk.service.jevalide.ca.

    + + + +

    + + + +

    Aucune information personnelle n'est entreposée sur jevalide.ca. Il n'est pas possible de créer un compte utilisateur sur ce site.

    + + + +

    + + + +

    Des données de suivi anonymes sont collectées lors de la navigation à l'aide du logiciel Matomo qui est hébergé séparément dans les installations de Je valide ça, service-conseil.

    + + + +

    + + + +

    Tous les détails sur la collecte d'informations personnelles peuvent être consultés dans notre politique de confidentialité.

    +]]>
    + + 5074 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + +
    + + <![CDATA[À propos de Je valide ça, service-conseil]]> + https://jevalide.ca/a-propos-de-je-valide-ca-service-conseil/ + Mon, 23 Oct 2023 15:28:05 +0000 + + https://jevalide.ca/?page_id=5538 + + +

    Salut ! Moi, c'est François !

    + + + +
    Photo de François Pelletier qui tient un ordinateur entre les mains. Derrière lui, il y a une table avec des livres de programmation dessus.
    Photo de François Pelletier
    + + + +

    T'es à la bonne place pour tout savoir sur moi ! Sauf les réponses aux questions secrètes à ma banque, on ira pas là !

    + + + +

    Je suis ton ami geek expert en données

    + + + +

    Construire une relation amicale avec ton geek de service ? Pourquoi pas ? Je veux rendre l'informatique agréable pour toi et ta clientèle. Les données, c'est au coeur de l'expérience client !

    + + + +

    + + + +

    L'économie actuelle repose de plus en plus sur les données. Mais, elle a aussi créé une société de surveillance dominée par quelques entreprises pas très cool, les GAFAM. Je crois que c'est possible de ramener l'expertise de données à une échelle humaine. Les logiciels libres, l'interopérabilité et les bonnes pratiques sont nos alliés.

    + + + +

    + + + +

    Mon dada, c'est d'intégrer diverses sources de données et de les combiner pour créer de nouveaux usages pour celles-ci, tout en considérant les risques de cybersécurité et d'atteinte à la vie privée.

    + + + +

    + + + +

    Je fais ça en utilisant des systèmes de gestion de données, comme des bases de données, des wikis et des outils de collaboration en ligne.

    + + + +

    + + + + + + + +

    J'apprends à lire aux robots !

    + + + +

    J'essaie, du moins ! Si par malheur, tu te cherchais un gourou de ChatGPT, chat fera pas 😹!

    + + + +

    + + + +

    Pour avoir un portrait global des données de ta business, on va utiliser les algorithmes des moteurs de recherche et de l'intelligence artificielle. Ça adonne bien, j'ai étudié ça depuis des années, pas juste entre Noël et le jour de l'an 2022 !

    + + + +

    + + + +

    C'est un excellent moyen de consolider les connaissances et de générer des contenus à valeur ajoutée.

    + + + +

    + + + +

    Pour rassembler ces informations, les wikis et bases de connaissances permettent une pérennité de l'information, même avec les mouvements de personnel et l'évolution de ton entreprise.

    + + + +

    + + + + + + + +

    Je suis aussi un matheux !

    + + + +

    Depuis longtemps, je suis aussi amoureux des mathématiques. Je gagnais des concours nationaux au secondaire. J'ai toujours eu la bosse des maths (aujourd'hui les scientifiques ont un terme pour ça qui s'appelle haut potentiel intellectuel)

    + + + +

    + + + +

    Les probabilités, ce sont les maths qu'il te faut pour décrire notre monde incertain et dynamique. Je peux mesurer les risques auxquels tu es confronté et t'aider à prioriser les actions avec le plus d'impact.

    + + + +

    + + + +

    Les graphes, permettent de relier les données aux humains qu'elles représentent pour mieux les comprendre et faire ressortir ce qui les rend uniques.

    C'est aussi un outil puissant pour l'analyse des processus de ton entreprise et des risques liés à la confidentialité.

    + + + +

    + + + + + + + +

    Je crois aux droits humains avant tout

    + + + +

    Je crois que l'informatique peut être à la fois un outil de libération et un outil d'oppression. Ne pas reconnaître le pouvoir des grandes entreprises informatiques et des technologies, c'est se mettre la tête dans le sable. Je peux t'aider à naviguer dans le monde du numérique en choisissant des logiciels et techniques alignées sur tes valeurs.

    Je suis aussi très impliqué au niveau de la diversité et inclusion dans le domaine technologique. À l'aide de collaboratrices et collaborateurs, je peux aussi t'accompagner pour avoir des pratiques technologiques plus inclusives, notamment au niveau de la gestion des données et de la confidentialité.

    Ça fait 20 ans que je fais du militantisme, même si j'ai parfois été dans des groupes qui me font honte maintenant (conservateurs, pour pas les nommer).

    + + + + + + + +

    J'ai une grande gueule

    + + + +

    Oui, on dit ça, je dis ce que je pense et je fais ce que je dis. Je n'ai aucune difficulté à monter sur le stage (ou dans ton écran) pour répandre la bonne nouvelle, ou des moins bonnes qui vont te botter le cul.

    Je suis professionnellement agnostique, autant au niveau spirituel, éditeur de code que systèmes d'exploitation. Mais j'utilise pas Windows, y'a des limites.

    Si tu cherches un conférencier ou formateur pour parler d'informatique éthique, de logiciel libre ou de données ouvertes pour un événement, j'suis là !

    + + + +

    Je suis aussi disponible pour donner des conférences dans des contextes bilingues ou en anglais.

    + + + + + + + +

    Ce qu'on dit de moi !

    + + + +

    Quelques témoignages de mes client·es et collègues.

    + + + +
    +
    +
    +

    J’ai eu la chance de travailler avec François lors du développement d’un cours sur le text mining pour le certificat en analytique d’affaires à HEC Montréal.

    François a été un grand atout dans l’équipe. À l’aide de son expertise dans le domaine des sciences de données, il a amélioré d’une manière significative le matériel produit pour le cours.

    François est toujours à l’écoute, prends en en considération les commentaires des autres membres de l’équipe et agit dans le sens qui optimise le travail et le résultat final.

    +Rim Chérif - Chercheure - Chargée de cours - HEC Montréal
    + + + +
    +

    François est un professionnel hors pair et un grand collaborateur dans le domaine de la valorisation des données.

    J'ai eu la chance de recevoir son aide et ses services pour le développement d'une plateforme amicale sur Mattermost afin d'héberger notre grande communauté de pratique Accès aux données, une référence au Québec.

    François s'est montré d'un grand professionnalisme, toujours à l'écoute et avec le souci de documenter toutes ses pratiques afin de garantir le transferts de connaissance et d'expertises.

    Nous n'aurions pu engager tant de personnes dans cette démarche collaborative sans son aide précieuse.

    +Cécile Petitgand - Spécialiste en données de santé et acceptabilité sociale - DATALAMA - Université de Montréal - Centre de recherche du CHUM
    + + + +
    +

    J'ai eu la chance de travailler en étroite collaboration avec François lorsque j'ai construit le modèle d'inondations côtières pour Desjardins Assurances.

    La variété et le volume des données représentaient des défis importants dans ce mandat et, très honnêtement, je n'aurais pas réussi à les surmonter sans la collaboration de François.

    En plus de me guider dans l'utilisation d'Azure et d'autres outils, il a permis d'accélérer l'avancement du projet en automatisant certaines tâches d'extraction et en optimisant mes codes pour les calculs.

    Sans son interventions, mon script serait encore en train de rouler 5 ans plus tard!

    Au niveau personnel, j'apprécie particulièrement son franc parler et son dévouement.

    +Véronique Tremblay - Statisticienne - Scientifique de données - Beneva
    +
    + + + +
    +
    +

    Je suis une cliente de Francois depuis quelques années. Nous sommes dans des domaines totalement différents et je ne sais pas comment je pourrai me débrouiller sans lui. Il est non seulement compétent, mais il a une «dédication» rare et incroyable pour ses clients.

    Il prend sa mission à coeur et il nous aide au-delà de nos espérances. Côté pédagogie (un domaine que je connais bien par contre), il a une approche totalement aidante, même pour ceux qui ne connaissent rien à son domaine.

    François, c'est «notre ami geek», comme il le dit si bien, et ce serait fantastique que tous nos amis soient aussi authentiques et brillants dans le monde des affaires !

    +Marie-Ève Lécine - Fondatrice de Let it Be, Méditation
    + + + +
    +

    J'ai suivi la formation de François « Libère tes chaînes de mots ». Une belle sortie de zone de confort pour moi, qui n'avait pratiquement pas touché à la programmation depuis le secondaire!

    Ça m'a fait du bien de me replonger là-dedans avec une formation concrète. Les tutos de François sont super clairs, même pour moi qui pensait être totalement dépassée. Et on va se le dire, c'est le fun d'obtenir un résultat concret après nos expérimentations. ♥️

    Mine de rien, la formation de François m'a donné beaucoup confiance. J'ai récemment bricolé un robot qui fait des recommandations personnalisés aux clients, propulsé par l'intelligence artificielle (GPT). Comme j'avais touché à du code pas mal plus impressionnant/intimidant dans la formation de François, ça me paraissait soudain accessible de créer quelque chose via OpenAi.

    +Alexandra Martel - Copywriter - Formatrice - Les mots pour vendre - Festival web de création de contenu
    + + + +
    +

    François, c'est le gars qui permettait aux autres membres de la shop de R&D de Desjardins de décupler leur productivité en enlevant toutes les pelures de banane sur notre chemin tout en nous faisant sentir compétents. Chaudement recommandé.

    +Simon Coulombe - "gosseux de données" - Cooperators
    +
    +
    + + + +

    Ma page de geek

    + + + +

    Ma page pas trop sérieuse pour me connaître encore plus !

    + + + +
      +
    • 10 faits amusants sur moi
    • + + + +
    • Mon implication sociale
    • + + + +
    • Mes tests de personnalité
    • + + + +
    • Comment m'envoyer des courriels confidentiels
    • + + + +
    • Et peut-être même quelques créations artistiques, au fil du temps !
    • +
    + + + + + + + +

    À propos de ce site web

    + + + +

    Mon site web est conçu pour être accessible et ne pas utiliser de pistage publicitaire. Il n'y a ni Google Analytics ici, ni programme d'affiliation douteux, ni pixel de médias sociaux !

    J'utilise une extension très simple pour avoir des statistiques de visites sur la page, statify. Elle collecte la date, la page d'origine et la page de destination. Les données sont agrégées et les données individuelles sont supprimées après 30 jours. Final bâton. 100% anonyme.

    + + + +

    + + + +

    En savoir plus sur moi !

    + + + +

    Le meilleur moyen, c'est de t'abonner à ma cyberlettre.

    + + + +

    Sinon, J'ai une page de geek avec plein de détails plus ou moins inutiles ou savoureux.

    + + + +

    Tu peux trouver tous mes liens de réseaux sociaux et activités sur mon LinkTree.

    +]]>
    + + 5538 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[Libère tes chaînes de mots]]> + https://jevalide.ca/libere-tes-chaines-de-mots/ + Wed, 03 Jan 2024 22:40:32 +0000 + + https://jevalide.ca/?page_id=5833 + + +

    Je suis en train de la mettre à jour

    + + + +

    Disponible à l'été 2024 !

    +]]>
    + + 5833 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + +
    + + <![CDATA[Mission Cybersécurité]]> + https://jevalide.ca/mission-cybersecurite/ + Thu, 04 Jan 2024 01:30:43 +0000 + + https://jevalide.ca/?page_id=5837 + + + + +



    La panique, le coeur qui bat, le front en sueur et un fort sentiment d'impuissance t'envahit 🥵

    Tu t'es encore fait pirater… cette fois, c'est ton site web.
    La dernière fois, c'était ton compte Instagram. 

    Tu es là, devant ton écran, tu essaies de décrypter l'avalanche de pensées dans ta tête.

    Tu trembles, tu fais plein de recherche sur Google sans savoir où donner de la tête.

    Tu partage ta mésaventure sur les réseaux sociaux.

    Un bon samaritain en profite pour t'offrir de l'aide, en te parlant de son "ami" qui récupère les comptes.

    Tu tentes ta chance, mais tu réalises que c'est un autre fraudeur et qu'il a maintenant accès à tes courriels. Misère 😵

    Tu te sens pris·e au dépourvu. Quoi faire, maintenant ? 

    Comment éviter que ça t'arrive encore et encore ?
     

    + + + +
    + + + +

    + + + +

    J'ai aussi vécu des incidents importants de cybersécurité dans ma carrière dans le secteur financier. Ceux qui coûtent dans les dizaines de millions, ceux qui sont sur le dessus des journaux. Le cauchemar de toutes et tous les entrepreneur·es.

    + + + +

    + + + +

    Moi aussi, pas plus tard que le printemps dernier, je me suis levé sans site web. Quoi de mieux pour gâcher une journée… 

    + + + +

    + + + +

    Mais, j'avais un plan cette fois ! J’avais configuré mes sauvegardes à chaque jour, et surtout, je m’étais pratiqué à restaurer mon site ! Bref, j'avais fait mon entraînement.

    + + + +

    + + + +
      +
    • Tu peux, toi aussi, te sentir prêt·e à faire face aux différents imprévus qu'apportent l'informatique et les menaces, avec ton propre plan de mission.
    • + + + +
    • Tu veux passer à l'action, pas écouter des influenceurs te dire que "tu devrais avoir tel ou tel logiciel"
    • + + + +
    • Tu ne veux surtout pas finir avec une to-do list longue comme le bras que tu vas procrastiner sans savoir par où commencer.
    • +
    + + + +

    + + + +

    Je te montre le parcours à suivre

    + + + +
      +
    • La prévention: +
        +
      • Tu apprendras comment configurer tes outils de travail pour prévenir le plus d’incidents possibles. Tu apprendras aussi à être plus furtif pour augmenter la protection des données de tes clients.
      • +
      +
    • + + + +
    • Dans le feu de l'action +
        +
      • Tu vas savoir exactement quoi faire lorsqu'un imprévu survient, avec des aide-mémoire. Tu auras aussi accès à un forum intégré directement dans la plateforme de formation
      • +
      +
    • + + + +
    • Retour à la normale +
        +
      • Tu auras les instructions nécessaires pour te remettre en route après ton détour le plus vite possible. Le temps compte, mais tu auras aussi besoin de soutien pour reprendre ta mission. Nous serons là avec toi ! 
      • +
      +
    • +
    + + + +


    Au cours de Ta Mission Cybersécurité, on va parcourir les outils technologiques les plus courants en entreprise, et tu apprendras comment les sécuriser !

    + + + +

    + + + +

    Tu deviendras un·e expert·e de la C.I.A. en maîtrisant des principes durables qui s'appliquent à tous les outils actuels et futurs.

    + + + +

    + + + +
      +
    • Confidentialité (de tes données et celles de tes clients)
    • + + + +
    • Intégrité (sauvegarde régulière de toutes tes données)
    • + + + +
    • Accessibilité (Avoir accès à tes outils et données lorsque tu en as besoin)
    • +
    + + + +

    + + + +

    Voici les outils les plus courants dans les entreprises que tu apprendras à utiliser et sécuriser avec ton plan de mission.

    + + + +
      +
    • Navigateur web (Brave, Firefox)
    • + + + +
    • Gestionnaire de mots de passe et double authentification (Bitwarden, Aegis, Authy, Microsoft Authenticator)
    • + + + +
    • Sauvegarde et synchronisation de fichier (Dropbox, Google Drive, OneDrive et Nextcloud)
    • + + + +
    • Gestion de projets et planification (Notion)
    • + + + +
    • Gestion de fichiers texte et code informatique (GitLab)
    • + + + +
    • Production de contenu multimédia (Adobe Creative Cloud, Canva) 
    • + + + +
    • Réseaux sociaux (Instagram, Facebook et LinkedIn) 
    • + + + +
    • Site web (WordPress) 
    • + + + +
    • Courriels et listes (Outlook, Gmail, ConvertKit)
    • +
    + + + +

    Structure de la formation

    + + + +

    La formation est construite avec de nombreux modules courts et pratiques dans lesquels j'ai mis quelques notions théoriques. 

    + + + +

    Ce n'est pas une formation en vidéos, tout est en texte avec des captures d'écran ou des outils à remplir pour que tu puisses tout faire à mesure.

    + + + +

    Je te partage des méthodes qui ont fait leurs preuves. Celles que j'utilise au quotidien et qui me rassurent, que j'ai appris au fil des années à côtoyer des professionnels de la cybersécurité. 

    + + + +

    Tu pourras les utiliser avec tes propres outils, peu importe ce que tu utilises comme système. 

    + + + +

    Je ne suis pas là pour te faire installer plein de logiciels de sécurité additionnels. Quand on part en mission, on veut voyager léger ! 

    + + + +

    De toute façon, moins d'outils, c'est toujours mieux, en cybersécurité ! 

    + + + +

    Tu n'auras plus à appeler ton ami geek  en panique en cas d'incident de cybersécurité, une fois ta mission complétée !

    + + + +

    Un aperçu !

    + + + +

    Voici un aperçu de la page d'accueil de la formation.

    + + + +
    + + + +

    Dans chacun des modules, il y a des leçons individuelles que tu peux faire une à la fois.

    + + + +
    + + + +

    Voici un exemple du format du contenu. Il y a beaucoup de captures d'écran pour te guider. 

    + + + +
    + + + +

    Je ne suis pas membre du Netflix des entrepreneur·es

    + + + +

    Le format vidéo pour les formations d'entreprise ne fait que créer des to-do interminables et ne t'incite pas à passer à l'action. Tu n'amélioreras pas ton entreprise en mangeant du pop-corn.

    + + + +

    + + + +

    J'essaie d'éviter le plus possible ce format pour les tutoriels. Je veux éviter que tu perdes ton temps.

    + + + +

    + + + +

    Une mission de pionnières et pionniers

    + + + +

    En prenant action pour sécuriser ton entreprise, tu es à l'avant-garde ! C'est pour ça que je vais toujours te considérer comme pionnière ou pionnier.

    + + + +

    + + + +

    La formation contient plus de 90 leçons séparées dans plusieurs modules, mais tu peux toujours demander du contenu additionnel, parce que l'informatique, ça évolue !

    + + + +

    + + + +

    En tout temps, tu peux poser des questions sur le forum. 

    + + + +

    Elles et ils me font confiance

    + + + +

    Je donne la parole à celles et ceux qui me font confiance !

    + + + +
    +

    Il prend sa mission à cœur et il nous aide au-delà de nos espérances. Côté pédagogie (un domaine que je connais bien par contre), il a une approche totalement aidante, même pour ceux qui ne connaissent rien à son domaine. François, c’est «notre ami geek», comme il le dit si bien, et ce serait fantastique que tous nos amis soient aussi authentiques et brillants dans le monde des affaires !

    +Marie-Ève Lécine – Fondatrice de Let it Be, Méditation
    + + + +
    +

    La formation Mission Cybersécurité couvre de nombreux aspects de la cybersécurité et de la protection de la confidentialité. On y voit non seulement quoi faire et pourquoi, mais aussi comment le faire avec des instructions détaillées. Un excellent investissement!

    +Lucie Laforte, comptable
    + + + +

    + + + +

    Accepter la Mission Cybersécurité, c’est:

    + + + +
      +
    • De courts modules pratiques avec des explications simples.
    • + + + +
    • Pas de vidéos interminables que tu dois mettre tout le temps sur pause, ni de PowerPoint ennuyeux. 
    • + + + +
    • Des exemples clairs en format texte et des exemples concrets !
    • + + + +
    • Des captures d’écrans détaillées pour bien configurer tes outils.
    • + + + +
    • Le contenu de formation accessible à vie, avec les mises à jour !
    • + + + +
    • Un forum de soutien !
    • + + + +
    • Dormir sur tes deux oreilles en ne pensant plus à ce qui pourrait arriver avec la technologie de ton entreprise en ligne.
    • +
    + + + +

    Profites-en maintenant !

    + + + +

    🚒 Je ne veux pas que tu attendes qu'il soit trop tard pour commencer à bien protéger ton entreprise 🚑

    + + + +

    + + +]]>
    + + 5837 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[Mission Cybersécurité - Achat]]> + https://jevalide.ca/mission-cybersecurite-achat/ + Sun, 21 Jan 2024 18:55:23 +0000 + + https://jevalide.ca/?page_id=6096 + + +
    +]]>
    + + 6096 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + +
    + + <![CDATA[Je parle geek, dis-moi donc c'que tu fais vraiment !]]> + https://jevalide.ca/je-parle-geek-dis-moi-donc-cque-tu-fais-vraiment/ + Wed, 24 Jan 2024 15:41:47 +0000 + + https://jevalide.ca/?page_id=6108 + + +

    Tu recherches un partenaire pour avancer dans ton projet technologique et tu connais le jargon informatique! Je parle geek moi aussi ! Ça adonne bien !

    + + + +

    Mes technologies préférées

    + + + +

    Ces logiciels sont mes technologies préférées. Ce sont ceux que j'aime le plus travailler avec. Je suis aussi ouvert à intégrer d'autres technologies libres (ou pas !)

    + + + +
      +
    • Linux (depuis maintenant 20 ans ! j'ai commencé sur Mandrake 7.1), en particulier Debian et Manjaro.
    • + + + +
    • PostgreSQL (La base de données libre qui fait tout, sauf des graphes)
    • + + + +
    • Neo4J (La base de données graphe pour compléter le tout)
    • + + + +
    • Python (Mon langage d'adoption)
    • + + + +
    • R (Langage statistique utilisé durant mes années en actuariat)
    • + + + +
    • GitLab (pour gérer tous mes projets de code)
    • +
    + + + +

    Le genre de projets que j'ai fait

    + + + +

    Je te partage un inventaire de projets dans lesquels j'ai été le principal développeur ou dans lesquels j'ai eu une contribution significative.

    + + + +
      +
    • Détection de fraude en réclamation d'assurance auto et habitation
    • + + + +
    • Modélisation géospatiale (télématique GPS, publicité traditionnelle de masse et simulation d'inondations)
    • + + + +
    • Graphe de dépendance d'un système ETL d'une grande entreprise (j'ai représenté 60000 programmes au niveau des entrées et sorties dans un graphe avec Neo4J)
    • + + + +
    • Manipulation de données médicales (imagerie DICOM, rapports d'accidents et plans de traitement pour assurances)
    • + + + +
    • Analyse de données massives avec Apache Spark et Hadoop
    • + + + +
    • Transformation de données depuis une entrepôt vers des comptoirs SQL
    • + + + +
    • Programmation en SAS
    • + + + +
    • Conception infonuagique (Avec Microsoft Azure en particulier, j'ai fait un peu de AWS aussi)
    • + + + +
    • Installation et sécurisation de serveurs Linux en auto-hébergement
    • + + + +
    • Design et prototypage d'un entrepôt de données statistique à des fins d'intelligence d'affaires
    • + + + +
    • Déménagement d'une plateforme Slack vers Mattermost
    • + + + +
    • Automatisation de déploiements avec Ansible
    • + + + +
    • Interfaces web de collecte de données
    • + + + +
    • API REST pour gestion de tâches en arrière-plan (Opérations CRUD sur bases de données, calcul en lot de type HPC)
    • +
    + + + +

    Comme je t'ai dit, je parle geek un peu !
    Ton projet ressemble à ce que tu trouves dans cette liste ? Ou pas ?

    + + + +

    Pas grave, on va sûrement se comprendre pareil !

    + + + +

    + + + + +]]>
    + + 6108 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[Consultation Express 🧠]]> + https://jevalide.ca/consultation-express/ + Fri, 02 Feb 2024 18:47:05 +0000 + + https://jevalide.ca/?page_id=6163 + + +

    La consultation express, c'est une période où je me consacre entièrement à résoudre tes problèmes informatiques avec toi.

    + + + +

    + + + +

    Utilise mon jus de cerveau 🧠 pour tes besoins techno immédiats

    + + + +

    Chaque rencontre nous permettra d'aborder un de ces sujets en détail:

    + + + +
      +
    • Configurer tes logiciels en conformité avec la loi 25 ou le RGPD pour +
        +
      • la sécurité des données
      • + + + +
      • la protection de la vie privée
      • + + + +
      • faciliter tes sauvegardes
      • +
      +
    • + + + +
    • Optimiser ta délivrabilité courriel pour +
        +
      • éviter de tomber dans le spam
      • + + + +
      • améliorer ta rétention d'abonnés
      • +
      +
    • + + + +
    • T’aider à choisir entre deux logiciels, en considérant tes objectifs et tes besoins. +
        +
      • Si tu en as plus que 2, nous pouvons prendre la rencontre pour réduire ta liste avec les bons critères.
      • +
      +
    • + + + +
    • Débuter ta libération du cloud et utiliser ton ordinateur à son plein potentiel !
    • + + + +
    • Te faire un plan de formation pour apprendre une nouvelle technologie ! +
        +
      • Je suis aussi disponible pour créer des formations et les donner, on pourra en discuter à la fin de notre rencontre.
      • +
      +
    • +
    + + + +

    Comment ça marche !

    + + + +
      +
    • Les consultations sont d'une durée d'une heure. +
        +
      • Je peux te fournir un enregistrement si tu le souhaites.
      • +
      +
    • + + + +
    • Tu répondras à un questionnaire personnalisé avant notre rencontre pour que je t'aide dès la première minute.
    • + + + +
    • Après la rencontre, tu recevras un courriel sommaire et un plan d'action avec tes trois actions prioritaires.
    • + + + +
    • Un mois après notre rencontre, je vais m'informer sur la progression de ton plan d'action !
    • + + + +
    • Consulte les modalités du contrat de service ici
    • +
    + + + +

    Ce qu'on dit de mes consultations !

    + + + +
    +

    Ce fut une demi-heure** très bien investie! Enfin mes courriels se rendent à destination, merci François !!!!

    +- Lucie
    + + + +
    +

    Ce fut le meilleur 30 minutes** investi pour mon entreprise et mes clients. 

    +- Jessica
    + + + +
    +

    Sérieux tu m’as tellement rassurée, je suis contente de savoir que ca a fini par devenir un service « officiel » !

    +- Hélène-Sarah
    + + + +

    ** La durée est d'une heure, maintenant. Moins de stress, plus de valeur !

    + + + +


    Comment choisir une plage horaire ?

    + + + +

    Une fois le paiement complété, tu auras accès à mon calendrier pour planifier une rencontre. Le lien se trouve aussi sur la facture pour planifier plus tard

    + + + +

    Mon horaire de juillet et août 2024:

    + + + +
      +
    • lundi, mercredi, jeudi, vendredi
    • + + + +
    • 11h00, 13h30 (Heure de Montréal)
    • + + + +
    • Premier arrivé, premier servi ! Il n'est pas possible de réserver avant le paiement.
    • + + + +
    • C'est possible de réserver jusqu'à quatre semaines à l'avance.
    • +
    + + + +

    + + + +
    + + + +

    Avis de confidentialité

    + + + +

    Cette page contient un module de paiement intégré, qui utilise 4 cookies:

    + + + +
      +
    • ThriveCart, qui est la plateforme de paiement
    • + + + +
    • Stripe, qui est le fournisseur de paiement
    • + + + +
    • Google Pay, qui offre des fonctionnalités de paiement
    • + + + +
    • hCaptcha, qui offre un service anti-spam pour ThriveCart
    • +
    + + + +

    Tu dois accepter les cookies pour que le module de paiement fonctionne correctement. Tu peux immédiatement vider les cookies une fois la transaction complétée. Mon site web n'utilise aucun cookies ou système de pistage en dehors de ce formulaire de paiement et du formulaire d'abonnement à mon infolettre.

    +]]>
    + + 6163 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[Masterclass - Cas pratique sur la loi 25]]> + https://jevalide.ca/masterclass-cas-pratique-sur-la-loi-25/ + Wed, 13 Mar 2024 05:19:07 +0000 + + https://jevalide.ca/?page_id=6316 + + +
    + + + +

    Je te propose une masterclass où nous allons voir un cas pratique pour couvrir les aspects les plus importants de la loi 25 au niveau de ta technologie: site web, infolettre et offre de gratuité !

    + + + +

    + + + +

    Ensemble, nous allons:

    + + + +
      +
    • Designer un processus client de type gratuité (lead magnet) incluant une page de capture, un formulaire, une infolettre et un téléchargement d'un fichier PDF.
    • + + + +
    • Identifier les données personnelles, les risques et les moyens pour les réduire.
    • + + + +
    • Choisir les bons logiciels à l'aide de l'évaluation des facteurs de la vie privée.
    • +
    + + + +

    La classe est enregistrée et disponible pour réécoute pour une durée d'un an. Un guide PDF illustré te sera aussi offert avec l'enregistrement.

    + + + +

    + + + + + + + +

    Important: Cette masterclass sur la loi 25 n'inclus aucun avis légal, je ne suis pas juriste.
    Mais tu vas être beaucoup mieux préparé·e et ça va te coûter pas mal moins cher d'honoraires!

    + + + +

    Avis de confidentialité

    + + + +

    Cette page contient un module de paiement intégré, qui utilise 4 cookies:

    + + + +
      +
    • ThriveCart, qui est la plateforme de paiement
    • + + + +
    • Stripe, qui est le fournisseur de paiement
    • + + + +
    • Google Pay, qui offre des fonctionnalités de paiement
    • + + + +
    • hCaptcha, qui offre un service anti-spam pour ThriveCart
    • +
    + + + +

    Tu dois accepter les cookies pour que le module de paiement fonctionne correctement. Tu peux immédiatement vider les cookies une fois la transaction complétée. Mon site web n’utilise aucun cookies ou système de pistage en dehors de ce formulaire de paiement.

    +]]>
    + + 6316 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[Masterclass - Cas pratique sur la loi 25 - Achat]]> + https://jevalide.ca/loi25biz-achat/ + Wed, 13 Mar 2024 05:22:06 +0000 + + https://jevalide.ca/?page_id=6322 + + +

    + + + +
    +]]>
    + + 6322 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + +
    + + <![CDATA[Optimisation courriel - Achat]]> + https://jevalide.ca/optimisation-courriel-achat/ + Tue, 19 Mar 2024 18:56:03 +0000 + + https://jevalide.ca/?page_id=6359 + + +
    + + + +

    Avis de confidentialité

    + + + +

    Cette page contient un module de paiement intégré, qui utilise 4 cookies:

    + + + +
      +
    • ThriveCart, qui est la plateforme de paiement
    • + + + +
    • Stripe, qui est le fournisseur de paiement
    • + + + +
    • Google Pay, qui offre des fonctionnalités de paiement
    • + + + +
    • hCaptcha, qui offre un service anti-spam pour ThriveCart
    • +
    + + + +

    Tu dois accepter les cookies pour que le module de paiement fonctionne correctement. Tu peux immédiatement vider les cookies une fois la transaction complétée. Mon site web n’utilise aucun cookies ou système de pistage en dehors de ce formulaire de paiement.

    +]]>
    + + 6359 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + +
    + + <![CDATA[Juste assez de loi 25 - Achat]]> + https://jevalide.ca/juste-assez-de-loi-25-achat/ + Tue, 19 Mar 2024 19:01:30 +0000 + + https://jevalide.ca/?page_id=6362 + + +
    + + + +

    Avis de confidentialité

    + + + +

    Cette page contient un module de paiement intégré, qui utilise 4 cookies:

    + + + +
      +
    • ThriveCart, qui est la plateforme de paiement
    • + + + +
    • Stripe, qui est le fournisseur de paiement
    • + + + +
    • Google Pay, qui offre des fonctionnalités de paiement
    • + + + +
    • hCaptcha, qui offre un service anti-spam pour ThriveCart
    • +
    + + + +

    Tu dois accepter les cookies pour que le module de paiement fonctionne correctement. Tu peux immédiatement vider les cookies une fois la transaction complétée. Mon site web n’utilise aucun cookies ou système de pistage en dehors de ce formulaire de paiement.

    +]]>
    + + 6362 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + +
    + + <![CDATA[Chiffre tes données simplement avec Cryptomator]]> + https://jevalide.ca/chiffre-tes-donnees-simplement-avec-cryptomator/ + Thu, 28 Mar 2024 04:37:55 +0000 + + https://jevalide.ca/?page_id=6401 + + +
    + + + +

    Dans cette mini-formation, tu apprendras à utiliser le logiciel libre Cryptomator pour chiffrer des données personnelles sans devoir changer tes méthodes de travail.

    + + + +
      +
    • Principes de base du chiffrement.
    • + + + +
    • Le logiciel et ses fonctionnalités
    • + + + +
    • Installation sur ton ordinateur
    • + + + +
    • Comment créer et gérer des coffres sécurisés.
    • +
    + + + +

    Le contenu a été testé pour Windows, macOS et Linux, avec du stockage infonuagique ou des périphériques USB.

    + + + +

    Inclus:

    + + + +
      +
    • Tutoriel pas-à-pas avec captures d'écran
    • + + + +
    • Enregistrement vidéo de l’atelier
    • + + + +
    • Guide imprimable en lettre et A4
    • +
    + + + +

    Tu peux compter environ 1h30 pour compléter la formation.

    + + + +


    + + + +
    + + + +

    Informations légales

    + + + +
      +
    • Je valide ça, service-conseil n'est pas affilié avec Skymatic GmbH
    • + + + +
    • Skymatic GmbH, société basée à Bonn, en Allemagne, s'investit dans le thème de la « défense numérique pour tous ». Elle a développé Cryptomator, un logiciel qui permet aux utilisateurs de protéger leurs fichiers dans tout stockage cloud.
    • + + + +
    • Le logo de Cryptomator est disponible sous licence CC BY-SA 4.0 et l'autrice est Katharina Hagemann.
    • +
    +]]>
    + + 6401 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[Optimisation Courriel]]> + https://jevalide.ca/optimisation-courriel-1/ + Thu, 25 Apr 2024 19:39:45 +0000 + + https://jevalide.ca/?page_id=6501 + + +

    Comment éviter le spam, assurer sa délivrabilité, communiquer efficacement et éviter les pièges des gourous marketing ?

    + + + +

    Je t’aide à répondre à toutes ces questions:

    + + + +
      +
    • Comment configurer tes systèmes pour augmenter ta délivrabilité ?
    • + + + +
    • Comment rédiger des courriels qui évitent le spam ?
    • + + + +
    • Comment configurer ton nom de domaine ?
    • + + + +
    • Comment bien choisir son fournisseur de service courriel ?
    • + + + +
    • Comment bien gérer les abonnements et les envois de son infolettre ?
    • + + + +
    • Comment se protéger de la fraude par courriel ?
    • + + + +
    • Comment envoyer des informations confidentielles par courriel de manière sécuritaire ?
    • + + + +
    • 🤓 Comment envoyer des courriels en utilisant du code ?
    • +
    + + + +

    Une formation simple, sous forme de tutoriels avec un guide d'accompagnement, pour tout comprendre de la technologie courriel et l'utiliser efficacement.

    + + + +

    + + + +

    Cette formation se fait bien en une demi-journée et inclus un forum de support en ligne. Le contenu et le support est disponible pour un an.

    + + + +

    + + + + +]]>
    + + 6501 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[Juste assez de loi 25 (et de RGPD)]]> + https://jevalide.ca/juste-assez-de-loi-25-et-de-rgpd/ + Thu, 25 Apr 2024 20:09:11 +0000 + + https://jevalide.ca/?page_id=6504 + + +

    Comment intégrer les exigences légales dans l’expérience que tu offres à ta clientèle ?

    + + + +


    Je t’aide à répondre à toutes ces questions:

    + + + +
      +
    • Quelles sont les données confidentielles couvertes par la loi ?
    • + + + +
    • Pourquoi maîtriser ton parcours client va t’aider à demander les bons consentements ?
    • + + + +
    • Comment concevoir des services et choisir des logiciels qui respectent la vie privée par défaut, à l’aide de l’évaluation des facteurs relatifs à la vie privée (EFVP) ?
    • + + + +
    • Comment éduquer ta clientèle sur ses droits sans charge de travail additionnelle ?
    • + + + +
    • Pourquoi les cookies, ça ne devrait pas être ta priorité ?
    • + + + +
    • Comment réconcilier marketing et vie privée ?
    • + + + +
    • Comment conserver, extraire, corriger et supprimer les données de sa clientèle sans s’arracher les cheveux ?
    • +
    + + + +

    Une formation simple, sous forme de tutoriels, pour saisir l'essentiel de la loi 25, apprendre à bien identifier les données personnelles dans ton entreprise et adopter les bonnes stratégies pour les protéger.

    + + + +

    + + + +

    Cette formation se fait bien en une demi-journée et inclus un forum de support en ligne. Le contenu et le support est disponible pour un an.

    + + + +

    + + + +

    Inclus en prime mon webinaire pratique sur l’évaluation des facteurs relatifs à la vie privée (valeur de 125 $) !

    + + + +

    + + + + +]]>
    + + 6504 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + +
    + + <![CDATA[Webinaire: Comment éviter les mécanismes d'oppression numérique dans ton entreprise]]> + https://jevalide.ca/webinaire-comment-eviter-les-mecanismes-doppression-numerique-dans-ton-entreprise/ + Sun, 12 May 2024 17:50:00 +0000 + + https://jevalide.ca/?page_id=6607 + + +
    + + + +

    Enregistrement

    + + + +

    C'est plate, mais c'est déjà passé ... Mais la magie de l'enregistrement est là pour toi.

    + + + +

    C'est disponible sur ma plateforme de formation Moodle gratuitement (tu auras simplement à créer un compte et utiliser la clé oppressionnumerik pour accéder au cours)

    + + + +

    + + + + + + + +

    Date

    + + + +

    C'était le mercredi le 22 mai à 10h00 (Québec)

    + + + +

    Bidoux

    + + + +

    C'est gratuit !

    + + + +

    Description

    + + + +

    Dans cet atelier d'une heure, je te propose un espace de réflexion sur divers mécanismes d'oppression numérique qui pourraient être présents dans ton entreprise, même sans que tu le saches, et quelques pistes de solution pour les éliminer.

    + + + +

    + + + +

    Nous allons explorer les mécanismes basés sur la psychologie, la discrimination, les algorithmes et les structures de pouvoir économique.

    + + + +

    + + + +

    Suite à l'atelier, tu auras l'occasion de venir discuter de ce sujet sur mon forum privé Matrix.

    + + + +

    + + + +

    À la fin de l'atelier, je te présenterai en quelques minutes ma nouvelle offre d'accompagnement pour éliminer les sources d'oppression numérique dans ton entreprise.

    +]]>
    + + 6607 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[Liens]]> + https://jevalide.ca/liens/ + Fri, 07 Jun 2024 18:53:58 +0000 + + https://jevalide.ca/?page_id=6722 + + + +]]> + + 6722 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Me laisser un témoignage 💌]]> + https://jevalide.ca/temoignage/ + Wed, 19 Jun 2024 03:37:47 +0000 + + https://jevalide.ca/?page_id=6799 + + +

    Un gros merci d'avance !

    + + + +

    + + + +

    Tu peux me laisser un témoignage sur Google My Business

    + + + +

    + + + +

    Tu peux aussi me laisser un témoignage sur LinkedIn (recherche Recommendations): https://www.linkedin.com/in/francoispelletier-jevalideca

    + + + +

    +]]>
    + + 6799 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[Pleine confiance 🛡️🧘]]> + https://jevalide.ca/confiance/ + Thu, 27 Jun 2024 04:18:23 +0000 + + https://jevalide.ca/?page_id=6863 + + +

    Tout ce que tu as besoin de savoir et mettre en place pour avoir la paix !

    + + + +
    +

    Trop de rêves de petites entreprises sont brisés à cause du manque de sécurité sur le web.

    + + + +

    + + + +

    Je ne compte même plus les histoires qu'on me partage

    + + + +
      +
    • piratage de réseaux sociaux
    • + + + +
    • rançongiciel
    • + + + +
    • pannes de sites web à répétition
    • + + + +
    • enjeux de réputation web
    • +
    + + + +

    Je pourrais te les raconter les unes après les autres.

    + + + +

    + + + +

    Tu vas cliquer sur le mauvais lien éventuellement 🫢. Et je veux te préparer à ça. Tu vas savoir quoi faire pour protéger tes données client et ne pas devenir victime des pirates du web.

    + + + +

    + + + +

    Je veux que ton entreprise soit en sécurité dès maintenant.

    + + + +

    Pleine Confiance, c'est pour ajouter des vies à ta business, comme dans une game de Mario Bros.

    + + + +
    + + + +

    Sans avoir à te péter la tête sur des briques ni devoir prendre des champignons verts !

    + + + +

    + + + + +
    + + + +
    +

    Je refuse de te faire peur

    + + + +

    Le monde de la technologie profite de notre ignorance. Ça fait partie de leur modèle d'affaires.

    Tu finis par perdre ton temps dans des formations de "sensibilisation" inutiles.

    + + + +

    Fais attention où tu cliques, ou sinon, ça va être ta faute 🤪.

    - Formation en "sensibilisation"
    + + + +

    C'est comme ça qu'on nous enseigne le marketing.

    + + + +

    + + + +

    Trouve le problème qui empêche les gens de dormir (ou crée-le de toutes pièces) et culpabilise-les de ne pas passer à l'action.

    + + + +

    + + + +

    Je suis écœuré du marketing oppressif sur le web.

    + + + +
    +

    Tu ne seras jamais assez…

    +- Le marketing oppressif
    + + + +
    + + + +

    Je crois, au contraire, que tout effort que tu vas faire pour améliorer la sécurité, la conformité et la réputation de ton entreprise sur le web mérite d'être célébré 🥳.

    + + + +

    +
    + + + +
    +

    Pleine Confiance

    + + + +

    Protection techno guidée par l'humain

    + + + +

    + + + +

    Je pars du principe que t'es une personne intelligente et que t'as pas absolument besoin de moi.

    + + + +

    + + + +

    Pas trop vendeur, le gars !

    + + + +


    Tu as tout ce qu'il faut comme compétence pour avoir la paix d'esprit.

    + + + +
      +
    • Ton entreprise peut être en sécurité sur le web.
    • + + + +
    • Tu peux faire du marketing tout en respectant la vie privée.
    • + + + +
    • Tes courriels peuvent tous arriver à destination.
    • +
    + + + +

    Tu vas développer des réflexes de sécurité et de vie privée, les mouvements vont venir tout seul, et aiguiser ton radar à bullshit aussi, promis.

    + + + +

    +
    + + + +
    +

    Et surtout, t'as pas besoin d'essai-erreur, j'ai testé et validé ça, pour toi !

    + + + +

    (Je valide ça, t'sais)

    + + + +

    + + + +

    Des systèmes informatiques 100 % sécuritaires par les géants du web, ça n'arrivera pas demain matin.

    + + + +

    + + + +

    Leurs logiciels ne sont pas configurés pour protéger nos données, mais pour les capturer.

    + + + +

    + + + +

    Ce qu'on peut faire, c'est se serrer les coudes et se protéger les uns les autres.

    + + + +

    + + + +

    La cybersécurité est un travail collectif.

    + + + +

    + + + +

    Lorsque ton entreprise est en sécurité, tu aides tes fournisseurs et ta clientèle aussi à être en sécurité. En te protégeant, tu protèges aussi tout le monde.

    + + + +

    +
    + + + +
    +

    Suis le guide !

    + + + +

    Je ne peux pas le faire à ta place. J'aurais aimé ça te dire le contraire. Mais je me doute bien que ça ne te tente pas de m'envoyer ton ordi, ton cell et tous tes mots de passe par la poste !

    + + + +

    + + + +

    Pour m'assurer que tu ne perdes pas ton temps, je suis là pour t'accompagner avec les meilleures pratiques que j'ai testées sur tous les systèmes populaires.

    + + + +

    + + + +

    J'ai appris des erreurs de la grande entreprise, mais aussi de leurs bons coups. J'ai traduit ces connaissances à notre échelle et nos budgets loin d'être illimités.

    +
    + + + +
    +

    Pas de compromis à faire avec ton horaire chargé

    + + + +

    J'ai construit plus d'une centaine de courts tutoriels pour :

    + + + +
      +
    • Sécuriser ton entreprise une fois pour toutes, en configurant tes logiciels, en adoptant des réflexes sécuritaires et en développant une pensée critique.
    • + + + +
    • Comprendre et bien appliquer la loi 25, dans une perspective de respect de ta clientèle et de consentement.
    • + + + +
    • Envoyer des courriels qui se rendent à destination en leur évitant de tomber dans le spam tout en conservant la bonne réputation de ton domaine web.
    • +
    + + + +

    Partir du bon pied

    + + + +

    Je t'offre deux rencontres individuelles pour éviter que tu te sentes overwhelm avec le contenu !

    + + + +

    + + + +
      +
    • Une première pour construire ton plan personnalisé et te permettre de prioriser tes actions selon tes disponibilités.
    • + + + +
    • Une seconde pour faire le suivi, ajuster ton plan et apporter des améliorations au contenu (par exemple, ajouter un nouveau logiciel populaire). Parce que l'informatique, ça change tout le temps !
    • +
    +
    + + + +
    +
    +

    Pleine Confiance n'est pas une formation.

    + + + +

    Absorber de l'information comme une éponge, prendre des pages de notes et faire des listes, c'est juste plus de choses à procrastiner et plus de charge mentale pour rien.

    + + + +

    + + + +

    Pleine Confiance, c'est tout en mouvement.

    + + + +

    + + + +

    Tu suis et tu fais en même temps. Comme au yoga, il y a certaines postures inconfortables, mais avec des bénéfices à long terme.

    + + + +
      +
    • Mes contenus sont rapides à lire et mettre en pratique (tu peux améliorer ta sécurité en 15 minutes)
    • + + + +
    • Je vais te rencontrer deux fois pour prioriser tes actions et faire un suivi personnalisé
    • + + + +
    • Tu as accès à un forum à même la plateforme pour poser toutes tes questions
    • + + + +
    • En plus, tout ça disponible sur une application mobile !
    • +
    + + + +

    + + + +

    Tu as accès au contenu pour longtemps. Genre vraiment longtemps. Aussi longtemps que tu le souhaites. Je peux même t'en envoyer une copie physique !

    + + + +

    + + + +

    Je t'offre tout ça pour 1350 $ !

    + + + +

    Tu peux même payer en trois versements de 475 $.

    +
    +
    + + + +

    + + + +
    +

    Elles et ils m'ont fait confiance !

    + + + +
    +
    +

    Il prend sa mission à cœur et il nous aide au-delà de nos espérances. Côté pédagogie (un domaine que je connais bien par contre), il a une approche totalement aidante, même pour ceux qui ne connaissent rien à son domaine. François, c’est «notre ami geek », comme il le dit si bien, et ce serait fantastique que tous nos amis soient aussi authentiques et brillants dans le monde des affaires !

    +Marie-Ève Lécine – Fondatrice de Let it Be, Méditation
    + + + +
    +

    La formation couvre de nombreux aspects de la cybersécurité et de la protection de la confidentialité. On y voit non seulement comment faire et pourquoi, mais aussi comment le faire avec des instructions détaillées. Un excellent investissement !

    +Lucie Laforte, Comptable
    +
    +
    + + + +
    +

    Le moment est venu de te faire pleine confiance !

    + + + +
    +
    + + + +
    +

    Foire aux questions !

    + + + +
    C'est pour moi ? +
      +
    • Ma clientèle se compose principalement de professionnel·les dans le domaine de la santé, des ressources humaines et des services aux entreprises, qui ont une présence active sur le web et une petite touche rebelle.
    • + + + +
    • Bref, des humains comme toi qui ont à cœur la sécurité et la durabilité de leur entreprise et des précieuses données de leur clientèle.
    • +
    +
    + + + +
    Quelle forme prendra ton accompagnement ? +
      +
    • En plus de l'accès à vie à ma collection de tutoriels en constante révision, Pleine confiance te donne accès à:
    • + + + +
    • Deux séances de consultation. +
        +
      • Une première pour construire ton plan personnalisé et te permettre de prioriser tes actions selon tes disponibilités.
      • + + + +
      • Une seconde pour faire le suivi, ajuster ton plan et apporter des améliorations au contenu. Parce que ça change tout le temps !
      • +
      +
    • + + + +
    • Un forum en ligne pour poser tes questions intégré à la plateforme de formation. +
        +
      • Rien à installer (sauf l'application mobile facultative)
      • + + + +
      • Aucun autre compte à créer !
      • + + + +
      • Pas de date d'expiration.
      • +
      +
    • + + + +
    • Des mises à jour sur tous les logiciels que je présente et des recommandations de configuration.
    • + + + +
    • Des invitations à des webinaires et des rabais exclusifs !
    • +
    +
    + + + +
    C'est quoi le contenu de la collection de tutoriels, au juste ? +
    9 modules sur la cybersécurité +
      +
    • Les concepts de base en cybersécurité
    • + + + +
    • Bien préparer ton ordinateur et ton cerveau
    • + + + +
    • Redécouvrir la structure de ton entreprise
    • + + + +
    • La gestion des mots de passe
    • + + + +
    • L'authentification à facteurs multiples
    • + + + +
    • Les sauvegardes
    • + + + +
    • La gestion de ton contenu et de tes réseaux sociaux
    • + + + +
    • La gestion de tes fichiers et de tes logiciels
    • + + + +
    • La protection contre les menaces du web
    • +
    +
    + + + +
    9 modules sur l'optimisation des courriels +
      +
    • Qu'est-ce qu'un courriel ?
    • + + + +
    • Comment obtenir toutes les informations sur ton domaine ?
    • + + + +
    • Comment sont transporté les courriel ?
    • + + + +
    • Comment bien choisir son fournisseur de service courriel ?
    • + + + +
    • Comment configurer ses systèmes pour augmenter sa délivrabilité?
    • + + + +
    • Comment rédiger des courriels qui évitent le spam ?
    • + + + +
    • Comment bien gérer les abonnements et les envois de son infolettre ?
    • + + + +
    • Comment se protéger de la fraude par courriel ?
    • + + + +
    • Comment envoyer des informations confidentielles par courriel de manière sécuritaire ?
    • +
    +
    + + + +
    6 modules sur la loi 25 +
      +
    • Introduction aux lois sur les données personnelles
    • + + + +
    • Quelles sont les données personnelles couvertes par la loi ?
    • + + + +
    • Pourquoi maîtriser ton parcours client va t'aider à demander les bons consentements ?
    • + + + +
    • Comment concevoir des services et choisir des logiciels qui respectent la vie privée par défaut, à l'aide de l'évaluation des facteurs relatifs à la vie privée (EFVP) ? Inclus une étude de cas pratique
    • + + + +
    • Comment réconcilier marketing et vie privée ?
    • + + + +
    • Comment conserver, extraire, corriger et supprimer les données de sa clientèle sans s'arracher les cheveux ?
    • +
    +
    +
    + + + +
    Est-ce que je vais devoir acheter autre chose ? +
      +
    • Non, il n'y a aucun achat nécessaire pour pouvoir profiter de tout le contenu et le mettre en pratique.
    • + + + +
    • Je vais te proposer d'acheter du matériel informatique, tel qu'un disque dur externe pour des sauvegardes, ou différents accessoires et adaptateurs, si tu ne les as pas déjà.
    • + + + +
    • Dans certaines situations, je peux te recommander un forfait plus élevé pour un logiciel que tu utilises déjà.
    • + + + +
    • Ma formation ne contient aucun lien affilié. Je ne suis pas là pour te vendre des bébelles comme des VPN.
    • +
    +
    +
    + + + +

    Crédits :

    + + + + + + + +
    + + + +

    +]]>
    + + 6863 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[Aide-mémoire sur les données personnelles]]> + https://jevalide.ca/aide-memoire-sur-les-donnees-personnelles/ + Fri, 28 Jun 2024 14:50:40 +0000 + + https://jevalide.ca/?page_id=6966 + + +
    + + + +

    Ce document aide-mémoire te servira à identifier les renseignements personnels dans ton entreprise à l'aide d'une liste de plus de 100 types de données.

    + + + +

    + + + +

    C'est quoi, un renseignement personnel ?

    La loi 25 considère que définir ce qu'est un renseignement personnel, c'est un jeu de devinette ! Le RGPD ne donne qu'une dizaine d'exemples.

    Données qui permettent une identification directe ou indirecte: une belle définition qui peut confondre autant les juristes que les experts en données.

    Ajoute à ça la pseudonymisation et l'anonymisation pour compliquer le tout. Y'a pas de doute que t'aies aucune idée de quoi on parle ici !

    J'ai créé une liste de plus de 100 types de données que tu pourrais retrouver dans ton entreprise et qui peuvent constituer des renseignements personnels au sens de la loi 25 et du RGPD.

    Pour te simplifier la tâche, je les ai rassemblées en catégories dans cet aide-mémoire. Tu peux même l'imprimer !

    Je t'invite à le télécharger et le garder pas trop loin, c'est gratuit !

    + + + +

    + + + +
    +
    +

    Obtenir le guide !

    + +

    +

    + + +

    + + +

    +

    + + +

    +
    +
    + +
    + +

    +
    +
    + + + +

    L'inscription à ma cyberlettre est facultative (mais très recommandée 🤗).

    + + + +

    + + + +

    Je te demande ton adresse courriel afin de t'informer des mises à jour du document. Tu pourras retirer ton adresse de la liste en tout temps.

    +]]>
    + + 6966 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + +
    + + <![CDATA[DéconstruIT ⛏️🧱]]> + https://jevalide.ca/deconstruit/ + Fri, 28 Jun 2024 16:23:11 +0000 + + https://jevalide.ca/?page_id=6982 + + +

    Accompagnement techno-rebelle en petit groupe

    + + + +

    Disponible en septembre 2024

    + + + +

    + + + +

    Libère ton entreprise (et ta clientèle) de l'oppression numérique. Une communauté intime et engagée pour que tu réalises enfin tes projets techno de manière durable et alignée sur tes valeurs.

    +]]>
    + + 6982 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + +
    + + <![CDATA[ImageMagick, R et bash pour filtrer des images]]> + https://jevalide.ca/2021/05/29/filtrer-images-imagemagick-r-bash/ + Sat, 29 May 2021 10:00:00 +0000 + + https://blog.jevalide.ca/wp/?p=81 + + +
    Canon Camera from Pixabay
    + + + + + +

    Introduction

    + + + +

    J'ai un disque sur lequel je garde des images que j'enregistre depuis les réseaux sociaux, souvent des infographies. Dans ce tutoriel, nous allons utiliser bash, ImageMagick et R pour effectuer le ménage dans ce répertoire.

    + + + +

    Il y a souvent des pages que j'enregistre au complet, mais seulement pour garder les photos qu'elles contiennent. Celles-ci contiennent souvent des miniatures et des images utilisées pour le thème de la page.

    + + + +

    Bref, au fil des années, le répertoire devenait un fouillis.

    + + + +

    Détecter la résolution des images avec ImageMagick

    + + + +
    Logo de ImageMagick
    Logo de ImageMagick
    + + + +

    Je cherchais donc un moyen de conserver seulement les grandes images, celles avec une résolution de 720x720 minimum.

    + + + +

    Donc, ma première étape a été de trouver un moyen de lister la résolution de toutes les images du répertoire.

    + + + +

    J'ai fait ceci en utilisant identify, un outil de la suite ImageMagick.

    + + + +
    identify InvertedIndex.jpg
    + + + +

    La sortie de ce logiciel ressemble à ceci:

    + + + +
    InvertedIndex.jpg JPEG 588x447 588x447+0+0 8-bit sRGB 36166B 0.000u 0:00.000
    + + + +

    Ensuite, en utilisant awk, je conserve le premier élément de la sortie, qui est le nom de fichier, ainsi que le 3e élément, qui est la résolution, sous la forme AxB.

    + + + +
    identify InvertedIndex.jpg | awk '{print $1, $3}'
    + + + +

    En sortie, on obtient

    + + + +
    InvertedIndex.jpg 588x447
    + + + +

    Je veux exécuter cette commande récursivement pour tous les sous-répertoires courants. Pour ce faire, find permet de lister tous les fichiers. Le programme complet ressemble donc à ceci, prenant en entrée deux arguments:

    + + + +
    • le répertoire
    • le fichier de sortie
    + + + +
    #!/bin/bash
    +find "$1" -type f -exec identify \{\} \; | awk '{print $1, $3}' > "$2"
    + + + +

    Identifier les fichiers à supprimer avec R

    + + + +

    Pour la suite des choses, je vais utiliser le langage de programmation R, qui va me permettre de manipuler le fichier de sortie et de générer la liste des fichiers à supprimer

    + + + +

    Je charge tidyverse (parce que je suis un peu lâche et ça comprend tout, comme Hélix de Vidéotron 🙃)

    + + + +
    library("tidyverse")
    + + + +

    Ensuite, définition de mon répertoire et du fichier de sortie

    + + + +
    my_dir <- "/something/something/"
    +output_file <- "somefile.txt"
    + + + +
    • Appel de mon programme bash écrit ci-haut avec la fonction system, j'utilise paste0 pour construire la commande à exécuter:
    + + + +
    system(paste0("bash liste_dimensions.sh ",my_dir," ",output_file))
    + + + +
    • Positionner dans le répertoire de travail
    + + + +
    setwd(my_dir)
    + + + +
    • Lecture du fichier généré
    + + + +
    files.txt <- read_table(paste0(my_dir,output_file), col_names = "nom")
    + + + +
    • Séparation de mes deux colonnes
    + + + +
    files.txt$nom %>% 
    +  str_split_fixed(pattern = " ",n = 2) -> 
    +  files_split
    + + + +
    • Conversion en tibble
    + + + +
    files_split %>% 
    +  as.tibble() -> 
    +  files_tibble
    + + + +

    J'utilise ensuite separate et transmute pour obtenir 3 colonnes, une avec le nom de fichier, une avec la largeur et une avec la hauteur au format numérique

    + + + +
    files_tibble %>%
    + separate(col = V2, sep = "x", into = c("width","height")) %>%
    +  transmute(
    +    path=V1,
    +    width = width %>% as.numeric(),
    +    height = height %>% as.numeric(),
    +  ) -> files_attr
    + + + +

    Je filtre ensuite les fichiers à supprimer

    + + + +
    files_attr %>% 
    +  filter(width <= 720 & height <= 720) -> to_delete
    + + + +

    J'exporte la liste de fichiers à supprimer

    + + + +
    to_delete$path %>% write_lines("to_delete.txt")
    + + + +

    Supprimer les fichiers avec bash

    + + + +

    De retour au terminal bash, je supprime les fichiers en utilisant xargs pour éviter un dépassement de capacité.

    + + + +
    cat to_delete.txt | xargs -0 -I {} rm "{}"
    + + + +

    Conclusion

    + + + +

    Dans ce billet, j'ai montré comment faire le tri dans un répertoire de photos à l'aide d'un script qui permettra de sauver beaucoup de temps à un utilisateur averti.

    + + + + + +

    Crédit photo

    + + + +

    Image by S. Hermann & F. Richter from Pixabay

    +]]>
    + + 81 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[La synchronisation avec Nextcloud, Thunderbird et Android]]> + https://jevalide.ca/2021/06/02/synchronisation-avec-nextcloud-thunderbird-android/ + Wed, 02 Jun 2021 10:00:00 +0000 + + https://blog.jevalide.ca/wp/?p=142 + + +

    Cette présentation présente quelques outils permettant la synchronisation entre un calendrier, des contacts et des tâches entre un fournisseur de courriel, une installation Nextcloud, un poste informatique avec le client Thunderbird ainsi qu'un appareil mobile Android. Je l'ai présentée pour la première fois le 2 juin 2021 lors des Rencontres Linux Montréal-Québec.

    + + + + + +

    Les protocoles

    + + + +

    Cette présentation évoque plusieurs protocoles de communication sur Internet, voici un tableau qui les résume bien.

    + + + +
    AbréviationNomDescription
    IMAPsInternet Message Access Protocol (avec TLS)Permets d'accéder à ses courriers électroniques directement sur les serveurs de messagerie
    WebDAVWeb-based Distributed Authoring and Versioningextension du protocole HTTP qui permet la gestion de fichiers avec des serveurs distants
    CalDAVCalendaring Extensions to WebDAVÉdition de calendrier en ligne
    CardDAVvCard Extensions to WebDAVGérer un carnet d'adresses
    + + + +

    Synchronisation du calendrier

    + + + +
    + + + +

    Création du calendrier dans Nextcloud Agenda

    + + + +

    L'application Nextcloud Agenda se nomme Calendar dans le magasin d'applications.

    + + + +
    https://mon.domaine/settings/apps
    + + + +

    Copy

    + + + +

    C'est une interface au serveur CalDAV qui est installé nativement avec Nextcloud.

    + + + +
    Application Calendar installée
    + + + +

    Cette application permet de créer des agendas pour différents sujets.

    + + + +
    Nouvel agenda
    + + + +
    Nommer le nouvel agenda
    + + + +

    Pour des fins de démonstration, nous allons créer une nouvelle activité, en cliquant sur la date correspondante

    + + + +
    Nouvelle activité
    + + + +

    Dans la section Paramètres & Importation

    + + + +
    Paramètres & Importation
    + + + +

    On peut obtenir un lien de partage CalDAV que l'on pourra utiliser pour les étapes suivantes. Ce lien s'applique pour tous les agendas définis dans l'instance de Nextcloud.

    + + + +
    Copier l'adresse CalDAV principale
    + + + +

    Le lien pour notre instance prend la forme suivante:

    + + + +
    https://mon.domaine/remote.php/dav
    + + + +

    Copy

    + + + +

    Ce lien sera notamment utile avec l'application DAVx5 qui sera présentée plus bas.

    + + + +

    Synchronisation avec CalDAV auprès du fournisseur de courriel

    + + + +

    Pour se synchroniser avec le calendrier de notre fournisseur de courriel, il faut d'abord se créer un mot de passe d'application qui va pouvoir accéder, en plus du courriel et des contacts, aux calendriers.

    + + + +

    Chez Fastmail, la configuration est comme suit:

    + + + +
    Fastmail App Password
    + + + +

    Je génère deux mots de passe d'application:

    + + + +
    • Le premier sera utilisé dans le client Thunderbird
    • Le second sera utilisé dans le client Nextcloud Mail
    + + + +

    Il serait aussi possible de gérer directement mes calendriers depuis l'interface web de Fastmail, mais puisque je vais utiliser un client de bureau, ceci risquerait de créer des erreurs de synchronisation parce qu'il y aurait une boucle. Si je n'utilisais pas Thunderbird, ce serait une option appropriée.

    + + + +

    Installation de TbSync et CalDAV and CardDAV

    + + + +

    Les deux modules requis dans Thunderbird pour assurer la synchronisation sont TbSync et Provider pour CalDAV et CardDAV.

    + + + +
    Modules complémentaires
    + + + +

    Synchronisation de Nextcloud Agenda avec TbSync

    + + + +

    Dans le menu Édition (afficher avec la touche Alt), sélectionner Paramètres de synchronisation (TbSync)

    + + + +
    Paramètres de synchronisation (TbSync)
    + + + +

    Ajouter un nouveau compte - CalDAV et CardDAV

    + + + +
    + + + +

    Choisir la configuration automatique

    + + + +
    TbSync - Sélectionner Configuration automatique
    + + + +

    Choisir un nom pour le compte, puis entrer votre nom utilisateur et mot de passe de votre instance Nextcloud, puis l'adresse du service Nextcloud.

    + + + +
    TbSync - Information de connexion
    + + + +

    Ensuite, vérifier que la configuration automatique a bien fonctionné

    + + + +
    TbSync - Configuration automatique complétée
    + + + +

    Pour plus de détail sur les options, voir la page Synchronizing with Thunderbird du site officiel de Nextcloud

    + + + +

    Configuration de Lightning

    + + + +

    Pour synchroniser les agendas de Nextcloud avec Lightning, il faut les sélectionner dans le gestionnaire de comptes TbSync, puis, cliquer sur Synchroniser maintenant.

    + + + +
    + + + +

    Synchronisation des calendriers vers Android

    + + + +

    L'application DAVx5, disponible dans F-Droid ou Google Play (https://play.google.com/store/apps/details?id=at.bitfire.davdroid&referrer=utm_source%3Dhomepage) permet de synchroniser les calendriers avec le calendrier local de votre téléphone, ce qui peut être pratique pour recevoir des alertes.

    + + + +

    Synchronisation des tâches

    + + + +

    Lien entre Nextcloud Deck et Nextcloud Agenda

    + + + +

    Toutes les tâches créées dans Nextcloud Deck qui ont une date de début ou de fin seront synchronisées avec Nextcloud Agenda

    + + + +
    + + + +

    et seront synchronisées dans les calendriers de Lightning.

    + + + +
    + + + +

    De plus, chaque Tableau Deck sera synchronisé avec les tâches de Lightning.

    + + + +
    + + + +

    Tâches dans Lightning filtrées par agenda

    + + + +

    Lightning ne permet pas de séparer les tâches par tableau et par listes. Elles sont toutes affichées dans une seule liste.

    + + + +

    Cependant, le menu Agenda permet de filtrer les tâches affichées par tableau.

    + + + +
    + + + +

    Synchronisation des contacts

    + + + +

    Configuration du carnet d'adresses dans Thunderbird

    + + + +

    Dans Thunderbird, les contacts synchronisés avec CardDAV via TbSync vont apparaître dans des carnets d'adresses distincts de ceux déjà configurés par Thunderbird

    + + + +
    + + + +

    Pour synchroniser tous mes contacts, je les ai déplacés depuis le carnet Adresses personnelles vers Contacts.

    + + + +

    Importation des contacts depuis Android

    + + + +

    Pour importer les contacts depuis Android et les synchroniser avec Nextcloud Contacts, l'application DAVx5 fonctionne aussi très bien et nativement avec le répertoire de contacts de votre appareil.

    + + + +

     Article précédent

    +]]>
    + + 142 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[Logiciel libre au Québec: Revue 2020]]> + https://jevalide.ca/2020/12/30/revue-2020-logiciel-libre-au-quebec/ + Wed, 30 Dec 2020 15:00:00 +0000 + + https://blog.jevalide.ca/wp/?p=77 + + +

    Introduction

    + + + +

    Je vous partage dans son intégrale une revue de l'année 2020 au niveau du logiciel libre au Québec. Celle-ci a été écrite pour l'association LinuQ dont je suis le président.

    + + + +
    Logo de LinuQ
    + + + +

    Un point de vue du logiciel libre au Québec

    + + + +

    Bonjour les libristes,

    + + + +

    Voici quelques mots de fin d'année de la part de votre association LinuQ. Nous faisons la promotion du logiciel libre dans la grande région de Québec.

    + + + +

    Les thèmes saillants

    + + + +

    Quelques grands thèmes ont fait surface en cette année hors du commun. Tout d'abord, l'esprit collaboratif du libre a permis de développer rapidement des solutions logicielles et matérielles à la crise. Nous avons pu soutenir notre système de santé, le télétravail et l'éducation à distance. Puis, avec l'apparition des fameuses applications de traçage, les enjeux de vie privée. L'élection américaine a prouvé que les réseaux sociaux privatifs et les GAFAM ont de plus en plus un pouvoir politique imposant. Nous ne devons pas oublier que cette année fut marquée par des incendies de forêt, tempêtes et ouragans. Ceux-ci ont touché de nombreux pays, qui nous rappellent que notre monde est fragile.

    + + + +

    Les évènements marquants

    + + + +

    Notre communauté du libre a pu compter, dès mars, sur un Libreplanet virtuel, avec la présentation de Hackers and Hospitals, de nouveautés GNU Health pour les hôpitaux, et d'un recensement de solutions de communication et collaboration à distance.

    + + + +
    + + + +

    LinuQ a aussi tenu quelques séances ce printemps et un cet automne sur Jitsi. En septembre, nous avons souligné la Journée du logiciel libre avec de nombreux ateliers, accessibles en réécoute. De plus, nous pouvons compter chaque mois sur l'organisation des Linux Meetup par Martial Bigras et ses invités. Enfin, nous avons même eu droit à un concours Capture the Flag (CTF) pour célébrer le dernier anniversaire de cette initiative.

    + + + +

    Au Canada

    + + + +

    Au Canada, le gouvernement a fait le choix du logiciel libre pour son application de traçage. Développée au départ par COVID Shield, un groupe composé de bénévoles de Shopify, celle-ci offre davantage de transparence dans le processus que plusieurs autres options et permet aux intéressés de mieux peser le pour et le contre.

    + + + +

    Le logiciel libre dans la francophonie

    + + + +
    Logo de GNU Jami
    Logo de GNU Jami
    + + + +

    Quelques produits prometteurs de la francophonie ont vu apparaitre de nouvelles versions majeures en 2020. Notamment, GNU Jami a fait peau neuve avec son mode-conférence avec Together, créé par l'entreprise québécoise Savoir Faire Linux. Ajoutons le projet français Mobilizon, qui vise à remplacer les évènements Facebook et Meetup, est maintenant disponible pour déploiement sur les serveurs privés.

    + + + +
    Logo de SantéLibre
    Logo de SantéLibre
    + + + +

    L'initiative SantéLibre a aussi vu le jour pour unir les développeurs et développeuses au réseau de la santé.

    + + + +
    Logo de CodeCarbon
    + + + +

    Tout dernièrement, le MILA, qui a tenté de publier une application de traçage sans succès, a lancé un outil, CodeCarbon qui permet de calculer et de réduire l'impact environnemental de l'infonuagique, et ce en logiciel libre.

    + + + +

    Conclusion

    + + + +

    Enfin, pour ajouter un peu de joie du temps des fêtes dans vos terminaux, voici quelques ressources.

    + + + +

    + + + +

    Nous souhaitons à tous et toutes une année 2021 pleine de retrouvailles !

    + + + +

    Santé !

    + + + +

    + + + +

    François Pelletier

    +]]>
    + + 228 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[Un plan B en techno, c'est essentiel !]]> + https://jevalide.ca/2021/06/20/un-plan-b-en-techno-cest-essentiel-sim-swapping/ + Sun, 20 Jun 2021 15:00:00 +0000 + + https://blog.jevalide.ca/wp/?p=101 + + +

    Introduction au plan B

    + + + +

    Voici une situation où avoir un plan B m'a été très utile.

    + + + +

    Périodiquement, je fais une tournée de mes technologies et je regarde comment je peux améliorer ma sécurité et ma productivité.

    + + + +

    Ce fameux code PUK

    + + + +

    Hier, j’entends parler de 🏴‍☠️SIM swapping🏴‍☠️ en écoutant la French Connection (un super podcast de sécurité informatique). Je me dis que je devrais regarder les paramètres de mon téléphone. Mais, par mégarde, en essayant de configurer mon mot de passe de carte SIM, je verrouille mon téléphone 🔒. Je dois contacter mon opérateur de mobile pour avoir un code PUK. Il permet de réinitialiser le mot de passe de la carte SIM.

    + + + +
    Les informations de sécurité d'une carte SIM: le PIN et le PUK
    Les informations de sécurité d'une carte SIM: le PIN et le PUK. Source
    + + + +

    Bien sur, pénurie de personnel oblige, c'est fermé à cet heure là ... (leçon à retenir, ne faites pas ça en soirée)

    + + + +

    Je me retrouve donc sans téléphone ni SMS durant quelques heures 😨. Ça se règle facilement avec le service client, heureusement.

    + + + +

    Mes plans B

    + + + +

    Tout ça pour vous dire que mes plans B pour la téléphonie et les textos ont été mis en branle 💡. J'utilise Signal pour les SMS, qui fonctionne aussi sans carte SIM. Pour la téléphonie, j'ai un compte Skype avec quelques dollars de crédit (ça coûte presque rien à utiliser)

    + + + +

    Pour utiliser mon téléphone verrouillé, j'ai enlevé ma carte SIM. Ceci dit, si mon téléphone avait été endommagé physiquement, je n'aurais plus eu d'appareil pour travailler 💩. Mais pour ça, j'ai une tablette qui contient un double de la plupart de mes logiciels. J'y ai aussi des applications Android pour mon gestionnaire de mot de passe et celui des clés de double authentification.

    + + + +

    Ce matin, après avoir pu obtenir ce fameux code PUK et réinitialiser le mot de passe de ma carte SIM, j'ai stocké ces informations dans mon gestionnaire de mots de passe. Et j'en ai profité pour faire une sauvegarde de celui-ci (cryptée, bien sur !)

    + + + +

    Tout ça pour vous dire qu'avoir des plans B et avoir une bonne compréhension des enjeux de sécurité, ça élimine beaucoup de stress. 😀

    + + + +

    Newsletter et plus de plans B !

    + + + +

    Je lance une newsletter à ce sujet où je donne des astuces pour être plus productifs et moins stressés avec la technologie.

    + + + +

    Il y aura aussi un programme de formation, où je vais partager toutes mes connaissances sur le sujet pour vous en faire profiter. Je ferai des annonces à mesure que le projet se précisera.

    + + + +

    Mais, en attendant, voici le lien de ma newsletter où je t'apprends entre autres à avoir un plan B en utilisant l'infonuagique de façon responsable et en maîtrisant la ligne de commande !

    + + +]]>
    + + 229 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[Rassemblons toutes les données des travaux routiers au Québec]]> + https://jevalide.ca/2021/06/29/rassemblons-toutes-les-donnees-des-travaux-routiers-au-quebec/ + Tue, 29 Jun 2021 15:00:00 +0000 + + https://jevalide.ca/?p=321 + + + + +

    Introduction

    + + + +

    Dans ce billet, je vais consolider les différents fichiers au format GPX des travaux routiers publiés par Transports Québec en un seul fichier GeoJSON. On pourra utiliser ensuite ce fichier dans n'importe quel logiciel de système d'information géographique (GIS).

    + + + +

    Téléchargement des données de travaux routiers

    + + + +
    + + + +

    Je vais d'abord télécharger les données en utilisant le logiciel wget en ligne de commande bash et une boucle pour chacune des régions ayant des fichiers disponibles.

    + + + +
    #!/bin/bash
    +for i in $(echo "for (i=1;i<=13;i++) i*1000"| bc)
    +do
    +wget "https://www.quebec511.info/fr/Diffusion/EtatReseau/TravauxGps.aspx?idreg=${i}&p=0&action=gps" \
    +--output-document="travaux_gps_${i}.gpx"
    +done
    + + + +

    Un des principaux avantages d'avoir codé cette opération de téléchargement sous la forme d'un script en ligne de commande bash est que je peux l'exécuter à volonté pour automatiquement mettre à jour la liste de fichiers. De plus, il serait possible de l'exécuter périodiquement à l'aide d'un outil d'ordonnancement tel que cron.

    + + + +

    Préparation de l'environnement de travail en R

    + + + +

    Dans R, je charge d'abord les packages requis pour le traitement qui suit.

    + + + +
    library(sf)
    +library(dplyr)
    +library(stringr)
    +library(lubridate)
    +library(ggplot2)
    +library(ggmap)
    + + + +

    Je liste les fichiers GPX contenus dans le répertoire de travail:

    + + + +
    gpxfiles <- list.files("~/Nextcloud/gpx/",
    +                       pattern = "*.gpx")
    + + + +
    ##  [1] "travaux_gps_1000.gpx"  "travaux_gps_10000.gpx" "travaux_gps_11000.gpx"
    +##  [4] "travaux_gps_12000.gpx" "travaux_gps_13000.gpx" "travaux_gps_2000.gpx" 
    +##  [7] "travaux_gps_3000.gpx"  "travaux_gps_4000.gpx"  "travaux_gps_5000.gpx" 
    +## [10] "travaux_gps_6000.gpx"  "travaux_gps_7000.gpx"  "travaux_gps_8000.gpx" 
    +## [13] "travaux_gps_9000.gpx"
    + + + +

    Extraire les informations depuis les métadonnées avec une fonction

    + + + +

    Comme les fichiers GPX ont une capacité limitée à contenir une variété d'attributs associés aux entités géospatiales, les informations telles que les dates de début et de fin des travaux ou le numéro de la route concernée sont concaténées dans le champs name et desc.

    + + + +

    Je crée ici une fonction qui permet de lire un fichier GPX. Elle peut extraire les champs ainsi que la géométrie associée. Je vais retourner le tout sous la forme d'un data.frame. C'est la structure par défaut de traitement des données en R.

    + + + +
    getwaypoint <- function(gpxfile)
    +{
    +  gpxfile %>%
    +    st_read(layer = "waypoints", quiet=TRUE) %>%
    +    select(name, desc, geometry) %>%
    +    as.data.frame()
    +}
    + + + +

    La fonction lapply permet d'appliquer une fonction sur chacun des éléments d'une liste. Elle retourne ensuite une liste de même longueur. C'est l'équivalent de la list comprehension de Python.

    + + + +

    Traitement des données

    + + + +

    J'applique ici la fonction à la liste des chemins des fichiers créée précédemment.

    + + + +

    J'ajoute aussi une clé synthétique à chaque rangée (rowkey) afin de ne pas avoir à effectuer de fusion de tables sur des champs texte complexes (conseil d'ami, ne fusionnez jamais des données sur un champ en texte libre).

    + + + +

    J'ajoute la date du jour dans une colonne, afin d'identifier la journée où les données ont été téléchargées. Cette information n'apparaît pas dans le fichier d'origine.

    + + + +
    mywaypoints <- lapply(gpxfiles, getwaypoint) %>%
    +  bind_rows() %>%
    +  mutate(rowkey = seq_along(name),
    +         record_date = today())
    + + + +

    J'utilise ici une expression régulière afin d'extraire le type de travaux, la date de début et la date de fin depuis le champ name.

    + + + +
    name_groups <- mywaypoints$name %>%
    +  str_match(pattern = "^([A-Za-z]+)\\s+([0-9]{1,2}/[0-9]{1,2}/[0-9]{1,2})\\s+([0-9]{1,2}/[0-9]{1,2}/[0-9]{1,2})$") %>%
    +  `colnames<-`(c("name", "type", "date_debut", "date_fin")) %>%
    +  as.data.frame %>%
    +  mutate(rowkey = mywaypoints$rowkey)
    + + + +

    J'effectue un traitement similaire pour le champ desc qui contient le nom de la route, une date de début et de fin associée à la route ainsi que d'autres informations superflues.

    + + + +
    desc_groups <- mywaypoints$desc %>%
    +  str_match(pattern = "^(.*)\\s+([0-9]{1,2}/[0-9]{1,2}/[0-9]{1,2})\\s+([0-9]{1,2}/[0-9]{1,2}/[0-9]{1,2})\\s+") %>%
    +  `colnames<-`(c("desc", "route", "date_debut_rte", "date_fin_rte")) %>%
    +  as.data.frame %>%
    +  mutate(rowkey = mywaypoints$rowkey)
    + + + +

    Fusion des attributs

    + + + +

    Je fusionne ici les données extraites aux données originales en utilisant la clé synthétique (rowkey) que j'ai générée plus tôt. Je conserve seulement les champs qui ont des informations pertinentes à l'aide d'un select.

    + + + +
    mywaypoints2 <- mywaypoints %>%
    +  inner_join(name_groups, by = "rowkey") %>%
    +  inner_join(desc_groups, by = "rowkey") %>%
    +  select(
    +    record_date,
    +    type,
    +    date_debut,
    +    date_fin,
    +    route,
    +    date_debut_rte,
    +    date_fin_rte,
    +    geometry
    +  )
    + + + +

    Exporter notre fichier GeoJSON

    + + + +

    Pourquoi le GeoJSON ?

    + + + +

    Le GeoJSON est un format de données ouvert (il n'appartient pas à une entreprise) et il est très polyvalent. Il permet de stocker des données géospatiales ainsi que des tables d'attributs. Il est lisible par l'humain et est facile à importer dans tous les systèmes d'information géographiques. Ce qui inclus les plus simples comme Leaflet et les plus complets comme ArcGIS.

    + + + +

    Comme c'est aussi un fichier JSON, il peut être lu et interprété par tous les navigateurs web modernes.

    + + + +

    Allons-y

    + + + +

    Je me prépare ici à exporter les données. Comme la fonction utilisée ci-dessous ne permet pas d'écraser un fichier GeoJSON, je supprime ici le fichier s'il existe.

    + + + +
    export_geojson_path <- "~/Nextcloud/gpx/all.geojson"
    +succes.supprimer <- if (file.exists(export_geojson_path)) {
    +  file.remove(export_geojson_path)
    +}
    + + + +

    J'utilise la fonction st_write pour écrire un fichier GeoJSON aves les données finales.

    + + + +

    Visualisation des données de travaux routiers

    + + + +

    Enfin, avant de conclure ce billet, profitons-en pour visualiser les données à des fins de validation de qualité.

    + + + +

    Note: Ce n'est pas ici que l'on sort nos talents de graphiste, on valide seulement si les données font du sens sur la carte !

    + + + +
    mywaypoints2_df <- fortify(mywaypoints2)
    + + + +

    Je calcule d'abord l'étendue des données pour télécharger le fond de carte correspondant.

    + + + +
    mywaypoints2_bbox <- st_bbox(mywaypoints2_df$geometry) %>% as.list()
    + + + +

    Je télécharge ensuite le fond de carte.

    + + + +
    mapImage <- get_map(
    +  c(
    +    left = mywaypoints2_bbox$xmin,
    +    bottom = mywaypoints2_bbox$ymin,
    +    right = mywaypoints2_bbox$xmax,
    +    top = mywaypoints2_bbox$ymax
    +  ),
    +  maptype = "terrain",
    +  zoom = 7,
    +  source = "stamen"
    +)
    + + + +

    Enfin, j'affiche les points des travaux routiers sur une carte

    + + + +
    plot(st_transform(mywaypoints2_df$geometry, crs = 3857), 
    +     bgMap = mapImage, 
    +     pch = 3,
    +     main="Travaux routiers au Québec",
    +     axes = TRUE
    +     )
    + + + +
    Carte des travaux routiers au Québec
    + + + +

    Conclusion

    + + + +

    Dans ce billet, j'ai présenté une méthode avec le langage R pour rassembler des fichiers de points GPX en un seul fichier GeoJSON enrichi d'informations telles que les dates de début et de fin des travaux routiers. J'ai ensuite effectué une validation de données à l'aide d'une visualisation simple.

    + + + +

    Je vous souhaite bonne route et évitez les chantiers routiers si possible à l'aide de ces données !

    + + +]]>
    + + 321 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[La linguistique surprenante des commentaires Facebook - Attributs linguistiques]]> + https://jevalide.ca/2021/02/02/la-linguistique-surprenante-des-commentaires-facebook-1re-partie/ + Tue, 02 Feb 2021 15:00:00 +0000 + + https://jevalide.ca/?p=340 + + +
    La linguistique surprenante des commentaires Facebook
    + + + +

    Voici le premier billet d'une série portant sur l'analyse du contenu textuel de commentaires Facebook en lien avec des articles de la presse écrite. J'ai réalisé ce projet comme travail de session dans le cadre du cours IFT-7022 - Traitement automatique de la langue naturelle donné par Luc Lamontagne à l'Université Laval en automne 2019.

    + + + + + +

    Introduction

    + + + +

    Les commentaires extraits des fils de discussions sur des publications Facebook constituent une nouvelle forme de discours, complètement différent des textes formatés et normalisés qui proviennent de médias écrits. Leurs caractéristiques distinctes en tant que type littéraire à l'intersection de la critique et du dialogue vont demander des adaptations dans le traitement du langage naturel. Les attributs linguistiques, les entités nommées, la prise de position et les relations entre les commentaires seront abordés. Puis, on présente différentes approches de modélisation. Un exemple pratique permettra d'illustrer plusieurs concepts et de tirer quelques premières conclusions.

    + + + +

    Attributs linguistiques

    + + + +

    Analyse du discours

    + + + +

    Selon Baxter [3], l'analyse du discours, qui est principalement dérivée de la sociologie, se découpe en quatre composantes principales (p.11) :

    + + + +
    • La variabilité du langage (adaptation à l'audience et au contexte)
    • La nature du langage (descriptif, narratif, expressif ou humoristique)
    • Le répertoire (vocabulaire, grammaire, figures de style)
    • Les contextes sociopolitiques et psychologiques
    + + + +

    Observations: Le sens propre de chacun des commentaires est influencé par ces éléments. Ils peuvent représenter des attributs dans un modèle de classification de la pertinence par rapport à l'article en référence. Il faut noter que le modèle pourrait être biaisé, par exemple, en favorisant les commentaires qui ont un vocabulaire soutenu, davantage descriptif et sur un ton professionnel, c'est-à-dire similaire au style journalistique. Ce dernier pourrait ne pas être davantage en lien avec le contenu de l'article qu'un commentaire humoristique avec un niveau grammatical faible.

    + + + +

    Mécanismes d'emphase

    + + + +

    Selon Liebeskind et al. [8], les commentaires sur les réseaux sociaux présentent de nouvelles caractéristiques sémiotiques et linguistiques. En fait, on parle ici de sémiotique, car le discours n'est plus seulement signifié par des mots, mais aussi par des abréviations, des émojis, des onomatopées, des répétitions de caractères (en particulier la ponctuation).

    + + + +

    On ajoute une dimension linguistique, car en plus d'un jargon spécifique à ce type de communication, les commentaires sont souvent écrits dans un niveau de langage passant du soutenu au vulgaire dans le même fil de conversation. Ces différents comportements peuvent être rassemblés sous le nom de mécanismes d'emphase.

    + + + +

    Émojis et interjections

    + + + +

    Les émojis et les interjections sont une composante essentielle des commentaires retrouvés sur les réseaux sociaux. Plus d'un commentaire sur huit contient un émoji.

    + + + +

    Halté [7] a étudié en détail le rôle des émoticônes (tels que :-)) et des interjections (tels que le fameux lol). Leur normalisation inspirée des caractères japonais est nommée émojis (néologisme qui relie l'anglais emotion et la racine japonaise -ji représentant la notion de symbole). Il précise d'ailleurs que des tests de substitution ou de suppression permettent d'identifier le rôle modal de ces expressions (une sorte de facteur multiplicatif de la polarité ou valence du texte).

    + + + +

    Observations: La portée d'une émoticône, tout comme la portée d'une négation, peut être déterminée en effectuant une analyse syntaxique par relations ou par constituants. Mais, règle générale, l'auteur remarque que la portée s'étend toujours sur les éléments qui précèdent l'émoticône. Ceci peut parfois limiter la recherche des fragments de la phrase qui en sont affectés (lorsqu'ils ne sont pas à la fin du commentaire).

    + + + +

    Majuscules, emphases et répétitions

    + + + +

    Les commentaires sur les réseaux sociaux laissent aussi apparaître de nouveaux modes d'expressions basés sur la typographie. L'utilisation de majuscules est intuitive pour l'ajout d'emphase depuis des millénaires, selon le professeur Paul Luna [12], et était utilisée par les empereurs romains pour illustrer la grandeur de leurs conquêtes.

    + + + +

    Cependant, leur usage moderne est davantage considéré comme l'expression de la colère. L'ajout d'astérique est aussi un marqueur d'emphase, principalement utilisé dans les groupes de discussion en ligne, et se substitue aux caractères gras ou soulignés disponibles dans les traitements de texte.

    + + + +

    Ponctuations

    + + + +

    Plusieurs des auteurs cités dans ce rapport [6], [7], [8] notent aussi la présence fréquente de successions de plusieurs signes de ponctuation ou de la même lettre dans un mot. C'est un moyen additionnel de mettre de l'emphase. Notons que le TweetTokenizer de NLTK [4] compte même un paramètre pour limiter le nombre de successions d'un même jeton.

    + + + +

    Impact sur la classification des parties du discours

    + + + +

    Ces nouveaux attributs font de sorte qu'il ne sera plus possible d'utiliser avec autant de fiabilité les classificateurs de parties du discours (part of speech). Ils n'ont pas été conçus pour tenir compte de ces nouveaux éléments dans les phrases. Une approche retenue dans cette analyse pour augmenter la qualité de l'étiquetage est de séparer les émojis du contenu des phrases. Comme des modèles ne tiennent généralement pas compte de la casse ni de la présence de ponctuation à l'extérieur de la phrase, il ne sera pas nécessaire d'apporter d'autres modifications.

    + + + +

    Qualité des commentaires

    + + + +

    Schultes et al. [13] ont étudié les commentaires sur la plateforme de partage de vidéos YouTube. Le principal objectif était de classifier les commentaires selon différentes catégories de vidéos, en tenant compte à la fois des types de commentaires et de leur qualité.

    + + + +

    Les principaux constats de leurs travaux sont que les commentaires sont généralement mal perçus par les utilisateurs du site web, étant perçus comme agressifs, stupides et non pertinents par près de la moitié des utilisateurs. Environ un utilisateur sur huit serait enclin à laisser des commentaires, alors que plus de la moitié ne liraient que les premiers commentaires.

    + + + +

    Les types de commentaires correspondent à leur rôle : participer à une discussion, décrire son expérience de façon substantielle constitue un commentaire de qualité supérieure ou au contraire, un commentaire avec une forte charge sentimentale serait de qualité inférieure. Pour mesurer la qualité, ils ont utilisé l'outil SentiStrength, un outil d'analyse de sentiment spécialisé dans les commentaires de réseaux sociaux, ainsi qu'une liste de marqueurs émotionnels. Pour mesurer la pertinence, ils ont mesuré l'appariement de mots-clés dans le commentaire avec le titre du vidéo. Enfin, selon cette étude, l'ensemble des commentaires effectués sur un vidéo permettraient en soi de fournir une description adéquate du vidéo.

    + + + +

    Observations: On pourrait donc déduire, depuis ces travaux, que la pertinence d'un commentaire pourrait être mesurée par la contribution d'un commentaire individuel à cette représentation collective. Une hypothèse à valider serait de voir s'il est possible d'avoir cette même représentation du contenu des articles dans les commentaires qui leur sont associés.

    + + + +

    Suite

    + + + + + + + +

    Références

    + + + +

    [3] Judith A. Baxter. 2010. Discourse-analytic approaches to text and talk. In Research Methods in Linguistics, Lia Litosseliti (éd.). Continuum, 117‑137. https://research.aston.ac.uk/en/publications/discourse-analytic-approaches-to-text-and-talk

    + + + +

    [4] Steven Bird. 2002. Nltk: The natural language toolkit. In In Proceedings of the ACL Workshop on Effective Tools and Methodologies for Teaching Natural Language Processing and Computational Linguistics. Philadelphia: Association for Computational Linguistics. https://www.aclweb.org/anthology/P04-3031/

    + + + +

    [6] Mariza Georgalou. 2017. Discourse and identity on Facebook. Bloomsbury Academic, an imprint of Bloomsbury Publishing Plc, London. Consulté à l'adresse http://ariane.ulaval.ca/cgi-bin/recherche.cgi?qu=a2650955

    + + + +

    [7] Pierre Halté. 2018. Les émoticônes et des interjections dans le tchat. Lambert-Lucas, Limoges. Consulté à l'adresse http://ariane.ulaval.ca/cgi-bin/recherche.cgi?qu=a2767912

    + + + +

    [8] Chaya Liebeskind, Shmuel Liebeskind, et Yaakov HaCohen-Kerner. 2018. Comment Relevance Classification in Facebook. In Computational Linguistics and Intelligent Text Processing, Springer International Publishing, Cham, 241‑254. https://www.springerprofessional.de/en/comment-relevance-classification-in-facebook/16186518

    + + + +

    [12] Alice Robb. 2014. How Capital Letters Became Internet Code for Yelling. The New Republic (avril 2014). Consulté 21 décembre 2019 à l'adresse https://newrepublic.com/article/117390/netiquette-capitalization-how-caps-became-code-yelling

    + + + +

    [13] Peter Schultes, Verena Dorner, et Franz Lehner. 2013. Leave a Comment! An In-Depth Analysis of User Comments on YouTube. In Wirtschaftsinformatik. http://www.wi2013.de/proceedings/WI2013%20-%20Track%205%20-%20Schultes.pdf

    +]]>
    + + 340 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[La linguistique surprenante des commentaires Facebook - Entités nommées et relations]]> + https://jevalide.ca/2021/03/06/la-linguistique-surprenante-des-commentaires-facebook-2e-partie/ + Sat, 06 Mar 2021 15:00:00 +0000 + + https://jevalide.ca/?p=343 + + +
    + + + +

    Voici le second billet d'une série portant sur l'analyse du contenu textuel de commentaires Facebook en lien avec des articles de la presse écrite. Le premier billet peut être lu ici.

    + + + + + +

    Introduction

    + + + +

    Alors que le premier billet traitait des attributs linguistiques des commentaires, nous nous intéressons ici aux entités nommées, aux prises de parole et aux relations entre les commentaires.

    + + + +

    Entités nommées

    + + + +

    Lieu

    + + + +

    Georgalou [6] décrit différentes approches pour identifier les marqueurs de localisation dans les commentaires sur Facebook. Tout d'abord, il y a l'usage de toponymes et d'anthroponymes (en particulier les gentilés). La localisation peut aussi être liée à un élément culturel (site touristique, régime alimentaire, évènement), à une personnification (nationalité, appartenance ou personnalités politiques) ou à une relativisation (par des adverbes ou adjectifs démonstratifs).

    + + + +

    Observations: Il sera essentiel de pouvoir ramener ces différents marqueurs de localisation à une forme normalisée pour en faire l'analyse et la comparaison avec les entités présentes dans le texte de l'article en question. De plus, il sera nécessaire ici de pouvoir utiliser une notion de méronymie ou d'holonymie dans la représentation pour en établir la pertinence. Un index géographique composé de données sémantiques telles que la base de données GeoNames sera très utile pour cette tâche.

    + + + +

    Temps

    + + + +

    Toujours selon Georgalou [6], différents types de marqueurs temporels sont utilisés dans les commentaires. Ces marqueurs peuvent représenter des durées, des moments, des références à des évènements historiques ou culturels, mais souvent aussi une référence relative à l'âge (anniversaire, évènement, génération ou cohorte) ou à une expérience vécue par l'utilisateur.

    + + + +

    Le temps peut aussi être mesuré avec un nombre d'évènements. Certaines formes de ponctuation ou d'interjections peuvent exagérer la portée d'un marqueur temporel. On pourrait aussi ajouter la présence d'émojis représentant des concepts temporels. Tout comme pour les lieux, on peut aussi retrouver des adverbes.

    + + + +

    Observations: Pour utiliser ces entités mentionnées dans les commentaires dans la mesure de leur pertinence, il sera nécessaire de:

    + + + +
    • bien identifier les marqueurs de temps dans l'article;
    • extraire les dates des évènements cités;
    • mesurer les durées entre ces différents instants.
    + + + +

    Prise de parole

    + + + +

    Expertise

    + + + +

    Georgalou démontre aussi l'usage des commentaires sur Facebook pour prétendre à une forme d'expertise, étaler sa culture et son éducation et aussi s'approprier la maîtrise d'un sujet. Le réseau social est utilisé pour projeter une image positive du niveau d'éducation par les utilisateurs.

    + + + +

    Cette expertise est illustrée par:

    + + + +
    • le choix de vocabulaire spécifique au domaine professionnel ou éducatif;
    • l'usage de phrases impératives ou interrogatives;
    • le jugement parfois sarcastique du travail des autres;
    • l'ajout de références en lien avec le domaine d'expertise.
    + + + +

    Observations: Pour mesurer la pertinence de cette expertise avec le contenu de l'article, il faudra identifier les principaux sujets de celui-ci. Puis, constater si au moins un d'entre eux correspond à l'expertise prétendue par l'utilisateur.

    + + + +

    Position

    + + + +

    La prise de position relie le commentaire aux réalités socioculturelles traitées dans l'article journalistique. Ces positions sont exprimées par des adjectifs et des adverbes évaluatifs, des verbes affectifs et cognitifs, des modalités, des pronoms génériques, de l'ironie, des questions rhétoriques, des citations ainsi que l'utilisation de mécanismes d'emphase. On notera aussi l'usage de nombreuses images, notamment les memes, quoique ce n'est pas le sujet de ce rapport.

    + + + +

    Observations: On remarque ici que l'on devra utiliser des étiquettes plus détaillées que celles qu'on retrouve notamment dans Universal Dependancies [1] pour identifier les parties du discours impliquées dans la prise de position. Pour ce faire, il sera nécessaire d'utiliser conjointement les parties du discours et une base sémantique telle que WordNet pour augmenter le niveau de détail contenu dans les étiquettes.

    + + + +

    Relations entre les commentaires

    + + + +

    Halté [7] caractérise le clavardage par:

    + + + +
    • l'intermittence entre la discussion synchrone et asynchrone,
    • la forte présence d'indices contextuels,
    • les tours de parole segmentés,
    • les conversations entrelacées,
    • la présence ou l'absence de séparations syntaxiques et
    • la présence de mécanismes d'emphase.
    + + + +

    Observations: Ces caractéristiques du clavardage sont à considérer dans l'étude de la pertinence des commentaires par rapport à un article. On ne retrouve pas seulement qu'une relation entre le commentaire et l'article, mais aussi un ensemble de relations entre les commentaires.

    + + + +

    Les types de relations

    + + + +

    Ces types de relations peuvent, en quelque sorte, constituer une mesure qui représente la variable réponse dans un modèle de classification

    + + + +
    • L'intertextualité se définit comme la relation du commentaire avec les commentaires précédents, ainsi qu'avec la publication originale. C'est le concept qui peut être représenté par une mesure de distance entre les commentaires, ainsi qu'entre un commentaire et la publication. Dans Facebook, les commentaires qui répondent à un autre commentaire sont organisés sous une structure parent-enfant.
    • L'interdiscursivité se définit comme l'entrecroisement de différents dialogues indépendants, dans un même fil de discussion.
    • Les commentaires peuvent ainsi parfois être associés à la mauvaise discussion et mener à des quiproquos ou à des interprétations humoristiques. C'est pourquoi sur Facebook, fort heureusement, plusieurs utilisateurs vont identifier l'interlocuteur précédent dans un commentaire à l'aide de son nom d'utilisateur.
    • Il sera important de pouvoir associer le commentaire au bon fil de discussion pour en mesurer la pertinence. Pour identifier cette propriété dans les commentaires, un classificateur pourra apposer une étiquette à un commentaire qui indique à quel dialogue il appartient.
    • La multimodalité se définit comme l'interchangeabilité des différents modes de communication au sein d'une même discussion. C'est l'aspect multimédia des discussions sur les réseaux sociaux, où le texte, les images et les vidéos se succèdent.
    • On pourrait ici mesurer le nombre de changements de modalité du discours dans une même discussion. Il faut noter cependant que cette fonctionnalité peut être désactivée par le propriétaire de la page.
    + + + +

    Suite

    + + + +

    La suite de ce projet dans les prochains billets !

    + + + +

    Billet(s) précédent(s)

    + + + + + + + +

    Billets suivants

    + + + + + + + +

    Références

    + + + +

    [1] 2019. Universal Dependencies 2.5. Consulté à l'adresse http://hdl.handle.net/11234/1-3105

    + + + +

    [6] Mariza Georgalou. 2017. Discourse and identity on Facebook. Bloomsbury Academic, an imprint of Bloomsbury Publishing Plc, London. Consulté à l'adresse http://ariane.ulaval.ca/cgi-bin/recherche.cgi?qu=a2650955

    + + + +

    [7] Pierre Halté. 2018. Les émoticônes et des interjections dans le tchat. Lambert-Lucas, Limoges. Consulté à l'adresse http://ariane.ulaval.ca/cgi-bin/recherche.cgi?qu=a2767912

    +]]>
    + + 343 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[La linguistique surprenante des commentaires Facebook - 3e partie]]> + https://jevalide.ca/2021/03/17/la-linguistique-surprenante-des-commentaires-facebook-3e-partie/ + Wed, 17 Mar 2021 15:00:00 +0000 + + https://jevalide.ca/?p=347 + + +
    + + + +

    Voici le troisième billet d'une série portant sur l'analyse du contenu textuel de commentaires Facebook en lien avec des articles de la presse écrite. Le second billet peut être lu ici.

    + + + + + +

    Introduction

    + + + +

    Alors que le second billet traitait des entités nommées, prises de parole et relations entre les commentaires, nous parlerons ici de modélisation et présenterons les données qui seront analysées.

    + + + +

    Modélisation

    + + + +

    Représentation vectorielle

    + + + +

    Étant donné que les commentaires sont de courts textes, souvent formés à partir d'un très lange lexique, en tenant compte des nombreuses fautes d'orthographe et mécanismes d'emphase, leur représentation sous forme vectorielle est très creuse. Il faudra donc nécessairement utiliser une forme de réduction de dimensions. Liebeskind et al. [8] propose quatre approches : analyse sémantique latente (LSA), allocation dynamique de Dirichlet (LDA), projection aléatoire (Lemme de Johnson-Lindenstrauss) ou plongements de mots.

    + + + +

    Comme nos commentaires ne sont pas étiquetés, nous devons utiliser un apprentissage non supervisé. Les deux approches consistent à construire soit un modèle commun pour les articles et les commentaires, ou deux modèles distincts. Afin d'avoir une représentation qui est davantage axée vers les thèmes généraux, les auteurs recommandent d'utiliser des vecteurs denses et cours, tout au plus quelques centaines.

    + + + +

    Classification de la pertinence

    + + + +

    Selon les observations de Liebeskind et al. [8], les principaux obstacles à la modélisation de la pertinence des commentaires est la présence de salutations et de commentaires obscènes, les nombreux sous-entendus entre les commentaires (contexte latent) ainsi que la présence de sarcasme. Les commentaires qui ont été classés comme non pertinents étaient principalement des références implicites ou des salutations.

    + + + +

    Exemple d'application

    + + + +

    Description des corpus de textes

    + + + +

    Nous analyserons les articles provenant des pages Facebook de trois médias écrits francophones : Le Figaro (FIG), Radio-Canada (RC) et TVA Nouvelles (TVA). Pour chacun de ces médias, nous avons respectivement une publication Facebook contenant un lien vers un article journalistique, ainsi qu'un corpus de commentaires extraits depuis celle-ci.

    + + + +
    mediaNombre de publications
    FIG25
    RC22
    TVA24
    + + + +

    Le premier corpus étudié est constitué du texte des articles liés dans les publications (l'utilisateur de Facebook devant cliquer sur le lien pour y accéder). Le titre de l'article n'est pas inclus dans ce corpus. Le second corpus est constitué d'un ensemble de commentaires publiés par des utilisateurs du réseau social et associés à chacune des publications précédentes.

    + + + +
    mediaNombre de commentaires
    FIG7155
    RC3947
    TVA6262
    + + + +

    Ces deux corpus ont été créés à l'aide des données de commentaires extraites depuis l'application en ligne exportcomments.com [2] dans des fichiers XLSX. Les fichiers ont par la suite été utilisés par trois programmes Python :

    + + + +
    • Un premier pour extraire les commentaires depuis les fichiers téléchargés à l'aide de Pandas [10].
    • Un second pour extraire les textes depuis les URL disponibles dans les fichiers, par récupération de données (web scraping), en utilisant la librairie Python newspaper [11]. Du même coup, cette librairie permet d'extraction d'entités nommées et l'étiquetage des parties du discours.
    • Un troisième avec des fonctions d'extraction communes
    + + + +

    Suite

    + + + + + + + +

    Billet(s) précédent(s)

    + + + + + + + +

    Références

    + + + +
    • [2] 2019. exportcomments.com. Consulté à l'adresse https://exportcomments.com/
    • [8] Chaya Liebeskind, Shmuel Liebeskind, et Yaakov HaCohen-Kerner. 2018. Comment Relevance Classification in Facebook. In Computational Linguistics and Intelligent Text Processing, Springer International Publishing, Cham, 241‑254.
    • [10] Wes McKinney. 2010. Data Structures for Statistical Computing in Python. In Proceedings of the 9th Python in Science Conference, 51‑56.
    • [11] Lucas Ou-Yang. 2019. Newspaper3k: Article scraping & curation. Consulté à l'adresse https://github.com/codelucas/newspaper/
    +]]>
    + + 347 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[La linguistique surprenante des commentaires Facebook - 4e partie]]> + https://jevalide.ca/2021/03/22/la-linguistique-surprenante-des-commentaires-facebook-4e-partie/ + Mon, 22 Mar 2021 15:00:00 +0000 + + https://jevalide.ca/?p=349 + + +
    + + + +

    Voici le quatrième billet d'une série portant sur l'analyse du contenu textuel de commentaires Facebook en lien avec des articles de la presse écrite. Le troisième billet peut être lu ici.

    + + + + + +

    Introduction

    + + + +

    Alors que le troisième billet traitait de la modélisation et de la présentation des données qui sont analysées, nous traiterons ici de la méthodologie de traitement des données des articles et des commentaires, ainsi que de l'analyse statistique des commentaires.

    + + + +

    Méthodologie et algorithmes

    + + + +

    La plupart des analyses ont été effectuées à l'aide des différents algorithmes inclus dans la librairie NLTK et le logiciel Stanford CoreNLP [9].

    + + + +

    Traitement des articles et des commentaires

    + + + +

    La segmentation en phrases a été effectuée à l'aide de l'algorithme PunktSentenceTokenizer et la segmentation en mots à l'aide de ToktokTokenizer ou TweetTokenizer.

    + + + +

    L'étiquetage des parties du discours et l'extraction des entités nommées dans les articles ont été effectués à l'aide de l'analyseur Stanford CoreNLP. Seules les étiquettes de parties du discours suivantes ont été conservées : ['ADJ',’ADV’,’INTJ’,’NOUN’,’PROPN’,’VERB’] dans un dictionnaire Python. Les entités nommées ont aussi été enregistrées dans un dictionnaire Python.

    + + + +

    + + + +

    Traitement additionnel pour les commentaires

    + + + +

    Les références aux auteurs ont été identifiées listant les auteurs des commentaires , pour chacun des articles, puis en identifiant ceux-ci dans le texte des autres commentaires.

    + + + +

    Puis, les émojis ont été convertis en texte à l'aide de la librairie emoji pour Python [14]. Ils ont aussi été extraits dans un dictionnaire Python.

    + + + +

    La lemmatisation en français a été effectuée à l'aide du French LEFFF Lemmatizer de Claude Coulombe [5], qui est compatible avec la syntaxe utilisée dans la librairie NLTK et les étiquettes de parties du discours utilisées dans WordNet.

    + + + +

    On identifie les synsets réalistes pour chaque mot admissible depuis WordNet en convertissant les étiquettes de parties du discours identifiées depuis avec CoreNLP POS Tagger en étiquettes compatibles. On recherche ensuite le mot lemmatisé dans WordNet, et on filtre les résultats obtenus selon les parties du discours possibles.

    + + + +

    Analyse statistique des commentaires

    + + + +

    Les différentes métriques ont été calculées et les graphiques créés dans le programme analyse_articles.py qui sera présenté en détail dans un prochain article.

    + + + +

    Distribution du niveau de langage

    + + + +
    + + + +

    On observe une médiane entre 2 et 5 pour le nombre de mots ayant une étiquette parties du discours et un synset dans Wordnet. Ce nombre est remarquablement plus élevé pour les commentaires sur les publications de RC. Dans presque tous les cas, il est possible d'utiliser au moins un synset pour inférer le sens de la publication et ainsi établir une relation sémantique avec l'article.

    + + + +
    + + + +

    Dans plus de la moitié des cas, 75 % des mots ayant une étiquette parties du discours dans les commentaires sont présents dans WordNet.

    + + + +
    + + + +

    La majorité des commentaires contiennent entre deux et quatre types d'étiquettes de parties du discours.

    + + + +

    Distribution des marqueurs d'emphase

    + + + +
    + + + +

    Les émojis les plus fréquents, par une large proportion, expriment le rire. Le plus fréquent est Face With Tears of Joy.

    + + + +
    + + + +

    On retrouve généralement peu de mots en majuscules, mais les rares commentaires qui en contiennent en ont beaucoup. Cette caractéristique ne ferait cependant pas un bon attribut pour un modèle de classification.

    + + + +
    + + + +

    On remarque qu'il y a une quantité non négligeable de commentaires qui contiennent des ponctuations successives. Ce serait un attribut à considérer dans un modèle de classification.

    + + + +

    Indicateurs d'intertextualité

    + + + +

    Le principal indicateur de l'intertextualité est la référence directe à l'auteur d'un commentaire précédent.

    + + + +
    Proportion de références d'auteurs, par médias
    MediaProportion
    0FIG0.356813
    1RC0.351153
    2TVA0.0.351805
    + + + +

    On remarque ici que la proportion de commentaires qui contiennent de telles références est constante et est aussi relativement élevée, peu importe le média. On pourrait donc conclure qu'il s'agit d'un attribut possédant de bonnes caractéristiques pour un modèle de classification binaire.

    + + + +

    Un autre indicateur de l'intertextualité est l'usage de la deuxième personne, autant pour les pronoms que pour les articles possessifs. Cependant, ici, il n'est pas possible de savoir, sans devoir faire une analyse des coréférences, si la personne référée est l'auteur d'un commentaire ou une personne mentionnée dans l'article.

    + + + +
    Proportion de commentaires avec des pronoms ou articles à la 2e personne, par médias
    MediaProportion
    0FIG0.135150
    1RC0.200405
    2TVA0.179176
    + + + +

    Cet indicateur possède aussi de bonnes caractéristiques pour être un attribut dans un modèle de classification.

    + + + +

    Analyse statistique des relations entre commentaires et articles

    + + + +

    Entités nommées en commun

    + + + +

    Une façon d'évaluer la pertinence d'un commentaire est de dénombrer le nombre d'entités nommées communes entre ce commentaire et l'article auquel il réfère. Ici, on calcule, pour chaque commentaire, le nombre d'entités en commun avec l'article, puis on effectue la moyenne par article. Cette statistique est représentée sur la figure qui suit.

    + + + +
    + + + +

    On remarque que le nombre moyen d'entités référées par commentaire est d'environ 1/5. On peut donc dire qu'en moyenne, 20 % des commentaires réfèrent à une entité nommée de l'article. Afin d'augmenter potentiellement ce nombre, on pourrait étendre la liste des entités nommées à l'aide de relations sémantiques de méronymie.

    + + + +

    Groupes sémantiques en commun

    + + + +

    Une autre façon d'évaluer la pertinence est d'accumuler tous les synsets possibles d'un article et de chacun de ses commentaires et de calculer l'intersection de ces ensembles. On calcule ensuite la proportion des synsets provenant du commentaire qui se trouvent dans l'intersection. Enfin, on calcule la moyenne, par article, de cette proportion. On a donc un indicateur moyen de la distance sémantique entre l'article et l'ensemble de ses commentaires.

    + + + +

    Note : on calcule ici une proportion étant donné le nombre variable de synsets par parties du discours.

    + + + +
    + + + +

    On remarque ici une grande différence entre les distributions de cette statistique parmi les médias. Une hypothèse à vérifier serait que celle-ci permettrait de dresser un portrait global de la relation sémantique des commentaires produits par les abonnés d'un média aux articles publiés par celui-ci.

    + + + +

    Conclusion

    + + + +

    Dans ce rapport, on aborde les caractéristiques propres aux commentaires sur les réseaux sociaux. On décrit plusieurs approches possibles pour créer des attributs pour un modèle de classification de la pertinence. Des liens sont établis avec la plupart des techniques traditionnelles d'analyse et traitement du langage naturel. De plus, on présente certaines caractéristiques propres aux commentaires. Enfin, un exemple d'application est étudié et illustré avec plusieurs statistiques sur les attributs potentiels dans la modélisation. Les entités nommées et la sémantique pourraient représenter des composantes importantes pour mesurer la pertinence des commentaires.

    + + + +

    Billet(s) précédent(s)

    + + + + + + + +

    Références

    + + + + + + + +

    Références additionnelles

    + + + + +]]>
    + + 349 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[Données massives, apprentissage automatique et éthique]]> + https://jevalide.ca/2018/01/28/donnees-massives-apprentissage-automatique-et-ethique/ + Sun, 28 Jan 2018 15:00:00 +0000 + + https://jevalide.ca/?p=363 + + +

    Introduction

    + + + +

    En 2018, j'ai fait une présentation qui couvre un large spectre du monde des données massives.

    + + + +

    Voilà pour vous tous, une seconde présentation en points de forme tirée d'une conférence que j'ai donnée. L'enregistrement était horrible alors il n'a pas été conservé.

    + + + +

    Comment sont entreposées les données massives ?

    + + + +
    • SGBDR traditionnels: ne permettent pas de stocker ni d'exploiter efficacement des données massives.
    • NoSQL:
    • puissance de calcul
    • parallélisme
    • grappes de calcul.
    • Compromis:
    • Fusion de sources de données est plus difficile.
    • Absence de jointures de tables. - Indexation doit être effectuée par un autre logiciel tel que Lucene
    • Référence: [@han2011survey;@moniruzzaman2013nosql]
    + + + +

    Bases de données analytiques

    + + + +
    • Optimisées pour effectuer des calculs statistiques sur des ensembles de données.
    • On les appelle parfois bases de données en colonnes.
    • La plus connue est Apache HBase
    + + + +
    + + + +


    Source

    + + + +
    • Référence: [@chang2008bigtable]
    + + + +

    Les bases de données de documents

    + + + +
    • Permettent d'entreposer toute l'information par rapport à un évènement ou une profil dans un seul enregistrement.
    • Pas de schémas au préalable.
    • Données faciles à consommer pour une application web.
    • La plus connue est MongoDB
    + + + +
    + + + +


    Source

    + + + +

    Les graphes

    + + + +
    • Deux types de composantes: des noeuds et des arcs.
    • Chacunes d'elles possède des étiquettes et des propriétés.
    • Représenter des relations entre des entités et des concepts (graphe de propriétés).
    • Web sémantique: associer de la connaissance et des capacités de inférence logique aux pages web
    • [@angles2008survey; berners2001semantic]
    • La plus connue est Neo4j
    + + + +
    + + + +


    Source

    + + + +

    Les lacs de données

    + + + +
    • Le lac de données stocke tout type d'information non-structurées:
    • journaux applicatifs de serveurs web,
    • textes, images, vidéos, voix
    • Le plus connu est HDFS, le système de fichiers distribué de Apache Hadoop
    + + + +
    + + + +

    On fait quoi de ces données massives non-structurées?

    + + + +

    Journaux applicatifs

    + + + +

    Utilisation d'expressions régulières.

    + + + + + + + +
    + + + +

    Géo-localisation

    + + + + + + + +
    + + + +

    Textes et voix

    + + + +

    Analyse et traitement du langage naturel

    + + + +
    • Phonologie, Morphologie, Syntaxe, Sémantique,Raisonnement
    • Reconnaissance d'entités
      [@manning2014stanford].
    • Par exemple: Stanford CoreNLP
    + + + +
    + + + +

    Encodage

    + + + +
    • Sac de mots ou index inversé
    + + + +
    + + + +

    Images et vidéos

    + + + +

    Filtres convolutionnels

    + + + +
    + + + +


    Source

    + + + +

    Palettes de couleurs

    + + + +

    colour analysis of google images
    Source: Steven Kay CC BY 2.0

    + + + +

    Identification d'objets

    + + + +

    Illustration of the bag of words model for images along with the images clustering procedure
    Source

    + + + +

    Description textuelle

    + + + +

    models/research/im2txt at master tensorflow/models GitHub
    Source
    [@vinyals2017show;@sivic2009efficient]

    + + + +

    Quels algorithmes d'apprentissage automatique sont utilisés sur ces données massives ?

    + + + +

    Regroupement (Clustering)

    + + + +
    • Rassembler des individus en un nombre déterminé de groupes.
    • Avantage: Permet de créer des étiquettes lorsqu'on n'a pas de variable réponse
    • Inconvénient: Le nombre de groupes est choisi à l'avance
    + + + +
    Iris flower data set, clustered using k means (left) and true species in the data set (right)
    + + + +

    Source

    + + + +

    Modèles linéaires (GLM)

    + + + +
    • Identifie une relation linéaire entre plusieurs caractéristiques et une variable réponse.
    • Avantage: Tous les coefficient numériques peuvent être expliqués un par un.
    • Inconvénient: Prend pour hypothèse que la relation est linéaire.
    + + + +
    + + + +

    Source

    + + + +

    Arbres de décisions

    + + + +
    • Crée un modèle de décision discret
    • Prédire une variable réponse à partir de décisions
    • Hiérarchique, facile à expliquer
    + + + +
    Example diagram for decision tree. Picture created and uploaded by author.
    + + + +

    Source

    + + + +
    • Note: Les modèles de forêts aléatoires et de gradient boosting construisent plusieurs arbres pour obtenir davantage de précision. Ce sont des modèles très performants, mais difficiles à expliquer.
    + + + +

    Réseaux de neurones

    + + + +
    • Formés de composantes appelées neurones (modèles linéaires)
    • Populaires pour l'apprentissage profond.
    • Résultats très difficiles à expliquer (boîte noire)
    • Permettent un très grand nombre de caractéristiques en entrée. Idéal pour les données massives.
    + + + +
    + + + +

    Source

    + + + +

    Analyse de réseaux sociaux

    + + + +

    Traversée de graphes

    + + + +

    Trouver le chemin le plus court répondant à une ou plusieurs contraintes.

    + + + +

    A non-verbal description of three graph traversal algorithms: randomly, depth-first search, and breadth-first search.
    Source

    + + + +

    Segmentation de graphes

    + + + +

    Séparer un graphe en plusieurs sous-graphes en coupant le moins de liens possible.

    + + + +
    Graph_comparison
    + + + +

    Systèmes de recommendation

    + + + +

    Filtrage collaboratif

    + + + +
    • Utiliser les opinions et évaluations d'un groupe pour émettre des recommendations à un individu de ce groupe. [@terveen2001beyond]
    + + + +

    Exemple: Easyrec
    Easyrec_architecture
    Source

    + + + +

    Quelles sont les limites actuelles des algorithmes d'apprentissage automatique ?

    + + + +

    Quartet d'Anscombe

    + + + +
    • Quatre ensemble de données [@doi:10.1080/00031305.1973.10478966]
    • Caractéristiques statistiques quasiment identiques
    • En réalité très différents
    • Illustre l'importance de l'exploration des données avant la modélisation
    + + + +
    + + + +

    Source

    + + + +

    Le biais systémique et la discrimination

    + + + +

    Il est de plus en plus facile de cacher la discrimination au travers d'algorithmes. Il suffit d'entraîner l'algorithme sur des données basées sur des décisions passées pour y inclure tous les biais des personnes qui ont prises ces décisions.

    + + + + + + + +

    Les données en arrière-plan

    + + + +
    67. Ribeiro, Singh and Guestrin , Why Should I Trust You Explaining the Predictions of Any Classifier , In: ACM SIGKDD International Conference on Knowledge Discovery and Data Mining (KDD), 2016.
    + + + +

    [@ribeiro2016should]

    + + + +

    Comment vos données sont réellement utilisées ? La bonne façon

    + + + +

    Prévenir la fraude

    + + + +
    • Détection d'anomalies
    • Algorithmes rapides qui évoluent avec les nouveaux modèles de fraude: apprentissage machine et service web pour livrer les résultats lors de la transaction.
    • Inconvénient: Les modèles doivent être simples.
    + + + +

    Airbnb Engineering & Data Science: Architecting a Machine Learning System for Risk

    + + + +
    • Enjeu chez AirBNB: Les valeurs réponses observées (Ground truth) ne sont pas exactes, ce qui biaise le modèle et n'identifie pas correctement la fraude potentielle.
    • Leur conseil: Enregistrer toutes les transactions, si une nouvelle variable est identifiée comme vecteur de fraude potentielle, il y a un historique de disponible.
    • Conséquence: AirBNB conserve sur une longue période l'ensemble de leurs données transactionnelles.
    • Avantage: Ce sont des données issues d'une relation d'affaires.
    + + + +

    Éducation: Parcours de l'étudiant

    + + + +
    • Types de données recueillies
    • Travaux, examens, notes
    • Préférence et style d'apprentissage
    • Inscriptions
    • Échecs et reprises
    • Enseignant
    • Utilisations
    • Modéliser la probabilité d'un échec ou d'un décrochage [@yang2013turn]
    • Suggérer du matériel personnalisé à l'étudiant
      > it uses clustering algorithms to categories the students according to their learning capacity, needs, style and preferences
      Référence: How Machine Learning is Making Learning Interactive?
    + + + +

    Éducation: Adapter la pratique de l'enseignant

    + + + +
    • Aide à la résolution de problèmes
    + + + +

    Much of our current educational system can be described as "memorize, regurgitate, and forget." Students learn to "study for the test. […] Computers are very good in storage, retention, and regurgitation."

    + + + +

    Référence: Moursund, D.G. (2005, 2006). Brief introduction to educational implications of Artificial Intelligence. (CC BY-NC)

    + + + +

    Le futur de l'éducation

    + + + +
    • L'humain ne peut plus compétitionner l'ordinateur pour plusieurs tâches
    • Nouveaux modes d'enseignement: ce qui différencie l'humain
    + + + +

    Jack Ma on the future of education

    + + + +

    Soins de santé

    + + + +

    Les algorithmes d'apprentissage profond peuvent identifier des tumeurs cancéreuses dans l'imagerie médicale.

    + + + +

    Ex: Meilleure détection du cancer du sein

    + + + +
    Deep Learning System Improves Breast Cancer Detection
    + + + +

    Source

    + + + +

    Enjeu: il faut le consentement du patient pour partager les images.

    + + + +

    Entretien préventif

    + + + +
    • Manufacture: bris d'équipement
    • Services publics: électricité, aqueduc, voirie. Exemple: [@garcia2006simap;@zhang2016road]
    • Énergie: oléoducs et gazoducs [@el2014artificial]
    • Services publics: usage par les citoyens
    + + + +

    Machine Learning for Predictive Maintenance

    + + + +

    Comment les données massives sont réellement utilisées ? La mauvaise façon

    + + + +

    Weapons of math destruction

    + + + +

    Weapons of math destruction, which O’Neil refers to throughout the book as WMDs, are mathematical models or algorithms that claim to quantify important traits: teacher quality, recidivism risk, creditworthiness but have harmful outcomes and often reinforce inequality, keeping the poor poor and the rich rich.
    Review: Weapons of Math Destruction

    + + + +

    La bulle de confort

    + + + +

    Systèmes de recommendations:

    + + + +
    • Vont limiter la curiosité et l'exploration en maximisant la probabilité que le prochain choix de l'algorithme soit apprécié.
      Ex: Amazon, Netflix
    • Solution potentielle: tenir compte de la cusiosité et de la diversité dans l'algorithme
      Poster
      [@menk2015hybrid]
    • Vont éviter de choquer l'utilisateur avec des opinions divergentes des siennes. Ex: Facebook [@nguyen2014exploring]
    + + + +

    Segmentation de graphe:

    + + + +
    • Les réseaux sociaux vont utiliser cette technique pour limiter les interactions dans un sous-graphe.
    • Ex: Malgré des milliers d'abonnements Facebook ou Twitter, on voit toujours des publications des mêmes comptes.
    + + + +

    La surveillance de masse

    + + + +

    Les gouvernements utilisent le prétexte de la détection de nouveaux modèles de criminalité pour demander de plus en plus de données sur l'usage des moyens de communications par les citoyens.

    + + + +

    the future-orientation increasingly severs surveillance from history and memory and the quest for pattern-discovery is used to justify unprecedented access to data

    + + + +

    [@doi:10.1177/2053951714541861]

    + + + +

    The NYPD is notorious for its intransigence on open records requests from the press and the public, particularly concerning documentation about the department’s extensive use of surveillance technology. In recent years, lawsuits have been filed to disclose information about the department’s network of surveillance cameras, its use of X-ray scanners in public, and the deployment of facial recognition technology

    + + + +

    Transparency Advocates Win Release of NYPD “Predictive Policing” Documents

    + + + +

    La prédiction des récidivistes

    + + + +
    • Le modèle le plus utilisé (COMPAS) est secret, propriété de l'entreprise Northpointe, et n'est précis qu'à 60%
    • Le modèle a un fort biais ethnique
    + + + +

    Les "Fake News"

    + + + +
    • Le combat contre la "fausse actualité" pourrait glisser facilement vers la censure.
    • En particulier si les données d'entraînements sont étiquetées de façon subjective avec:
    • des listes de sites de contenus absolument faux
    • La nomination de sites de confiance absolue (Snopes, PolitiFact).
    + + + +

    Modern machine learning for natural language processing is able to do things like translate from one language to another, because everything it needs to know is in the sentence its processing - Ian Goodfellow, OpenAI

    + + + + + + + +

    Bibliographie

    + + + +

    Angles, Renzo, and Claudio Gutierrez. 2008. “Survey of Graph Database Models.” ACM Computing Surveys (CSUR) 40 (1): 1.

    + + + +

    Anscombe, F. J. 1973. “Graphs in Statistical Analysis.” The American Statistician 27 (1): 17–21. https://doi.org/10.1080/00031305.1973.10478966.

    + + + +

    Berners-Lee, Tim, James Hendler, and Ora Lassila. 2001. “The Semantic Web.” Scientific American 284 (5): 34–43.

    + + + +

    Chang, Fay, Jeffrey Dean, Sanjay Ghemawat, Wilson C Hsieh, Deborah A Wallach, Mike Burrows, Tushar Chandra, Andrew Fikes, and Robert E Gruber. 2008. “Bigtable: A Distributed Storage System for Structured Data.” ACM Transactions on Computer Systems (TOCS) 26 (2): 4.

    + + + +

    El-Abbasy, Mohammed S, Ahmed Senouci, Tarek Zayed, Farid Mirahadi, and Laya Parvizsedghy. 2014. “Artificial Neural Network Models for Predicting Condition of Offshore Oil and Gas Pipelines.” Automation in Construction 45: 50–65.

    + + + +

    Garcia, Mari Cruz, Miguel A Sanz-Bobi, and Javier del Pico. 2006. “SIMAP: Intelligent System for Predictive Maintenance: Application to the Health Condition Monitoring of a Windturbine Gearbox.” Computers in Industry 57 (6): 552–68.

    + + + +

    Han, Jing, E Haihong, Guan Le, and Jian Du. 2011. “Survey on NoSQL Database.” In Pervasive Computing and Applications (ICPCA), 2011 6th International Conference on, 363–66. IEEE.

    + + + +

    Lyon, David. 2014. “Surveillance, Snowden, and Big Data: Capacities, Consequences, Critique.” Big Data & Society 1 (2): 2053951714541861. https://doi.org/10.1177/2053951714541861.

    + + + +

    Manning, Christopher, Mihai Surdeanu, John Bauer, Jenny Finkel, Steven Bethard, and David McClosky. 2014. “The Stanford CoreNLP Natural Language Processing Toolkit.” In Proceedings of 52nd Annual Meeting of the Association for Computational Linguistics: System Demonstrations, 55–60.

    + + + +

    Menk dos Santos, Alan. 2015. “A Hybrid Recommendation System Based on Human Curiosity.” In Proceedings of the 9th ACM Conference on Recommender Systems, 367–70. ACM.

    + + + +

    Moniruzzaman, ABM, and Syed Akhter Hossain. 2013. “Nosql Database: New Era of Databases for Big Data Analytics-Classification, Characteristics and Comparison.” arXiv Preprint arXiv:1307.0191.

    + + + +

    Nguyen, Tien T, Pik-Mai Hui, F Maxwell Harper, Loren Terveen, and Joseph A Konstan. 2014. “Exploring the Filter Bubble: The Effect of Using Recommender Systems on Content Diversity.” In Proceedings of the 23rd International Conference on World Wide Web, 677–86. ACM.

    + + + +

    Ribeiro, Marco Tulio, Sameer Singh, and Carlos Guestrin. 2016. “Why Should i Trust You?: Explaining the Predictions of Any Classifier.” In Proceedings of the 22nd ACM SIGKDD International Conference on Knowledge Discovery and Data Mining, 1135–44. ACM.

    + + + +

    Sivic, Josef, and Andrew Zisserman. 2009. “Efficient Visual Search of Videos Cast as Text Retrieval.” IEEE Transactions on Pattern Analysis and Machine Intelligence 31 (4): 591–606.

    + + + +

    Terveen, Loren, and Will Hill. 2001. “Beyond Recommender Systems: Helping People Help Each Other.” HCI in the New Millennium 1 (2001): 487–509.

    + + + +

    Vinyals, Oriol, Alexander Toshev, Samy Bengio, and Dumitru Erhan. 2017. “Show and Tell: Lessons Learned from the 2015 Mscoco Image Captioning Challenge.” IEEE Transactions on Pattern Analysis and Machine Intelligence 39 (4): 652–63.

    + + + +

    Yang, Diyi, Tanmay Sinha, David Adamson, and Carolyn Penstein Rosé. n.d. “Turn on, Tune in, Drop Out: Anticipating Student Dropouts in Massive Open Online Courses.” In.

    + + + +

    Zhang, Lei, Fan Yang, Yimin Daniel Zhang, and Ying Julie Zhu. 2016. “Road Crack Detection Using Deep Convolutional Neural Network.” In Image Processing (ICIP), 2016 IEEE International Conference on, 3708–12. IEEE.

    +]]>
    + + 363 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[Surmortalité COVID-19 au Québec: analyse avec R]]> + https://jevalide.ca/2020/12/07/surmortalite-covid-19-au-quebec-analyse-avec-r/ + Mon, 07 Dec 2020 15:00:00 +0000 + + https://jevalide.ca/?p=419 + + + + +

    Introduction

    + + + +

    Je me lance aujourd'hui avec ce premier billet technique sur un sujet d'actualité: la surmortalité causée par le COVID-19. Sujet de controverse dans l'opinion publique, c'est selon moi la réelle mesure de la gravité de la pandémie, car elle est indépendante des décisions politiques ou des volumes de tests.

    + + + +

    Comment mesurer la surmortalité

    + + + +

    En construisant un modèle de séries chronologiques et en mesurant la déviation des réalisations (cas réels) en dehors de la prédiction, nous obtenons la surmortalité (ou dans le cas contraire, la sous-mortalité). Nous pouvons aussi calculer l'excès au delà d'un intervalle de confiance.

    + + + +

    Je cherche ici à déterminer si les statistiques de décès attribués à la COVID-19 sont réalistes. Mon approche se base sur les données de la mortalité hebdomadaire colligées par l'Institut de la Statistique du Québec, qui serviront à construire le modèle et à le tester, ainsi que les données quotidiennes de décès liés à la COVID-19 compilées par Isha Berry et le COVID-19 Canada Open Data Working Group, qui contiennent les cas de décès identifiés à la COVID-19.

    + + + +

    Observation des données

    + + + +

    Les données hebdomadaires de décès vont servir de base afin de construire un modèle de séries chronologiques. Voici l'historique de données que nous utiliserons. Ces données sont combinées selon le sexe pour des fins de simplification des analyses.

    + + + +
    Nombre hebdomadaire de décès au Québec, 2010-2020
    + + + +

    Les données de l'année 2020 seront utilisées comme données de test.

    + + + +

    La dernière semaine considérée dans ces données correspond à la semaine CDC 43 de l'année 2020.

    + + + +

    Nous voulons prédire le nombre de décès qui auront lieu dans les 43 premières semaines de 2020 à partir des observations des 521 semaines précédentes. Ensuite, nous comparerons les résultats obtenus aux statistiques officielles afin d'estimer la surmortalité liée à l'épidémie de COVID-19.

    + + + +

    Décomposition de la série chronologique

    + + + +

    Ce graphique illustre une décomposition de la série chronologique selon la méthode classique de la moyenne mobile.

    + + + +
    moyenne mobile
    + + + +

    On remarque une forte saisonnalité due à la saison hivernale où on enregistre plus de décès, ce qui correspond aussi aux pics de fréquentation des hopitaux.

    + + + +

    Modèle TBATS pour prédire les décès de 2020-2021

    + + + +

    On effectue les prédictions avec le modèle TBATS (Exponential smoothing state space model with Box-Cox transformation, ARMA errors, Trend and Seasonal components), une méthode pour les séries intégrées (tendance positive) avec des motifs de saisonnalité irréguliers.

    + + + +
    Préditions de la mortalité du modèle TBATS
    + + + +

    Test de la prédiction

    + + + +

    On effectue une superposition des données observées aux données prédites, ce qui nous permet de constater l'erreur de prédiction du modèle de séries chronologique.

    + + + +
    Nombre de décès actuels et prévus, Intervalles de confiance à 95%
    + + + +

    Portrait de la surmortalité

    + + + +

    Il y a eu, durant la période de prévision, 5068 décès additionnels par rapport aux prévisions du modèle. C'est une moyenne de 118 décès par semaine sur la période observée.

    + + + +
    Nombre de décès additionnels par semaine (surmortalité). Par rapport aux prévisions du modèle TBATS et données ISQ
    + + + +

    On ajoute les intervalles de confiance à 80% et 95% sur l'erreur de prédiction du modèle. Je calcule ces intervalles de confiance en soustrayant la borne inférieure au nombre observé pour obtenir la borne supérieure de l'erreur et vice-versa.

    + + + +
    Intervalles de confiance à 80 et 95% Par rapport aux prévisions du modèle TBATS et données ISQ
    + + + +

    Comparaison de la surmortalité calculée avec les données du MSSS

    + + + +

    Dans cette section, nous utiliserons les données compilées par le MSSS sur les décès liés à la COVID-19 afin de déterminer si la majorité de la surmortalité peut être attribuée à la pandémie. Afin de convertir les données du MSSS sur la même base que les données de l'ISQ, il faut identifier la semaine CDC correspondante.

    + + + +

    Il est aussi important ici de noter que nous utilisons la date de rapport du décès qui peut être différente de celle de la date réelle du décès. Il faut donc s'attendre à un certain décalage entre les données de l'ISQ et du MSSS de l'ordre d'une à deux semaines, tel qu'il est observé fréquemment dans les annonces dans les médias.

    + + + +
    Comparaison des décès additionnels, Surmortalité rapport aux prévisions du modèle TBATS et données ISQ
    + + + +

    On remarque que les deux courbes correspondent sensiblement aux mêmes nombres de décès, mais avec un décalage dans les déclarations de décès liés à la COVID-19 auprès du MSSS. À partir de ces observations, on peut donc en tirer la conclusion que la surmortalité observée est principalement due à la pandémie de COVID-19. Il n'y aurait donc pas de surattribution des décès.

    + + + +

    Références

    + + + + +]]>
    + + 419 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[Manjaro avec pilotes NVIDIA]]> + https://jevalide.ca/2021/01/09/je-suis-reste-pris-dans-mon-ordi-manjaro-nvidia-mise-a-jour/ + Sat, 09 Jan 2021 22:00:00 +0000 + + https://blog.jevalide.ca/wp/?p=64 + + +

    Introduction

    + + + +

    Cet article traite de la récupération d'une mise à jour de Manjaro avec pilotes NVIDIA. Attention, contenu pour geek averti !

    + + + +

    Je suis resté pris dans mon ordi !

    + + + +

    Longue histoire courte, j'utilise principalement la distribution Manjaro XFCE (basée sur Arch Linux, mais version flexitarienne) sur mes ordinateurs personnels.

    + + + +

    Pas plus tard que la semaine dernière, l'équipe de Manjaro a publié une nouvelle version "stable". Celle-ci inclus des mises à jour de noyaux Linux. Elle déleste aussi certains pilotes NVIDIA qui sont périmés et difficiles à maintenir.

    + + + +

    Cependant, cette mise à jour forçait aussi l'installation de nouvelles versions du noyau. En même temps, il y a eu recompilation des fichiers des pilotes. Cette recette mène, presque à coup sûr, à une catastrophe au prochain redémarrage.

    + + + +
    Blague sur Arch Linux
    + + + +

    Bref, je ne suis plus capable de me rendre à une fenêtre de connexion graphique ni à un terminal. Même en mode texte, aucun raccourci Ctrl-Alt-Fx ne fonctionne. Je dois donc réparer ça de l'extérieur.

    + + + +

    N'ayant pas de clé USB de secours sous la main non plus, ça va mal ! Je prends la clé depuis laquelle j'ai installé Manjaro XFCE et je démarre une session "Live".

    + + + +

    Donc, voici comment dépanner un Manjaro linux avec des pilotes NVIDIA qui ne démarre plus à cause d'une vilaine mise à jour trop ambitieuse.

    + + + +

    Le démarrage de Manjaro en chroot

    + + + +

    Nous devons ouvrir une session chroot sur Manjaro et le disque principal est crypté. Voici comment faire.

    + + + +

    Nous utiliserons la technique du changement de racine, appelée chroot. Une fois dans la session live, il faut exécuter ces lignes.

    + + + +

    Note: En tant qu'être doué de conscience, ne faites jamais de copier-coller de blocs de code sans lecture préalable, vous pouvez faire plus que de mal que de bien.

    + + + +

    Une ligne à la fois, et on prend le temps de lire et comprendre.

    + + + +
    # Se connecter en root
    +sudo su -
    +# Créer un répertoire de secours a la racine, par exemple: /rescue
    +mkdir /rescue
    +# Mettre le nom du disque qui contient le système crypté, ex: /dev/nvme0n1p2
    +udisksctl unlock -b /dev/nvme0n1p2
    +# La fonction va retourner le nouvel emplacement du disque décrypté, par exemple: /dev/dm-0.
    +# Monter le disque décrypté dans le répertoire de secours
    +sudo mount /dev/dm-0 /rescue
    +# Joindre le répertoire
    +mount -o bind /rescue /rescue
    +# Installer l outil arch-chroot
    +pacman -Sy arch-install-scripts
    +# Aller en chroot
    +arch-chroot /rescue
    +# Nous sommes maintenant sur le système installe en chroot, exécuter les commandes de dépannage sur place
    + + + +

    Dépanner Manjaro et corriger les pilotes NVIDIA

    + + + +

    Une fois dans la session chroot, exécuter ces lignes

    + + + +
    # Supprimer le méta paquet linux-latest
    +pacman -R linux-latest
    +# Supprimer cette dépendance à Virtualbox qu'on pourra réinstaller plus tard
    +pacman -R virtualbox-guest-utils
    +# Supprimer le nouveau kernel que nous n'étions pas prêt à accueillit
    +pacman -R linux510
    +# Exécuter cette incantation qui corrige les headers des noyaux requis pour compiler les pilotes NVIDIA
    +sudo pacman -S $(mhwd-kernel -li | grep '*' | cut -d ' ' -f5 | awk '{print $0,"-headers"}' | sed s'/ //'g)
    +# Corriger les pilotes NVIDIA
    +sudo mhwd -a pci nonfree 0300
    +# Sortir du chroot
    +exit
    + + + +

    Pour apprendre à utiliser la ligne de commande comme un pro sur ton système, tu dois t'inscrire à ma newsletter mensuelle !

    + + + + +]]>
    + + 2745 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[Liens markdown et titre avec Python]]> + https://jevalide.ca/2021/06/13/liens-markdown-et-titre-avec-python/ + Sun, 13 Jun 2021 10:00:00 +0000 + + https://blog.jevalide.ca/wp/?p=88 + + +

    Mise en situation

    + + + +

    J'ai une longue liste d'URLs que je souhaite utiliser dans une page de notes sous la forme de liens Markdown.

    + + + +

    Je veux créer des liens facilement identifiables en Markdown avec Python, et pour ce faire utiliser le titre des pages d'accueil des sites web.

    + + + +

    Python pour produire les liens Markdown

    + + + +

    Je me suis donc fait un petit programme en Python qui prend une URL en entrée, la normalise et extrait le titre de la page, pour finalement retourner un lien en Markdown.

    + + + +
    Librairies utilisees pour extraire des informations depuis une URL avec Python
    Librairies utilisees pour extraire des informations depuis une URL avec Python
    + + + +

    Ce programme utilise les librairies Python suivantes pour extraire l'information qui produit les liens Markdown:

    + + + +
    • requests, qui permet d'appeler des services web via le protocole HTTP
    • bs4, habituellement reconnu sous le nom de BeautifulSoup, qui permet de traiter le code HTML reçu avec requests et d'extraire les éléments qui nous intéressent
    • urllib, qui permet d'extraire des éléments depuis une URL, tel que des paramètres, des fragments ou des éléments du nom de domaine.
    • plac, qui fournit une interface simple en ligne de commande pour les fonctions Python
    + + + +

    Le programme est composé de deux fonctions principales,

    + + + +
    • main, où le code définissant la logique du programme est écrit, et
    • fix_url, qui permet de corriger divers éléments dans les URLs tel que spécifier le protocole HTTP ou HTTPS en préfixe.
    + + + +

    De plus, la fonction d'entrée n'est plus directement le main, mais un appel via plac:

    + + + +
    if __name__ =='__main__':
    +    plac.call(main)
    + + + +

    Le programme s'appelle comme suit:

    + + + +
    python url_to_markdown.py "https://git.francoispelletier.org/partage/url_to_markdown"
    + + + +

    Et retourne:

    + + + +
    [francois/url_to_markdown: URL vers lien en markdown -  url_to_markdown - GitLab](https://git.francoispelletier.org/partage/url_to_markdown)
    + + + +

    Pour le faire avec une liste d'URLs, on utilise xargs sous GNU/Linux ou macOS. Pour les utilisateurs Windows, la suite MSYS2 vous donne accès à ces utilitaires très pratiques !

    + + + +
    cat ma_liste_d_urls | xargs -I{} python url_to_markdown.py {}
    + + + +

    Voici le lien vers le code du programme:

    + + + +

    https://git.francoispelletier.org/partage/url_to_markdown

    + + + +

    Conclusion

    + + + +

    Dans ce billet, j'ai montré comment écrire un programme simple en Python qui effectue la documentation d'URLs automatiquement vers des liens Markdown !

    + + +]]>
    + + 2746 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[Nextcloud et Elasticsearch sur VirtualBox - Partie 1 - Debian]]> + https://jevalide.ca/2021/04/10/debian-yunohost-nextcloud-elasticsearch-partie-1/ + Sat, 10 Apr 2021 10:00:00 +0000 + + https://blog.jevalide.ca/wp/?p=116 + + + + +

    Introduction

    + + + +

    Dans ce tutoriel, nous ferons une installation complète de Debian, Yunohost, Nextcloud et Elasticsearch sur une machine virtuelle VirtualBox que nous allons aussi créer.

    + + + +

    Ce tutoriel est accessible aux utilisateurs de toute plateforme qui supporte VirtualBox.

    + + + +

    Il peut aussi être adapté à l'utilisation sur une plateforme infonuagique en passant directement à la section où on installe Yunohost.

    + + + +

    Mise en garde importante

    + + + +

    Notez que cette installation d'Elasticsearch est expérimentale et n'est pas du tout sécuritaire pour un usage commercial. Je ne recommande en aucun cas d'y mettre des informations confidentielles.

    + + + +

    Pour une installation sécuritaire, je t'invite à suivre ma formation Nextcloud.

    + + + +

    Téléchargement de Debian 10

    + + + +

    Depuis le site web de Debian, il est possible de télécharger une version légère "net install" de la version 10. Cliquez simplement sur le bouton "télécharger". Sinon, l'image est disponible via ce lien.

    + + + +

    Conseil: valider la signature sha256sum de l'image téléchargée

    + + + +
    wget https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/SHA512SUMS
    +sha512sum -c SHA512SUMS --ignore-missing
    + + + +

    Note: il est possible que cette la version de l'image par défaut ait changé depuis la création de ce tutoriel. L'important est que ce soit la version 10 de Debian.

    + + + +

    Création d'une machine virtuelle Debian

    + + + +

    On débute par ouvrir le logiciel VirtualBox qui est habituellement disponible via la distribution Linux ou via le site web de VirtualBox

    + + + +
    créer une nouvelle machine virtuelle
    + + + +

    On crée une nouvelle machine virtuelle de Type Linux et de version Debian (64-bit). Le dossier de la machine doit avoir au moins 20 Go d'espace libre pour assurer le bon fonctionnement de la machine virtuelle.

    + + + +
    créer une nouvelle machine virtuelle
    + + + +

    Choisissez la quantité de mémoire vive. Il est conseillé d'avoir au moins 2048 Mo de disponible pour que Nextcloud fonctionne de façon fluide avec quelques applications additionnelles.

    + + + +
    quantité de mémoire vive
    + + + +

    Nous utiliserons le type de disque dur VDI

    + + + +
    type de disque dur VDI
    + + + +

    Choisissez le stockage dynamiquement alloué

    + + + +
    dynamiquement alloué
    + + + +

    Choisissez la taille du disque à utiliser pour la machine virtuelle. Je conseille d'utiliser au moins 15 Go. Vérifiez que le répertoire d'enregistrement du disque contient suffisamment d'espace.

    + + + +
    taille disque
    + + + +

    Nous avons maintenant une configuration de base. On ajuste quelques paramètres pour le besoin.

    + + + +
    configuration de base
    + + + +

    Je conseille de mettre au moins deux processeurs si possible.

    + + + +
    deux processeurs
    + + + +

    Il est possible d'enregistrer l'installation pour garder une trace pour référence future.

    + + + +
    enregistrer
    + + + +

    On configure une redirection de port afin de pouvoir se connecter à la machine virtuelle en SSH avec une console virtuelle ou un logiciel tel que PuTTY au lieu de devoir utiliser l'interface de VirtualBox.

    + + + +
    redirection
    + + + +

    Ajouter la configuration suivante:

    + + + +
    • Nom: ssh
    • Protocole: TCP
    • Port hôte: 3022
    • Port invité: 22
    + + + +
    redirection
    + + + +

    Ensuite, sélectionner Afficher depuis l'écran d'accueil. Ceci démarre l'installation du système d'exploitation.

    + + + +
    configuration de base
    + + + +

    Sélectionner l'image ISO du système Debian 10 téléchargée préalablement.

    + + + +
    image ISO
    + + + +
    image ISO
    + + + +

    Démarrer l'installation

    + + + +
    installation
    + + + +

    Installation de Debian

    + + + +

    On installe le système Debian sur la machine virtuelle.

    + + + +

    Choisir l'option "install" comme on n'installe pas un système avec une interface graphique.

    + + + +
    install
    + + + +

    Choisissez la langue. Cette installation fonctionnera dans toutes les langues disponibles.

    + + + +
    langue
    + + + +

    Choisissez le pays

    + + + +
    pays
    + + + +

    Choisissez la disposition de clavier

    + + + +
    disposition de clavier
    + + + +

    Nom de machine: nextcloud

    + + + +

    Mot de passe root: nextcloud

    + + + +
    machine
    + + + +

    Utilisateur: demo

    + + + +
    Utilisateur
    + + + +

    Mot de passe: demo

    + + + +
    Mot de passe
    + + + +

    Choisissez le partitionnement assisté

    + + + +
    partitionnement assisté
    + + + +

    Mettre tout dans une seule partition

    + + + +
    une seule partition
    + + + +

    Choisissez terminer et appliquer tous les changements

    + + + +
    appliquer
    + + + +

    Appliquer les changements en choisissant "oui"

    + + + +
    démarrage installation
    + + + +

    L'installation des packages du système débute, ceci peut prendre quelques minutes.

    + + + +

    Choisissez "non" à cette invite qui demande s'il y a d'autres disques à analyser.

    + + + +
    disque analyser
    + + + +

    Choisissez le pays pour un miroir. Ici, c'est la proximité géographique qui est la plus importante.

    + + + +
    pays du miroir
    + + + +

    Choisissez ensuite un miroir pour télécharger les packages additionnels de Debian qui seront installés.

    + + + +
    miroir
    + + + +

    Laissez le champ du mandataire vide sauf si applicable (c'est très rare sur un réseau résidentiel)

    + + + +

    Un autre ensemble de packages sera téléchargé puis installé. En cours de route, il faut répondre à une invite sur popularity-contest. Le choix recommandé est Non.

    + + + +
    popularity-contest
    + + + +

    L'installation se poursuivra par la suite. On aura à choisir différentes options. On réduit ces options au minimum, car Yunohost a son propre script d'installation qui se chargera du reste.

    + + + +
    sélection logicielle
    + + + +

    Sélectionner "oui" pour l'installation du système d'amorçage.

    + + + +
    + + + +

    Choisir le disque /dev/sda

    + + + +
    sélection logicielle
    + + + +

    Ensuite, choisissez "continuer" et la machine virtuelle redémarrera. Nous avons maintenant installé Debian.

    + + + +

    Se connecter en SSH sur la machine virtuelle

    + + + +

    Pour se connecter sur la machine virtuelle, on utilise le port configuré lors de la création de la machine virtuelle ainsi que l'utilisateur demo.

    + + + +

    Dans un terminal, saisir:

    + + + +
    ssh -p 3022 demo@localhost
    + + + +

    S'authentifier avec le mot de passe demo

    + + + +

    Avec PuTTY

    + + + +
    putty hote
    + + + +
    putty user
    + + + +

    Ensuite, se connecter en tant que root avec su - et saisir le mot de passe root nextcloud entré lors de l'installation de Debian.

    + + + +

    Nous nous sommes maintenant connectés en tant qu'administrateur sur la machine virtuelle Debian 10. Nous pouvons maintenant installer Yunohost.

    + + + +
    (base) ~ ❯❯❯ ssh -p 3022 demo@localhost
    +demo@localhost's password: 
    +Linux yunohost 4.19.0-14-amd64 #1 SMP Debian 4.19.171-2 (2021-01-30) x86_64
    +
    +The programs included with the Debian GNU/Linux system are free software;
    +the exact distribution terms for each program are described in the
    +individual files in /usr/share/doc/*/copyright.
    +
    +Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
    +permitted by applicable law.
    +Last login: Sat Mar  6 17:20:55 2021 from 10.0.2.2
    +demo@yunohost:~$ su -
    +Mot de passe : 
    +root@yunohost:~# 
    + + + +

    Avec PuTTY:

    + + + +
    putty user
    + + + +

    Note: Dans un terminal, un dièse précède l'invite de commandes, lorsque connecté en root.

    + + + +

    Installation de screen (optionnel)

    + + + +

    Pour rouler des commandes qui prennent un temps considérable à exécuter, il est recommandé d'utiliser des sessions screen, qui permettent de garder une session active sur le serveur même si la connexion fait défaut.

    + + + +
    sudo apt install -y screen
    + + + +

    Pour la suite de ce tutoriel, on assume que la section d'introduction du manuel de screen ou les principales fonctionnalités sont connues.

    + + + +

    Articles suivants

    + + + + +]]>
    + + 2747 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[Nextcloud et Elasticsearch sur VirtualBox - Partie 2 - Yunohost]]> + https://jevalide.ca/2021/04/10/debian-yunohost-nextcloud-elasticsearch-partie-2/ + Sat, 10 Apr 2021 10:00:00 +0000 + + https://blog.jevalide.ca/wp/?p=119 + + + + +

    Installation de Yunohost

    + + + +

    Dans cette section, nous installerons Yunohost par dessus Debian 10. Ensuite, nous installerons Nextcloud et nous y connecterons.

    + + + +

    Exécuter les commandes suivantes en tant que root

    + + + +
    apt install -y curl
    +curl https://install.yunohost.org | bash
    + + + +

    Lancez l'installation

    + + + +
    + + + +

    Laisser Yunohost gérer le SSH. À la prochaine connexion, l'utilisateur administrateur sera admin. C'est un rôle intermédiaire entre demo et root en termes de permissions.

    + + + +
    + + + +

    Une fois l'installation terminée, il faut effectuer la postinstallation.

    + + + +

    Un nom de domaine est requis pour l'installation. On utilisera nextcloud.local.

    + + + +

    Le mot de passe d'administration sera nextcloud.

    + + + +

    On crée un premier utilisateur utilisateur

    + + + +
    yunohost user create utilisateur
    + + + +

    Le résultat est:

    + + + +
    Succès ! L’utilisateur a été créé
    +fullname: utilisateur nouveau
    +mail: utilisateur@nextcloud.local
    +username: utilisateur
    + + + +

    Accès à la machine virtuelle comme un serveur séparé sur le réseau local

    + + + +

    On configure maintenant la machine virtuelle en mode "pont" afin qu'elle ait sa propre adresse IP. Le nom de domaine pourra être associé à cette adresse pour simplifier les manipulations futures. Ceci va simuler comme si on avait une machine physique séparée ou un serveur avec une adresse IP publique tel un serveur privé virtuel (VPS).

    + + + +
    + + + +

    Ensuite, redémarrer la machine virtuelle depuis VirtualBox (Menu Machine/Redémarrage).

    + + + +

    Une fois redémarré, l'affichage VirtualBox de la machine virtuelle affiche son adresse IP. Dans cet exemple, c'est 192.168.0.151.

    + + + +
    + + + +

    Dans la configuration de routeur DHCP à la maison, figer cette adresse. Voici un exemple pour un routeur D-Link.

    + + + +
    + + + +

    On ajoute le domaine au fichier "hosts".

    + + + +
    • Windows (éditer en mode administrateur): C:\Windows\System32\drivers\etc\hosts
    • Linux (éditer avec sudo): /etc/hosts
    • macOS (éditer avec sudo): /private/etc/hosts
    + + + +

    Ajouter la ligne suivante au fichier (changer selon l'adresse IP de la machine virtuelle):

    + + + +
    192.168.0.151 nextcloud.local
    + + + +

    On se connecte à l'instance Yunohost via l'adresse https://nextcloud.local dans le navigateur. Attention, ça va demander d'accepter le risque d'une adresse sans certificat valide.

    + + + +
    + + + +

    Une fois arrivé à la fenêtre de connexion, on entre utilisateur et nextcloud

    + + + +
    + + + +

    Nous avons réussi ! L'installation de Yunohost est fonctionnelle.

    + + + +
    + + + +

    Installation de Nextcloud sur Yunohost

    + + + +

    Se connecter en SSH sur le serveur en utilisant le domaine cette fois-ci.

    + + + +
    ssh -p 22 admin@nextcloud.local
    + + + +

    Installation d'une instance de Nextcloud avec l'outil de configuration de Yunohost.

    + + + +
    sudo yunohost app install nextcloud
    + + + +

    On conserve les paramètres par défaut proposés à moins d'utiliser un sous-domaine. Les paramètres de l'installation devraient ressembler à ceci.

    + + + +
    Choose the domain where this app should be installed [nextcloud.local] (default: nextcloud.local): 
    +Choose the path where this app should be installed (default: /nextcloud): 
    +Choose an administrator user for this app [utilisateur] (default: utilisateur): 
    +Access the users home folder from Nextcloud? [yes | no] (default: no):
    + + + +

    Validation de l'installation

    + + + +

    Pour s'assurer que l'installation de Nextcloud est bien fonctionnelle, ouvrez l'URL suivante dans le navigateur: https://nextcloud.local/nextcloud

    + + + +
    + + + +

    Autres parties

    + + + + +]]>
    + + 2748 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[Nextcloud et Elasticsearch sur VirtualBox – Partie 3 – Elasticsearch]]> + https://jevalide.ca/2021/04/10/debian-yunohost-nextcloud-elasticsearch-partie-3/ + Sat, 10 Apr 2021 10:00:00 +0000 + + https://blog.jevalide.ca/wp/?p=121 + + +

    Installation d'Elasticsearch

    + + + +

    On installe Elasticsearch comme moteur de recherche en plein texte pour l'ensemble du contenu qui sera hébergé dans Nextcloud.

    + + + +
    wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
    +sudo apt-get install apt-transport-https openjdk-11-jre-headless
    +echo "deb https://artifacts.elastic.co/packages/6.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-6.x.list
    +sudo apt-get update && sudo apt-get install elasticsearch
    + + + +

    Il faut maintenant mettre en place et activer le service pour qu'Elasticsearch roule en arrière-plan.

    + + + +
    sudo systemctl enable elasticsearch.service
    + + + +

    Enfin, il faut installer et activer le plug-in d'indexations de documents pour Elasticsearch

    + + + +
    /usr/share/elasticsearch/bin/elasticsearch-plugin install --batch ingest-attachment
    + + + +

    Pour terminer, on redémarre le service

    + + + +
    sudo systemctl restart elasticsearch.service
    + + + +

    Installation du moteur de recherche plein texte de Nextcloud

    + + + +

    Depuis le navigateur web, ouvrir l'URL suivante: https://nextcloud.local/nextcloud/settings/apps

    + + + +

    Dans la section Rechercher, cliquez sur télécharger et activer pour les trois applications suivantes:

    + + + +
    ExtensionDescription
    Full text searchRecherche plein texte de base
    Full text search - FilesRecherche dans les fichiers
    Full text search - Elasticsearch PlatformMoteur d'indexation
    + + + +
    + + + +

    Maintenant, allons dans la section Paramètres de Nextcloud pour configurer ces applications. Sélectionner Elasticsearch comme plateforme de recherche.

    + + + +

    Indiquer http://localhost:9200 comme adresse du Servlet et nc_index comme index

    + + + +
    + + + +

    Initialiser l'index Elasticsearch

    + + + +

    Depuis la session SSH, idéalement dans un screen, on initialise l'index. Exécuter en tant que root.

    + + + +
    cd /var/www/nextcloud
    +chmod a+x occ
    +sudo -u nextcloud php ./occ fulltextsearch:index
    + + + +
    + + + +

    Activer l'indexation en continu de Nextcloud

    + + + +

    Tous les nouveaux documents ajoutés devraient être indexés. Pour ce faire, on crée un service dans systemd qui permet l'indexation en continu.

    + + + +

    Avec un éditeur de texte, ouvrir et modifier le fichier "unit" du service.

    + + + +
    sudo nano /etc/systemd/system/nextcloud-fulltext-elasticsearch-worker.service
    + + + +

    Insérer le contenu suivant:

    + + + +
    [Unit]
    +Description=Elasticsearch Worker for Nextcloud Fulltext Search
    +After=network.target
    +
    +[Service]
    +User=nextcloud
    +Group=nextcloud
    +WorkingDirectory=/var/www/nextcloud
    +ExecStart=/usr/bin/php /var/www/nextcloud/occ fulltextsearch:live -q
    +ExecStop=/usr/bin/php /var/www/nextcloud/occ fulltextsearch:stop
    +Nice=19
    +Restart=always
    +
    +[Install]
    +WantedBy=multi-user.target
    + + + +

    Après avoir modifié un fichier "unit" il faut recharger systemd avant d'activer et de démarrer le service.

    + + + +
    systemctl daemon-reload
    +systemctl enable nextcloud-fulltext-elasticsearch-worker.service
    +systemctl start nextcloud-fulltext-elasticsearch-worker.service
    + + + +

    Vérifier ensuite que le service est bien activé:

    + + + +
    systemctl status nextcloud-fulltext-elasticsearch-worker.service
    + + + +
    + + + +

    On peut utiliser la recherche en plein texte depuis l'URL suivante: https://nextcloud.local/nextcloud/apps/fulltextsearch/

    + + + +
    + + + +

    Notez qu'il faut laisser le temps à la première indexation de compléter son travail avant de faire des requêtes. Sinon, il y a un risque de surcharger le serveur et les requêtes ne répondront pas.

    + + + +

    Conclusion

    + + + +

    Ceci complète notre installation des logiciels requis pour avoir un écosystème Nextcloud pour le stockage et l'indexation de documents. Ces logiciels évoluent constamment et je vais tenter de mettre à jour ce guide autant que possible, alors n'hésitez pas à revenir le consulter dans le futur pour faire vos installations. À la date de création, ce guide fonctionne sur Nextcloud 19 et plus.

    + + + +

    Articles précédents

    + + + + +]]>
    + + 2749 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[Borg pour les sauvegardes sur Yunohost]]> + https://jevalide.ca/2021/03/24/borg-sauvegarde-yunohost-debian/ + Wed, 24 Mar 2021 15:00:00 +0000 + + https://blog.jevalide.ca/wp/?p=124 + + +

    Dans ce billet, je te présente comment j'ai configuré l'outil Borg pour faire des sauvegardes de l'ensemble de mon infrastructure Yunohost.

    + + + +

    Le serveur d'autohébergement Yunohost

    + + + +
    Logo de Yunohost
    Logo de Yunohost
    + + + +

    Yunohost est une distribution GNU/Linux basée sur Debian qui offre une infrastructure de type plateforme applicative pour l'autohébergement. Elle simplifie la gestion du cycle de vie d'applications web orientée pour un usage personnel ou en petits groupes. Elle répond aux besoins des particuliers, travailleurs autonomes, organismes et petites entreprises.

    + + + +

    L'association LinuQ où je m'implique bénévolement a fait de nombreuses explorations sur cette plateforme sur son wiki.

    + + + +

    Le logiciel Borg

    + + + +
    Logo de Borg
    Logo de Borg
    + + + +

    Borg est un logiciel de gestion de sauvegarde.

    + + + +

    Ces deux services permettent l'exécution de Borg en arrière-plan:

    + + + +
      +
    • Un premier, borg.timer, qui gère l'ordonnancement des sauvegardes et qui tourne en permanence
    • + + + +
    • Un second, borg.service, qui effectue le travail de sauvegarde et qui s'éteint par la suite
    • +
    + + + +

    Le service rsync.net

    + + + +

    rsync.net est un service d'hébergement infonuagique qui se spécialise dans les sauvegardes avec le logiciel rsync. C'est un service sécuritaire et peu dispendieux pour garder des sauvegardes de ses systèmes.

    + + + +

    Une fois obtenu, le service sera accessible via la commande ssh seulement. Vous aurez un nom d'utilisateur numérique ainsi qu'un mot de passe pour accéder au service. Un des serveurs de rsync.net, identifié par un sous-domaine de la forme SUB.rsync.net, héberge votre espace. Il faudra utiliser celui-ci pour la configuration de Borg.

    + + + +

    Pour des fins de simplification de cette présentation, je vais configurer ces deux variables d'environnement. Je vous conseille aussi de faire de même:

    + + + +
    # Sous-domaine du serveur de sauvegarde rsync.net
    +RSYNC_SUB=
    +# Nom d'utilisateur rsync.net
    +RSYNC_USER=
    + + + +

    + + + +

    Borg et Yunohost

    + + + +

    La façon la plus simple d'installer Borg sur un serveur Yunohost est par la ligne de commande, en tant que superutilisateur

    + + + +
    yunohost app install borg
    + + + +

    + + + +

    On vous demandera ensuite de fournir certains paramètres afin de personnaliser l'installation:

    + + + +
      +
    • domain name: ${RSYNC_SUB}.rsync.net
    • + + + +
    • username: ${RSYNC_USER}
    • +
    + + + +

    Il faut ensuite configurer une variable d'environnement qui permettra de bien utiliser le service Borg disponible sur rsync.net

    + + + +
    export BORG_REMOTE_PATH=/usr/local/bin/borg1/borg1
    + + + +

    + + + +

    L'installation de Borg par Yunohost va générer une paire de clés cryptographiques avec l'algorithme Ed25519. Celles-ci sont situées dans le répertoire /root/.ssh/ et ont le nom de fichier id_borg_ed25519. Il faudra d'ailleurs, pour se connecter au serveur rsync.net sans spécifier de mot de passe, partager cette clé sur celui-ci:

    + + + +

    Attention

    + + + +
      +
    • S'il y a déjà un fichier .ssh/authorized_keys sur le serveur distant, il sera écrasé.
    • + + + +
    • Je conseille donc d'en faire une copie et de synchroniser un fichier qui contient toutes les clés, une par ligne, au lieu du fichier ~/.ssh/id_borg_ed25519.pub
    • +
    + + + +
    # Récupérer les clés actuelles
    +ssh ${RSYNC_USER}@${RSYNC_SUB}.rsync.net cat .ssh/authorized_keys > ~/borg_authorized_keys
    +# Ajouter la nouvelle clé
    +cat ~/.ssh/id_borg_ed25519.pub >> ~/borg_authorized_keys
    +# Synchroniser les nouvelles clés
    +rsync -av ~/borg_authorized_keys ${RSYNC_USER}@${RSYNC_SUB}.rsync.net:.ssh/authorized_keys
    + + + +

    + + + +

    Puis, à chaque connexion, préciser cette clé lors des connexions au serveur rsync.net, notamment avec le paramètre -i /root/.ssh/id_borg_ed25519 de la commande ssh ou avec la variable d'environnement suivante pour Borg:

    + + + +
    export BORG_RSH="ssh -i /root/.ssh/id_borg_ed25519 -oStrictHostKeyChecking=yes"
    + + + +

    + + + +

    Créer manuellement le répertoire backup

    + + + +
    ssh -i /root/.ssh/id_borg_ed25519 -oStrictHostKeyChecking=yes ${RSYNC_USER}@${RSYNC_SUB}.rsync.net mkdir backup
    + + + +

    + + + +

    Pour démarrer une première sauvegarde, une fois que tous les services sont configurés. Comme celle-ci peut prendre plusieurs minutes lors de la première exécution, il est recommandé de travailler dans une session screen ou tmux.

    + + + +
    systemctl start borg
    + + + +

    + + + +

    On peut ensuite valider la présence de la sauvegarde sur le serveur avec la commande suivante:

    + + + +
    borg list ${RSYNC_USER}@${RSYNC_SUB}.rsync.net:~/backup
    + + + +

    Sauvegarde manuelle

    + + + +

    Ce petit script te permettra de déclencher une sauvegarde manuelle de toutes tes applications

    + + + +
    for app in $(yunohost app list --json | jq '.apps | .[] | .id' | tr -d '"')
    +do
    +yunohost backup create -n "auto_$app" --method borg_app --apps "$app"
    +done
    + + + +

    Références

    + + + + + + + +

    Pour en savoir plus sur l'autohébergement, je recommande de s'abonner à ma newsletter.

    + + +]]>
    + + 2750 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[Analysons les données canadiennes de prix des logements]]> + https://jevalide.ca/2021/04/29/analysons-les-donnees-canadiennes-de-prix-des-logements/ + Thu, 29 Apr 2021 22:00:00 +0000 + + https://blog.jevalide.ca/wp/?p=153 + + + + +

    Visiblement, notre premier ministre n'est pas très au courant du marché locatif québécois et des prix des logements. Voici donc les données les plus à jour (octobre 2019) sur le marché canadien du logement, tirées du site de la SCHL et nettoyées pour les rendre utilisables et visualisables !

    + + + +

    Outils utilisés

    + + + +

    Nous allons utiliser le langage R et les librairies tidyversesf et mapsf.

    + + + +
    library(tidyverse)
    +library(sf)
    +library(mapsf)
    + + + +

    Données de prix des logements de la SCHL

    + + + +

    Lecture des données

    + + + +

    Les données de prix des logements sont dans un fichier Excel XLSX, et comme tout bon fichier provenant d'une agence du gouvernement, contient des métadonnées, des cellules fusionnées, des titres avec des caractères invalides, des sous-totaux mal identifiés ...

    + + + +

    Le tableau commence à la ligne 4, nous allons donc éliminer les trois premières lignes.

    + + + +
    urban_rental <-
    +  readxl::read_xlsx("urban-rental-market-survey-data-average-rents-urban-centres-2019.xlsx",
    +                    skip = 3)
    + + + +

    On renomme les colonnes pour les rendre utilisables avec R

    + + + +
    colnames(urban_rental) <- c(
    +  "province",
    +  "centre",
    +  "subdiv_recens",
    +  "type_logement",
    +  "bachelor",
    +  "",
    +  "chambre_1",
    +  "",
    +  "chambre_2",
    +  "",
    +  "chambre_3",
    +  "",
    +  "total",
    +  ""
    +)
    + + + +

    On traite ici d'un seul coup avec une séquence d'opérateurs l'ensemble des anomalies dans les données. Je vais commenter cette section directement dans le code.

    + + + +
    urban_rental_pivot <- urban_rental %>%
    +  # Sélectionner les variables utiles
    +  select(
    +    province,
    +    centre,
    +    subdiv_recens,
    +    type_logement,
    +    bachelor,
    +    chambre_1,
    +    chambre_2,
    +    chambre_3
    +    # Pivoter les données de montants pour avoir à faire les traitements une seule
    +    # fois
    +  ) %>% pivot_longer(
    +    c(bachelor,
    +      chambre_1,
    +      chambre_2,
    +      chambre_3),
    +    names_to = "nombre_pieces",
    +    values_to = "loyer_moyen"
    +  ) %>%
    +  # Extraire le montant numérique du montant indiqué avec un signe de $ devant
    +  # le nombre
    +  mutate(loyer_moyen_num = loyer_moyen %>%
    +           str_extract_all("\\d+") %>%
    +           as.numeric()) %>%
    +  select(-loyer_moyen) %>%
    +  # Supprimer les lignes avec des montants manquants
    +  filter(!is.na(loyer_moyen_num)) %>%
    +  # Supprimer les sous-totaux par division de recensement
    +  filter(subdiv_recens != "Total") %>%
    +  # Conserver seulement le total des types de logements (essentiellement, rangée
    +  # ou bloc, peu important pour nos analyses)
    +  filter(type_logement == "Total") %>%
    +  # Formater les subdivisions de recensement comme Statistiques Canada et
    +  # extraire le genre qui est entre parenthèses dans une autre variable
    +  mutate(
    +    subdiv_genre = subdiv_recens %>%
    +      str_match(pattern = "(.*)\\s+\\((.*)\\)") %>%
    +      `[`(, 3),
    +    subdiv_recens = subdiv_recens %>%
    +      str_match(pattern = "(.*)\\s+\\((.*)\\)") %>%
    +      `[`(, 2)
    +  ) %>%
    +  # Ramener au format large puisque notre clé sera la région géographique pour
    +  # fusionner avec les données spatiales
    +  pivot_wider(names_from = "nombre_pieces", values_from = "loyer_moyen_num") %>%
    +  select(
    +    province,
    +    centre,
    +    subdiv_genre,
    +    subdiv_recens,
    +    type_logement,
    +    bachelor,
    +    chambre_1,
    +    chambre_2,
    +    chambre_3
    +  )
    + + + +

    Subdivisions derecensement

    + + + +

    Nous importons maintenant les données de subdivisions de recensement

    + + + +
    lsdr000b16a_f <- sf::read_sf("lsdr000b16a_f/lsdr000b16a_f.shp")
    +lsdr000b16a_f[lsdr000b16a_f$SDRIDU == "4810039",]$SDRNOM <-
    +  "Lloydminster (Alta Part)"
    +lsdr000b16a_f[lsdr000b16a_f$SDRIDU == "4717029",]$SDRNOM <-
    +  "Lloydminster (Sask Part)"
    + + + +

    Comme la ville de Lloydminster qui chevauche l'Alberta et la Saskatchewan est identifiée différemments dans les données de la SCHL que dans celles de Statistiques Canada, on fait la correction ici pour permettre la fusion, qui se fait sur le nom de la subdivision au lieu d'utiliser l'identifiant unique SDRIDU, car la SCHL ne l'a pas fourni dans ses données (ce qui serait une bonne pratique).

    + + + +

    Validons qu'on a bien tout suite à ces corrections:

    + + + +
    is.na(setdiff(
    +  unique(urban_rental_pivot$subdiv_recens),
    +  unique(lsdr000b16a_f$SDRNOM)
    +))
    + + + +
    ## [1] FALSE  TRUE
    + + + +

    On peut maintenant fusionner les données

    + + + +
    urban_rental_sf <- lsdr000b16a_f %>%
    +  inner_join(urban_rental_pivot,
    +             by = c("SDRNOM" = "subdiv_recens",
    +                    "SDRGENRE" = "subdiv_genre")) %>%
    +  select(
    +    PRIDU,
    +    PRNOM,
    +    centre,
    +    SDRIDU,
    +    SDRGENRE,
    +    SDRNOM,
    +    bachelor,
    +    chambre_1,
    +    chambre_2,
    +    chambre_3,
    +    geometry
    +  ) %>%
    +  distinct()
    + + + +

    Exportons ensuite les données au format GeoJSON pour consommation ultérieure.

    + + + +
    urban_rental_sf %>% sf::write_sf("urban_rental_sf.geojson")
    +system("gzip urban_rental_sf.geojson")
    + + + +

    Vous pouvez obtenir le fichier de données GeoJSON compressé ici: urban_rental_sf.geojson.gz

    + + + +

    Analyse du prix des logements au Québec

    + + + +

    Voyons voir ce qu'il se passe à Montréal:

    + + + +
    urban_rental_sf %>%
    +  filter(centre=="Montréal" & SDRNOM=="Montréal") %>%
    +  select(centre,SDRNOM,bachelor,chambre_1,chambre_2,chambre_3) %>% 
    +  st_drop_geometry()
    + + + +
    ## # A tibble: 1 x 6
    +##   centre   SDRNOM   bachelor chambre_1 chambre_2 chambre_3
    +## * <chr>    <chr>       <dbl>     <dbl>     <dbl>     <dbl>
    +## 1 Montréal Montréal      660       752       851      1118
    + + + +

    Le prix moyen d'un appartement d'une chambre, communément appelé un 3 1/2, est de 752$ en octobre 2019. Soit 50% plus cher que l'estimation la plus basse du premier ministre.

    + + + +

    Voyons maintenant où il est possible d'obtenir un logement 3 1/2 à moins de 500$ au Québec

    + + + +
    srd_moins_500_ch1 <- urban_rental_sf %>%
    +  filter(chambre_1<=500 & PRNOM=="Quebec / Québec") %>%
    +  select(SDRNOM,chambre_1) %>% 
    +  arrange(desc(chambre_1)) 
    + + + +
    srd_moins_500_ch1 %>% 
    +  st_drop_geometry()
    + + + +
    ## # A tibble: 23 x 2
    +##    SDRNOM          chambre_1
    +##  * <chr>               <dbl>
    +##  1 Montmagny             491
    +##  2 Victoriaville         487
    +##  3 Sorel-Tracy           486
    +##  4 Saguenay              486
    +##  5 Matane                482
    +##  6 Rawdon                478
    +##  7 Magog                 476
    +##  8 Sainte-Marie          472
    +##  9 Rivière-du-Loup       460
    +## 10 Mont-Laurier          457
    +## # … with 13 more rows
    + + + +
    nb_subdivisions_qc <- urban_rental_sf %>% 
    +  st_drop_geometry() %>% 
    +  filter(PRNOM=="Quebec / Québec") %>% 
    +  select(SDRNOM) %>% 
    +  distinct() %>% 
    +  count()
    + + + +

    Il y a 130 subdivisions de recensement urbaines au Québec, et 23 d'entre elles, soit 18 %, ont un coût moyen de moins de 500$ pour un appartement d'une chambre.

    + + + +

    Visualisons le coût moyen des 3 1/2 pour toutes les subdivisions de recensement urbaines du Québec

    + + + +
    urban_rental_sf %>%
    +  filter(PRNOM=="Quebec / Québec") %>%
    +  select(SDRIDU, chambre_1) %>% 
    +  mf_map(var = "chambre_1", type = "choro")
    + + + +
    + + + +

    Allons maintenant voir le centre démographique de Montréal:

    + + + +
    donnees_vis_ch1 <- urban_rental_sf %>%
    +  filter(centre=="Montréal") %>%
    +  select(SDRIDU, chambre_1) %>% 
    +  mf_map(var = "chambre_1", type = "choro")
    + + + +
    + + + +

    Et celui de Québec:

    + + + +
    donnees_vis_ch1 <- urban_rental_sf %>%
    +  filter(centre=="Québec") %>%
    +  select(SDRIDU, chambre_1) %>% 
    +  mf_map(var = "chambre_1", type = "choro")
    + + + +
    + + + +

    Sources

    + + + +
    • Enquête sur les logements locatifs, centres urbains : loyers moyens - Octobre 2019
    • Subdivisions de recensement, Fichier des limites cartographiques - Recensement de 2016
    + + +]]>
    + + 2752 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[Ressources pour la loi 25]]> + https://jevalide.ca/?p=5381 + + + https://jevalide.ca/?p=5381 + + + + 5381 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + <![CDATA[Je quitte la suite Adobe Creative Cloud]]> + https://jevalide.ca/?p=6766 + + + https://jevalide.ca/?p=6766 + + + + 6766 + + + + + + + + + 0 + 0 + + + 0 + + + + <![CDATA[Grav vers Wordpress - Mon déménagement]]> + https://jevalide.ca/2021/08/07/grav-vers-wordpress-mon-demenagement/ + Sat, 07 Aug 2021 14:39:36 +0000 + + https://jevalide.ca/?p=396 + + +
    Déménagement vers Wordpress
    + + + + + +

    En ce beau samedi matin, je me suis dit que je devais vous raconter le déménagement de mon site web depuis Grav vers Wordpress.

    + + + +

    La raison de ce déménagement est qu'avec Grav, il est plutôt difficile de personnaliser la mise en page et d'optimiser la performance SEO. Comme je cherche à construire une communauté autour de Je valide ça, il était donc temps de passer à un outil qui pourra offrir davantage de support et de fonctionnalités.

    + + + +

    Wordpress étant déjà disponible dans Yunohost, l'installation s'est fait en quelques clics.

    + + + +

    Gutenberg

    + + + +

    J'ai choisi d'y aller avec la version la plus récente et quelque peu controversée qui utilise Gutenberg, un module d'édition par blocs. Je suis agréablement surpris, je pourrais dire.

    + + + +

    D'abord, Gutenberg permet de copier-coller du Markdown et va automatiquement le convertir en bloc. Il en arrache un peu avec les images, mais ça se corrige rapidement. C'est ce qui m'a sauvé le plus de temps pour passer de Grav vers Wordpress, car tout était déjà en Markdown.

    + + + +

    De plus, il produit du code HTML simple et propre, que l'on peut facilement éditer nous-même, au besoin.

    + + + +

    Bref, cet outil a grandement facilité la migration qui a pris un peu plus d'une journée de travail, ce qui correspond à ce que j'avais estimé comme durée.

    + + + +

    Il resterait vraiment à améliorer la prise en charge des images depuis Markdown parce que c'est un peu Rock'n'roll à ce stade-ci.

    + + + +

    Yoast SEO

    + + + +

    Une extension que j'ai tout de suite installée, c'est Yoast SEO. Aujourd'hui, c'est tellement important de pouvoir être bien classé sur les moteurs de recherche pour assurer notre visibilité.

    + + + +

    Cette extension nous accompagne en configurant les métadonnées et en nous donnant des conseils sur la lisibilité du contenu, le formatage, les titres, ... Bref, c'est un outil qui nous aide à augmenter la qualité de nos pages.

    + + + +

    Wordfence

    + + + +

    Comme Wordpress est très populaire, il est aussi très ciblé par les cybercriminels. Il fallait donc que j'installe un outil de protection. Wordfence semble tout approprié pour ce travail et il était parmi les extensions les plus populaires.

    + + + +

    De plus, cet extension permet d'activer l'authentification à deux facteurs sur le compte administrateur. Je ne sais pas si la version Premium en vaut vraiment le coup, alors je ne l'ai pas activée pour l'instant.

    + + + +

    Enlighter

    + + + +

    Comme mes articles comportent souvent du code source, je voulais avoir un module de coloration syntaxique. Enlighter est un module pour intégrer du code qui est compatible avec Gutenberg. Donc, nous avons des blocs directement sur la page, dans lesquels nous copions le code et configurons le formatage.

    + + + +

    De plus, cet outil supporte bien le langage R, ce qui n'est pas toujours le cas pour les outils de publication.

    + + + +

    Redirection

    + + + +

    Comme je fais une migration d'une plateforme à une autre, les URLs changent. Je devais donc avoir un moyen de rediriger les anciennes URLs qui sont présentes dans mes autres publications. L'extension Redirection permet de faire exactement ça.

    + + + +

    De plus, elle permet de détecter toutes les requêtes qui se soldent avec une erreur 404. Elle offre dans l'interface un lien direct pour corriger la situation. Très pratique, et ceci va aider à ne pas trop troubler les moteurs de recherche.

    + + + +

    Conclusion

    + + + +

    Je peux conclure que cette migration s'est bien passée !

    + + + +

    Voici les références pour les extensions de Wordpress que j'ai installées.

    + + + + + + + +

    +]]>
    + + 396 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[Extraction de liens web vers Markdown avec R]]> + https://jevalide.ca/2021/08/03/liens-web-markdown-r/ + Tue, 03 Aug 2021 15:00:00 +0000 + + https://jevalide.ca/?p=430 + + +

    Vidéo

    + + + +

    https://peertube.francoispelletier.org/w/bbSJQmnvWT4fsYi3qpYf2t

    + + + +

    Description

    + + + +

    Dans ce vidéo, j'utilise le langage R pour extraire les URLs d'un contenu HTML et produire une liste de liens au format Markdown.

    + + + +

    Si tu souhaites en apprendre plus sur les technologies d'informatique libre et devenir plus autonome et plus heureux avec l'informatique, abonnes-toi à ma newsletter ici !

    +]]>
    + + 430 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + ]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[Analyse de données géospatiales: images Docker]]> + https://jevalide.ca/2021/09/28/analyse-de-donnees-geospatiales-images-docker/ + Tue, 28 Sep 2021 15:00:00 +0000 + + https://jevalide.ca/?p=473 + + + + +

    Pour mes travaux en analyse de données géospatiales, j'utilise principalement trois images docker. Celles-ci sont basées sur des images populaires auxquelles j'ajoute quelques outils personnalisés.

    + + + +

    Ça faisait maintenant 6 mois que je ne les avaient pas mises à jour, alors je profite du moment pour documenter le fonctionnement de ces images. Toutes mes images sont disponibles sur Docker Hub.

    + + + +
    Mes images pour analyse de données géospatiales sur Docker Hub
    Images sur Docker Hub
    + + + +

    Image Docker pour PostgreSQL et PostGIS

    + + + +

    La première image est utilisée pour provisionner la base de données que j'utilise. Je travaille presque toujours avec PostgreSQL et PostGIS pour faire de l'analyse géospatiale, donc j'ai une image qui répond à ce besoin.

    + + + +

    La version actuelle est construite depuis cette image:

    + + + +
    # Image PostGIS originale
    +postgis/postgis:12-3.0
    + + + +

    J'ajoute à celle-ci le module pgRouting, qui permet de calculer des trajets dans un graphe routier.

    + + + +

    On peut l'obtenir en utilisant cette commande:

    + + + +
    # Image PostGIS modifiée
    +docker pull franc00018/postgis-custom-cloche:latest
    + + + +

    Image Docker pour l'analyse de données géospatiales avec R et RStudio

    + + + +

    Pour utiliser le langage R, j'utilise, comme fondation, une image qui inclus RStudio et un ensemble de librairies géospatiales. Cette image est la suivante:

    + + + +
    # Image Rocker Géospatiale originale
    +rocker/geospatial
    + + + +

    J'y ajoute les librairies suivantes

    + + + +
    • r-dbi/odbc et RPostgreSQL pour me connecter à la base PostGIS
    • MMWRweek et forecast pour les séries chronologiques. Voir mon étude sur la surmortalité du COVID au Québec pour des exemples
    • plotly, rmapshaper et cartogram pour la visualisation de données et la création de cartes géographiques
    • Enfin, tinytex pour produire des documents au format LaTeX et PDF
    + + + +

    On peut l'obtenir en utilisant cette commande:

    + + + +
    # Image Rocker Géospatiale modifiée
    +docker pull franc00018/rstudio-custom-cloche:latest
    + + + +

    Image Docker pour l'analyse de données géospatiales avec Python et Jupyter

    + + + +

    Pour utiliser le langage Python et Jupyter en analyse géospatiale, je n'ai pas trouvé de bonne image Docker de départ qui réponde à mes besoins. Je pars donc de l'image de science des données générique suivante:

    + + + +
    # Image Jupyter originale
    +jupyter/datascience-notebook
    + + + +

    J'ajoute ensuite plusieurs librairies système pour Ubuntu afin de pouvoir compiler les librairies géospatiales adéquatement

    + + + +
    # Installer les dépendances géospatiales
    +apt-get install -y libpq-dev libgdal-dev binutils libproj-dev gdal-bin libspatialindex-dev postgresql-client tesseract-ocr libtesseract-dev g++
    + + + +

    La librairie GDAL est toujours plus capricieuse à installer, que ce soit nativement sur Linux, pour R ou pour Python. Le meilleur chemin est d'installer celle la plus à jour dans sa distribution Linux. Ensuite, télécharger les versions de dépendances qui ont exactement le même numéro de version.

    + + + +

    Celui-ci s'obtient avec la commande suivante:

    + + + +
    # Obtenir la version installée de GDAL
    +$(gdal-config --version)
    + + + +

    Puis, de configurer le compilateur C++ pour qu'il pointe toujours sur les bons répertoiresm et télécharger précisément la bonne version avec pip.

    + + + +
    # Configurer les variables d'environnement pour utiliser GDAL
    +CPLUS_INCLUDE_PATH=/usr/include/gdal C_INCLUDE_PATH=/usr/include/gdal pip install GDAL==$(gdal-config --version)
    + + + +

    Ensuite, j'installe plusieurs librairies additionnelles avec pip. Celles-ci couvrent la connectivité à PostgreSQL, le traitement de données géospatiales, l'imagerie, le web scraping et encore plus. J'ajoute celles que j'utilise à mesure que j'en ai besoin pour que la prochaine fois que je construit l'image, elles soient là.

    + + + +
    • psycopg2
    • ipython-sql
    • geopandas
    • geoalchemy2
    • georasters
    • scrapy
    • opencv-python
    • openpyxl
    • epiweeks
    • jupyterthemes
    • pytesseract
    • imutils
    • pdf2image
    • jupyter_contrib_nbextensions
    • pylint
    • contextily
    • fuzzymatcher
    + + + +

    J'ai aussi installé UDST/urbanaccess et pandana, qui servent à faire de l'analyse de graphe dans un contexte urbain, pour le transport en commun et l'accessibilité. Mais, je ne les ai pas encore utilisées.

    + + + +

    On peut obtenir cette image en utilisant cette commande:

    + + + +
    # Image Jupyter modifiée
    +docker pull franc00018/jupyter-custom-cloche:latest
    +]]>
    + + 473 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[Connexion à la place de marché avec Code OSS]]> + https://jevalide.ca/2021/08/17/connexion-a-la-place-de-marche-de-visual-studio-code/ + Wed, 18 Aug 2021 02:09:20 +0000 + + https://jevalide.ca/?p=477 + + +

    Introduction

    + + + +

    Je viens de reformater mon portable et je réinstalle mes logiciels. Je veux ensuite configurer mon environnement de développement. Et là ça bloque ! Je n'arrive plus à avoir la connexion à la place de marché avec Code OSS (version décontaminée de Visual Studio Code, on s'entend !).

    + + + +
    Capture de la place de marché avant la correction. La connexion ne fonctionne pas.
    Capture de la place de marché avant la correction
    + + + +

    Au début, je me dis que c'est probablement parce que Microsoft détecte que ce n'est pas la version officielle. Mais, en même temps, je trouve ça étrange, habituellement, ça aurait été mentionné sur les forums de Arch Linux ou de Manjaro. En réalité, la version code utilise un autre dépôt d'extensions : Open VSX.

    + + + +

    Je fouille donc un peu plus sur le web et j'identifie la source du problème dans un fichier de configuration.

    + + + +

    Ma solution pour retrouver la connexion à la place de marché avec Code OSS

    + + + +

    Donc, voici ce qui a réglé le problème pour moi

    + + + +

    Dans le fichier ~/.vscode-oss/argv.json, il faut ajouter le paramètre suivant à la toute fin:

    + + + +
    "enable-browser-code-loading": false
    + + + +

    Si vous utilisez la version officielle de Microsoft, le fichier est localisé à ~/.vscode/argv.json. N'oubliez pas d'ajouter une virgule à la ligne précédente après avoir ajouté la ligne indiquée !

    + + + +

    Ensuite, il faut redémarrer l'éditeur, et la connexion devrait fonctionner normalement.

    + + + +
    Capture de la place de marché après la correction. La connexion fonctionne normalement.
    Capture de la place de marché avec Code OSS après la correction
    + + + +

    Source de la solution : https://stackoverflow.com/a/68664183

    + + + +

    Contenu suggéré

    + + + + +]]>
    + + 477 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[Entretien de Nextcloud: corbeille, PHP et cache]]> + https://jevalide.ca/2021/08/24/entretien-de-nextcloud-enjeux-corbeille-php-cache-mise-a-jour/ + Tue, 24 Aug 2021 15:00:00 +0000 + + https://jevalide.ca/?p=517 + + +

    Quand faire l'entretien de Nextcloud?

    + + + +

    L'entretien de Nextcloud s'effectue habituellement sans enjeu en passant par l'interface web. Mais, une installation peut parfois devenir volumineuse. Elle peut aussi être affectée par les mises à jour de PHP. C'est donc important d'y revenir régulièrement en mode ligne de commandes.

    + + + +

    Dans cet article, je détaille quelques enjeux qui peuvent se présenter lorsque l'on maintient des infrastructures qui comprennent des dizaines voir des centaines de milliers de fichiers. Aussi, je montre quelques défis qui peuvent se présenter pendant la mise à jour du système, particulièrement avec PHP.

    + + + +

    Nextcloud a un outil de maintenance en ligne de commande nommé occ. Il est situé dans le répertoire d'installation de Nextcloud. Il s'exécute avec un interpréteur PHP avec l'utilisateur dédié à Nextcloud sur le serveur.

    + + + +

    Vider la corbeille

    + + + +

    Il peut arriver, lorsque la corbeille devient très chargée, qu'il ne soit plus possible de la vider via l'interface graphique. Dans ce cas-ci, il est recommandé d'utiliser la ligne de commande pour effectuer une vidange manuelle. De plus, cette méthode permet d’accomplir le travail pour plusieurs comptes à la fois, ou même pour l'ensemble de l'installation.

    + + + +

    Premièrement, on va se positionner dans le répertoire d'installation de Nextcloud, généralement /var/www/nextcloud.

    + + + +
    cd /var/www/nextcloud
    + + + +

    Si votre installation est native, l'utilisateur sera www-data. Si, par contre, vous utilisez Yunohost, votre utilisateur est nextcloud, car il crée des utilisateurs pour chaque application.

    + + + +
    nc_user=nextcloud # changer ici au besoin
    + + + +

    Nous allons exécuter la commande suivante pour nettoyer le système de fichiers et la corbeille

    + + + +
    sudo -u ${nc_user} php occ trashbin:cleanup --all-users
    + + + +

    Limiter la durée de rétention des fichiers

    + + + +

    On peut limiter la durée de rétention des fichiers. Pour ce faire, il faut modifier le fichier /var/www/nextcloud/config/config.php

    + + + +

    À la fin du fichier, après la dernière ligne de paramètres, ajouter la ligne suivante:

    + + + +
    'trashbin_retention_obligation' => '30, 35',
    + + + +

    Maintenance automatique

    + + + +

    Nextcloud inclus une routine PHP pour effectuer des tâches de maintenance automatique. Nous pouvons augmenter la fréquence d'exécution en ajoutant cette ligne de commande à la table de CRON de l'utilisateur root. Pour modifier, utiliser cette commande:

    + + + +
    crontab -u www-data -e
    + + + +

    Ajouter la ligne suivante:

    + + + +
    */15 * * * * php -f /var/www/nextcloud/cron.php
    + + + +

    Activer le cache de PHP 7.3

    + + + +

    Depuis la version 20, Nextcloud utilise le cache de PHP par défaut au lieu de Redis. Si les librairies de PHP ne sont pas bien configurées, vous aurez le message d'erreur suivant:

    + + + +
    Memcache \OC\Memcache\APCu not available for local cache
    + + + +

    J'ai fait mes recherches et je suis tombé sur le fil de discussion suivant: https://github.com/nextcloud/vm/issues/2039

    + + + +

    J'ai fait le travail pour vous de démêler un peu tout ça pour ressortir les éléments importants. Voici donc la solution que je propose.

    + + + +

    Pour corriger ce problème, sur Debian 10 (ou Yunohost), on corrige en ajoutant la ligne suivante.

    + + + +
    apc.enable_cli=1
    + + + +

    dans le fichier suivant:

    + + + +
    /etc/php/7.3/mods-available/apcu.ini
    + + + +

    Il faut ensuite réinitialiser le service php-fpm, qui fait l'interprétation de PHP lorsqu'on utilise le serveur web Nginx. Sur Debian, c'est comme suit

    + + + +
    sudo systemctl restart php7.3-fpm.service
    + + + +

    Dernière étape de l'entretien de Nextcloud: effectuer une correction de mise à jour

    + + + +

    À la suite des modifications effectuées en passant par la ligne de commande pour corriger l'installation de PHP ou encore manipuler les fichiers de configuration de l'instance Nextcloud, je recommande une dernière étape. Nettoyer le cache des fichiers et faire une mise à jour manuelle. Celle-ci aura l'avantage de compléter une mise à jour démarrée précédemment, mais non complétée.

    + + + +

    Pour nettoyer le cache des fichiers, la commande est similaire à celle utilisée précédemment pour vider la corbeille:

    + + + +
    sudo -u ${nc_user} php occ files:scan --all
    +sudo -u ${nc_user} php occ files:cleanup
    + + + +

    On lance ensuite la mise à jour.

    + + + +
    sudo -u nextcloud php updater/updater.phar
    + + + +
    Mise à jour manuelle de Nextcloud
    Mise à jour manuelle de Nextcloud
    + + + +

    Celle-ci placera automatiquement l'instance Nextcloud en mode maintenance. Ensuite, elle installe la nouvelle version du logiciel, puis elle met à jour les entrées de la base de données. Lorsque la corbeille est encombrée ou qu’il y a des problèmes dans la configuration système de PHP, c'est souvent cette étape qui plante. Mais, lors de l'installation dans l'interface web, il n'est pas toujours possible d'attraper les messages d'erreur. On aura l'impression que la mise à jour a été un succès.

    + + + +

    Conclusion

    + + + +

    La maintenance de Nextcloud est une tâche qu'il est essentiel de maîtriser pour garder une installation en santé. Dans ce billet, nous avons vu comment vider une corbeille trop pleine, réactiver le cache de PHP et compléter une mise à jour manuellement.

    + + + +

    + + + +

    Si tu désires avoir de l'aide pour entretenir ton instance de Nextcloud, j'offre un service de consultation express, d'une durée de 30 minutes à 1h30 !

    + + + +

    + + + + + + + +

    Contenus connexes

    + + + + +]]>
    + + 517 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[SSH sans mot de passe avec git: configuration et usage.]]> + https://jevalide.ca/2021/09/07/ssh-sans-mot-de-passe-avec-git-configuration-et-usage/ + Tue, 07 Sep 2021 15:00:00 +0000 + + https://jevalide.ca/?p=539 + + + + +

    Introduction

    + + + +

    Je préfère utiliser git avec le protocole SSH sans mot de passe plutôt que HTTPS. Pour cause, pas besoin de s'authentifier à chaque fois, car on utilise une paire de clés d'authentification. La clé publique est partagée sur le serveur distant, et la clé privée est conservée sur le poste de travail, dans le répertoire ~/.ssh/.

    + + + +

    Il serait facile d'utiliser la même clé SSH id_rsa.pub partout, puisque c'est la clé par défaut créée pour chaque utilisateur. Cependant, ce n'est pas sécuritaire, ce serait comme utiliser le même mot de passe partout.

    + + + +

    On crée donc notre propre clé pour utiliser avec notre gestionnaire de répertoires git distant. Dans mon cas, c'est surtout GitLab que j'utilise. Je crée donc ici une clé pour mon GitLab situé à git.francoispelletier.org.

    + + + +

    Git ne détectera pas automatiquement cette clé, et c'est l'objet de la petite procédure que je vais détailler.

    + + + +

    Création de la clé SSH sans mot de passe

    + + + +

    Pour créer une nouvelle clé SSH, on utilise la commande suivante:

    + + + +
    ssh-keygen -f "~/.ssh/gitlab2" -N ""
    + + + +
    • Le paramètre -f définit le chemin de sauvegarde de la clé privée. La clé publique aura le même chemin, avec .pub en suffixe.
    • Le paramètre -N définit le mot de passe de la clé. Ici, il est vide.
    + + + +

    Pour utiliser cette clé avec git, il faut configurer un hôte spécial pour ssh. Ceci se fait dans le fichier ~/.ssh/config. Voici un exemple de configuration tel que celui que j'utilise.

    + + + +
    Host gitlab
    +    Hostname git.francoispelletier.org
    +    User git
    +    IdentityFile ~/.ssh/gitlab
    + + + +
    • Le Host définir le nom que nous allons ensuite utiliser pour référer à cette configuration
    • Le Hostname est le nom de domaine et le chemin d'accès au gestionnaire de répertoires git
    • Le User est le nom d'utilisateur utilisé par l'accès SSH au gestionnaire de répertoires git. Il est situé devant le @ dans l'adresse de clone avec SSH. Par exemple, pour l'adresse git@git.francoispelletier.org:personnel/clone-repos.git, c'est git.
    • Le IdentityFile, c'est le nom de fichier que nous avons spécifié dans la commande ssh-keygen précédente.
    + + + +

    Utilisation de la clé SSH sans mot de passe avec git

    + + + +

    Maintenant, pour utiliser git, nous n'allons plus utiliser l'adresse fournir par le gestionnaire de répertoires, mais plutôt celle que nous avons spécifiée dans le fichier de configuration précédent.

    + + + +

    Au lieu d'utiliser la commande suivante:

    + + + +
    git clone git@git.francoispelletier.org:personnel/clone-repos.git
    + + + +

    Nous utilisons maintenant celle-ci:

    + + + +
    git clone gitlab:personnel/clone-repos.git
    + + + +

    Voici le fonctionnement détaillé de cette commande

    + + + +
    SSH sans mot de passe: Fonctionnement interne d'une commande git clone
    Fonctionnement interne d'une commande git clone
    + + + +

    Pour pousser vers le gestionnaire de répertoires, nous allons pouvoir utiliser la commande habituelle, en spécifiant le nom du remote (origin ici) et le nom de la branche (main ici).

    + + + +
    git push origin main
    + + + +

    Références

    + + + + + + + +

    Pages connexes

    + + + + +]]>
    + + 539 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[La fracture numérique: inégalités d'accès et d'utilisation]]> + https://jevalide.ca/2021/09/20/la-fracture-numerique-inegalites-dacces-et-dutilisation/ + Tue, 21 Sep 2021 00:51:17 +0000 + + https://jevalide.ca/?p=611 + + +
    + + + +

    Dans cet article, je vais introduire le concept de fracture numérique.

    + + + +

    Introduction

    + + + +

    La technologie numérique est devenu le moteur central de plusieurs aspects de notre vie. D'autant plus, la pandémie actuelle a largement augmenté notre utilisation et aussi notre dépendance à celle-ci. Nos communications avec les autres, l'accès au marché de l'emploi, nos loisirs et tout le système de la consommation reposent sur celle-ci.

    + + + +

    Cependant, il serait bien faux de croire que cette technologie est accessible à tous, et au même niveau. Le concept d'inégalité dans l'accès et l'utilisation de la technologie s'appelle la fracture numérique. C'est ce dont je vais ici discuter. Le contenu de cet article inclus des données factuelles ainsi que des classements issus de mes réflexions.

    + + + +

    Tout d'abord, je vais diviser le concept de fracture numérique en trois niveaux:

    + + + +
      +
    • Pouvoir accéder à la technologie numérique
    • + + + +
    • Savoir produire du contenu et des logiciels et non seulement les consommer
    • + + + +
    • Pouvoir être autonome face aux géants du web
    • +
    + + + +

    L'accès au numérique

    + + + +

    Selon plusieurs études, dont le NETendances publié au Québec par le CEFRIO jusqu'à 2020, puis reprise par Académie de la transformation numérique de l'Université Laval, trois principaux éléments définissent l'accès au numérique:

    + + + +

    L'accès à

    + + + +
      +
    • un ordinateur
    • + + + +
    • Internet
    • + + + +
    • un téléphone intelligent
    • +
    + + + +

    Quelques chiffres

    + + + +
      +
    • 34,4% de la population mondiale n'a pas accès à Internet. En Afrique, c'est 56,8% de la population
    • + + + +
    • La moitié des utilisateurs d'Internet de par le monde sont situés en Asie
    • + + + +
    • Au Québec, 97% des foyers ont accès à Internet. Nous sommes parmi les plus connectés au monde.
    • + + + +
    • Cependant, 8% de la population québécoise, soit 280 000 foyers, n'a pas accès à la haute vitesse
    • + + + +
    • Toujours au Québec, 86 % de la population possède un ordinateur, en nette augmentation depuis le début de la pandémie.
    • + + + +
    • 81 % de la population possède un téléphone intelligent et 64% utilise un téléphone intelligent pour accéder à Internet quotidiennement.
    • +
    + + + +

    Les conséquences de l'inaccessibilité du numérique sont nombreuses:

    + + + +
      +
    • Ne pas avoir accès à Internet prive les citoyens d'accès à de l'information, à des services et à certains emplois
    • + + + +
    • Ne pas avoir accès à un ordinateur empêche les citoyens d'un moyen de pouvoir produire du contenu à valeur ajoutée
    • + + + +
    • Enfin, l'utilisation des applications privatives sur le téléphone intelligent augmente la dépendance aux algorithmes des géants du web
    • +
    + + + +

    Publier et non seulement consommer

    + + + +

    L'internet est un lieu d'échange et est conçu pour publier et partager. Si on ne fait que le consommer comme les médias traditionnels tel que les journaux ou la télévision, nous en tirons très peu profit. Mais, pour publier, il faut avoir accès à une plateforme, une audience, l'absence de contrôle externe et de censure, ainsi qu'un savoir-faire.

    + + + +

    Voici les avantages que procurent la possibilité de publier:

    + + + +
      +
    • augmenter la liberté d'expression et la participation démocratique
    • + + + +
    • rejoindre des gens ayant des défis similaires
    • + + + +
    • faire la promotion de ses produits et services hors de sa communauté locale
    • + + + +
    • s'exprimer sur des enjeux de société
    • + + + +
    • présenter la réalité des groupes sociaux marginalisés
    • +
    + + + +

    En plus du contenu textuel ou littéraire, l'accès au réseau internet permet aussi de partager du code informatique. Ceci permet entre autres de diffuser la connaissance scientifique sous une forme algorithmique. Cette compétence peut être acquise de diverses façons, généralement en mode autodidacte ou avec un accompagnateur.

    + + + +

    Savoir coder un langage de programmation:

    + + + +
      +
    • augmente la capacité d'abstraction
    • + + + +
    • permet de développer sa créativité en résolution de problèmes
    • + + + +
    • réduit sa dépendance aux logiciels privatifs tels que les applications web de type SaaS
    • +
    + + + +

    Au delà de la programmation, il y a aussi la conception de systèmes informatiques qui permettent d'exécuter des tâches complexes et des processus d'affaires. Savoir développer ceux-ci permet de:

    + + + +
      +
    • s'affranchir des logiciels privatifs et des licences dispendieuses
    • + + + +
    • répondre aux besoins de ses clients de façon personnalisée
    • + + + +
    • réduire l'accumulation centralisée des données par les géants du web
    • +
    + + + +

    Les quatre niveaux d'autonomie numérique

    + + + +

    Je définis quatre niveaux d'autonomie numérique. J'entend ici par autonomie la capacité de ne pas être dépendant d'une technologie qui n'est pas sous notre contrôle pour mener nos activités commerciales, associatives ou personnelles.

    + + + +

    Augmenter son autonomie face aux:

    + + + +
      +
    • algorithmes
    • + + + +
    • fournisseurs de logiciels SaaS
    • + + + +
    • hébergeurs web privatifs
    • + + + +
    • fournisseurs d'accès Internet
    • +
    + + + +

    Atteindre l'autonomie complète signifie avoir le plein contrôle de ses technologies et ne plus dépendre d'aucune service externe, y compris le réseau Internet. C'est une situation très rare ! Mais, il est possible de progresser sur chacun de ces quatre niveaux et obtenir des avantages considérables

    + + + +

    Mon objectif avec Je valide ça est de nous faire progresser ensemble dans cette direction par la formation et l'accompagnement.

    + + + +

    Faire face aux algorithmes

    + + + +

    Les réseaux sociaux carburent à l'attention, car chaque minute passé avec eux permet de vendre de la publicité ciblée.
    Pour arriver à ses fins, les algorithmes des réseaux sociaux:

    + + + +
      +
    • servent à créer une bulle de confort qui limite le questionnement et la curiosité,
    • + + + +
    • peuvent être manipulés à des fins politiques,
    • + + + +
    • limitent la visibilité des groupes marginalisés et de leurs revendications.
    • +
    + + + +

    Pendant que vous consommez du contenu divertissant, vous ne prêtez pas attention aux enjeux sociaux autour de vous. La fracture numérique est ainsi synonyme de désinformation.

    + + + +

    Moins dépendre des fournisseurs de logiciels SaaS

    + + + +

    Les logiciels SaaS sont ceux qu'on utilisent via un navigateur web, souvent gratuitement ou via un abonnement mensuel. Nous ne contrôlons pas ce qui est fait avec les données qui se trouvent à l'intérieur du service. Généralement, les utilisateurs n'ont pas accès au code informatique de l'application.

    + + + +

    Les logiciels SaaS ont quelques inconvénients. Entre autres, ils

    + + + +
      +
    • gardent vos données captives chez eux et limitent l'interopérabilité.
    • + + + +
    • ont votre autorisation pour supprimer votre contenu et fermer votre compte sans préavis.
    • + + + +
    • peuvent changer leurs conditions d'utilisation et leurs tarifs à volonté.
    • + + + +
    • contrôlent dans quelle juridiction se trouvent vos données.
    • +
    + + + +

    Si demain, votre compte de réseau social préféré était bloqué, aurez-vous un plan B ? Fort heureusement, il existe des alternatives en logiciel libre à ce modèle d'affaires grâce à l'autohébergement. Ceci peut être accompli avec des technologies libres telles que Nextcloud et Yunohost. Lorsque nous utilisons des logiciels SaaS, une bonne pratique est de toujours avoir au moins une copie de son contenu sur une plateforme privée, sous notre contrôle.

    + + + +

    Si demain, votre compte de réseau social préféré était bloqué, aurez-vous un plan B ?

    + + + +

    S'éloigner des hébergeurs web privatifs comme plateforme principale

    + + + +

    L'autonomie face aux hébergeurs web privatifs, c'est contrôler le serveur qui héberge son site web. Le scandale de la firme canadienne WHC qui a eu lieu au début septembre est un exemple de conséquences qui arrivent avec ce type d'hébergement. Dès lors, de nombreuses entreprises subissent du jour au lendemain une grande fracture numérique.

    Certains hébergeurs web privatifs tel que Youtube, Wix, Medium et Wordpress.com monétisent votre contenu en échange d'un service gratuit. Dans cette situation, le site optimise le trafic qui circule sur votre site selon les publicités diffusées et non votre client idéal.

    + + + +

    Règle d'or ici: Vous diffusez votre contenu sur plusieurs plateformes, mais vous devez en contrôler au moins une ! Mon contenu se trouve toujours sur Nextcloud avant d'être diffusé !

    + + + +

    Développer une autonomie face aux fournisseurs d'accès Internet

    + + + +

    Ici, on parle du niveau suprême d'autonomie. Il est peu probable qu'il vous soit accessible immédiatement. Il requiert un effort de communauté considérable et des moyens financiers appropriés.

    + + + +
      +
    • Dans certains pays, la neutralité du réseau internet est menacée ou inexistante. Pensons à la Chine et son pare-feu national.
    • + + + +
    • Aux États-Unis, les câblodistributeurs tentent constamment de favoriser leur contenu en streaming.
    • + + + +
    • En milieu isolé, l'accès Internet peut être sporadique. Un intranet privé et une stratégie de cache peuvent limiter ces impacts.
    • + + + +
    • Dans plusieurs pays défavorisés, le seul accès internet offert est via des plateformes fermées tel que Facebook et Google
    • + + + +
    • En Espagne, le réseau parallèle Guifi.net fonctionne sans accès Internet, même s'il y est aussi connecté.
    • + + + +
    • À Montréal, le reseaulibre.ca et à New York, le NYC Mesh sont des réseaux informatiques citoyens décentralisés
    • +
    + + + +

    Pour diminuer la fracture numérique, ne compliquons pas les choses

    + + + +

    Le principe KISS (Keep it simple, stupid) signifie éliminer la complexité et la redondance en informatique. Des logiciels simples, tels que des utilitaires en ligne de commande, permettent d' accomplir autant que des logiciels commerciaux complexes. De plus, utiliser ceux-ci, qui ont souvent des usages bien définis, réduisent les risques de sécurité en diminuant la surface d'attaque des logiciels malicieux.

    + + + +

    Un logiciel qui fait une seule tâche et la fait bien, collabore avec les autres, lit et écrit du contenu lisible par l'humain suit la philosophie UNIX. C'est un des principes fondamentaux que je compte suivre dans mes enseignements.

    + + + +

    En complément, je t'offre un guide d'évaluation sur la fracture numérique. Découvre à quel point elle t'affecte.

    + + + +

    Contenus connexes

    + + + + +]]>
    + + 611 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[La vie privée et la sécurité de l'information enseignés aux enfants]]> + https://jevalide.ca/2021/09/23/vie-privee-securite-information-enfants/ + Fri, 24 Sep 2021 02:25:52 +0000 + + https://jevalide.ca/?p=841 + + +

    Introduction

    + + + +

    Le Commissaire à la vie privée de l'Ontario ont lancé cette semaine une publication très intéressante. Dans un petit cahier d'activité accessible en ligne et imprimable, ils invitent les enfants à découvrir les enjeux de vie privée et de sécurité de l'information.

    + + + +

    Voici le lien vers le document dans chacune de nos deux langues officielles :

    + + + + + + + +
    Ta vie privée : c’est à toi!
+Jeux et activités pour enfants
    Page couverture du guide Ta vie privée : c’est à toi!
    + + + +

    Enseigner la vie privée aux enfants, une priorité stratégique

    + + + +

    Ce document fait partie de la stratégie de l'organisme d'augmenter la littératie numérique chez les jeunes. Le but est la préparation aux défis de sécurité de l'information et de vie privée auxquels ils seront très surement confrontés dans leur adolescence et leur vie adulte.

    + + + +

    On peut lire ici quelques éléments de ce plan stratégique sur 5 ans: Priorités stratégiques du CIPVP 2021-2025 – rapport final

    + + + +
    • La protection de la vie privée et la transparence dans un gouvernement moderne
    • Les enfants et les jeunes dans un monde numérique
    • La nouvelle génération des forces de l’ordre
    • La confiance dans la santé numérique
    + + + +

    Dans le document de priorités, on peut aussi lire un élément qui ne sera pas étranger à ceux qui ont lu mon article sur la fracture numérique, que j'ai mis en lien au bas de la page

    + + + +

    Nous tiendrons compte des facteurs liés à l’accessibilité et à l’équité afin de réduire les inégalités quant aux résultats dans les communautés marginalisées.

    + + + +

    Articles connexes

    + + + + +]]>
    + + 841 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[Données d'Amnesty international et traitement du langage naturel]]> + https://jevalide.ca/2021/10/08/donnees-amnesty-international-et-traitement-du-langage-naturel/ + Fri, 08 Oct 2021 15:00:00 +0000 + + https://jevalide.ca/?p=973 + + +

    Introduction

    + + + +

    À l'hiver 2021, j'ai eu l'occasion de travailler pour le département des sciences de la décision de HEC Montréal. La directrice du programme d'analytique d'affaires était à la recherche d'un spécialiste de R et du traitement automatique du langage naturel (natural language processing ou NLP) pour développer du matériel de formation.

    + + + +

    Dans le cadre de ce mandat, je devais développer un cas d'usage pour effectuer une classification non supervisée avec des données réelles. Étant donné que l'on devait utiliser des données publiques, alors je me suis tourné vers une source de texte volumineuse que je savais de grande qualité et en français, et disponible pour la recherche académique. Cette source, c'est le site web d'Amnesty International. Voici donc un projet qui relie deux de mes intérêts: les droits humains et les modèles de données.

    + + + +

    Extraction des données

    + + + +

    J'ai donc effectué une collecte d'une bonne partie des pages web du site afin de constituer un corpus à analyser. Puis, J'ai exécuté l'ensemble de l'extraction sur plusieurs heures afin de ne pas surcharger les serveurs de l'organisme. J'ai utilisé la librairie rvest du langage R pour faire l'ensemble de cette tâche.

    + + + +

    Un exemple de page étudiée est celle-ci: https://www.amnesty.org/fr/latest/campaigns/2017/06/one-nigerian-widow-vs-shell/

    + + + +
    Capture d'écran de la page en exemple
    + + + +

    Puis, pour représenter l'information, j'ai recherché les principales structures de données qui composent les articles. J'en ai identifié 7 qui étaient pertinentes pour faire l'analyse souhaitée.

    + + + +
    • La page d'origine
    • Les paragraphes
    • Les citations
    • Les sujets
    • Les titres
    • Les hyperliens
    • Les dates de publication
    + + + +

    Passer des articles aux modèles de données !

    + + + +

    Afin de sauvegarder ces données dans un format facile à utiliser et à transporter, j'ai représenté celles-ci dans un modèle relationnel. J'ai enregistré toutes les tables dans une base de données SQLite, qui se transporte facilement et est ainsi accessible pour les étudiants.

    + + + +

    La première table contenant l'URL, j'ai calculé la signature MD5 de celle-ci et je l'ai utilisée comme identifiant unique et clé primaire pour la table pages. Toutes les autres tables ont cet identifiant comme clé étrangère, ce qui en fait un modèle en étoile. De plus, en faisant ça, j'ouvrais la possibilité de faire un graphe d'adjacence avec la table des liens.

    + + + +
    Les différentes tables de la base de données fournie aux étudiants
    Les différentes tables de la base de données fournie aux étudiants, visualisé avec DB Browser for SQLite
    + + + +

    Pour reprendre la page en exemple, on remarque qu'elle contient une citation

    + + + +
    Parfois, quand je visitais les villages avec mes belles-sœurs, je visitais les fermes... On voyait du pétrole dans l’eau. Esther Kiobel
    + + + +

    Dans la base de données, on peut facilement la retrouver en recherchant la signature dans la table citations.

    + + + +
    Citation dans la base de données
    + + + +

    La qualité des données en traitement du langage naturel

    + + + +

    En consultant la table des paragraphes, on remarque que seulement quatre d'entre eux ont été extraits. La page en question étant complexe et composée de nombreuses sections, elle ne correspondait pas au modèle de base que j'ai utilisé pour faire l'extraction.

    + + + +
    Paragraphes dans la base de données, visualisé avec DB Browser for SQLite
    + + + +

    Néanmoins, nous avons extrait suffisamment d'information pour comprendre le sujet et le contexte de l'article. L’hétérogénéité des contenus, c'est un des enjeux souvent rencontrés avec l'extraction de texte sur des sites web. Lorsqu'on effectue des extractions massives dans des délais restreints, c'est quelque chose qu'on doit accepter !

    + + + +

    Conclusion

    + + + +

    J'ai eu beaucoup de plaisir à monter ce cas d'usage en traitement du langage naturel pour les étudiants du HEC Montréal et j'espère que l'exploration de ces données permettra d'améliorer la compréhension des enjeux des droits humains de par le monde.

    + + + +

    S'inscrire au cours

    + + + +

    Tous les détails pour s'inscrire au certificat en analytique d’affaires du HEC et avoir l'occasion de suivre ce cours sont ici: https://www.hec.ca/programmes/certificats/certificat-analytique-affaires/index.html

    + + + +

    Articles connexes

    + + + + +]]>
    + + 973 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[Restauration de Yunohost avec Borg après un désastre]]> + https://jevalide.ca/2021/12/06/restauration-de-yunohost-avec-borg-apres-un-desastre/ + Tue, 07 Dec 2021 04:01:05 +0000 + + https://jevalide.ca/?p=1016 + + +

    Dans cet article, je vais détailler comment effectuer une restauration de Yunohost sur un autre système avec Borg après un désastre, ainsi que quelques étapes importantes à suivre pour ne pas se faire prendre les culottes baissées.

    + + + +
    Restauration de Yunohost avec Borg
+après un désastre
    + + + +

    Quelques informations à noter

    + + + +

    Pour toute installation de Yunohost, il est primordial de noter sur un support externe les noms des utilisateurs ayant les accès administrateur, ainsi que tous les couplages entre les noms de domaines et les applications.

    + + + +

    La commande suivante permet d'obtenir cet information

    + + + +
    sudo yunohost app list
    + + + +

    Sauvegarde des clés racines de Borg

    + + + +

    Bien qu'elles ne soient pas absolument nécessaires si votre site de sauvegarde primaire n'est pas affecté, mieux vaut en avoir une troisième copie quelque part des clés racines de cryptage des sauvegardes.

    + + + +

    Pour extraire les clés depuis l'installation client de Borg, voici comment faire avec un compte utilisateur disposant des droits administrateurs.

    + + + +
    sudo tar -jcvf ~/borg-keyfiles.tar.bz2 /root/.config/borg
    +sudo chown $USER:$GROUPS ~/borg-keyfiles.tar.bz2
    +sudo tar -jcvf ~/borg-root-keys.tar.bz2 /root/.ssh
    +sudo chown $USER:$GROUPS ~/borg-root-keys.tar.bz2
    + + + +

    Depuis le poste de sauvegarde tiers (votre ordinateur personnel, probablement)

    + + + +
    scp utilisateur_distant@mon_serveur_avec_client_borg:/home/utilisateur_distant/borg-keyfiles.tar.bz2 /repertoire-local/backup/
    +
    +scp utilisateur_distant@mon_serveur_avec_client_borg:/home/utilisateur_distant/borg-root-keys.tar.bz2 /repertoire-local/backup/
    + + + +

    Effectuer la restauration de Yunohost

    + + + +

    Pour effectuer la restauration d'une application depuis un répertoire de sauvegarde Borg (copie secondaire ou tertiaire), il faut d'abord identifier le nom de l'archive à restaurer. Il y en a généralement une par application et par date de sauvegarde. Par exemple, pour une installation de Wordpress, elle peut prendre la forme suivante

    + + + +
    _auto_wordpress-2021-09-10_00:13 _auto_wordpress-2021-09-10_00:13.tar
    + + + +

    Pour en effectuer l'extraction depuis les fichiers cryptés de Borg, il faut utiliser la commande suivante:

    + + + +
    borg export-tar /repertoire-local/backup/::_auto_wordpress-2021-09-10_00:13 _auto_wordpress-2021-09-10_00:13.tar
    + + + +

    Ensuite, dans une nouvelle instance de Yunohost, il faut installer le domaine identique à celui où se trouvait l'application. Pour se simplifier la tâche en attendant de régler les problèmes de DNS éventuels, on peut configurer celui-ci dans notre fichier local /etc/hosts ou utiliser un firejail.

    + + + +

    Il faut aussi recréer l'utilisateur Yunohost avec exactement le même nom qu'il avait sur l'instance initiale.

    + + + +

    J'ai essayé autre chose, ça ne marche pas. L'utilisateur doit être identique ! Je vous fais sauver du temps énorme avec ça !

    + + + +

    Ensuite, on transfère notre archive vers la nouvelle instance

    + + + +
    scp /repertoire-local/backup/archive _auto_wordpress-2021-09-10_00:13 _auto_wordpress-2021-09-10_00:13.tar utilisateur_distant@mon_nouveau_serveur:/home/yunohost.backup/archives/
    + + + +

    Il est possible à cette étape qu'il faille supprimer des permissions telles que wordpress.admin dans l'annuaire LDAP sinon la restauration de Yunohost ne fonctionnera pas. Ceci peut être fait depuis l'application phpLDAPAdmin disponible dans Yunohost.

    + + + +

    On peut ensuite restaurer le backup depuis l'interface de gestion des sauvegardes de Yunohost

    + + + +

    Enfin, au besoin, on pourra changer le nom de domaine d'origine pour un nouveau nom de domaine, toujours par l'interface de Yunohost.

    + + + + + +

    Articles connexes

    + + + + +]]>
    + + 1016 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[Télécharger et manipuler des fichiers avec R - Vidéo]]> + https://jevalide.ca/2021/10/30/telecharger-et-manipuler-des-fichiers-avec-r-video/ + Sat, 30 Oct 2021 19:57:05 +0000 + + https://jevalide.ca/?p=1091 + + +
    Téléchargement et manipulation de fichiers avec le langage R. Un exemple pratique.
+Inclus le logo de R ainsi que les coordonnées de réseaux sociaux de Je valide ça, service-conseil
    + + + +

    Je vous présente aujourd'hui un tutoriel pour télécharger et manipuler des fichiers avec R.

    + + + +

    Dans le cadre de la thématique sur la santé mentale que j'ai établie pour le mois de novembre, je cherche des données sur le sujet dans le contexte canadien. L'entreprise LifeWorks publie mensuellement une rapport sur la santé mentale en entreprise.

    + + + +

    Cependant, les fichiers sont difficiles à trouver pour les mois passés. Comme les URL ont toutes un format séquentiel, j'utilise le langage R pour télécharger les fichiers joints au site web, identifier le bon format de contenu et les renommer avec la bonne extension.

    J'inclus un exemple pratique où je télécharge des documents variés depuis un site web et je renomme les fichiers avec la bonne extension selon leur contenu.

    Je fais appel aux librairies tidyverse, stringr et here.

    + + + +
    + +
    + + + +

    Voici le code source utilisé dans le vidéo. Notez qu'il n'a été testé que sur Linux. Il pourrait fonctionner sur macOS. Cependant, il ne fonctionnera pas sur Windows.

    + + + +

    Je recommande de toute façon d'utiliser Linux pour manipuler des fichiers avec R !

    + + + +
    ###
    +### Extraction des fichiers joints du site de LifeWorks 
    +### pour ensuite identifier tous les PDF
    +### Auteur: François Pelletier
    +### Date: 30 octobre 2021
    +###
    +
    +library("tidyverse")
    +library("here")
    +
    +# Création du répertoire
    +
    +dir.create("./pdf")
    +
    +# Liste de fichiers
    +
    +nb <- 1159:1
    +
    +# Télécharger tous les fichiers
    +
    +for (i in nb) {
    +  url <- paste0("https://lifeworks.com/media/",
    +                i,
    +                "/download")
    +  print(url)
    +  try({
    +    download.file(url,
    +                  destfile = paste0("pdf/", i, ".pdf"),
    +                  method = "libcurl")
    +  })
    +  Sys.sleep(0.25)
    +}
    +
    +# Déterminer quels fichiers sont des PDF
    +
    +pdfinfo <- data.frame(pdfnames =
    +                        list.files(paste0(here::here(),
    +                                          "/pdf"),
    +                                   full.names = TRUE))
    +
    +pdfinfo %>%
    +  mutate(
    +    system2.args = paste("-b", pdfnames),
    +    filetype.raw = system2(
    +      command = "file",
    +      args = system2.args,
    +      stdout = TRUE
    +    ),
    +    file.format = str_replace(filetype.raw,
    +                              "^(\\w+)(?=\\s.*).*",
    +                              "\\1")
    +  ) -> pdfinfo2
    +
    +# Fréquence de chacun des types de fichiers
    +
    +table(pdfinfo2$file.format)
    +
    +# Renommer les fichiers avec les bonnes extensions
    +
    +extfix <- data.frame(
    +  file.format =
    +    c("JPEG", "MPEG", "PDF", "PNG", "SVG"),
    +  file.extens =
    +    c("jpg", "mp4", "pdf", "png", "svg")
    +)
    +
    +pdfinfo2 %>%
    +  inner_join(extfix,
    +             by = c("file.format" = "file.format")) %>%
    +  mutate(newname = str_replace(pdfnames,
    +                               "^(.*)(?=pdf$)(pdf$)",
    +                               paste0("\\1",
    +                                      file.extens))) ->
    +  pdfinfo3
    +
    +res.rename <- file.rename(pdfinfo3$pdfnames,
    +                          pdfinfo3$newname)
    + + + +

    Vous avez de nombreux documents et vous aimeriez les transformer en données structurées ? Vous avez un besoin d'extraction de données depuis un site web ? Je peux vous aider !

    + + + +

    Commençons par une courte rencontre pour explorer les possibilités de collaboration !

    + + + + +]]>
    + + 1091 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[Ruine du joueur: résolution par simulation avec R]]> + https://jevalide.ca/2021/11/09/ruine-du-joueur-resolution-par-simulation-avec-r/ + Tue, 09 Nov 2021 15:00:00 +0000 + + https://jevalide.ca/?p=1160 + + +
    Quatre cartes à jouer composant un carré d'as, superposées à des jetons de Poker. Illustration du problème de la ruine du joueur.
    Les problèmes de jeux probabilistes sont souvent utilisés en entrevue
    + + + +

    Introduction

    + + + +

    J'ai vu passer, sur LinkedIn, un problème du type ruine du joueur posé lors d'une entrevue dans une grande entreprise américaine. Le problème est le suivant:

    + + + +

    Supposons que vous avez 30$. Vous jouer à pile ou face. Pour chaque pile, vous gagnez 1$, pour chaque face, vous perdez 1$. Le jeu s'arrête lorsque vous n'avez plus d'argent ou que vous avec 100$. Quelle est la probabilité de terminer le jeu avec 100$ ?

    + + + +

    Il s'agit d'un problème de probabilité sur un horizon infini, nommé le problème de la ruine du joueur. Pour compliquer les choses, la candidate ou le candidat se fait proposer des choix de réponses.

    + + + +

    Énoncé mathématique du problème

    + + + +

    Dans ce problème de la ruine du joueur, on considère que le casino possède 70$ et qu'il est ruiné si vous gagnez. Il existe une démonstration mathématique assez complexe, pour laquelle le résultat est le suivant

    + + + +
    \rho = \frac{a}{a+b}
    +\text{ où } a = 30\$ \text{ et } b=70\$
    + + + +

    La probabilité recherchée est donc

    + + + +
    \rho = 0.3
    + + + +

    Dans un contexte d'entrevue, nous n'avons probablement pas en tête ce genre de démonstration. L'intuition pourrait nous faire répondre 30%, mais le but ici est plutôt de démontrer comment résoudre le problème. Donc, voici comment j'aurais expliqué ma démarche.

    + + + +

    Approche par simulation pour approximer la ruine du joueur

    + + + +

    Premièrement, un horizon infini peut être approximé par un horizon suffisamment long. Disons qu'on va prendre une séquence de 10 000 réalisations d'un tirage de pile ou face. Cette séquence va, avec une probabilité élevée (que nous n'estimerons pas ici, mais qui fait aussi partie de la démonstration mathématique en question) fournir un évènement de ruine ou de gain.

    + + + +

    Afin de pouvoir estimer la probabilité de l'évènement de gain, nous allons donc simuler 10 000 fois cette expérience. Nous allons donc tirer 100 000 000 fois à pile ou face. Heureusement, les ordinateurs permettent de faire ce travail en quelques secondes !

    + + + +

    Voici un exemple de code avec le langage R, écrit de façon rapide, qui permet d'effectuer ce tirage aléatoire et d'estimer la probabilité de gain.

    + + + +

    + + + +
    # Fixer la graine du générateur de nombres aléatoires pour la reproductibilité des résultats
    +
    +set.seed(123)
    +
    +# Effectuer 10000 tirages à pile ou face à l'aide d'une fonction et retourner le temps de la première fois où la série atteint 0 ou 100.
    +
    +f1 <- function(){
    +  
    +  sims <- 30+cumsum(c(-1,1)[rbinom(10000,1,.5)+1])
    +  
    +  c(min(10001,(1:10000)[sims==0]),
    +    
    +    min(10001,(1:10000)[sims==100]))
    +  
    +}
    +
    +
    +# Effectuer 10000 expériences
    +
    +ex <- data.frame(t(replicate(n = 10000,f1())))
    +
    +# Compter le nombre d'expériences où 100 survient avant 0
    +
    +a <- sum(ex$X1>ex$X2)
    +
    +# Compter le nombre d'expériences où 0 survient avant 100
    +
    +b <- sum(ex$X1<ex$X2)
    +
    +# Calculer la probabilité de gain
    +
    +a / (a+b)
    + + + +

    L'exécution de ce code, en utilisant une graine de générateur aléatoire fixe, retourne le résultat suivant:

    + + + +
    [1] 0.2966878
    + + + +

    On peut donc conclure, en utilisant un algorithme de simulation simple, que la probabilité de gain est d'environ 30% !

    + + + +

    Contenus similaires

    + + + + +]]>
    + + 1160 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[Chaîne d'approvisionnement et infonuagique, mêmes défis ?]]> + https://jevalide.ca/2021/11/11/chaine-dapprovisionnement-et-infonuagique-memes-defis/ + Thu, 11 Nov 2021 21:25:54 +0000 + + https://jevalide.ca/?p=1185 + + +
    En haut, le logo de je valide ça, service-conseil.
+
+au centre gauche, une illustration de la chaîne d'approvisionnement en 4 images superposées à un cercle, avec un engrenage au centre. Ces 4 images sont: une usine, un camion, un graphique à barre et une pièce de monnaie. 
+
+Au centre droite, une sphère représentant la Terre, à laquelle 5 serveurs informatiques sont reliés.
+
+En bas, le texte suivant:
+Chaîne d'approvisionnement et infonuagique, mêmes défis ?
    + + + +

    Parlons des impacts de la concentration dans notre économie !

    + + + +

    Je réussis ici à parler de deux sujets qui m'intéressent beaucoup ces temps-ci: l'approvisionnement et l'infonuagique !

    + + + +

    Si tu te tiens informé sur le sujet de la chaîne d'approvisionnement, tu es probablement au fait qu'il y a un problème au niveau mondial pour obtenir des conteneurs pour expédier depuis l'Asie vers l'Amérique. Alors, les industries qui peuvent se le permettre vont délocaliser leurs activités ... En les ramenant ici sur le continent !

    + + + +

    Le transport de marchandises, c'est un marché très concentré où seulement quelques armateurs (une vingtaine) ont presque 100% du marché des porte-conteneurs transocéaniques.

    Le monde du "juste à temps" est rapidement passé au "juste au cas", où on stocke des inventaires localement, au cas où ? Rappelons-nous le cas du début de la pandémie avec le papier hygiénique, pour se faire une image de la situation ! Et maintenant, on rapatrie les lignes de production sur place !

    + + + +

    Je me disais qu'on pourrait faire la même analogie avec l'infonuagique. On délègue notre gestion d'infrastructure à des fournisseurs externes qui représentent un oligopole (les GAFAM essentiellement). De plus en plus, ça fuit de partout et il y a des risques de sécurité et de disponibilité qui se concentrent et deviennent inquiétants.

    + + + +

    Approvisionnement et infonuagique: mêmes solutions ?

    + + + +

    Alors, est-ce le moment de penser à ramener le nuage plus près de nous ? Apparemment, oui, et on en parle de plus en plus, de ce nuage local !

    C'est ce qu'on appelle l’infonébulisation (fog computing en anglais) !

    + + + +

    Selon Wikipédia, il s'agit d'exploiter des applications et des infrastructures de traitement et de stockage de proximité, servant d'intermédiaire entre des objets connectés et une architecture informatique en nuage classique.

    + + + +

    C'est selon moi l'avenir du traitement informatique. Utiliser plus de potentiel de nos systèmes localement, écrire du code plus efficace, plus localisé, et mutualiser seulement ce qui a vraiment besoin de l'être !

    + + + +

    Contenu qui pourrait t'intéresser

    + + + + +]]>
    + + 1185 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[Tables de correspondance - Données de santé mentale de l'ISQ]]> + https://jevalide.ca/2021/11/17/tables-de-correspondance-donnees-sante-mentale-isq/ + Wed, 17 Nov 2021 17:01:28 +0000 + + https://jevalide.ca/?p=1219 + + +

    Introduction

    + + + +

    Dans cet article, je vais vous présenter le concept de tables de correspondance. D'une part, je vous communique leur définition et leur rôle. Puis, je discuterai de leur usage lors de la création d'une base de données analytique. En particulier, lorsque nous exploitons des sources de données variées.

    + + + +

    Notre objectif ici est de concevoir des tables de correspondance entre les données démographiques et celles sur l'impact de la pandémie de COVID-19 sur la santé mentale de la population québécoise. Ces données proviennent de l'Institut de la statistique du Québec (ISQ).

    + + + +

    Qu'est-ce qu'une table de correspondance ?

    + + + +

    Une table de correspondance sert à relier les valeurs des attributs de deux tables. Celles-ci proviennent de sources distinctes, et ont souvent des domaines différents pour décrire les même concepts. Leur rôle est de permettre d'intégrer efficacement ces tables dans un même entrepôt de données. Ça permet d'enrichir les analyses statistiques en ajoutant des dimensions d'analyse.

    + + + +

    Quand utiliser une table de correspondance ?

    + + + +

    Dans le cas qui nous intéresse, les données démographique représentent le sexe avec une domaine de valeurs numérique (1,2 et 3). Cette variable se nomme sexe dans la suite de l'exemple. Les données de l'étude sur la santé mentale, par contre, ont un domaine de valeurs en caractères (Hommes, Femmes et Total). Cette variable se nomme ici segment_sexe.

    + + + +

    Comme les domaines sont différents, nous devons utiliser une table de correspondance.

    + + + + + + + + + + + + + + + + + + + + + + + + +
    sexe segment_sexe
    1 Hommes
    2 Femmes
    3 Total
    + + + +

    Cette table, insérée dans un modèle relationnel, s'appelle un pont et a la particularité d'avoir deux clés primaires.

    + + + +
    Modèle entité-relation pour la table de correspondance représentée par le pont match_sexe
    Modèle entité-relation pour le pont match_sexe
    + + + +

    Les deux représentations sont valables. Pour autant qu'elles soient documentées dans un référentiel qui est accessible à toutes et tous. C'est le rôle de la gouvernance de données en entreprise.

    + + + +

    Devrait-on éviter l'usage de tables de correspondance ?

    + + + +

    Dans la conception de bases de données, il est important de trouver le bon compromis entre la performance et l'expérience d'utilisation. En effet, des décisions en apparence banales peuvent grandement améliorer l’efficacité et l'accès. En particulier, ici, comme nous sommes dans un contexte de données ouvertes disponibles à la population.

    + + + +

    Dans ce projet, j'ai choisi d'opter pour les valeurs de segment_sexe, qui sont facilement interprétables. J'aimerais bien que Institut statistique du Québec, qui a produit les deux sources, se dote d'un référentiel. De cette façon, elle pourrait offrir des jeux de données et des publications qui utilisent des domaines uniformes !

    + + + +

    Les tables de correspondance sont un mal nécessaire pour unifier les données provenant de diverses sources. Mais, lorsqu'elles proviennent de la même source, il serait préférable d'éviter d'avoir à les utiliser !

    + + + + + +

    Articles connexes

    + + + + + + + +

    En savoir plus

    + + + + +]]>
    + + 1219 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[Parcours client et stratégie de données]]> + https://jevalide.ca/2021/12/11/parcours-client-et-strategie-de-donnees/ + Sun, 12 Dec 2021 03:41:00 +0000 + + https://jevalide.ca/?p=1410 + + +

    Dans ce billet, je te partage quelques astuces pour démarrer la création de ta stratégie de données du bon pied ! Pour ce faire, nous allons nous centrer autour du parcours client.

    + + + +

    Pour créer une bonne stratégie de données, il faut tout d'abord se mettre dans la peau des clients. On doit faire le parcours d'achat avec elles et eux et noter les informations qui sont générées tout au long.

    + + + +

    Ensuite, on doit penser aux entités. Ce sont les parties prenantes ainsi que les transactions. Chaque doit avoir son propre identifiant unique. C'est ce qu'on appelle une clé primaire.

    + + + +

    Chacune est reliée entre elles par ces clés. Ce sont les associations (attention, les relations sont les liens entre les clés et les attributs, même si en anglais, la traduction d'association est relation). La combinaison de ces concepts se nomme le modèle entité-association.

    + + + +

    Afin de représenter ce modèle de façon normalisée, nous utiliserons ensuite le langage de modélisation unifié. En anglais, on le nomme UML, pour Unified Modeling Language.

    + + + +

    Un cas pratique de parcours client

    + + + +

    Description du parcours client

    + + + +

    Nous allons explorer un cas pratique construit autour d'un commerce de détail qui offre un programme de fidélisation. Cet exemple nous servira de support pour vulgariser le concept de stratégie de données.

    + + + +

    Le parcours client se composera ici de 6 étapes:

    + + + +
    1. L'accueil du client par l'employée
    2. La création de la facture à partir des items
    3. L'appel à la fidélisation
    4. La création du compte client
    5. Le paiement de la facture
    6. La production du relevé de transaction
    + + + +
    Parcours du nouveau client.
+
+Un nouveau client arrive au comptoir caisse pour payer ses achats
+
+Étape  1: Accueil
+L'employée accueille le client
+
+Étape 2: Création facture
+L'employée scanne le code-barre de tous les articles du client
+
+Étape 3. Fidélité
+L'employée demande au client s'il possède la carte de fidélité du magasin
+
+Étape 4. Création du compte
+L'employée crée le compte avec le client
+
+étape 5. paiement
+Le client effectue le paiement avec une carte de crédit ou de débit
+
+Étape 6. Production relevé
+L'employée émet le relevé de caisse et le remet au client
    Infographie: Parcours du nouveau client
    + + + +

    États et séquences

    + + + +

    En informatique, ces étapes sont nommées des états, et ils forment une séquence qui a une entrée et une sortie. Certains états peuvent être facultatifs, d'autres obligatoires.

    + + + +

    Dans ce cas-ci, si le client a déjà la carte de fidélité, l'étape 4 n'aura pas lieu. En informatique, on peut représenter cette séquence avec la notation en chemin de fer (railroad diagram).

    + + + +

    Voici une représentation avec le langage Python, construite en utilisant la librairie railroad-diagrams.

    + + + +
    Diagram(
    +  Stack(
    +    NonTerminal("Accueil"),
    +    Group(OneOrMore(NonTerminal("Ajout item")),"Facture"),
    +    NonTerminal("Fidelisation"),
    +    Optional("Compte client", "skip"),
    +    NonTerminal("Paiement"),
    +    NonTerminal("Relevé"),
    +  )
    +)
    + + + +

    Ce code permet de générer une image vectorielle comme suit. J'ai utilisé un outil en ligne pour ce faire.

    + + + +
    + + + + + + + + + + + + + +Accueil + + + + + + + + + + + + + + +Ajout item + + + + + + + + + + + +Facture + + + + + + + +Fidelisation + + + + + + + + + + + + + + + +Compte client + + + + + + + + +Paiement + + + + + + +Relevé + + + + + + + + + +
    + + + +

    Les données produites par le parcours client

    + + + +

    Chaque étape du parcours génère des données ou des identifiants.

    + + + +
    • À l'accueil, on a une employée, une nouvelle interaction ainsi qu'un marqueur de temps qui indique le début de l'interaction.
    • À la création de la facture, nous avons un nouvel identifiant de facture, ainsi que des identifiants pour chacun des items. Ces derniers peuvent avoir une quantité, un prix ainsi qu'une promotion applicable.
    • Puis, on vérifie si le client a une carte de fidélité. Cette carte porte un numéro unique qui permet de reconnaître le client sans avoir à lui demander d'informations personnelles.
    • Si le client n'a pas de carte, car c'est sa première visite dans ce commerce, on va lui en créer une. On relie ainsi ses coordonnées personnelles à la carte. On lui crée aussi un identifiant client interne pour relier ses transactions entre elles.
    • Enfin, on arrive au paiement. Le client acquitte le solde en utilisant une carte de début ou de crédit. La carte a un identifiant, qui est utilisé pour enregistrer la transaction chez l'émetteur. Nous avons aussi le montant du paiement associé.
    • Enfin, on génère le relevé de caisse. Ici, on ne crée aucune nouvelle information. En fait, on génère un rapport complet de l'interaction que le client a eu avec nous aujourd'hui.
    + + + +
    Les données produites par le parcours client
    Infographie: Les données produites par le parcours client
    + + + +

    Les entités et les attributs

    + + + +

    Construire un modèle de données se fait généralement après avoir étudié plusieurs processus d'affaires de l'entreprise. Mais, pour les fins de l'exemple, nous le ferons seulement pour ce parcours client.

    + + + +

    Identifions d'abord les entités à représenter et leurs identifiants

    + + + +
    • Le client
    • L'employée
    • L'interaction
    • Les produits
    • Les promotions
    • Les items
    • La facture
    • La carte de fidélité
    • La carte de paiement
    + + + +

    Attention: Le relevé n'est pas une entité, c'est un rapport !

    + + + +

    Puis, identifions les attributs de chacune de ces entités. Cette liste n'est pas exhaustive et est généralement évolutive. L'important c'est d'avoir les bonnes entités au début.

    + + + +
    • Le client
      • Numéro de client
      • Prénom et nom
      • Coordonnées (souvent considérées comme une autre entité)
    • L'employée
      • Numéro d'employé
      • Prénom et nom
    • L'interaction
      • Numéro d’interaction
      • Le marqueur de temps de début
      • Le marqueur de temps de fin
      • Numéro d'employé
      • Numéro de client
    • Les produits
      • Le code-barre
      • La description
      • Le prix
    • Les promotions
      • Le code-barre
      • Le rabais
      • La date de début
      • La date de fin
    • Les items
      • Le numéro d'item
      • Le numéro de facture
      • Le code-barre
      • La quantité
    • La facture
      • Le numéro de facture
      • Le marqueur de temps de la facture
      • Les taxes
      • Numéro d'intéraction
      • Identifiant unique de la carte de paiement
      • Le solde
    • La carte de fidélité
      • Le numéro de la carte de fidélité
      • Le numéro de client
      • La date d'entrée en vigueur
    • La carte de paiement
      • Identifiant unique de la carte de paiement
      • Le type de la carte
      • Le numéro de la carte
      • Le numéro du client
      • La date d'expiration
    + + + +

    Le modèle de données

    + + + +

    Avec cette information, nous pouvons maintenant construire un modèle de données UML. Chaque entité devient une table. Les liens entre les tables représentent la cardinalité des relations.

    + + + +

    J'ai ici seulement représenté des relations 1-1, 1-plusieurs et plusieurs-plusieurs, mais il en existe d'autres types et ce modèle pourrait être davantage raffiné. Encore une fois, cela dépend du modèle d'affaires de l'entreprise.

    + + + +
    Diagramme UML du modèle de données
    + + + +

    Ce diagramme a été fait avec le logiciel PlantUML. Voici le lien vers le code source.

    + + + +

    https://git.francoispelletier.org/-/snippets/2

    + + + +

    La stratégie de données

    + + + +

    Une fois que nous avons identifié quelles données sont générées par le processus client, nous sommes maintenant en mesure de mettre en place une stratégie de données. Celle-ci comprendra notamment les éléments suivants:

    + + + +
    • Les modèles de données
    • La politique de protection des renseignements personnels
    • Le modèle de gestion des accès utilisateur
    • Une gestion du cycle de vie de la donnée
    • Les mécanismes de qualité des données
    • L'intelligence d'affaires et les indicateurs de performance (KPI)
    • L'intégration de l'intelligence artificielle
    • Et encore plus !
    + + + +

    Comme une stratégie de données est intimement liée à la maturité numérique de l'entreprise et à ses objectifs d'affaires, c'est un travail qui doit être effectué de manière personnalisée en collaboration avec les dirigeants et les employés. C'est mon expertise !

    + + + +

    Tu aimerais avoir ta propre stratégie de données ? Je peux t'accompagner !

    + + + + + + + +

    Articles connexes

    + + + + +]]>
    + + 1410 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[Attaques de pirates sur des navires]]> + https://jevalide.ca/2021/12/20/attaques-de-pirates-sur-des-navires/ + Tue, 21 Dec 2021 04:56:56 +0000 + + https://jevalide.ca/?p=1524 + + +

    Je te présente un projet d'exploration de données géospatiales avec le langage R. J'ai utilisé un jeu de données compilées bénévolement. Celles-ci concernent les attaques de pirates sur les navires de la marine marchande.

    + + + +

    Comme le sujet des chaînes d'approvisionnement est d'actualité, et que de plus, on entend parler de piratage informatique énormément, je me suis dit que j'irais voir ce qui se passe à mi-chemin. J'ai donc fait une petite enquête sur les vrais pirates des mers !

    + + + +

    Afin de visualiser ces données, j'ai donc créé une application avec l'outil Shiny. C'est un produit développé pour le langage de programmation R qui permet de concevoir des applications web.

    + + + +

    Exploration des données

    + + + +

    Les données proviennent d'un répertoire GitHub partagé: https://github.com/newzealandpaul/Maritime-Pirate-Attack.

    + + + +

    Le jeu de données est intitulé : "Crime at Sea: A Global Database of Maritime Pirate Attacks (1993–2020)". Il contient trois fichiers, dont une table de correspondance pour les codes de pays, ainsi que des statistiques par pays et par année. Le fichier principal comporte les données des attaques de pirates, provenant de deux sources distinctes, et couvrant une période d'environ 18 ans.

    + + + +

    Nous débutons par la lecture des données depuis le fichier pirate_attacks.csv

    + + + +

    À des fins d'exhaustivité, j'ai inclus le formatage complet de toutes les colonnes du fichier. Lorsque l'on omet les informations dans le paramètre col_types, la fonction effectue la lecture du fichier puis pose des hypothèses.

    + + + +
    pirate_attacks_sf <-
    +  read_csv(
    +    "data/csv/pirate_attacks.csv",
    +    col_types = cols(
    +      date = col_date(format = ""),
    +      time = col_character(),
    +      longitude = col_double(),
    +      latitude = col_double(),
    +      attack_type = col_character(),
    +      location_description = col_character(),
    +      nearest_country = col_character(),
    +      eez_country = col_character(),
    +      shore_distance = col_double(),
    +      shore_longitude = col_double(),
    +      shore_latitude = col_double(),
    +      attack_description = col_character(),
    +      vessel_name = col_character(),
    +      vessel_type = col_character(),
    +      vessel_status = col_character(),
    +      data_source = col_character()
    +    )
    +  ) %>%
    +  st_as_sf(coords = c("longitude", "latitude"))
    + + + +

    Nous allons convertir les données en tableau géospatial avec la fonction st_as_sf de la librairie sf. La signification de sf est Simple Features, un format normalisé de données géospatiales utilisé de plus en plus avec le langage R.

    + + + +

    Voici un aperçu des données, en utilisant la fonction glimpse().

    + + + +
    Show in New Window
    +Rows: 7,511
    +Columns: 15
    +$ date                 <date> 1993-01-02, 1993-01-04, 1993-01-06,…
    +$ time                 <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, …
    +$ attack_type          <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, …
    +$ location_description <chr> "Hong Kong - Luzon - Hainan", "Hong …
    +$ nearest_country      <chr> "CHN", "CHN", "CHN", "CHN", "PHL", "…
    +$ eez_country          <chr> "TWN", "CHN", "TWN", "CHN", "PHL", "…
    +$ shore_distance       <dbl> 357.5023726, 47.4315725, 280.8118709…
    +$ shore_longitude      <dbl> 115.825956, 115.825956, 114.302501, …
    +$ shore_latitude       <dbl> 22.746644, 22.746644, 22.044867, 29.…
    +$ attack_description   <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, …
    +$ vessel_name          <chr> "Mv Cosmic Leader", "Mv Tricolor Sta…
    +$ vessel_type          <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, …
    +$ vessel_status        <chr> NA, NA, NA, NA, NA, NA, NA, NA, "Anc…
    +$ data_source          <chr> "mappingpiracy", "mappingpiracy", "m…
    +$ geometry             <POINT> POINT (116.9667 19.7), POINT (116 …
    + + + +

    Nous allons maintenant sélectionner un sous-ensemble de ces données:

    + + + +
    • La source de données la plus récente, soit imb
    • Les colonnes suivantes:
      • date
      • attack_type
      • shore_distance
      • vessel_type
      • vessel_status
    • Nous allons remplacer les valeurs manquantes de vessel_status par "Underway".
    • Nous allons extraire le mois et l'année, afin de faciliter l'exploration des données sur ces périodes.
    + + + +

    Ce qui nous donne la section de code suivante:

    + + + +
    pirate_attacks_sf_ss <- pirate_attacks_sf %>%
    +  filter(data_source == "imb") %>%
    +select(
    +  date,
    +  attack_type,
    +  shore_distance,
    +  vessel_type,
    +  vessel_status
    +) %>%
    +  replace_na(list(vessel_status="Underway")) %>%
    +  mutate(month_event = month(date),
    +         year_event = year(date))
    + + + +

    Nous allons ensuite générer un rapport automatisé de description des données à l'aide de la librairie dataReporter.

    + + + +
    makeDataReport(pirate_attacks_sf_ss)
    + + + + + + + +

    Correction des types de navires

    + + + +

    J'observe que la variable vessel_type aurait besoin d'être nettoyée, et qu'elle a plusieurs modalités avec une cardinalité inférieure à 5.

    + + + +
    vessel_typen
    Bulk Carrier322
    Product Tanker252
    Container119
    General Cargo67
    Chemical Tanker53
    Tug45
    Crude Oil Tanker40
    LPG Tanker40
    Tanker30
    Fishing Vessel27
    + + + +

    Je vais donc créer une nouvelle variable vessel_category. Pour ce faire, j'exporte les différentes valeurs de vessel_type dans un fichier CSV.

    + + + +
    pirate_attacks_sf_ss %>%
    +  group_by(vessel_type) %>%
    +  st_set_geometry(NULL) %>%
    +  count() %>%
    +  arrange(desc(n)) %>%
    +  write_csv("vessel_types.csv")
    + + + +

    Je crée une catégorisation manuelle dans la colonne vessel_category depuis un tableur. Voici un extrait de cette table.

    + + + +
    vessel_typevessel_category
    Accommodation BargeOther
    Asphalt/Bitumen TankerTanker
    Bulk CarrierBulk
    BULK CARRIERBulk
    Bunkering TankerTanker
    Cable ShipOther
    Cement CarrierBulk
    Chemical TankerTanker
    ContainerContainer
    CONTAINERContainer
    + + + +

    Je réimporte ensuite ces nouvelles catégories.

    + + + +
    custom_vessel_categories <-
    +  read_csv(
    +    "data/csv/custom_vessel_categories.csv",
    +    col_types = cols(vessel_type = col_character(),
    +                     vessel_category = col_character())
    +  )
    + + + +

    Puis, je les joints aux données précédentes sur les attaques.

    + + + +
    pirate_attacks_sf_ss2 <- pirate_attacks_sf_ss %>% 
    +  left_join(custom_vessel_categories)
    + + + +

    Enfin, je les exporte dans un fichier de données géospatiales GéoJSON afin de pouvoir les réutiliser dnas l'application Shiny.

    + + + +

    Conception d'une carte des attaques de pirates sur des navires

    + + + +

    Je vais maintenant construire une première carte pour me familiariser avec les données.

    + + + +

    Je vais créer un filtre sur les dates. Je tiens à noter ici que finalement, comme dans Shiny, le sélecteur de dates fonctionne par jour, je ne retiendrai pas ce type de filtrage. Je sélectionne ici les données de janvier 2015.

    + + + +
    pirate_attacks_sf_maps <- pirate_attacks_sf_ss2 %>%
    +  filter(year_event == 2015, month_event==1)
    + + + +

    J'utilise maintenant Leaflet pour créer une carte dynamique en JavaScript. J'utilise le fond de carte par défaut qui est OpenStreetMap.

    + + + +

    Afin d'agrémenter la visualisation, j'ai conçu un icône de pirate depuis FlatIcons, à l'aide du logiciel Gimp.

    + + + +
    + + + +

    J'ai aussi créé une ombre portée pour augmenter la qualité du visuel.

    + + + +
    + + + +

    Je combine les deux à l'aide de MakeIcon.

    + + + +
    pirateIcon <- makeIcon(
    +  iconUrl = "pirate.png",
    +  iconWidth = 32,
    +  iconHeight = 32,
    +  iconAnchorX = 16,
    +  iconAnchorY = 31,
    +  shadowUrl = "pirate-ombre.png",
    +  shadowWidth = 64,
    +  shadowHeight = 64,
    +  shadowAnchorX = 32,
    +  shadowAnchorY = 62
    +)
    + + + +

    Je crée une vignette dynamique en HTML (popup) qui contient les informations sur l'attaque. Je spécifie ensuite que je souhaite effectuer des regroupements lorsque les points sont très rapprochés.

    + + + +
    m <- leaflet(pirate_attacks_sf_maps) %>%
    +  addTiles() %>%
    +  addMarkers(
    +    popup = paste0(
    +      "Type: ",
    +      pirate_attacks_sf_maps$vessel_category,
    +      "<br>",
    +      "Statut: ",
    +      pirate_attacks_sf_maps$vessel_status,
    +      "<br>",
    +      "Type d'attaque: ",
    +      pirate_attacks_sf_maps$attack_type,
    +      "<br>",
    +      "Distance de la côte: ",
    +      round(pirate_attacks_sf_maps$shore_distance, 2),
    +      "km",
    +      "<br>",
    +      "Date: ",
    +      pirate_attacks_sf_maps$date
    +    ),
    +    icon = pirateIcon,
    +    clusterOptions = markerClusterOptions()
    +  )
    + + + +

    Voici le résultat de cette carte d'attaques de pirates sur des navires en janvier 2015, sous la forme d'une capture d'écran.

    + + + +
    Une carte du monde qui contient trois point: un point simple représenté par un icône de pirate, un regroupement représenté un cercle vert contenant le nombre 4 et un autre de couleur jaune contenant le nombre 14.
    + + + +

    Création de l'application de visualisation des attaques de pirates sur des navires

    + + + +

    J'utilise un modèle d'application traditionnel qui contient deux éléments distincts: une interface utilisateur ui et un module de traitement des données server.

    + + + +

    Interface utilisateur

    + + + +

    L'interface utilisateur est composée d'un menu de sélection du type de navires, créé avec selectInput, ainsi qu'un outil de sélection de dates, dateRangeInput. Ces deux composantes sont inclues dans un panneau latéral sidebarPanel.

    + + + +

    Le panneau principal mainPanel contient la carte, créée avec leafletOutput.

    + + + +
    ui <- fluidPage(
    +  theme = shinytheme("lumen"),
    +  titlePanel("Attaques pirates contre des navires"),
    +  sidebarLayout(
    +    sidebarPanel(
    +      # Select type of vessel to plot
    +      selectInput(
    +        inputId = "vessel",
    +        label = strong("Vessel category"),
    +        choices = unique(pirate_attacks_sf_ss2$vessel_category),
    +        selected = "Bulk"
    +      ),
    +      # Select date range to be plotted
    +      dateRangeInput(
    +        "date",
    +        strong("Date range"),
    +        start = min(pirate_attacks_sf_ss2$date),
    +        end = max(pirate_attacks_sf_ss2$date),
    +        min = min(pirate_attacks_sf_ss2$date),
    +        max = max(pirate_attacks_sf_ss2$date)
    +      ),
    +    ),
    +    mainPanel(
    +      leafletOutput("pirateMap"),
    +      p(),
    +      tags$a(
    +        href = "https://github.com/newzealandpaul/Maritime-Pirate-Attacks",
    +        "Crime at Sea: A Global Database of Maritime Pirate Attacks (1993 - 2020)",
    +        target = "_blank"
    +      )
    +    )
    +  )
    +)
    + + + +

    Serveur

    + + + +

    Le serveur contient une section réactive qui permet de filtrer les données selon le type de navire et l'intervalle de dates sélectionné.

    + + + +

    Nous spécifions d'abord les valeurs requises, ainsi que les plages de valeurs autorisées.

    + + + +

    Ensuite, nous filtrons les données avec la fonction filter.

    + + + +
      pirate_attacks_sf_maps <- reactive({
    +    req(input$date)
    +    req(input$vessel)
    +    validate(need(
    +      !is.na(input$date[1]) &
    +        !is.na(input$date[2]),
    +      "Error: Please provide both a start and an end date."
    +    ))
    +    validate(need(
    +      input$date[1] < input$date[2],
    +      "Error: Start date should be earlier than end date."
    +    ))
    +    pirate_attacks_sf_ss2 %>%
    +      filter(
    +        vessel_category == input$vessel,
    +        as.POSIXct(date) > as.POSIXct(input$date[1]) &
    +          as.POSIXct(date) < as.POSIXct(input$date[2])
    +      )
    +    
    +  })
    + + + +

    Nous avons ensuite la section où nous générons la carte. Cette section est quasiment identique à celle utilisée en exploration plus haut. Sauf qu'au lieu d'utiliser pirate_attacks_sf_maps comme un jeu de données, c'est maintenant une fonction étant donné qu'il doit être recalculé à chaque changement du filtre.

    + + + +

    Le code devient alors comme suit, et on génère le module Shiny pour Leaflet avec la fonction renderLeaflet.

    + + + +
    output$pirateMap <- renderLeaflet({
    +    source("leaflet_pirate_popuptext.R")
    +    
    +    leaflet() %>%
    +      addTiles() %>%
    +      addMarkers(
    +        data = pirate_attacks_sf_maps(),
    +        popup = paste0(
    +          "Type: ",
    +          pirate_attacks_sf_maps()$vessel_category,
    +          "<br>",
    +          "Statut: ",
    +          pirate_attacks_sf_maps()$vessel_status,
    +          "<br>",
    +          "Type d'attaque: ",
    +          pirate_attacks_sf_maps()$attack_type,
    +          "<br>",
    +          "Distance de la côte: ",
    +          round(pirate_attacks_sf_maps()$shore_distance, 2),
    +          "km",
    +          "<br>",
    +          "Date: ",
    +          pirate_attacks_sf_maps()$date
    +        ),
    +        icon = pirateIcon,
    +        clusterOptions = markerClusterOptions()
    +      )
    +  })
    + + + +

    Enfin, on exécute l'application avec cette fonction.

    + + + +
    shinyApp(ui, server)
    + + + +

    Utiliser l'application

    + + + +

    L'application qui permet de consulter les attaques de pirates sur des navires est disponible sur ce site web:

    + + + +

    https://francoispelletiertest.shinyapps.io/AttaquesPiratesMaritime/

    + + + +

    Notez que j'utilise un hébergeur gratuit qui offre 25 heures d'exécution par mois. Donc, si l'application ne fonctionne plus, c'est qu'elle a dépassé ce quota !

    + + + +

    Le code source ainsi que les données sont disponibles ici:

    + + + +

    https://git.francoispelletier.org/partage/maritime-pirate-attacks

    + + + + + +

    Articles connexes

    + + + + +]]>
    + + 1524 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[Interopérabilité des données en santé - partie 1]]> + https://jevalide.ca/2022/01/06/interoperabilite-en-sante-formation-partie-1/ + Thu, 06 Jan 2022 05:15:00 +0000 + + https://jevalide.ca/?p=1591 + + +

    J'ai suivi dernièrement une formation sur l'interopérabilité des données dans le domaine de la santé. Je m'intéresse de plus en plus à ce domaine de connaissances.

    + + + +

    De plus, notre système de santé a un besoin criant de modernisation afin de pouvoir éviter le travail redondant, diminuer les erreurs et optimiser les tâches du personnel qui est débordé. Et je crois bien que mon expérience en intégration de données y serait utile!

    + + + +

    L'interopérabilité, c'est la capacité qu'ont les systèmes informatiques de communiquer entre eux et de pouvoir intégrer les données provenant de l'extérieur de ceux-ci.

    + + + +
    Interopérabilité des données en santé
+Favoriser les échanges entre les hôpitaux
    + + + +

    Ceci se fait généralement par l'adoption de protocoles, de formats communs et d'un vocabulaire normalisé.

    + + + +

    C'était aussi une occasion pour moi de me remettre au parfum des technologies sémantiques. Ces technologies permettent de représenter les données avec une structure qui facilite le raisonnement logique.

    + + + +

    Je pourrai ainsi préparer le terrain pour étudier la nouvelle tendance dans le monde de l'ingénierie des données : les couches sémantiques (semantic layers en anglais).

    + + + +

    Voici le lien de la formation. C'est un vidéo de deux heures. Il est disponible gratuitement sur le site de l'École de santé publique de l'Université de Montréal.

    + + + + + + + +

    Introduction

    + + + +

    La formation est présentée par Aude Motulsky, Professeure à l'UdeM, Frédéric Laroche, qui est consultant en normes de la santé, et Jean Noël Nikiema, stagiaire postdoctoral, spécialiste des ontologies et de la qualité des données.

    + + + +

    Définitions

    + + + +

    Il y a deux définitions courantes de l’interopérabilité :

    + + + +
    • Une première, qui est davantage technique, c’est la possibilité d’échanger des données entre deux systèmes, et de pouvoir les utiliser. C’est celle qui est utilisée dans un ouvrage de référence : Principles of Health Interoperability (DOI: 10.1007%2F978-3-319-30370-3)
    • Une seconde, plus au niveau des structures humaines, vient de l’organisme Healthcare Information and Management Systems Society (HIMSS). Selon eux, c’est la capacité de connexion et de coordination entre les organisations qui partagent des données.
    + + + +

    Pourquoi c’est compliqué

    + + + +

    Contrairement à un domaine où tout est normalisé sous la forme de transactions, tel que le secteur bancaire, dans le domaine de la santé, il y a plusieurs défis. Les formats de données sont différents d’un établissement à un autre. De plus, un humain, c’est compliqué!

    + + + +

    Voici quelques défis :

    + + + +
    • Représenter toutes les dimensions du patient
    • Suivre le patient dans le temps et l'espace
    • Pas d'identifiant unique
    • Pratiques et processus peu normalisés
    + + + +

    Un exemple facile à comprendre, c’est au niveau de la prise de médicaments.

    + + + +

    Les données sont présentes à trois niveaux, et chacun a ses propres outils. Rien ne garantit la cohérence de ces sources d’information. Un médicament peut être prescrit et ne jamais être délivré. De plus, même s’il est délivré, il peut ne jamais être consommé.

    + + + +
    Interopérabilité des données en santé
+Exemple: Suivi des médicaments
+Prescrits
+Dossier électronique
+Prescripteur électronique
+Délivrés
+Système de la pharmacie
+Payeur (Assureur)
+Administrés
+Feuille d'adminsitration
+Application mobile
    + + + +

    + + + +

    Les 4 couches d’information

    + + + +

    On utilise les informations à quatre niveaux différents :

    + + + +

    - La technologie : Elle permet de transmettre et de recevoir les données. Elle offre la capacité de les consulter. On parle ici du matériel informatique, de la structure des données et de la syntaxe des formats d’échange

    + + + +

    - Les données : Elles comportent les informations à interpréter. On doit pouvoir en comprendre le sens, les importer et les manipuler dans différents logiciels.

    + + + +

    - Les humains : Pour que l’humain puisse interpréter les données, on doit pouvoir s’assurer de produire la même information de la même manière pour un processus donné.

    + + + +

    - Les institutions : Les données doivent pouvoir être utilisées au niveau des institutions pour l’administration, l’offre de services et la recherche.

    + + + +

    Les objectifs de l’interopérabilité

    + + + +

    Il y a trois objectifs fondamentaux, nommés les Triple Aim :

    + + + +
    • La santé de la population,
    • L’expérience du patient
    • Le contrôle des coûts.
    + + + +

    On leur ajoute aussi maintenant deux autres objectifs tout aussi importants :

    + + + +
    • Le bien-être de l’équipe de soins
    • Le respect de la diversité et de l’inclusion dans la pratique médicale.
    + + + +
    Interopérabilité des données en santé
+Quintuple Aim
+
+Santé de la population
+Expérience patient
+Contrôle des coûts
+Diversité et inclusion
+Équipe de soins
    + + + +

    La suite sera présentée dans le prochain billet du blog ! Je vais aborder les dimensions techniques et sémantiques.

    + + + + + + + +

    Articles connexes

    + + + + +]]>
    + + 1591 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[Interopérabilité des données en santé - partie 2]]> + https://jevalide.ca/2022/01/20/interoperabilite-en-sante-formation-partie-2/ + Thu, 20 Jan 2022 05:00:00 +0000 + + https://jevalide.ca/?p=1624 + + +

    J'ai suivi dernièrement une formation sur l'interopérabilité des données en santé. Je m'intéresse de plus en plus à ce domaine de connaissances.

    + + + +

    Voici la suite de mon résumé de la formation que j'ai suivie. La première partie est ici.

    + + + +

    Je présente, dans cet article, les dimensions technique et sémantique de l'interopérabilité des données de santé.

    + + + +

    La dimension technique

    + + + +

    Les niveaux d’information

    + + + +

    Il y a trois niveaux d’information :

    + + + +
    • Fonctionnel, utilisé pour la conversion et le traitement de l’information
    • Sémantique, où on retrouve le sens, le contexte et la cohérence
    • Syntaxique, où on définit le format des données
    + + + +

    On souhaite assurer une uniformité dans les communications. Donc, on utilise des terminologies, des vocabulaires contrôlés et des ontologies.

    + + + +

    Les normes HL7

    + + + +

    Les normes HL7, pour Health Level 7, concernent les échanges au niveau applicatif. La couche 7 est en fait la dernière couche du modèle OSI, qui définit les communications dans les réseaux informatiques.

    + + + +
    + + + +

    Source: Wikimedia Commons: Diagramme du modèle OSI par Offnfopt.

    + + + +

    Un exemple de communication fréquent est le transfert d’informations entre deux hôpitaux.

    + + + +

    Il existe plusieurs versions de la norme HL7 qui témoigne des évolutions technologiques. Dans la formation, on en a présenté quatre.

    + + + +

    Les différents formats de la norme HL7

    + + + +
    • HL7 V2
      • Basée sur un format texte, elle permet de normaliser les échanges.
      • Elle présente peu de contraintes au niveau des architectures applicatives et des bases de données.
      • Les messages sont transmis par le protocole MLLP (Minimal Lower Layer Protocol) sous un format en continu qui ressemble à des fichiers CSV.
      • Très utilisé partout dans le monde.
    + + + +
     MSH|^~\&|GHH LAB|ELAB-3|GHH OE|BLDG4|200202150930||ORU^R01|CNTRL-3456|P|2.4<cr>
    + PID|||555-44-4444||EVERYWOMAN^EVE^E^^^^L|JONES|19620320|F|||153 FERNWOOD DR.^
    + ^STATESVILLE^OH^35292||(206)3345232|(206)752-121||||AC555444444||67-A4335^OH^20030520<cr>
    + OBR|1|845439^GHH OE|1045813^GHH LAB|15545^GLUCOSE|||200202150730|||||||||
    + 555-55-5555^PRIMARY^PATRICIA P^^^^MD^^|||||||||F||||||444-44-4444^HIPPOCRATES^HOWARD H^^^^MD<cr>
    + OBX|1|SN|1554-5^GLUCOSE^POST 12H CFST:MCNC:PT:SER/PLAS:QN||^182|mg/dl|70_105|H|||F<cr>
    + + + +
    • HL7 V3
      • Format XML structuré et normalisés
      • Inclus des librairies logicielles
      • Plus difficile à lire.
      • Pas de normalisation des balises
    + + + +
     <POLB_IN224200 ITSVersion="XML_1.0" xmlns="urn:hl7-org:v3"
    +  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">  
    + <id root="2.16.840.1.113883.19.1122.7" extension="CNTRL-3456"/>
    + <creationTime value="200202150930-0400"/>
    + <!-- The version of the datatypes/RIM/vocabulary used is that of May 2006 -->
    + <versionCode code="2006-05"/>
    + <!-- interaction id= Observation Event Complete, w/o Receiver Responsibilities -->
    + <interactionId root="2.16.840.1.113883.1.6" extension="POLB_IN224200"/>
    + <processingCode code="P"/>
    + <processingModeCode nullFlavor="OTH"/>
    + <acceptAckCode code="ER"/>
    + <receiver typeCode="RCV">
    +   <device classCode="DEV" determinerCode="INSTANCE">
    +     <id extension="GHH LAB" root="2.16.840.1.113883.19.1122.1"/>
    +     <asLocatedEntity classCode="LOCE">
    +       <location classCode="PLC" determinerCode="INSTANCE">
    +         <id root="2.16.840.1.113883.19.1122.2" extension="ELAB-3"/>
    +       </location>
    +     </asLocatedEntity>
    +   </device>
    + </receiver>
    + <sender typeCode="SND">
    +   <device classCode="DEV" determinerCode="INSTANCE">
    +     <id root="2.16.840.1.113883.19.1122.1" extension="GHH OE"/>
    +     <asLocatedEntity classCode="LOCE">
    +       <location classCode="PLC" determinerCode="INSTANCE">
    +         <id root="2.16.840.1.113883.19.1122.2" extension="BLDG24"/>
    +       </location>
    +     </asLocatedEntity>
    +   </device>
    + </sender>
    + <!-- Trigger Event Control Act & Domain Content -- >
    + </POLB_IN224200>
    + + + +
    • HL7 CDA
      • Signifie : Clinical document architecture
      • Demande un effort de développement
      • Possibilité de convertir en HTML pour retrouver l’équivalent du document papier
      • Très utilisé aux États-Unis
    • HL7 FHIR
      • Fast Healthcare Interoperability Resources
      • Données au format JSON échangées avec des REST API
      • Des exemples de code et des serveurs de test sont disponibles
      • Encore peut adopté au Canada, en croissance aux États-Unis
    + + + +
    {
    +  "resourceType": "Practitioner",
    +  "id": "example",
    +  "text": {
    +    "status": "generated",
    +    "div": "<div xmlns=\"http://www.w3.org/1999/xhtml\">\n      <p>Dr Adam Careful is a Referring Practitioner for Acme Hospital from 1-Jan 2012 to 31-Mar\n        2012</p>\n    </div>"
    +  },
    +  "identifier": [
    +    {
    +      "system": "http://www.acme.org/practitioners",
    +      "value": "23"
    +    }
    +  ],
    +  "active": true,
    +  "name": [
    +    {
    +      "family": "Careful",
    +      "given": [
    +        "Adam"
    +      ],
    +      "prefix": [
    +        "Dr"
    +      ]
    +    }
    +  ],
    +  "address": [
    +    {
    +      "use": "home",
    +      "line": [
    +        "534 Erewhon St"
    +      ],
    +      "city": "PleasantVille",
    +      "state": "Vic",
    +      "postalCode": "3999"
    +    }
    +  ],
    +  "qualification": [
    +    {
    +      "identifier": [
    +        {
    +          "system": "http://example.org/UniversityIdentifier",
    +          "value": "12345"
    +        }
    +      ],
    +      "code": {
    +        "coding": [
    +          {
    +            "system": "http://terminology.hl7.org/CodeSystem/v2-0360/2.7",
    +            "code": "BS",
    +            "display": "Bachelor of Science"
    +          }
    +        ],
    +        "text": "Bachelor of Science"
    +      },
    +      "period": {
    +        "start": "1995"
    +      },
    +      "issuer": {
    +        "display": "Example University"
    +      }
    +    }
    +  ]
    +}
    + + + +

    La dimension sémantique

    + + + +

    La triade sémantique est un concept central au concept de représentation ou d’abstraction.

    + + + +
    • Le signe, ou le symbole, qui est la représentation linguistique.
    • Le signifié, qui est l’interprétation que l’on en fait mentalement.
    • L’objet, ou le référent, et la représentation dans le monde réel.
    + + + +
    La triade sémantique
+A: Représentation cognitive
+B: Structure linguistique
+C: Ontologie
    La triade sémantique
    + + + +

    Les outils

    + + + +

    Il y a différents outils qui permettent d'ajouter une dimension sémantique aux données:

    + + + +
    • Terminologies ou taxonomies
      • Hiérarchies de termes
      • Vocabulaire contrôlé
    • Ontologies
      • Représentent les concepts sur différents axes
      • Permettent de représenter des relations complexes
    • Thésaurus
      • Permettent de faire des recherches bibliographiques
      • Relient des concepts similaires entre eux, un peu comme un dictionnaire des synonymes
    • Classifications
    + + + +
    Classification ICD-10 CIM-10
+Permet l'interopérabilité en santé
    Un diagramme de la classification CIM-10
    + + + +

    J'espère que tu as apprécié ce résumé de la formation. Si tu souhaites la suivre au complet, elle est ici.

    + + + +

    Articles connexes

    + + + + +]]>
    + + 1624 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[Frigos communautaires, données et sourires !]]> + https://jevalide.ca/2022/01/15/frigos-communautaires-donnees-et-sourires/ + Sat, 15 Jan 2022 18:34:42 +0000 + + https://jevalide.ca/?p=1842 + + +

    Je suis récemment tombé sur une initiative très intéressante: les frigos communautaires, via une publication LinkedIn. J'ai demandé une référence sur la liste des emplacements, et on m'a dirigé vers cette page.

    + + + +

    J'adore l'idée du répertoire, mais j'avoue que sur "sur le fly", si j'ai un peu de bouffe à donner, je ne trouverai pas rapidement où aller la porter près de chez-moi ! Nous ne sommes plus vraiment à l'époque du bottin !

    + + + +

    Donc, je me suis dit qu'il fallait faire une carte interactive ! Pour améliorer l'expérience utilisateur des visiteurs de ce site.

    + + + +

    Comment transformer un bottin d'adresse en une carte interactive !

    + + + +

    Nous allons transformer un bottin d'adresse sous la forme d'une carte interactive. Pour ce faire, nous allons utiliser le logiciel statistique R, ainsi que l'outil de création de cartes Leaflet.

    + + + +

    Voici les étapes à effectuer pour faire ce projet:

    + + + +
      +
    • Étudier la structure de la page web
    • + + + +
    • Extraire les données du tableau
    • + + + +
    • Nettoyer les données
    • + + + +
    • Géocoder les adresses à l'aide du service en ligne Google Maps
    • + + + +
    • Produire la carte à l'aide de Leaflet
    • + + + +
    • Exporter la carte
    • +
    + + + +

    Nous allons voir chacune de ces étapes ensemble. On commence !

    + + + +

    Structure de la page web

    + + + +

    La première étape pour extraire le contenu désiré d'une page web, c'est de trouver le sélecteur CSS associé à cet élément.

    + + + +

    Dans ce cas-ci, nous cherchons à extraire un tableau. La balise HTML recherchée est <table>.

    + + + +

    Nous avons maintenant notre sélecteur CSS qui est

    + + + +
    #tablepress-1
    + + + +

    Extraction des données

    + + + +

    Nous allons maintenant utiliser le logiciel R pour extraire la page.

    + + + +

    La librairie rvest permet d'extraire des données depuis le langage HTML. Elle fait partie de la collection Tidyverse. Celle-ci est développée par Hadley Wickham, un grand contributeur à la communauté du langage R.

    + + + +

    Nous allons aussi utiliser dplyr, stringr et ggmap, la première pour manipuler le tableau de données, et la seconde pour manipuler les chaînes de caractères et la dernière pour traiter les données géospatiales.

    + + + +
    library("rvest")
    +library("dplyr")
    +library("ggmap")
    +library("stringr")
    + + + +

    Insérons l'URL de la page ainsi que le sélecteur CSS dans deux variables.

    + + + +
    url_page <-
    +  "https://sauvetabouffe.org/boite-a-outils/repertoire-des-frigos-communautaires-du-quebec/"
    +selecteur_css <- "#tablepress-1"
    + + + +

    Nous allons maintenant télécharger la page web avec la fonction read_html de rvest.

    + + + +
    html_page <- read_html(url_page)
    + + + +

    Ensuite, nous allons extraire le tableau à l'aide de deux autres fonctions de rvest.

    + + + +
    frigo_table <-
    +  html_page %>%
    +    html_element(selecteur_css) %>%
    +    html_table()
    + + + +

    Nous avons maintenant un tableau de données (data.frame) dans la variable frigo_table. Voici un aperçu.

    + + + +
    Aperçu du tableau de données des frigos communautaires importé dans R
    + + + +

    Nettoyage des données

    + + + +

    Nous allons maintenant nettoyer ces données. Nous remarquons, en particulier, que l'adresse contient aussi une indication pour préciser la localisation une fois qu'on se trouve à la bonne adresse. Cependant, pour effectuer le géocodage, nous n'en avons pas besoin. Nous allons donc la supprimer.

    + + + +

    Pour ce faire, nous allons utiliser une expression régulière. C'est une chaîne de caractère qui représente un modèle pour extraire une section précise d'un texte.

    + + + +

    Nous cherchons ici à enlever le texte qui est entre parenthèses à la fin de la chaîne de caractères de l'adresse.

    + + + +

    L'expression prend donc la forme suivante:

    + + + +
    \(.*\)$
    + + + +

    Voici une explication en utilisant l'outil web RegExr.

    + + + +
    + + + +

    Fait à noter, avec le langage R, il faut doubler les backslash "\\". L'extraction se fait donc comme suit.

    + + + +

    Nous créons la colonne adr_propre depuis Adresse en supprimant ce qui correspond à l'expresion régulière avec str_remove, puis nous supprimons les espaces superflus avec str_trim.

    + + + +
    frigo_table2 <- frigo_table %>%
    +  mutate(adr_propre = Adresse %>%
    +    str_remove("\\(.*\\)$") %>%
    +    str_trim())
    + + + +

    Géocodage des adresses des frigos communautaires

    + + + +

    Pour géocoder les adresses, nous utilisons l'outil Google Maps. Pour ce faire, il faut se créer une clé d'API Google. La documentation pour ce faire se trouve ici.

    + + + +

    Pour enregistrer notre clé dans la session R, on utilise la fonction register_google.

    + + + +

    Nous pouvons ensuite utiliser la fonction geocode de ggmap pour obtenir le géocodage depuis Google Maps. La 4e adresse n'a rien retourné, je vais donc aller cherches les coordonnées manuellement et la patcher pour avoir des données complètes.

    + + + +
    geo_frigo <- geocode(frigo_table2$adr_propre)
    +# Je patch celle qui n'a pas fonctionné
    +geo_frigo[4,] <- list(-67.4330588, 48.4657985)
    + + + +

    Je vais maintenant joindre les coordonnées aux tableau de données, puis exporter les données au format CSV.

    + + + +
    frigo_table3 <- frigo_table2 %>% cbind(geo_frigo)
    +frigo_table3 %>% write.csv("frigo_table.csv")
    + + + +

    Production de la carte des frigos communautaires

    + + + +

    Nous allons importer 4 librairies additionnelles.

    + + + +
      +
    • sf (qui signifie Simple Features, permet de manipuler des tableaux de données géospatiales).
    • + + + +
    • leaflet (pour créer la carte)
    • + + + +
    • htmltools (générer le popup de la carte)
    • + + + +
    • htmlwidgets, (exporter la carte dans une page HTML autonome)
    • +
    + + + +
    library("sf")
    +library("leaflet")
    +library("htmltools")
    +library("htmlwidgets")
    + + + +

    Nous allons lire le fichier CSV créé précédement, créer un tableau de données géoréférencées avec st_as_sf puis le convertir au format geojson à l'aide de write_sf. Puisque cette dernière fonction ne permet pas d'écraser les données, nous allons les effacer par file.remove en validant si elles existent avec file.exists.

    + + + +
    frigo_table_sf <- read.csv("frigo_table.csv") %>%
    +  st_as_sf(frigo_table3, coords = c("lon", "lat"))
    +
    +if (file.exists("frigo_table_sf.geojson")){
    +  file.remove("frigo_table_sf.geojson")
    +}
    +frigo_table_sf %>% write_sf("frigo_table_sf.geojson")
    + + + +

    Voici un aperçu des données. La colonne geometry contient les coordonnées GPS des emplacements des frigos communautaires.

    + + + +
    + + + +

    Nous allons maintenant créer la carte. Nous remarquons que pour chaque marqueur, nous créons un popup qui contient du code HTML généré depuis les variables Quoi, Adresse et Particularités.

    + + + +

    La carte est contenu dans la variable l à cette étape.

    + + + +
    l <- leaflet(data = frigo_table_sf) %>%
    +  addTiles() %>%
    +  addMarkers(popup = ~paste0(
    +    '<h2>',
    +    Quoi,
    +    '</h2><p>',
    +    Adresse,
    +    "</p>",
    +    Particularités %>%
    +      str_replace_all("\\n", "<br>")
    +  ))
    + + + +

    Elle ressemble à ceci, dans l'éditeur de code R que j'utilise.

    + + + +
    + + + +

    Exportation de la carte des frigos communautaires

    + + + +

    Pour exporter la carte, j'appelle une dernière fonction.

    + + + +
    saveWidget(l, file = "frigo_carte.html")
    + + + +

    Pour voir la carte, clique sur le lien suivant.

    + + + + + + + +

    Conclusion

    + + + +

    Je fais ça par plaisir, créer des cartes, des visualisations, des produits tangibles avec des données, parce que c'est agréable et ça fait sourire 😊 !

    + + + +

    Comme tu peux voir, je suis parti d'une page web, pas d'une base de données toute bien structurée. Derrière ces informations, il y a des gens, des bénévoles, des passionnés, des gens de cœur, qui ont monté des frigos communautaires pour offrir de la nourriture fraîche aux gens dans le besoin.

    + + + +

    Grâce à ça, je vais permettre à plus de gens de participer à la cause. Les données, ça semble parfois technique et froid. Mais, ici, ça garde des aliments au froid et des cœurs au chaud 💛 !

    + + + + + +

    Articles connexes

    + + + + +]]>
    + + 1842 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[Restauration d'une application avec Borg]]> + https://jevalide.ca/2021/07/18/restauration-dune-application-yunohost-avec-borg/ + Sun, 18 Jul 2021 22:00:00 +0000 + + https://blog.jevalide.ca/wp/?p=147 + + + + +

    Introduction:

    + + + +

    Dans cet article, nous allons montrer comment effectuer la restauration de l'application Piwigo, un album de photo inclus dans le système Yunohost, archivée à l'aide de Borg.

    + + + +

    Problème avec Piwigo

    + + + +

    En juin dernier, j'ai désinstallé l'application Piwigo de mon instance Yunohost publique, car elle générait constamment des messages d'erreur et faisait planter mes sauvegardes.

    + + + +

    J'ai communiqué mon problème avec l'équipe de développement. Un membre m'est rapidement revenu avec une solution et en a profité pour améliorer la prise en charge de la mise à jour vers la nouvelle version.

    + + + +

    Aujourd'hui, je me suis dit qu'avec l'approche des vacances, je devrais remettre en place ma galerie photo.

    + + + +

    Borg à la rescousse

    + + + +

    Comme j'utilise le système Borg pour effectuer mes sauvegardes, j'ai pu facilement récupérer l'archive la plus récente de l'application. Puis la mettre à jour avec le correctif proposé.

    + + + +

    Voici les étapes pour restaurer la sauvegarde depuis Borg. Notez que pour utiliser Borg, nous utiliserons deux mots de passe.

    + + + +
    • Le premier est pour le transfert des fichiers par SSH, c'est un mot de passe pour le serveur distant où est située la sauvegarde.
    • Le second est pour décrypter les fichiers de sauvegarde. C'est un mot de passe utilisé localement.
    + + + +

    Ce système avec deux mots de passe est nommé no knowledge. Notre hébergeur de sauvegarde ne sait pas ce que nous entreposons sur son système. Il ne pourra jamais le décrypter, puisqu'il ne voit jamais la clé.

    + + + +

    En reprenant la syntaxe utilisée dans mon article précédent, je liste la sauvegarde la plus récente de Piwigo:

    + + + +
    nom_backup=$(borg list ${RSYNC_USER}@${RSYNC_SUB}.rsync.net:~/backup | \
    +grep piwigo | \
    +tail -n 1 | \
    +cut -d" " -f1)
    + + + +

    Ensuite, je vais exporter cette sauvegarde et la rapatrier dans mon répertoire d'archives locales sur le serveur Yunohost

    + + + +
    BORG_RSH="ssh -i /root/.ssh/id_borg_ed25519 -oStrictHostKeyChecking=yes " \
    +borg export-tar \
    +${RSYNC_USER}@${RSYNC_SUB}.rsync.net:backup::${nom_backup} \
    + /home/yunohost.backup/archives/${nom_backup}.tar.gz
    + + + +

    Je vais maintenant utiliser l'interface en ligne de commandes de Yunohost pour restaurer mon application

    + + + +
    sudo yunohost backup restore ${nom_backup} --apps
    + + + +

    Voici le résultat de la restauration de la sauvegarde

    + + + +
    Info: Preparing archive for restoration...
    +Info: Restoring piwigo...
    +Info: [....................] > Loading settings...
    +Info: [....................] > Validating restoration parameters...
    +Info: [+...................] > Restoring Piwigo main directory...
    +Info: [#...................] > Restoring the MySQL database...
    +Info: [#+..................] > Recreating the dedicated system user...
    +Info: [##+++...............] > Reconfiguring PHP-FPM...
    +Info: [#####++.............] > Restoring the Fail2Ban configuration...
    +Info: [#######+++++++++++..] > Reinstalling dependencies...
    +Info: [##################+.] > Restoring data directory...
    +Info: [###################.] > Reloading NGINX web server and PHP-FPM...
    +Info: [####################] > Restoration completed for Piwigo
    +Success! Restoration completed
    + + + +

    Je vais exécuter la ligne fournie par l'équipe de développement pour résoudre mon enjeu.

    + + + +
    sudo yunohost app setting piwigo datapath -v "/home/yunohost.app/piwigo"
    + + + +

    Voici le billet, pour les curieux !

    + + + +

    Je vais maintenant effectuer la mise à jour de l'application

    + + + +
    sudo yunohost tools upgrade apps
    + + + +

    Ma galerie photo est maintenant à jour et disponible ici.

    + + + +
    Capture d'écran de la galerie photo de François Pelletier
    Capture d'écran de la galerie photo de François Pelletier
    +]]>
    + + 2751 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[Analyse de la censure littéraire avec spaCy et Scrapy]]> + https://jevalide.ca/2022/02/06/amour-censure-litteraire-texas-analyse-visualisation/ + Sun, 06 Feb 2022 21:51:32 +0000 + + https://jevalide.ca/?p=1954 + + +

    Dans ce billet, je plonge dans l'analyse de la censure littéraire à l'aide du langage Python et des outils Scrapy et spaCy.

    + + + +

    je te partage une analyse du langage naturel effectuée sur des descriptions de livres. Ceux-ci ont tous en commun de figurer sur une liste de censure proposée par un sénateur républicain du Texas. J'ai explore le contexte politique dans cet article de blog.

    + + + +

    Un contenu unique qui devrait plaire à plusieurs en cette fête de l'amour !

    + + + +

    Extraction des titres et des URL de la liste

    + + + +

    Pour faire l'extraction de la liste des titres de tous les livres et de leur URL, j'utilise la librairie Scrapy du langage Python.

    + + + +
    import scrapy
    +from scrapy.crawler import CrawlerProcess
    +from scrapy.item import Item, Field
    + + + +

    Je vais donc commencer par définir une classe (un modèle d'objet accompagné de ses propriétés) qui contient deux éléments extraits depuis les listes de livres:

    + + + +
    • Le titre du livre
    • L'URL de la page qui décrit le livre
    + + + +
    class GoodReadsListItem(Item):
    +    title = Field()
    +    href = Field()
    + + + +

    Je vais les extraire récursivement depuis chacune des 9 listes de livres.

    + + + +

    Ils sont contenus dans une balise identifiée par le chemin CSS suivant: a.bookTitle.

    + + + +
    Capture d'écran de l'entête de la page du livre Race and the Media in Modern America
+
+Analyse de la censure littéraire demandée par Matt Krause, sénateur républicain du Texas
    + + + +

    Voici le code HTML de cet élément, tel qu'obtenu depuis l'inspecteur de code du navigateur.

    + + + +
    <a class="bookTitle" itemprop="url" href="/book/show/55184226-race-and-the-media-in-modern-america">
    +        <span itemprop="name" role="heading" aria-level="4">Race and the Media in Modern America</span>
    +</a>
    + + + +

    Construction de la classe Spyder

    + + + +

    On peut construire une classe de type Spyder pour extraire ces éléments depuis le code HTML.

    + + + +

    Cette classe contient deux méthodes:

    + + + +
    • start_requests : permet de définir les URLs à télécharger et initialiser les requêtes de téléchargement.
      • Ce sont ici les 9 pages qui contiennent les listes.
      • Pour extraire le contenu, on définit la propriété callback avec une autre méthode : parse
    • parse : permets d'extraire les informations depuis la réponse et de les insérer dans l'objet GoodReadsListItem que l'on a créé plus haut.
      • Le titre est extrait depuis le texte de la balise span, et on construit l'URL à partir de l'attribut href, en concaténant l'adresse complète du site.
    + + + +

    Enfin, on définit le nom de notre classe: GoodReadsListSpider.

    + + + +

    Voici le résultat:

    + + + +
    class GoodReadsListSpider(scrapy.Spider):
    +    name = "goodreadslistspider"
    +
    +    def start_requests(self):
    +        urls = [
    +            "https://www.goodreads.com/list/show/"
    +            "168413.Banned_Books_According_to_Krause_Part_1_",
    +            "https://www.goodreads.com/list/show/"
    +            "168429.Banned_Books_According_to_Krause_Part_7",
    +            "https://www.goodreads.com/list/show/"
    +            "168430.Banned_Books_According_to_Krause_Part_8",
    +            "https://www.goodreads.com/list/show/"
    +            "168425.Banned_Books_According_to_Krause_Part_4",
    +            "https://www.goodreads.com/list/show/"
    +            "168420.Banned_Books_According_to_Krause_Part_2",
    +            "https://www.goodreads.com/list/show/"
    +            "168424.Banned_Books_According_to_Krause_Part_3",
    +            "https://www.goodreads.com/list/show/"
    +            "168428.Banned_Books_According_to_Krause_Part_6",
    +            "https://www.goodreads.com/list/show/"
    +            "168426.Banned_Books_According_to_Krause_Part_5",
    +            "https://www.goodreads.com/list/show/"
    +            "168432.Banned_Books_According_to_Krause_Part_9"
    +            ]
    +        for url in urls:
    +            yield scrapy.Request(url=url, callback=self.parse)
    +
    +    def parse(self, response):
    +        page = response.url.split("/")
    +        anchors = response.css("a.bookTitle")
    +        for anchor in anchors:
    +            data = GoodReadsListItem({
    +                'title': anchor.css('span::text').get(),
    +                'href': "https://goodreads.com" + anchor.attrib[
    +                    'href']
    +            })
    +            yield data
    + + + +

    Définition du processus d'extraction

    + + + +

    Scrapy simule le comportement d'un navigateur web. Comme les sites web sont de plus en plus complexes et qu'ils utilisent des mécanismes de protection contre les robots, nous devons appliquer ici quelques notions d'éthique.

    + + + +

    Nous allons utiliser un autorégulateur (AUTOTHROTTLE_ENABLED) pour faire une pause (AUTOTHROTTLE_START_DELAY) d'une seconde entre chacune des extractions. Ça parait court, mais c'est très long pour un ordinateur et ça donne le temps au serveur qui nous envoie les pages de respirer. Comme ça, il ne nous considère pas comme une menace.

    + + + +

    Nous allons aussi désactiver les cookies (COOKIES_ENABLED) et le cache (HTTPCACHE_ENABLED), car nous voulons que chaque extraction se comporte comme si nous visitions le site web pour la première fois. C'est important, sinon le moteur de navigation pourrait réutiliser du contenu ancien qu'il a gardé en mémoire et fausser les données de notre extraction.

    + + + +

    Enfin, nous définissons le format de données dans lequel nous voulons sauvegarder les résultats (FEEDS). Avec le langage Python, le format JSON est approprié, car il ressemble à la structure de données dictionnaire.

    + + + +

    Le processus complet, défini par la fonction CrawlerProcess, ressemble à ceci:

    + + + +
    process = CrawlerProcess({
    +    'AUTOTHROTTLE_ENABLED': 'True',
    +    'AUTOTHROTTLE_START_DELAY': 1.0,
    +    'HTTPCACHE_ENABLED': False,
    +    'COOKIES_ENABLED': False,
    +    'FEEDS': {
    +        'scraped_data/goodreadslist.json':{
    +            'format': 'json',
    +        'encoding': 'utf8',
    +        'store_empty': False,
    +        'fields': None,
    +        'indent': 4,
    +        'item_export_kwargs': {
    +           'export_empty_fields': True,
    +        }
    +        }
    +    }
    +})
    + + + +

    Exécution de l'extraction

    + + + +

    Pour faire l'extraction, on définir un navigateur virtuel avec la méthode crawl et notre objet GoodReadsListSpider.

    + + + +
    process.crawl(GoodReadsListSpider) 
    + + + +

    On démarre ensuite le processus, puis on l'arrête lorsque l'extraction est terminée.

    + + + +
    process.start()
    +process.stop()
    + + + +

    Nous avons maintenant un fichier JSON qui contient tous les titres des livres de la liste, ainsi que leur URL sur le site GoodReads.

    + + + +

    Extraction des descriptions de chaque livre de notre analyse de la censure littéraire

    + + + +

    Nous allons maintenant répéter le processus d'extraction pour chacun des livres, dont nous avons récolté les titres et les URLs.

    + + + +

    Sur chacune des pages de livres, il y a une section qui contient des métadonnées sur le livre, qui porte l'identifiant metacol. Nous allons donc nous intéresser à celle-ci.

    + + + +
    Capture d'écran de la description du livre Race and the Media in Modern America sur Goodreads
+
+Analyse de la censure littéraire demandée par Matt Krause, sénateur républicain du Texas
    + + + +

    Nous y trouvons notamment

    + + + +
    • le titre,
    • la série à laquelle il appartient (si applicable)
    • l'URL vers la page de l'autrice ou auteur
    • le nom de l'autrice ou auteur
    • la description du livre
    • la note moyenne
    • le nombre de notes
    • le nombre de revues
    • le format du livre
    • le nombre de page
    • la date de publication
    • l'ISBN (le nombre situé sous le code barre, qui identifie uniquement un livre)
    + + + +

    Il y a aussi d'autres attributs présents sur la page, mais qu'une des réalités de la pratique du moissonnage du web, c'est que ça ne fonctionne pas de manière déterministe. Les sites web changent, le téléchargement peut tomber en erreur ou un script dynamique peut ajouter du bruit sur la ligne.

    + + + +

    On définit d'abord une classe pour contenir toutes ces informations: GoodReadsBookItem.

    + + + +
    class GoodReadsBookItem(Item):
    +    bookTitle = Field()
    +    bookSeries = Field()
    +    authorURL = Field()
    +    authorName = Field()
    +    description = Field()
    +    ratingValue = Field()
    +    ratingCount = Field()
    +    reviewCount = Field()
    +    bookFormat = Field()
    +    numberOfPages = Field()
    +    datePublished = Field()
    +    isbn = Field()
    + + + +

    Je vais créer deux méthodes additionnelles à l'intérieur de l'objet GoodReadsBookSpider:

    + + + +
    • clean_string: permet de nettoyer les caractères superflus tels que les espaces et les sauts de lignes à la fin
    • split_published_date: Le champ de la date de publication est mal formaté et inclus aussi le nom de l'éditeur, et j'ai remarqué au cours de mes essais, que bien souvent, il est contaminé par du code d'outils marketing, et finit par être inutilisable. J'utilise donc une expression régulière pour extraire uniquement la date et la convertir dans un format normalisé ISO 8601.
    + + + +

    Voici le code de ces deux méthodes:

    + + + +
    def clean_string(self, strExtract):
    +    if strExtract is None:
    +        x = ""
    +    else:
    +        x = strExtract.strip('\n ')
    +    return x
    + + + +
    def split_published_date(self, strPublisher):
    +    try:
    +        datepublished_str = re.search(r'^.*Published\s(\w+\s\d+\w*\s\d+)\sby.*', strPublisher).group(1)
    +        datepublished = parse(datepublished_str).isoformat()
    +    except:
    +        datepublished = datetime.datetime.now()
    +    return datepublished
    + + + +

    J'utilise maintenant une panoplie de sélecteurs CSS pour extraire tous les attributs à l'intérieur du bloc de classe metacol. Je ne vais pas les décrire un par un, mais leur fonctionnement est similaire à ce que j'ai utilisé pour extraire les titres et les URL des livres.

    + + + +

    À la fin de la fonction parse, je vérifie si le titre est vide. C'est mon indicateur pour valider si l'extraction a bien fonctionné ou non.

    + + + +

    Voici le contenu de l'objet GoodReadsBookSpider:

    + + + +
    class GoodReadsBookSpider(scrapy.Spider):
    +    name = "goodreadsbookspider"
    +
    +    def start_requests(self):
    +        urls = pd.read_json("scraped_data/goodreadslist.json").href
    +        for url in urls:
    +            yield scrapy.Request(url=url,
    +                                 callback=self.parse,
    +                                 dont_filter=True
    +                                 )
    +
    +    def clean_string(self, strExtract):
    +        if strExtract is None:
    +            x = ""
    +        else:
    +            x = strExtract.strip('\n ')
    +        return x
    +
    +    def split_published_date(self, strPublisher):
    +        try:
    +            datepublished_str = re.search(
    +                r'^.*Published\s(\w+\s\d+\w*\s\d+)\sby.*',
    +                strPublisher).group(1)
    +            datepublished = parse(datepublished_str).isoformat()
    +        except:
    +            datepublished = datetime.datetime.now()
    +        return datepublished
    +
    +    def parse(self, response):
    +        metacol = response.css('#metacol')
    +
    +        converter = html2text.HTML2Text()
    +        converter.ignore_links = True
    +
    +        data = GoodReadsBookItem(
    +            {
    +                'bookTitle': self.clean_string(metacol.css(
    +                    'h1#bookTitle::text').extract_first()),
    +                'bookSeries': self.clean_string(metacol.css(
    +                    'h2#bookSeries::text').extract_first()),
    +                'authorURL': self.clean_string(metacol.css(
    +                    '.authorName').attrib["href"]),
    +                'authorName': self.clean_string(metacol.css(
    +                    '.authorName > span:nth-child(1)::text')
    +                                                .extract_first()),
    +                'description': converter.handle(metacol.css(
    +                    '#descriptionContainer').extract_first()),
    +                'ratingValue': self.clean_string(metacol.css(
    +                    '#bookMeta > span:nth-child(2)::text')
    +                                                 .extract_first()),
    +                'ratingCount': self.clean_string(metacol.css(
    +                    'a.gr-hyperlink:nth-child(7) > '
    +                    'meta:nth-child(1)')
    +                                                 .attrib[
    +                                                     'content']),
    +                'reviewCount': self.clean_string(metacol.css(
    +                    'a.gr-hyperlink:nth-child(9) > '
    +                    'meta:nth-child(1)')
    +                                                 .attrib[
    +                                                     'content']),
    +                'bookFormat': self.clean_string(metacol.css(
    +                    '#details > div:nth-child(1) >'
    +                    ' span:nth-child(1)::text').extract_first()),
    +                'numberOfPages': self.clean_string(metacol.css(
    +                    '#details > div:nth-child(1) >'
    +                    ' span:nth-child(2)::text').extract_first())
    +                    .replace(
    +                    r' pages', ''),
    +                'datePublished': self.split_published_date(
    +                    self.clean_string(metacol.css(
    +                        '#details > div:nth-child(2)')
    +                                      .extract_first())),
    +                'isbn': self.clean_string(metacol.css(
    +                    'div.infoBoxRowItem:nth-child(2) >'
    +                    ' span:nth-child(1) > span:nth-child(1)::text')
    +                                          .extract_first())
    +            }
    +        )
    +
    +        if data['bookTitle'] != "":
    +            yield data
    +        else:
    +            pass
    + + + +

    J'utilise ensuite un processus quasi identique pour extraire les données que celui que j'ai utilisé précédemment.

    + + + +
    process = CrawlerProcess({
    +    'AUTOTHROTTLE_ENABLED': 'True',
    +    'AUTOTHROTTLE_START_DELAY': 1.0,
    +    'HTTPCACHE_ENABLED': False,
    +    'COOKIES_ENABLED': False,
    +    'DUPEFILTER_CLASS': 'scrapy.dupefilters.BaseDupeFilter',
    +    'FEEDS': {
    +        'goodreadsbooks_new.json': {
    +            'format': 'json',
    +            'encoding': 'utf8',
    +            'store_empty': False,
    +            'fields': None,
    +            'indent': 4,
    +            'item_export_kwargs': {
    +                'export_empty_fields': True,
    +            }
    +        }
    +    }
    +})
    +
    +process.crawl(GoodReadsBookSpider)
    +process.start()
    +process.stop()
    + + + +

    Une transformation profonde

    + + + +

    Nous avons maintenant sous la main toutes les données que nous explorerons pour la suite de cet article. Certaines données sont manquantes, et c'est quelque chose qu'on doit accepter lorsqu'on obtient des données depuis le web.

    + + + +

    Comme nous avons accès à la liste utilisée par Krause, nous pouvons aussi l'utiliser pour produire des données de référence.

    + + + +

    La source est un fichier PDF. Je vais utiliser la librairie tabula pour extraire les tableaux sous la forme d'un fichier de données structurées CSV.

    + + + +
    import tabula
    +tabula.convert_into("raw_data/krausebooklist.pdf",
    +                    "scraped_data/krausebooklist.csv", 
    +                    output_format="csv", 
    +                    pages='all')
    + + + +

    Je vais maintenant les importer dans mon programme principal.

    + + + +
    krausebooklist = pd.read_csv("scraped_data/krausebooklist.csv", 
    +                             dtype={'Published': int})
    + + + +

    Voici un aperçu des données extraites:

    + + + +
    Tableau de valeurs comprenant les colonnes Title, Author et Published. Analyse de la censure littéraire demandée par Matt Krause, sénateur républicain du Texas
    + + + +

    J'en profite pour faire une première analyse de données avec cette source. Nous avons toutes les années de publication sous la main. Alors visualisons ces données pour avoir une idée de la distribution de la date de publication des ouvrages.

    + + + +

    Je vais utiliser ici la librairie seaborn. C'est une interface à haut niveau (donc plus facile, mais moins polyvalente) à matplotlib.

    + + + +
    +plt.figure(figsize=(5,5)) 
    +sns.histplot(data=krausebooklist, 
    +             x="Published", 
    +             discrete=False, 
    +             binrange=[1965,2025],
    +             binwidth=5)
    +plt.tight_layout()
    +plt.show()
    + + + +
    Distribution des livres à censurer selon leur année de publication, sous la forme d'un histogramme. 
+
+Analyse de la censure littéraire demandée par Matt Krause, sénateur républicain du Texas
    Distribution des livres à censurer selon leur année de publication
    + + + +

    Nettoyage des données

    + + + +

    Nous allons maintenant nettoyer les données que nous avons téléchargées avec Scrapy précédemment. La première chose que l'on va observer, c'est que le champ de description contient presque tout le texte de la page. Ce qui nous intéresse se situe avant le texte Get A Copy. Comme le texte est multiligne, nous allons aussi le concaténer à l'aide de la fonction join.

    + + + +

    J'assemble ces éléments dans une fonction qui extrait seulement la partie pertinente du texte contenu dans le champ description.

    + + + +
    def extraire_debut_descr(str_desc):
    +    description = "".join(str_desc.split("\n"))
    +    try:
    +        desc = description.split("## Get A Copy")[0]
    +        if desc is None:
    +            desc_clean="None"
    +        else:
    +            desc_clean=desc
    +    except Exception as N:
    +        desc_clean = str(N)
    +    return desc_clean
    + + + +

    Maintenant, pour effectuer le nettoyage, j'utilise la fonction apply qui s'applique à la Series goodreadsbooks['description'], c'est-à-dire une colonne du DataFrame goodreadsbooks.

    + + + +

    J'exporte le résultat dans un fichier CSV et j'itère en ajoutant des consignes jusqu'à ce que le fichier de sortie me plaise. J'ouvre le CSV dans un éditeur qui se met à jour à chaque sauvegarde. Dans mon cas c'est Kate, l'éditeur de texte par défaut de l'envionnement KDE.

    + + + +
    goodreadsbooks['description_clean']. \ to_csv("clean_data/goodreads_description_clean.csv")
    + + + +

    Voici le résultat de la séquence de nettoyage:

    + + + +
    goodreadsbooks['description_clean'] = \
    +goodreadsbooks['description'] \
    +.apply(lambda x: extraire_debut_descr(x)) \
    +.apply(lambda x: x.replace('\n',' ') \
    +       .replace('_',' ') \
    +       .replace('*',' ') \
    +       .replace('...more',' ') \
    +       .replace('—',', ') \
    +       .replace('\\',' ') \
    +       .replace('”','"') \
    +       .replace('“','"')
    +      ) \
    +.apply(lambda x: re.sub("\-\s","-",x)) \
    +.apply(lambda x: re.sub("\s+"," ",x)) \
    +.apply(lambda x: re.sub("\.\s+$",". ",x)) \
    +.apply(lambda x: re.sub("\s*--\s*",", ",x)) \
    +.apply(lambda x: re.sub("\s+\.",'.',x)) \
    +.apply(lambda x: re.sub("[\"]{2,}",'"',x))
    + + + +

    L'art de mettre des étiquettes sur la censure littéraire !

    + + + +

    Nous allons maintenant entrer dans le vif du sujet, l'analyse de la censure littéraire. Je vais appliquer des techniques de linguistique sur le contenu des descriptions de livres. Pour ce faire, je vais utiliser la librairie d'analyse du langage naturel spaCy. Cet outil permet entre autres d'utiliser des modèles statistiques et d'apprentissage automatique pour étiqueter des textes au niveau lexical.

    + + + +

    Comme mon ordinateur de travail a un processeur graphique NVIDIA, je vais l'utiliser pour accélérer les traitements

    + + + +
    spacy.prefer_gpu()
    + + + +

    Je vais charger le modèle pour l'anglais qui utilise des mécanismes d'attention (transformateurs): en_core_web_trf. C'est le modèle le plus précis disponible dans cette librairie.

    + + + +
    nlp = spacy.load("en_core_web_trf")
    + + + +

    Analyse syntaxique de base

    + + + +

    Ce qui est bien avec spaCy, c'est qu'en chargeant les descriptions, l'analyse de base est effectuée automatiquement. Les phrases sont décomposées en jetons, et chacun d'entre eux se voient assigner plusieurs attributs:

    + + + +
    • analyse morphosyntaxique (le type des mots dans la phrase, tel que les noms, les verbes, les adjectifs, ...)
    • graphe des dépendances (le rôle des mots, tel que sujet, complément direct, ...)
    • détection des entités nommées (les référents culturels et géographique, les évènements, les personnalités ...)
    • lemmatisation (la racine du mot, par exemple un verbe à l'infinitif ou un adjectif au masculin singulier).
    + + + +
    docs = nlp.pipe(goodreadsbooks['description_clean'])
    + + + +

    Je définis les étiquettes morphosyntaxiques que je souhaite conserver pour mon analyse. Ce sont les mots qui ont une valeur sémantique dans une phrase.

    + + + +
    • Nom propre (PROPN)
    • Adjectif (ADJ)
    • Nom commun (NOUN)
    • Verbe (VERB)
    + + + +

    Filtrage des mots (oui, encore de la censure littéraire !)

    + + + +
    pos_tag = ['PROPN', 'ADJ', 'NOUN', 'VERB']
    + + + +

    En traitement du langage naturel, on enlève généralement les mots qui ne sont pas porteurs de sens, appelés les "stopwords". On va aussi éliminer la ponctuation qui séparent les groupes syntaxiques, tels que les virgules, les points, les points-virgules et les deux-points.

    + + + +

    En anglais, la principale ponctuation à l'intérieur des mots se trouve dans les abréviations de certains verbe, la négation et le possessif, et sont situées à la fin du mot. Ça cause beaucoup moins de problème aux analyseurs syntaxiques.

    + + + +

    Quand je fais ce genre de traitements en Python, j'accumule les résultats dans une liste de listes, puis je convertis le tout dans un DataFrame pour Pandas

    + + + +
    i=0
    +docs_list = []
    +docs_keyword = []
    +for doc in docs:
    +    j=0
    +    keyword = []
    +    docs_list.append(doc)
    +    for token in doc:
    +        if token.is_stop or token.text in punctuation:
    +            continue
    +        if token.pos_ in pos_tag:
    +            keyword.append({
    +                'token': j,
    +                'text': token.text,
    +                'pos': token.pos_,
    +                'lemma': token.lemma_,
    +                'tag': token.tag_,
    +                'dep': token.dep_
    +            })
    +        j=j+1
    +    docs_keyword.append({'document':i, 'keywords':keyword})
    +    i=i+1
    + + + +

    On peut voir ici que le traitement est effectué sur le GPU, que j'ai capturé à l'aide de l'outil nvtop.

    + + + +
    Utilisation du GPU NVIDIA par spaCy
    Capture à l'aide de l'outil nvtop
    + + + +

    Je vais maintenant extraire les données sous la forme d'une table facile à manipuler.

    + + + +
    1. Je convertis la liste de jetons pour chacune des descriptions en une seule colonne, qui contiendra une ligne pour chacun des jetons sous la forme d'un dictionnaire (fichier JSON)
    + + + +
    docs_keyword_exp = pd.DataFrame(docs_keyword).explode('keywords')
    + + + +
    liste de jetons pour chacune des descriptions en une seule colonne
+
+Analyse de la censure littéraire demandée par Matt Krause, sénateur républicain du Texas
    + + + +

    2. Je convertis les dictionnaires en colonnes avec la fonction json_normalize de Pandas. Ensuite, j'effectue quelques manipulations additionnelles au niveau des indices du tableau, pour ramener le numéro du document source.

    + + + +
    docs_keyword_exp2 = pd.json_normalize(docs_keyword_exp['keywords'])
    +
    +docs_keyword_exp2.reset_index(inplace=True)
    +
    +del docs_keyword_exp2["index"]
    +
    +docs_keyword_exp2['document'] = docs_keyword_exp['document'].values
    + + + +

    3. Enfin, je convertis le lemme et le texte en minuscules.

    + + + +
    docs_keyword_exp2['lemma'] = \
    +    docs_keyword_exp2['lemma'].apply(lambda x: str(x).lower())
    +
    +docs_keyword_exp2['text'] = \
    +    docs_keyword_exp2['text'].apply(lambda x: str(x).lower())
    + + + +

    On obtient enfin un tableau sur la forme souhaitée, qui nous permettra de faire des analyses et de la visualisation.

    + + + +

    Chaque document et chaque jeton est numéroté, et nous avons tous les attributs à portée de main. Tu remarqueras probablement qu'il nous manque un peu plus de 50 documents. En fait, il faut compter les erreurs de téléchargement et l'absence de description de certains livres. Dans le cadre d'une analyse plus approfondie, j'aurais probablement utilisé une source de données additionnelles. Mais, pour les besoin de cette analyse, comme nous avons plus de 90% des documents concernés, je considère que c'est suffisamment représentatif pour ne pas nous en soucier davantage.

    + + + +

    L'amour et l'analyse de la censure littéraire, ensemble sur un nuage ?

    + + + +

    Nous allons maintenant créer une visualisation de données pour identifier les mots les plus fréquents parmi les descriptions. Celle-ci se nomme un nuage de mots.

    + + + +

    Créons un dictionnaire de fréquence des mots, la structure de données nécessaire pour obtenir un nuage de mots.

    + + + +
    word_frequency = docs_keyword_exp2['lemma'] \
    +    .value_counts() \
    +    .to_dict()
    + + + +

    On peut maintenant générer directement un nuage de mots à l'aide de la librairie wordcloud.

    + + + +
    wordcloud = WordCloud(width=512,
    +                      height=512,
    +                      max_font_size=72,
    +                      max_words=1000,
    +                      background_color="#ece9dc") \
    +.generate_from_frequencies(word_frequency)
    + + + +

    On utilise ensuite la librairie pyplot pour faire l'affichage. Comme elle a déjà été chargée lors de l'utilisation de Seaborn, nous n'avons pas besoin de la charger à nouveau.

    + + + +
    plt.figure(figsize=(10, 10))
    +plt.imshow(wordcloud, interpolation='bilinear')
    +plt.axis("off")
    +plt.savefig("out_img/wordcloud_words_regular.png", format="png")
    +plt.show()
    + + + +
    Nuage de mots
+
+Fréquence des jetons de mots seuls
+
+Analyse de la censure littéraire demandée par Matt Krause, sénateur républicain du Texas
    Analyse de la censure littéraire sous la forme d'un nuage de mots
    + + + +

    Les groupes de mots

    + + + +

    Un des problèmes avec la visualisation par nuage de mots, lorsqu'elle est basée sur des jetons représentant des mots seuls, c'est qu'il manque un peu de contexte. On va alors préférer refaire l'analyse, mais en utilisant les groupes de mots identifiés par l'analyse de dépendances syntaxiques. Ces groupes sont appelés des noun_chunks. On reprend donc notre analyse avec spaCy. La différence ici, c'est qu'un groupe de mots possède aussi une racine (chunk.root), et que c'est celle-là dont on va extraire certains attributs.

    + + + +
    docs2 = nlp.pipe(goodreadsbooks['description_clean'])
    +
    +i=0
    +docs_chunks = []
    +docs2_list = []
    +for doc in docs2:
    +    j=0
    +    keyword = []
    +    docs2_list.append(doc)
    +    for chunk in doc.noun_chunks:
    +        if(chunk.root.text in punctuation):
    +            continue
    +        if(chunk.root.pos_ in pos_tag):
    +            keyword.append({
    +                'token': j,
    +                'text': chunk.text,
    +                'root': chunk.root.text,
    +                'pos': chunk.root.pos_,
    +                'lemma': chunk.root.lemma_,
    +                'tag': chunk.root.tag_,
    +                'dep': token.dep_
    +            })
    +        j=j+1
    +    docs_chunks.append({'document':i, 'keywords':keyword})
    +    i=i+1
    + + + +

    On effectue maintenant des transformations similaires.

    + + + +
    docs_chunks_exp = \
    +pd.DataFrame(docs_chunks).explode('keywords').reset_index()
    +
    +docs_chunks_exp2 = pd.json_normalize(docs_chunks_exp['keywords'])
    +
    +docs_chunks_exp2['document'] = docs_chunks_exp['document'].values
    +
    +docs_chunks_exp2.reset_index(inplace=True)
    +
    +del docs_chunks_exp2["index"]
    +
    +docs_chunks_exp2['lemma'] = docs_chunks_exp2['lemma'] \
    +    .apply(lambda x: str(x).lower())
    +
    +docs_chunks_exp2['root'] = docs_chunks_exp2['root'] \
    +    .apply(lambda x: str(x).lower())
    +
    +docs_chunks_exp2['text'] = docs_chunks_exp2['text'] \
    +    .apply(lambda x: str(x).lower())
    + + + +

    Voici le tableau qui résulte de cette transformation. On remarque que tous les étiquettes morpho-syntaxiques sont des noms (NOUN) et que toutes les relations sont des racines (ROOT).

    + + + +
    liste de jetons des groupes de mots et attributs de la racine pour chacune des descriptions
+
+Analyse de la censure littéraire demandée par Matt Krause, sénateur républicain du Texas
    + + + +

    En reprenant le même code que précédemment, on peut aussi construire un nuage basé sur les groupes de mots.

    + + + +
    Nuage de mots
+
+Fréquence des jetons de groupes de mots
+
+Analyse de la censure littéraire demandée par Matt Krause, sénateur républicain du Texas
    Analyse de la censure littéraire sous la forme d'un nuage de groupes de mots
    + + + +

    Aller au cœur des mots

    + + + +

    Tu remarqueras certainement une thématique centrale à ce vocabulaire qui provient des descriptions des livres. Ça parle de relations amoureuses à l'adolescence et de santé sexuelle. Tout simplement. C'est de ça que les sénateurs conservateur ont si peur ! La censure littéraire demandée est en réalité un caprice de mononc' qui peine à cacher sa misogynie et son homophobie.

    + + + +

    Au moment d'écrire ce texte, nous sommes à une semaine de la Saint-Valentin, une fête souvent significative pour les adolescents qui en sont à leurs premières aventures amoureuses.

    + + + +

    Alors, je vais m'amuser a ajouter une thématique à cette visualisation.

    + + + +

    La librairie wordcloud permet d'utiliser un masque. C'est à dire une image sur laquelle le nuage de mots tire ses couleurs et son contour. Nous utiliserons donc une image de coeur pour les besoins de la cause !

    + + + +

    Pour ce faire, nous allons d'abord importer l'image sous la forme d'une matrice.

    + + + +
    my_mask = np.array(Image.open("mask_img/heart.png"))
    + + + +

    Puis, nous allons régénérer notre nuage de mots. Nous traitons d'abord le contour avec l'argument mask de la fonction WordCloud. Puis, nous appliquons les couleurs extraites du masque à l'aide de la fonction ImageColorGenerator et de la méthode recolor.

    + + + +
    wordcloud_mask = WordCloud(mode="RGB",
    +                           max_words=1000, 
    +                           mask=my_mask) \
    +.generate_from_frequencies(word_frequency_chunks)
    +
    +image_colors = ImageColorGenerator(my_mask)
    +
    +plt.figure(figsize=(10, 10))
    +plt.imshow(wordcloud_mask.recolor(color_func=image_colors), interpolation='bilinear')
    +plt.axis("off")
    +plt.savefig("out_img/wordcloud_heart.png", format="png")
    +plt.show()
    + + + +

    Voici enfin le résultat obtenu !

    + + + +
    Nuage de mots en forme de coeur, par groupes de mots.
+
+Analyse de la censure littéraire demandée par Matt Krause, sénateur républicain du Texas
    + + + +

    J'espère que tu as apprécié cet article un peu différent des autres !

    + + + +

    Si tu souhaites lire l'article de blog sur mon analyse de la censure littéraire au Texas, en lien avec ce billet technique, c'est ici !

    + + + +

    Articles connexes

    + + + + +]]>
    + + 1954 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[Censure littéraire: l'amour à l'index]]> + https://jevalide.ca/2022/02/13/censure-litteraire-lamour-a-lindex/ + Mon, 14 Feb 2022 01:54:38 +0000 + + https://jevalide.ca/?p=2116 + + +

    Je te vois venir. Tu te demandes pourquoi je parle de censure littéraire sur mon blog !

    + + + +

    Et bien voilà ! Je veux te donner un exemple de la puissance de l'analyse de données pour comprendre un enjeu de société.

    + + + +

    Je te montre aussi comment aller chercher des données supplémentaires sur le web pour répondre aux questions que tu te poses sur ton marché, sur ton positionnement ou sur les tendances politiques. Tout ça, avec des visualisations de données qui pourront en impressionner plusieurs.

    + + + +

    Sinon, c'est la St-Valentin, alors quelle bonne excuse pour faire des nuages de mots en forme de cœur !

    + + + +

    On y va !

    + + + +

    Un appel à la censure littéraire

    + + + +

    Le 25 octobre 2021, le sénateur républicain du Texas Matt Krause a communiqué une liste de livres qu'il souhaiterait retirer des écoles au département de l'éducation de son État. Il leur demandait lesquelles parmi celles énumérées étaient disponibles dans les écoles, et quel budget a été utilisé pour leur achat. Un cas flagrant de tentative de censure littéraire.

    + + + +

    La liste a été en partie associée à une interdiction de l'enseignement de la théorie critique de la race. C'est une théorie contestée (dans les milieux conservateurs) selon laquelle les injustices raciales se poursuivent dans les institutions selon des jeux de pouvoir, même si elles sont de jure interdites. C'est ce qu'on appelle, en bon québécois, le racisme systémique.

    + + + +

    Mais, comme tu pourras le lire par la suite, on conclura que c'est beaucoup plus large, et aussi beaucoup plus simple que ça !

    + + + +

    Quelques statistiques

    + + + +

    Danika Ellis, une contributrice au magazine littéraire en ligne Book Riot a publié une étude de cette liste de livres. Je me suis intéressé à cette analyse plutôt marquante. Celle-ci recense quelques statistiques au sujet de cette liste:

    + + + +
    • 76,5% concernent l'éducation sexuelle ou les luttes LGBTQ+
    • 8,3% ont comme sujet principal la race et le racisme.
    • 5,8% concernent la grossesse et l'avortement
    • 71,3% sont adressés aux adolescentes et adolescents et jeunes adultes
    + + + +

    Nous avons donc devant nous une liste qui s'adresse surtout aux jeunes adultes et qui concerne la sexualité et l'identité de genre au sens large. Bien entendu, il est question d'intersectionnalité entre l'identité de genre, les personnes racisées et le contexte socio-économique. Donc, il est important de retenir que ces statistiques couvrent le thème principal de chaque oeuvre, dans un objectif de classification.

    + + + +

    En utilisant la liste fournie par l'article de Book Riot, nous avons toutes les années de publication sous la main. Alors visualisons ces données pour avoir une idée de la distribution de la date de publication des ouvrages.

    + + + +
    Distribution des livres à censurer selon leur année de publication, sous la forme d'un histogramme. 
+
+Censure littéraire demandée par Matt Krause, sénateur républicain du Texas
    Distribution des livres à censurer selon leur année de publication
    + + + +

    On remarque que la plupart des livres ont été publiés après 1990, et particulièrement dans les 10 dernières années, dont une proportion importante dans les 2 dernières années, qui ont été particulièrement chargées d’événements politiques aux États-Unis.

    + + + +

    J'étais curieux d'en savoir plus et de découvrir le champ lexical de ces livres. N'ayant pas accès au contenu de ceux-ci, j'ai donc entrepris d'utiliser les descriptions disponibles sur le web. Celles que j'ai obtenues sont souvent similaires aux quatrièmes de couverture. C'est donc à partir de celles-ci que j'ai débuté mon analyse.

    + + + +

    Une bonne lecture de la situation

    + + + +

    Afin d'avoir une bonne lecture de la situation, j'avais besoin d'obtenir davantage d'information sur les livres en question, d'une manière que je pouvais automatiser. Je ne voulais définitivement pas extraire toutes les informations manuellement sur près de 850 livres !

    + + + +

    J'ai donc consulté le site web GoodReads, un réseau social de critique littéraire. À ma grande surprise, les livres de la liste de Matt Krause ont déjà été identifiés par Katrine Engelhardt Thomsen dans une collection de listes de lectures.

    + + + +
    Capture d'écran des 9 listes de Banned books according to Krause depuis le site GoodReads. Censure littéraire demandée par Matt Krause, sénateur républicain du Texas
    + + + +

    Je n'ai donc maintenant qu'à extraire toutes les données depuis cette page. Pour de faire, je vais utiliser la technique nommée le "moissonnage du web" (web scraping en anglais) pour extraire toutes les descriptions de chacun des livres de chacune des 9 listes (les listes étant limitées à 100 livres sur ce site).

    + + + +

    Analysons le contexte de la censure littéraire

    + + + +

    J'utilise maintenant différents outils du langage de programmation Python pour nettoyer les données, extraire les descriptions et ensuite, identifier les mots porteurs de sens. Pour voir tous les détails de cette analyse, je t'invite à lire cet article plus technique.

    + + + +

    Voici un aperçu des résultats de l'analyse des descriptions, une fois que nous avons appliqué différentes techniques d'analyse du langage naturel, tel que l'identification des dépendances et l'étiquetage de la syntaxe.

    + + + +
    liste de jetons et attributs pour chacune des descriptions
+
+Censure littéraire demandée par Matt Krause, sénateur républicain du Texas
    + + + +

    Nous allons maintenant créer une visualisation de données pour identifier les mots les plus fréquents parmi les descriptions. Celle-ci se nomme un nuage de mots.

    + + + +
    Nuage de mots
+
+Fréquence des jetons de mots seuls
+
+Censure littéraire demandée par Matt Krause, sénateur républicain du Texas
    + + + +

    Un des problèmes avec la visualisation par nuage de mots, lorsqu'elle est basée sur des jetons représentant des mots seuls, c'est qu'il manque un peu de contexte. On va alors préférer refaire l'analyse, mais en utilisant les groupes de mots identifiés par l'analyse de dépendances syntaxiques.

    + + + +

    Voici un aperçu des résultats de l'analyse en utilisant cette fois des groupes de mots

    + + + +
    liste de jetons des groupes de mots et attributs de la racine pour chacune des descriptions
+
+Censure littéraire demandée par Matt Krause, sénateur républicain du Texas
    + + + +

    J'en fais maintenant un nuage de mots similaire au précédent, mais incluant tous les groupes de mots et non seulement les noms.

    + + + +
    Nuage de mots
+
+Fréquence des jetons de groupes de mots
+
+Censure littéraire demandée par Matt Krause, sénateur républicain du Texas
    + + + +

    Une visualisation tout en coeur !

    + + + +

    Enfin, je construis une visualisation thématique pour la fête de l'amour ! L'outil utilisé pour les nuages de mots permet d'utiliser une image comme masque de couleur. Nous y allons donc avec ce magnifique coeur !

    + + + +
    Coeur utilisé comme masque pour constuire le nuage de mots thématique
    + + + +

    Voici donc le résultat !

    + + + +
    Nuage de mots en forme de coeur, par groupes de mots.
+
+Censure littéraire demandée par Matt Krause, sénateur républicain du Texas
    + + + +

    Cette image est un résumé de ce qui semble faire peur à plusieurs hommes. La diversité de l'amour et l'éducation à une sexualité saine sont des droits fondamentaux.

    + + + +

    Il est de notre devoir de s'assurer que toutes et tous, et en particulier les prochaines générations, puissent vivre l'amour sans compromis, sans préjugés, sachant qu'on est à leurs côtés peu importe leurs préférences. C'est cette présence qu'offrent les livres, lorsqu'on ne cherche pas à les mettre à l'index.

    + + + +

    J'espère que tu as apprécié cet article et que tu le partageras dans ton réseau !

    + + + +

    Joyeuse St-Valentin 💘

    + + + +

    François

    + + + +

    ps. Si tu as des données sous forme de texte à analyser, ou que tu aimerais apprendre à extraire des contenus depuis le web pour les ajouter à tes analyses de marché, fais-moi signe !

    + + + + + + + +

    Articles connexes

    + + + + +]]>
    + + 2116 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[Répertoires alphabétiques avec Bash]]> + https://jevalide.ca/2022/03/19/creer-des-repertoires-alphabetiques-bash/ + Sat, 19 Mar 2022 16:11:17 +0000 + + https://jevalide.ca/?p=2195 + + +

    Je te partage aujourd'hui un script dans le langage bash qui va te permettre de classer un répertoire de fichiers dans des sous-répertoires alphabétiques. Plus un répertoire contient de fichiers, plus il devient long à traiter.

    + + + +

    Ces instructions sont valides pour macOS, Linux ou si tu utilises le sous-système Windows pour Linux (WSL).

    + + + +

    Voici pourquoi je te recommande cette pratique. À chaque fois qu'un ordinateur entre dans un répertoire, il doit lire tout son index pour pouvoir déterminer la position de chaque fichier sur un disque dur. C'est une opération qui prend un temps proportionnel au nombre de fichiers et de dossiers qu'il contient.

    + + + +

    Si on sépare les fichiers dans des sous-répertoires alphabétiques, le traitement est beaucoup plus rapide, parce qu'il va y avoir seulement 26 répertoires au premier niveau, et chacun de ceux-ci va contenir en moyenne 26x moins de fichiers !

    + + + +
    Le navigateur de fichiers Dolphin de KDE qui affiche une séquence de répertoires alphabétiques
    Le navigateur de fichiers Dolphin de KDE
    + + + +

    À vos terminaux !

    + + + +

    C'est ce que nous allons faire ici en utilisant la ligne de commande bash (ou zsh, avec le superbe Oh My Zsh, fortement recommandé, surtout sur macOS).

    + + + +

    On définit tout d'abord la séquence des répertoires que l'on veut créer (qu'on appellera prefix, car se sont les préfixe des fichiers à classer). On peut aussi ajouter des chiffres ou d'autres caractères dans cette séquence.

    + + + +

    Note qu'ici, j'assume que tous les noms de fichiers sont en minuscules.

    + + + +
    # Créer la liste des préfixes
    +prefix=(a b c d e f g h i j k l m n o p q r s t u v w x y z)
    + + + +

    On initialise un compteur à 1

    + + + +
    # Initialiser le compteur
    +i=1
    + + + +

    Ensuite, on définit une boucle while de la longueur de notre liste de préfixes. Ici, c'est 26.

    + + + +
    # Créer la boucle
    +while [ ${i} -le 26 ]
    + + + +

    À l'intérieur de cette boucle, nous allons effectuer ces trois opérations, pour chacun des préfixes que contient la séquence prefix.

    + + + +
    • Créer un nouveau répertoire avec mkdir
    • Déplacer tous les fichiers qui débutent par le préfixe dans le répertoire
    • Incrémenter le compteur de 1
    + + + +
    # Lister les commandes à exécuter dans la boucle
    +do
    +  # Créer un répertoire
    +  mkdir ${prefix[${i}]}
    +  # Déplacer les fichiers dans le bon répertoire
    +  mv ${prefix[${i}]}* ${prefix[${i}]}/
    +  # Incrémenter le compteur
    +  (( i++ ))
    +done
    + + + +

    Si on met tout ça ensemble, voici le résultat:

    + + + +
    # Créer la liste des préfixes
    +prefix=(a b c d e f g h i j k l m n o p q r s t u v w x y z)
    +# Initialiser le compteur
    +i=1
    +# Créer la boucle
    +while [ ${i} -le 26 ]
    +# Lister les commandes à exécuter dans la boucle
    +do
    +  # Créer un répertoire
    +  mkdir ${prefix[${i}]}
    +  # Déplacer les fichiers dans le bon répertoire
    +  mv ${prefix[${i}]}* ${prefix[${i}]}/
    +  # Incrémenter le compteur
    +  (( i++ ))
    +done
    + + + +

    J'espère t'avoir aidé dans ton grand ménage du printemps informatique !

    + + + +

    Pour découvrir Bash, je t'invite à suivre ce tutoriel sur Wikibooks.

    + + + +

    Ces articles pourraient t'intéresser

    + + + + +]]>
    + + 2195 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[Timnit Gebru: Santé, éthique et financement de la recherche en IA]]> + https://jevalide.ca/2022/04/15/resume-de-conference-timnit-gebru-au-harvard-radcliffe-institute/ + Fri, 15 Apr 2022 20:37:35 +0000 + + https://jevalide.ca/?p=2257 + + +

    Timnit Gebru, chercheuse en intelligence artificielle, était l'invitée de la Harvard Radcliffe Institute le 8 mars dernier. Le thème de la conférence était: The Quest for Ethical Artificial Intelligence.

    + + + +
    +https://youtu.be/b_--xrN3eso +
    The Quest for Ethical Artificial Intelligence: A Conversation with Timnit Gebru (Enregistrement sur YouTube)
    + + + +

    Un départ précipité ...

    + + + +

    Pour celles et ceux qui ne connaissent pas ses travaux, elle était, jusqu'en 2020, directrice de l'éthique en intelligence artificielle chez Google. Elle a été renvoyée suite à la publication d'un article qui ne faisait pas l'affaire de ses supérieurs. Et ça a soulevé de très fortes réactions dans la communauté de la science des données.

    + + + +

    Depuis, elle a fondé une nouvelle organisation, la Distributed Artificial Intelligence Research Institute (DAIR). Cette organisation a pour mission de promouvoir la recherche communautaire en intelligence artificielle, loin de l'influence des géants du web. C'est ce qu'elle a présenté durant la première partie de la conférence.

    + + + +

    Dans cette conférence, elle a abordé trois sujets qui sont des préoccupations grandissantes en science des données. Particulièrement, pour favoriser le développement de l'éthique dans ce domaine.

    + + + +
    • Le financement de la recherche et du développement logiciel
    • La cueillette et l'étiquetage des données
    • Le colonialisme par les données.
    + + + +
    Logo de DAIR, fondé par Timnit Gebru
    Logo de DAIR, fondé par Timnit Gebru
    + + + +

    DAIR : pour des chercheurs en santé et épanouis

    + + + +

    Décentralisé, pas pour les calculs, pas pour la technologie, mais pour garder les chercheurs dans leur communauté ! Partout dans le monde, là où il y a des problèmes à résoudre. C'est la mission de Timnit Gebru avec DAIR. Ramener la recherche en intelligence artificielle à l'échelle humaine.

    + + + +

    Voici d'ailleurs l'approche encouragée autour du travail de recherche (traduction libre).

    + + + +
    • Le développement de l'IA qui tient compte des environnements aux ressources limitées ;
    • Des technologies linguistiques au service des communautés marginalisées ;
    • Une activité coordonnée sur les médias sociaux ;
    • Des travaux liés aux données ;
    • Des tests de robustesse et de la documentation.
    + + + +

    Elle veut aussi encourager la recherche saine. Des chercheurs en santé, qui ne sont pas dans une course contre la montre. Une attitude différente de celle des géants du web. Ces derniers nous ont prouvé qu'ils sont prêts à amplifier les problèmes de la société pour extraire chaque dollar de la donnée. Contre le Move fast and break things de Facebook (c'était vraiment leur slogan interne jusqu'en 2014).

    + + + +

    Des chercheurs épanouis, avec une vie équilibrée, au cœur de leur communauté. Et aussi, pas de bénévolat. Parce qu'il y en a beaucoup trop, dans le monde de la donnée, et il n'est souvent pas reconnu à sa juste valeur. Et encore moins de stages non rémunérés encore si communs dans la grande entreprise. Celles-ci encouragent la préservation de ce système très inégalitaire.

    + + + +

    Un rythme de publication lent, au fil des découvertes et des avancements concrets, et non la publication de résultats intermédiaires, dans des formats compacts et indigestes, pour avoir toujours plus de financement.

    + + + +

    Repenser le financement de la recherche

    + + + +

    La structure actuelle d'incitatifs financiers, dans le monde académique, c'est de publier beaucoup, souvent, et le plus possible dans des revues dites à "haut impact".

    + + + +

    Sans entrer dans débat autour du milieu très toxique et patriarcal de l'édition scientifique, précisons que c'est une industrie contrôlée par quelques grands joueurs, avec des pratiques discutables et une très grande culture du secret.

    + + + +

    On est très loin de la collégialité entre chercheurs et d'une vraie révision par les pairs, dans plusieurs domaines. Certains professeurs acceptent même des pots-de-vin en échange de leur nom sur une publication.

    + + + +

    Cette recherche de la publication la plus rapide nuit au travail de fond de la recherche, qui se devrait d'être orientée vers la découverte et la diffusion de la connaissance.

    + + + +

    Dans le domaine de l'intelligence artificielle, en particulier, la recherche est financée en très grande majorité par des hommes blancs qui ont fait fortune dans les technologies, la finance ou le secteur militaire. Et cette recherche, vous le devinez, bien, elle sert soit à faire encore plus d'argent, à permettre plus de répression ou à tuer plus de gens.

    + + + +

    Souvent, le travail de données, qui a été fait en amont de la création des technologies, n'a pas été fait de façon éthique. On parle ici de travail d'étiquetage et de nettoyage des données, souvent relégué à de la main-d'œuvre exploitée au tiers-monde.

    + + + +

    Reconnaitre le travail caché derrière l'étiquetage des données

    + + + +

    Le travail étiquetage des données se faire souvent derrière des portes closes, loin des grands centres lumineux où les chercheurs en intelligence artificielle travaillent et discutent d'idées révolutionnaires.

    + + + +

    C'est le nouveau travail invisible, parfois payé tout au plus 1000 $ par année, dans des centres d'affaires des pays du tiers-monde.

    + + + +
    L'essai Ghost Work de Mary L. Gray et Siddharth Suri
    L'essai Ghost Work de Mary L. Gray et Siddharth Suri
    + + + +

    Les auteurs Mary L. Gray et Siddharth Suri, qui ont étudié le sujet, parlent maintenant de Ghost Work, de travail fantôme. Celui-ci n'est que rarement reconnu ni même mentionné dans les articles de recherche. Un constat soulevé par Timnit Gebru, c'est que l'intelligence artificielle coute très cher quand tu te mets à payer les gens pour tout le travail accompli en amont.

    + + + +

    Selon elle, si tu as contribué au travail des données, tu devrais avoir ton nom sur l'article, au minimum. Mais, on devrait surtout te rumunérer convenablement. C'est aussi d'ailleurs pourquoi elle refuse d'offrir des positions bénévoles chez DAIR.

    + + + +

    Elle ajoute aussi que tout le travail fait par les communautés pour se faire reconnaître, que ce soit sur les réseaux sociaux ou sur des sites collaboratifs, est aussi une forme de travail bénévole.

    + + + +

    Lorsqu'on utilise l'information pour alimenter des algorithmes d'intelligence artificielle sans l'accord ni le consentement des créateurs, on vient alors parler de colonisation par les données.

    + + + +

    Cesser les pratiques de colonisation par les données

    + + + +

    En consommant les algorithmes, on finit par payer pour les données générées par les communautés, sans récompenser leurs créateurs pour leur travail.

    + + + +

    Ceci affecte particulièrement les communautés moins connectées, dont les Premières Nations. Ce phénomène se nomme la fracture numérique. De plus en plus, les citoyens réalisent que bien peu du travail effectué avec leurs données ne leur profite vraiment.

    + + + +

    Elle mentionne d'ailleurs un article de Wired, Facebook's Fall From Grace Looks a Lot Like Ford's, où les auteurs comparent le colonialisme par les données aux pratiques d'action répressive de l'entreprise Ford Motor Company. Celle-ci a agi durant des années contre la syndicalisation et a longtemps refusé de reconnaître les risques liés aux voitures et à la pollution.

    + + + +

    Quoi en retenir ?

    + + + +

    Alors, qu'est-ce que je peux retenir de cette conférence de Timnit Gebru ? J'y vais en trois points:

    + + + +
    1. La recherche de qualité et avec un fort potentiel d'impact demande du temps et une connexion avec les communautés.
    2. L'éthique en intelligence artificielle ne s'applique non pas seulement sur ce qui est fait des résultats, mais aussi sur tout le processus de la création des données jusqu'aux utilisateurs finaux
    3. Le domaine est actuellement dominé par la recherche du profit et la course aux publication, et ça nuit aux besoins des populations marginalisées.
    + + + +

    J'aimerais bien avoir ton avis sur cette publication. Je t'invite à la partager sur les réseaux sociaux et à me tagger.

    + + + +

    Tu peux trouver tous mes réseaux ici.

    + + + +

    Si tu ne veux rien manquer, tu peux t'abonner à mon infolettre hebdomadaire avec le formulaire ci-dessous !

    + + + +

    Contenus complémentaires

    + + + + +]]>
    + + 2257 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + ]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + ]]> + + + + + + + + ]]> + + + + + +
    + + <![CDATA[Visibilité des projets d'un groupe GitLab]]> + https://jevalide.ca/2022/04/20/visibilite-des-projets-dun-groupe-gitlab/ + Wed, 20 Apr 2022 18:15:43 +0000 + + https://jevalide.ca/?p=2310 + + +

    Je vais te montrer comment changer la visibilité de tous les projets d'un groupe dans GitLab. Pour ce faire, nous allons utiliser le langage Python et l'API de GitLab.

    + + + +

    Groupes et visibilité des projets dans GitLab

    + + + +

    Dans GitLab, nous avons la possibilité de faire des groupes ayant une visibilité, ou permissions d'accès, différente selon nos besoins: public, interne ou privé.

    + + + +

    Quand nous créons un nouveau groupe pour y déplacer des projets existants, ils conservent leur visibilité d'origine et d'adoptent pas celle du groupe.

    + + + +

    Souvent, on aimerait faire suivre ces permissions, surtout si on veut rendre tous les projets d'un groupe public eux aussi publics.

    + + + +

    Utilisation de l'API de GitLab

    + + + +

    On peut le faire un par un, mais un des avantages de GitLab est qu'ils offrent une API puissante et complète. Depuis Python, on peut y accéder avec le package python-gitlab.

    + + + +

    Pour ce faire, tu vas avoir besoin de ces trois informations:

    + + + +
    • Le domaine de l'installation GitLab (flèche 1).
    • Un jeton d'accès privé avec les autorisations pour l'API, que tu configures depuis ton profil utilisateur.
    • Le numéro du groupe, que tu peux trouver sur sa page (flèche 2).
    + + + +
    Nom de domaine et numéro de groupe
    + + + +

    Un exemple de code pratique !

    + + + +

    Voici un exemple de code qui permet de faire ce traitement pour un groupe. Tu n'as qu'à configurer les trois variables au début du script.

    + + + +

    Le programme crée d'abord une instance objet de la classe GitLab, qui permet d'interagir ensuite avec le service. Ensuite, Il y a une boucle sur tous les sites qui sont identifiés comme privé dans le groupe, que l'on souhaite rendre publics.

    + + + +

    Comme il y a une pagination de 20 sites à la fois, on fait une autre boucle à l'extérieur pour détecter s'il reste encore des sites privés.

    + + + +

    En mettant la propriété visibility à public, on rend le code disponible à tous.

    + + + +

    Il faut aussi bien sur que le groupe soit public pour que les projets puissent effectivement être accessibles aussi !

    + + + + + + + +

    Articles connexes

    + + + + + + + +
    Visibilité des projets d’un groupe GitLab
    +]]>
    + + 2310 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[Utiliser l'API de ConvertKit avec Python]]> + https://jevalide.ca/2022/06/01/utiliser-l-api-de-convertkit-avec-python/ + Wed, 01 Jun 2022 19:51:58 +0000 + + https://jevalide.ca/?p=2480 + + +

    Je vais aujourd'hui te présenter comment utiliser l'API de ConvertKit avec le langage de programmation Python.

    + + + +

    Je t'avertis tout de suite, leur API est en cours de développement et n'est pas aussi complète qu'on pourrait le souhaiter.

    Par exemple, les séquences automatisées et les actions automatiques ne sont pas encore couverts. Lorsque ces fonctionnalités seront disponibles, je vais venir bonifier cet article.

    Cependant, il est déjà possible d'extraire des données de ses contacts et le contenu des courriels qui ont été envoyés. Et donc, on peut quand même faire des choses plutôt intéressantes !

    + + + +

    Se préparer !

    + + + +

    Variables d'environnement pour l'API de ConvertKit

    + + + +

    Nous allons commencer par configurer deux variables d'environnement sur notre système. Ce sont les jetons d'application. Ils sont fournis par ConvertKit dans la section Settings / Advanced / API

    + + + +
    Obtenir les jetons de l'API de ConvertKit
    + + + +

    Sur Linux ou MacOS, on peut configurer ces variables avec le script suivant dans .zshrc ou .bashrc:

    + + + +
    export CONVERTKIT_API_KEY=""
    +export CONVERTKIT_API_SECRET=""
    + + + +

    Sur Windows, il faut utiliser PowerShell comme suit:

    + + + +
    Set-Item -Path Env:CONVERTKIT_API_KEY -Value ""
    +Set-Item -Path Env:CONVERTKIT_API_SECRET -Value ""
    + + + +

    Démarrage du script

    + + + +

    Nous allons charger les modules requis pour notre programme

    + + + +
    import time
    +import requests
    +import json
    +import os
    + + + +
      +
    • time permet de gérer le temps d'exécution, par exemple prendre une pause entre deux requêtes HTTP.
    • + + + +
    • requests permet de faire des requêtes HTTP. Dans notre cas, ce sera à un API REST.
    • + + + +
    • json permet de lire et d'écrire des fichiers json
    • + + + +
    • os permet d'interagir avec le système d'exploitation
    • +
    + + + +

    Puis, nous chargeons les variables d'environnement dans notre espace de travail Python

    + + + +
    api_key=os.getenv("CONVERTKIT_API_KEY")
    +api_secret=os.getenv("CONVERTKIT_API_SECRET")
    +base_url="https://api.convertkit.com"
    + + + +

    On crée ensuite un répertoire ./json pour les fichiers de sortie s'il n'existe pas déjà.

    + + + +
    try: 
    +    os.mkdir("./json")
    +except OSError as error: 
    +    print(error)
    + + + +

    Nous sommes maintenant prêts à débuter les extractions. L'API de Convertkit est relativement simple à utiliser.

    + + + +

    Elle utilise la pagination, donc il faut parfois faire une boucle pour obtenir toutes les valeurs pour un point de terminaison.

    + + + +

    Nous allons utiliser le module requests pour faire toutes nos requêtes HTTP.

    + + + +

    Le compte et les formulaires

    + + + +

    Le compte

    + + + +

    Nous pouvons obtenir les information de base sur le compte que nous utilisons avec le point de terminaison /v3/account

    + + + +
    r = requests.get(url=base_url+"/v3/account", 
    +                 params={"api_secret":api_secret})
    +
    +account = r.json()
    +
    +account
    + + + +

    La réponse prend la forme suivante:

    + + + +
    {'name': None,
    + 'plan_type': 'creator',
    + 'primary_email_address': '<ton courriel>'}
    + + + +

    Les formulaires

    + + + +

    Les formulaires sont les points d'entrée des abonnés dans le système de ConvertKit. Chaque abonné est toujours rattaché à un formulaire, et c'est à partir d'eux qu'on pourra les lister dans la prochaine section. On les obtient via le point de terminaison /v3/forms La réponse prend la forme d'une liste

    + + + +
    r = requests.get(url=base_url+"/v3/forms", 
    +                 params={"api_secret":api_secret})
    +
    +forms = r.json()
    +
    +forms
    + + + +
    {'forms': [{'id': XXXXXXX,
    +   'name': 'Abonnement à la liste courriel',
    +   'created_at': 'XXXXXXX',
    +   'type': 'embed',
    +   'format': 'inline',
    +   'embed_js': 'https://tondomaineici.ck.page/XXXXXXX/index.js',
    +   'embed_url': 'https://tondomaineici.ck.page/XXXXXXX',
    +   'archived': False,
    +   'uid': 'XXXXXXX'},
    +...
    + + + +

    Pour faciliter l'extraction des abonnés, on conserve les identifiants uniques des formulaires

    + + + +
    form_ids = [form.get("id") for form in forms.get("forms")]
    + + + +

    Les abonnés

    + + + +

    La pagination dans l'API de ConvertKit

    + + + +

    Pour extraire les comptes des abonnés, nous allons utiliser pour la première fois la pagination.

    + + + +

    Ça nous donne du code un peu plus costaud.

    + + + +

    Essentiellement, on itère sur chacun des formulaires, puis, on boucle sur chacune des pages de réponses s'il y en a plus qu'une, et on accumule les abonnés dans une liste.

    + + + +
    Boucles d'itération sur les formulaires et les pages de l'API de ConvertKit pour obtenir les abonnés
    + + + +

    Les comptes

    + + + +

    Pour extraire les comptes, ça nous donne le code suivant.

    + + + +
    subscribers_list = []
    +for form_id in form_ids:
    +    r = requests.get(url=base_url+
    +                         "/v3/forms/"+
    +                         str(form_id)+
    +                         "/subscriptions", 
    +                     params={"api_secret":api_secret,
    +                             "subscriber_state":"active",
    +                             "page":1})
    +    page1 = r.json()
    +    nb_pages = page1.get("total_pages")
    +    subscribers_list.append(page1)
    +    if nb_pages>1:
    +        for i in range(1,nb_pages):
    +            time.sleep(1)
    +            page = requests.get(
    +                url=base_url+
    +                    "/v3/forms/"+
    +                    str(form_id)+
    +                    "/subscriptions",
    +                params={"api_secret":api_secret,
    +                        "subscriber_state":"active",
    +                        "page":i+1})
    +            subscribers_list.append(page.json())
    +subscribers={"subscribers":subscribers_list}
    + + + +

    Les étiquettes

    + + + +

    Pour extraire les étiquettes, la requête est plutôt simple:

    + + + +
    r = requests.get(url=base_url+"/v3/tags", params={"api_secret":api_secret})
    +
    +tags=r.json()
    + + + +

    On conserve ensuite les identifiants uniques de chacune des étiquettes, parce que c'est ce qui nous permet d'extraire la liste des abonnés pour chacunes d'elles.

    + + + +
    tag_ids = [tagdict.get("id") for tagdict in tags.get("tags")]
    + + + +

    Les abonnés par étiquette

    + + + +

    On reprend la même logique que pour obtenir les abonnés par formulaire, mais avec les étiquettes cette fois.

    + + + +
    tag_subscriptions = []
    +for tag_id in tag_ids:
    +    r = requests.get(url=base_url+
    +                         "/v3/tags/"+
    +                         str(tag_id)+
    +                         "/subscriptions",
    +                     params={"api_secret":api_secret, 
    +                             "page":1, 
    +                             "subscriber_state": "active"})
    +    tag_subscription_page1 = r.json()
    +    tag_subscriptions.append(tag_subscription_page1)
    +    nb_pages = page1.get("total_pages")
    +    if nb_pages>1:
    +        for i in range(1,nb_pages):
    +            time.sleep(1)
    +            page = requests.get(url=base_url+
    +                                    "/v3/tags/"+
    +                                    str(tag_id)+
    +                                    "/subscriptions",
    +                                params={"api_secret":api_secret, 
    +                                        "page":i+1, 
    +                                        "subscriber_state": "active"})
    +            tag_subscriptions.append(page.json())
    +tag_subs={"tag_subscriptions":tag_subscriptions}
    + + + +

    Les courriels

    + + + +

    Les séquences

    + + + +

    Selon le même modèle que précédemment avec les formulaires ou les étiquettes, on peut obtenir les séquences.

    + + + +
    r = requests.get(url=base_url+"/v3/sequences", params={"api_secret":api_secret})
    +
    +sequences=r.json()
    + + + +

    On conserve les identifiants, pour extraire la liste des abonnés actifs dans chacune des séquences

    + + + +
    sequences_ids = [sequencesdict.get("id") for sequencesdict in sequences.get("courses")]
    + + + +

    Abonnés actuellement dans une séquence

    + + + +

    On utilise le même modèle que pour les formulaires ou les étiquettes pour extraire les abonnés pour chacune des séquences

    + + + +
    sequences_subscriptions = []
    +for sequences_id in sequences_ids:
    +    r = requests.get(url=base_url+
    +                         "/v3/sequences/"+
    +                         str(sequences_id)+
    +                         "/subscriptions",
    +                     params={"api_secret":api_secret, 
    +                             "page":1, 
    +                             "subscriber_state": "active"})
    +    sequences_subscription_page1 = r.json()
    +    sequences_subscriptions.append(sequences_subscription_page1)
    +    nb_pages = page1.get("total_pages")
    +    if nb_pages>1:
    +        for i in range(1,nb_pages):
    +            time.sleep(1)
    +            page = requests.get(url=base_url+"/v3/sequences/"+
    +                                    str(sequences_id)+"/subscriptions",
    +                                params={"api_secret":api_secret, 
    +                                        "page":i+1, 
    +                                        "subscriber_state": 
    +                                            "active"})
    +            sequences_subscriptions.append(page.json())
    +sequences_subs={"sequences_subscriptions":sequences_subscriptions}
    + + + +

    Les contenus et leurs statistiques

    + + + +

    On peut extraire une liste de tous les courriels envoyés. Il n'y a pas de moyen pour attraper automatiquement le nombre de pages, mais il y a 50 envois par page.

    + + + +
    r1 = requests.get(url=base_url+"/v3/broadcasts", params={"api_secret":api_secret, "page":1})
    +r2 = requests.get(url=base_url+"/v3/broadcasts", params={"api_secret":api_secret, "page":2})
    +r3 = requests.get(url=base_url+"/v3/broadcasts", params={"api_secret":api_secret, "page":3})
    +
    +broadcasts=[r1.json(),r2.json(),r3.json()]
    + + + +

    On extrait les identifiants uniques de chacun des envois

    + + + +
    broadcasts_ids = [broadcastsdict.get("id") for broadcastsdict in broadcasts.get("broadcasts")]
    + + + +

    On peut maintenant faire une boucle sur chaque envoi et récupérer d'un seul coup le contenu des courriels, sous la forme d'un document HTML, ainsi que les statistiques actuelles.

    + + + +
    for broadcast in broadcasts:
    +    broadcasts_ids = [broadcastsdict.get("id") for broadcastsdict in broadcast.get("broadcasts")]
    +    for broadcasts_id in broadcasts_ids:
    +        time.sleep(1)
    +        r = requests.get(url=base_url+"/v3/broadcasts/"+str(broadcasts_id), params={"api_secret":api_secret})
    +        broadcast_content = r.json()
    +        rstats = requests.get(url=base_url+"/v3/broadcasts/"+str(broadcasts_id)+"/stats", params={"api_secret":api_secret})
    +        broadcast_stats = rstats.json()
    +        with open('./json/broadcast_content_'+str(broadcasts_id)+'.json', 'w') as f:
    +            json.dump(broadcast_content, f)
    +        with open('./json/broadcast_stats_'+str(broadcasts_id)+'.json', 'w') as f:
    +            json.dump(broadcast_stats, f)
    + + + +

    Exporter les données sous la forme de fichiers JSON

    + + + +

    C'est maintenant le temps d'exporter toutes ces données sous la forme de fichiers JSON.

    + + + +
    with open('./json/account.json', 'w') as f:
    +    json.dump(account, f)
    +
    +with open('./json/forms.json', 'w') as f:
    +    json.dump(forms, f)
    +
    +with open('./json/subscribers.json', 'w') as f:
    +    json.dump(subscribers, f)
    +
    +with open('./json/tags.json', 'w') as f:
    +    json.dump(tags, f)
    +
    +with open('./json/tag_subs.json', 'w') as f:
    +    json.dump(tag_subs, f)
    +
    +with open('./json/sequences.json', 'w') as f:
    +    json.dump(sequences, f)
    +
    +with open('./json/sequences_subs.json', 'w') as f:
    +    json.dump(sequences_subs, f)
    +
    +with open('./json/broadcasts.json', 'w') as f:
    +    json.dump(broadcasts, f)
    + + + +

    Conclusion

    + + + +

    Nous avons maintenant exporté la majorité des données pouvant être actuellement exportées depuis l'API de Convertkit.

    + + + +

    Cette technique peut servir à faire une sauvegarde locale de notre contenu ou de nos abonnés, ou elle peut aussi servir à enrichir un autre système tel qu'un CRM.

    + + + +

    Référence

    + + + + + + + +

    Contenus que tu pourrais apprécier

    + + + + + + + +

    +]]>
    + + 2480 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[Données et planification familiale]]> + https://jevalide.ca/2022/06/24/donnees-planification-familiale-avortement-drip/ + Fri, 24 Jun 2022 17:44:30 +0000 + + https://jevalide.ca/?p=2743 + + +
    Ovary gang, sign, Roe v Wade abortion rights rally, City Hall, Skid Row, Los Angeles, California, USA par Cory Doctorow CC-BY-SA
    + + + +

    + + + +

    ​Aujourd'hui, j'aborde un sujet sensible, à l'intersection des données et de la planification familiale, et je vais faire tout mon possible pour ne pas "mansplainer".

    TW: Avortement, violence conjugale

    + + + +

    Je vais aujourd'hui parler du lien entre les données GPS, les applications de santé, planification familiale et le droit à l'avortement, et comment le logiciel libre peut aider à soutenir la cause des droits reproductifs (et des droits des femmes en général).

    + + + +

    Comme tu le sais, le 24 juin 2022, la Cour suprême des États-Unis a invalidé l'arrêt Roe v. Wade qui rendait l'avortement légal dans tout le pays depuis 1973.

    La différence c'est qu'en plus aujourd'hui, avec la surveillance de masse, ce sera de plus en plus difficile de préserver le droit à la vie privée dans ce contexte. Que ce soit au niveau de la prise de rendez-vous, des déplacements et des suivis médicaux, par exemple.

    + + + +

    Données GPS

    + + + +

    Tout commence d'abord par mon écoute du toujours très pertinent podcast La French Connection, qui traite surtout de cybersécurité et d'éthique en informatique.

    + + + +

    Dans l'épisode du 9 mai dernier, Gabrielle a présenté un sujet un peu inattendu. Le lien entre les courtiers de données et les cliniques de planification familiale (Planned Parenthood en anglais).

    + + + +

    Il s'avère que plusieurs application gratuites, telles que des jeux et autres gadgets étranges qui se trouvent sur les Google Play et App Store de ce monde, utilisent le GPS pour enregistrer les déplacements des gens. Un peu déstabilisant, mais pas surprenant, le monde mobile étant ce qu'il est.

    + + + +

    Ce qui l'est davantage, c'est qu'ils peuvent cibler les déplacements autour des cliniques Planned Parenthood, et ensuite vendre ces données à un peu n'importe qui, comme des politiciens d'extrême droite ou des groupes religieux et radicaux.

    + + + +

    Application de santé

    + + + +

    Depuis quelques années, en particulier avec l'arrivée des montres intelligentes, de plus en plus d'applications offrent la possibilité de suivre le cycle menstruel. Il s'avère aussi que toutes ces données transigent par les systèmes de deux entreprises: Apple et Google.

    + + + +

    Ces entreprises, qui, on le sait, vivent de la publicité et des données, peuvent donc offrir sur un plateau d'argent les données concernant la santé reproductive à un peu n'importe qui qui serait intéressé à vendre de la publicité (comme Facebook), mettre une personne enceinte à la porte (un employeur), ou commettre des actes violents. Je t'invite à lire l'excellent reportage de Mathilde Saliou sur 20minutes.fr.

    Ces données peuvent aussi être combinées aux données précédentes et tomber dans les mains d'un.e conjoint.e violent.e ou d'un.e fanatique anti-avortement. Les conséquences sont potentiellement dévastatrices.

    + + + +

    Des solutions

    + + + +

    Heureusement, il y a des solutions.

    + + + +

    Premièrement, supprimer les permissions de toutes les applications qui utilisent le GPS sans en avoir besoin. En gros, ça devrait se limiter à ton application de cartographie virtuelle (ex: Google Maps) et de transport en commun (ex: Transit). Il n'y en a pas vraiment d'autres qui devraient avoir ces permissions.

    + + + +

    Tu peux aussi les supprimer entièrement de ton téléphone. Sur Android, dès qu'une application active le GPS, toutes celles qui y ont accès peuvent s'en servir. Même si elles sont fermées !

    + + + +

    Ce guide de l'organisme de défense des droits du numérique Electronic Frontier Foundation peut t'aider à faire de bons choix au niveau des applications et de l'utilisation du téléphone: https://www.eff.org/issues/reproductive-rights

    + + + +

    Deuxièmement, adopter une application de santé personnelle libre. Heureusement, le logiciel libre prend une place de plus en plus importante dans ce domaine. Sur Android, en installant le magasin d'applications libres F-Droid, tu pourras accéder à plusieurs d'entre elles.

    Au niveau des applications de suivi menstruel, il y a aussi des solutions. Le gouvernement allemand a financé l'application libre Drip du collectif Bloody Health, basé à Berlin. Elle est seulement disponible sur Android pour l'instant. Il y a un lien pour être averti lorsqu'elle sera sur iOS.

    + + + +

    N'étant pas né avec le groupe d'options nécessaire pour en tester l'utilité, j'aimerais bien avoir des retours d'expérience !

    + + + +

    Contenu qui pourrais aussi t'intéresser

    + + + + + + + +


    Tu apprécies mon contenu ? Abonnes-toi à ma cyberlettre ci-dessous !

    +]]>
    + + 2743 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[Analyse du langage naturel en français: Quels sont les principaux défis ?]]> + https://jevalide.ca/2022/08/10/analyse-du-langage-naturel-en-francais-quels-sont-les-principaux-defis/ + Wed, 10 Aug 2022 15:31:11 +0000 + + https://jevalide.ca/?p=3412 + + +

    Dans cet article, je te présente les principaux défis de l'analyse du langage naturel en français. Je te partage aussi quelques pistes de solutions que j'ai pu identifier dans ma pratique.

    + + + +
    Analyse du langage naturel en français: Quels sont les principaux défis ?
+L’écriture inclusive
+Les accords masculins, féminins et neutres
+La lemmatisation
+Les néologismes, anglicismes et régionalismes
+Le peu de ressources logicielles
    + + + +

    L'écriture inclusive

    + + + +

    L'écriture inclusive est un ensemble de technique qui visent surtout à rendre la langue française moins masculine. Traditionnellement, le français a utilisé des termes masculins et des accords masculins pour représenter les métiers et les rôles sociaux.

    + + + +

    Les mouvements d'émancipation de la femme ont un impact important sur la langue française. Il y a eu plusieurs revendications pour adopter des termes féminins pour représenter le rôle des femmes dans la société.

    + + + +

    Les organisations officielles qui définissent la langue sont de tradition plutôt conservatrice. Il n'y a pas consensus sur plusieurs formes au féminin. Par exemple, on pourra retrouver les mots auteure et autrice pour représenter le féminin d'auteur.

    + + + +

    Plusieurs dictionnaires et algorithmes sont construits à partir de textes passés. Les formes inclusives sont plutôt rares dans ceux-ci. Elles ne sont donc pas très bien reflétées dans les différents outils informatique de traitement du langage naturel.

    + + + +

    Une solution ici, c'est de construire nos propres lexiques et de continuer à écrire de façon inclusive pour que les algorithmes soient davantage exposés à ce type de contenu.

    + + + +

    Les accords masculins, féminins et neutres

    + + + +

    Contrairement à l'anglais, les noms de la langue française ont un genre. Et pas seulement ceux qui concernent les personnes, mais les objets et les concepts aussi ! Ceci apporte plusieurs défis important lorsqu'un algorithme veut saisir le sens d'un texte.

    + + + +

    De plus, l'adoption de l'écriture inclusive fait apparaître de nouvelles formes d'accords, sous la forme de doublets. Ceux-ci regroupent à la fois le masculin, le féminin et le pluriel dans le même mot. Ces accords utilisent souvent un symbole pour séparer les différents accords, le point médian (·). J'ai d'ailleurs conçu une application pour faciliter l'utilisation de celui-ci.

    + + + +


    Petite note éditoriale: À mon avis, l'utilisation du point médian au lieu de plusieurs autres symboles tels que le point, le tiret et la barre oblique est à privilégier. D'abord, parce que ça démontre l'intention de créer un doublet abrégé. Aussi, parce que ce sera plus facile de créer des algorithmes et des logiciels. Par exemple, pour la lecture de textes ou pour accompagner les dyslexiques, ce sera plus facile s'il n'y a qu'un seul symbole à considérer.

    + + + +

    Pour qu'un texte soit bien compris par les algorithmes, il faut le simplifier le plus possible pour avoir un nombre minimal de mots différents. Mais, on doit aussi préserver le plus possible le contenu sémantique des phrases. Pour ce faire, on utilise la technique de la lemmatisation.

    + + + +

    La lemmatisation

    + + + +

    La lemmatisation, c'est une technique où on supprime tous les préfixes, suffixes, les accords et les terminaisons d'un mot. Elle permet de retrouver le nom commun ou le verbe à partir duquel il a été formé. Le mot qu'on aura obtenu s'appelle aussi la forme canonique ou le lemme, d'où le terme lemmatisation.

    + + + +

    En français, la lemmatisation est plus complexe qu'en anglais, car nous avons plus de 70 formes de conjugaisons différentes. Sans oublier tous les accords masculins et féminins. De plus, nous avons des formes de composition de mots qui sont plus élaborées qu'en anglais. Souvent, les mots avec des structures complexes en anglais proviennent du français.

    + + + +

    Il existe une technique alternative à la lemmatisation qui est la racinisation. Celle-ci consiste à supprimer tous les préfixes et suffixes pour obtenir un radical. Contrairement à la lemmatisation, le radical n'est pas toujours un mot de la langue française.

    + + + +

    Dans les deux cas, il existe différentes méthodes pour obtenir un lemme ou un radical:

    + + + +
    • des dictionnaires d'association
    • des ensembles de règles
    • des algorithmes d'apprentissage automatique qui ont été entraînés sur des paires (mot, lemme) ou (mot, radical)
    + + + +

    Les néologismes, anglicismes et régionalismes

    + + + +

    L'utilisation de calques de l'anglais et de mots anglais dans la langue parlée, et de plus en plus dans la langue écrite, apporte des défis additionnels pour l'interprétation sémantique des phrases. C'est un des défis les plus difficiles dans l'analyse du langage naturel en français. En fait, la plupart des algorithmes ont été conçus ou entraînés sur des textes en français standard, provenant de textes littéraires et de la presse écrite.

    + + + +

    L'apparition de mots en anglais dans les phrases tend à dérouter les algorithmes et nuit à l'interprétation du sens.

    + + + +

    De plus, la présence d'expressions locales et régionales, de néologismes et de structures de phrases inhabituelles, va souvent donner du fil à retordre aux algorithmes de traduction.

    + + + +

    J'ajouterais enfin l'utilisation de plus en plus répandus des abréviations du web en anglais, ces fameux LOL, FOMO, YOLO devenus des éléments communs de la langue des plus jeunes générations ...

    + + + +

    Heureusement, l'apparition d'algorithmes basés sur l'apprentissage automatique avec des réseaux de neurones a permis de créer des substitutions sémantiques. Ces techniques permettent de passer par dessus les mots inconnus, en tenant compte du contexte qui entoure le mot. C'est ce qu'on nomme un plongement de mots, ou embedding en anglais.

    + + + +

    Le peu de ressources logicielles pour l'analyse du langage naturel en français

    + + + +

    Il y a peu de recherche académique qui porte spécifiquement sur l'analyse du langage naturel en français, et encore moins sur l'écriture sur le web.

    + + + +

    De plus, le marché est dominé essentiellement par un seul logiciel d'analyse de la langue naturelle en français, Antidote. C'est un logiciel privatif dont les algorithmes ne sont pas publiés.

    + + + +

    L'alternative libre Grammalecte, maintenant intégrée au logiciel infonuagique LanguageTool, est un projet intéressant à surveiller, mais il est encore loin derrière la complexité des algorithmes et des ressources d'Antidote au niveau de l'analyse du langage naturel.

    + + + +

    Tout ceci ne veut pas dire d'adapter notre façon d'écrire pour les algorithmes, mais plutôt être conscient que les algorithmes vont avoir davantage de difficulté à traiter des textes en français qu'en anglais.

    + + + +

    Passe à l'action

    + + + +

    Tu aimerais apprendre les différents outils d'analyse de la langue naturelle en français.

    + + + +

    Je te propose d'utiliser tes publications passées sur les réseaux sociaux, en particulier LinkedIn, pour apprendre à analyser ton contenu. Tu pourras en faire une source d'inspiration et de stratégie durable.

    Tu peux rejoindre ma formation Libère tes chaînes de mots maintenant !

    + + + + + + + +

    + + + +
    Libère tes chaînes de mots, une formation où tu apprends l'analyse du langage naturel avec tes données LinkedIn
    +]]>
    + + 3412 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[Les meilleurs logiciels libres de mind-mapping]]> + https://jevalide.ca/2022/08/11/les-meilleurs-logiciels-libres-de-mind-mapping/ + Fri, 12 Aug 2022 03:21:07 +0000 + + https://jevalide.ca/?p=3452 + + +

    Quand tu réfléchis, tes idées partent de tout bord, tout côté !

    + + + +

    Quand t'écris, les parenthèses s'accumulent !

    + + + +

    Quand tu planifies, tu fais des listes dans tes listes !

    + + + +


    Ton mode de pensée n'est pas linéaire.

    + + + +

    Tu n'es pas naturellement structuré·e comme un livre, mais plus comme une grande toile.

    + + + +

    + + + +

    Je te comprends, je suis aussi comme ça ! Et quand j'ai découvert le mind-mapping, ça vraiment changé ma façon de travailler. Pour le mieux !

    + + + +
    + + + +

    Tu aimerais peut-être explorer les logiciels de mind-mapping. Mais, tu ne veux pas nécessairement dépenser encore dans un autre outil web.

    + + + +

    Heureusement, il existe plusieurs excellents logiciels libres de mind-mapping. Je fais le tour avec toi !

    + + + +

    Qu'est-ce que le mind-mapping ?

    + + + +

    Le mind-mapping, ou la création de cartes heuristiques (un gros mot ici, mais une heuristique, c'est un raccourci fait par notre cerveau entre deux concepts), c'est une méthode de prise de notes et de structure des idées.

    C'est très utile pour structurer notre pensée, pour faire le squelette d'un texte, pour faire du brainstorming et pour faire de l'analyse de champs lexicaux.

    + + + +

    + + + +

    Je crois que c'est un outil indispensable pour l'analyse du langage naturel.

    + + + +

    + + + +

    Nous avons souvent à prendre en note de nombreux concepts qui ont plusieurs niveaux de détails, et les notes linéaires ne répondent pas toujours à notre besoin.

    + + + +

    Les enjeux des logiciels en ligne de mind-mapping

    + + + +

    De plus en plus de logiciels de collaboration en ligne offrent des capacités de mind-mapping. On pourra nommer, parmi les plus populaires: Miro, Whimsical, Mural, LucidChart et Scrintal

    + + + +

    + + + +

    Souvent, ils opèrent avec un modèle d'affaires en trappe à homard 🦞: une offre gratuite et limitée pour rapidement offrir un abonnement mensuel à partir de $10 par mois par utilisateur.

    Les enjeux:

    + + + +
    • dépendance à un outil qui peut diminuer les fonctionnalités offerte ou monter son prix à volonté
    • manque d'interopérabilité avec d'autres logiciels.
      • Souvent, les options pour exporter sont limités à une image ou à du texte non-formaté.
      • Généralement, ce n'est pas possible de passer d'un logiciel à un autre facilement.
    • coût additionnel et croissant
      • on augmente nos frais fixes de 10$ par mois minimum
      • si on arrête de payer on perd tout
    • manque de confidentialité
      • Le domaine des logiciels-service (SaaS) n'est pas reconnu pour avoir un souci important pour la protection des données et repose souvent le principe de la sécurité par l'obscurité
    + + + +

    C'est pour ça que je te propose ici des solutions libres. Elles ont moins de fonctionnalités au niveau de la collaboration en direct au profit d'une meilleure interopérabilité et surtout, d'être facile d'accès sur tous les systèmes, libres et gratuites.

    + + + +

    + + + +

    Quels sont les meilleurs logiciels libres de mind-mapping ?

    + + + +

    Voici quelques logiciels de mind-mapping qui ont une bonne réputation en informatique libre. Ils fonctionnent à la fois sur Windows, MacOS et Linux :

    + + + +
    • Freeplane: le successeur de FreeMind, basé sur la plateforme Java.
      • Son interface n'est peut-être plus à la mode, mais il regorge de fonctionnalités.
      • Il permet aussi d'exporter dans de nombreux formats, allant de Word à LaTeX en passant par le HTML et même la gestion de tâches avec TaskJuggler.
    + + + +
    Carte heuristique dans Freeplane, un logiciel libre de mind-mapping
    Carte heuristique dans Freeplane
    + + + +
    • Nextcloud Mind Map: Basé sur le logiciel chinois Baidu Maps.
      • Il permet d'éditer des cartes heuristiques depuis l'interface de Nextcloud.
      • Il n'est cependant pas collaboratif. Si deux éditeurs sont sur la même carte en même temps, ça crée des conflits de version et les deux risquent de perdre leurs modifications.
      • Plutôt minimaliste
      • Nécessite un serveur Nextcloud. C'est l'option la moins accessible ici si tu n'as pas ton propre serveur. L'autre solution, c'est d'avoir accès à un compte Nextcloud via une instance partagée. Certains hébergeurs offrent cette option, mais je n'en connais aucun au Québec pour l'instant.
      • Je peux t'aider à mettre en place un serveur Nextcloud pour ton entreprise. Contacte-moi !
    + + + +
    Carte heuristique dans Nextcloud Mind Map, un logiciel libre de mind-mapping
    Carte heuristique dans Nextcloud Mind Map
    + + + +
    • Desktop Naotu est la version pour le bureau de l'application Baidu Maps que l'on retrouve dans Nextcloud Mind Map ci-dessus.
      • L'avantage ici c'est de ne pas avoir besoin de serveur.
    + + + +
    Carte heuristique dans Desktop Naotu, un logiciel libre de mind-mapping
    Carte heuristique dans Desktop Naotu
    + + + +
    • Diagrams.net (anciennement Draw.io): C'est un logiciel de conception de diagrammes qui permet aussi de faire du mind-mapping.
      • Il est similaire à Microsoft Visio et à LucidChart.
      • Il est disponible en version web communautaire, en auto-hébergement sur serveur Linux et en application de bureau.
      • Surtout pour les graphistes et architectes, pour mettre au propre. Il est peu convivial pour une séance d'idéation.
      • Je déconseille de l'utiliser pendant une séance de travail parce qu'il demande des manipulations plus précises et délicates et est moins intuitif.
    + + + +
    Carte heuristique dans diagrams.net, un logiciel libre de diagrammes et de mind-mapping
    Carte heuristique dans diagrams.net
    + + + +
    • TreeSheets est un logiciel de prise de notes qui est à l'intersection de la feuille de calcul et des cartes heuristiques.
      • C'est probablement le logiciel le plus éclectique de cette liste.
      • Il permet de passer d'un mode grille qui ressemble davantage à Excel, vers un mode d'affichage qui ressemble beaucoup plus à une carte heuristique
    + + + +
    TreeSheets en mode feuilles imbriquées, un logiciel libre de prise de notes et de mind-mapping
    TreeSheets en mode feuilles imbriquées
    + + + +
    TreeSheets en mode carte heuristique, un logiciel libre de prise de notes et de mind-mapping
    TreeSheets en mode carte heuristique
    + + + +

    Conclusion

    + + + +

    Comme tu as pu remarquer, il existe plusieurs logiciels libres qui permettent de faire du mind-mapping.

    + + + +

    + + + +

    Maintenant, la question à te poser: Est-ce que la collaboration est un élément essentiel de ton travail, ou est-ce que les fonctionnalités et la réutilisation de tes cartes heuristiques passe en premier ?

    + + + +

    + + + +

    Si tu aimerais découvrir d'autres outils et que l'autonomie numérique t'intéresse, je t'invite à t'abonner à ma cyberlettre.

    + + + + + + + +

    Contenu que tu pourrais apprécier

    + + + + +]]>
    + + 3452 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[Code postal: Pourquoi le demander dans un commerce ?]]> + https://jevalide.ca/2022/08/16/code-postal-pourquoi-le-demander-dans-un-commerce/ + Tue, 16 Aug 2022 15:55:40 +0000 + + https://jevalide.ca/?p=3500 + + +

    Ça nous arrive tous de nous faire demander notre code postal dans un commerce. T'es tu déjà demandé pourquoi ?

    + + + +

    + + + +

    C'est surtout pour accumuler des statistiques d'achalandage. On peut effectivement obtenir une quantité impressionnantes de données à partir d'un simple code postal. Maintenant, tu te demandes comment on peut faire, je suis certain !

    + + + +

    + + + +

    Pour mieux comprendre, je te présente l'anatomie d'un code postal !

    + + + +

    Que signifie chaque caractère d'un code postal ?

    + + + +

    Le code postal canadien, c'est une séquence de 6 caractères: Trois lettres et trois chiffres en alternance.

    + + + +
    Structure d'un code postal canadien: région de tri d'acheminement et unité de distribution locale
    + + + +

    La première lettre, c'est la province ou le district au Québec et en Ontario.

    + + + +

    + + + +

    Le premier chiffre, si c'est un 0, c'est en zone rurale. Si le dernier chiffre est un 0, c'est une case dans un bureau de poste ! Ça donne déjà une information intéressante sur toi !

    + + + +

    + + + +

    Les trois premiers caractères forment la région de tri d'acheminement. En gros, c'est l'équivalent d'un quartier ou d'une petite ville.

    + + + +

    + + + +

    C'est le niveau le plus précis avec des territoires géographiques fixes. C'est donc super utile pour connaître le portrait démographique des clients avec le recensement, sans empiéter sur leur vie privée. Les territoires du recensement sont disponibles auprès de Statistiques Canada et on peut les utiliser dans un système d'information géographique.

    + + + +

    + + + +

    Les trois derniers caractères forment l'unité de distribution locale. C'est, en gros, un côté de rue entre deux rues en milieu urbain.

    + + + +

    Le code postal est une information confidentielle !

    + + + +

    Certains codes postaux peuvent identifier uniquement une adresse et même une personne. Pour cette raison, le code postal est une information confidentielle. On devrait uniquement l' utiliser pour envoyer du courrier !

    + + + +

    Un conseil pour la forme !

    + + + +

    Si on te demande ton code postal dans un commerce pour du marketing, tu peux donner les trois premiers caractères, soit la région de tri d'acheminement, et compléter par la séquence 0A0.

    Ils vont avoir accès aux statistiques du recensement, mais ils ne pourront pas identifier où tu habites ni t'envoyer du courrier.

    Gagnant-Gagnant !

    + + + +

    Autres contenus qui pourraient t'intéresser

    + + + + +]]>
    + + 3500 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[Installation de CUDA et SpaCY sur Manjaro]]> + https://jevalide.ca/2022/08/16/installation-de-cuda-et-spacy-sur-manjaro/ + Tue, 16 Aug 2022 16:54:38 +0000 + + https://jevalide.ca/?p=3513 + + +

    Dans cet article, je vais te montrer comment installer CUDA et CuDNN sur Manjaro pour les utiliser avec SpaCY.

    SpaCY une librairie de traitement du langage naturel pour Python basée sur les modèles d'apprentissage profond.

    + + + +

    Installation des dépendances pour Manjaro

    + + + +

    Nous allons d'abord installer quelques dépendances de base pour le système. J'ai un noyau Linux 5.15, alors si tu as un noyau plus récent, tu devrais adapter le nom du paquet linux515-nvidia.

    + + + +
    sudo pacman -Sy base-devel linux515-nvidia rust
    + + + +

    Installation de CUDA 11.5

    + + + +

    Nous allons installer la version 11.5 de CUDA sur Manjaro en nous inspirant de ce tutoriel

    + + + +


    https://forum.manjaro.org/t/howto-installing-nvidia-cuda-and-cudnn-for-machine-learning/97162

    On télécharge l'installateur depuis le site de NVIDIA.

    + + + +
    wget https://developer.download.nvidia.com/compute/cuda/11.5.1/local_installers/cuda_11.5.1_495.29.05_linux.run
    +chmod +x cuda_11.5.1_495.29.05_linux.run 
    +sudo ./cuda_11.5.1_495.29.05_linux.run
    + + + +

    On va maintenant ajouter les chemins des bibliothèques CUDA dans le PATH et dans le LD_LIBRARY pour la compilation de packages C.

    Comme Manjaro utilise bash et zsh, on va ajouter ces lignes dans les deux fichiers d'initialisation utilisateur:

    + + + +
    • ~/.bashrc
    • ~/.zshrc
    + + + +
    export PATH="${PATH}:/usr/local/cuda-11.5/bin"
    +export LD_LIBRARY="${LD_LIBRARY}:/usr/local/cuda-11.5/lib64"
    + + + +

    On va maintenant exécuter la mise à jour des chemins de librairies de compilation avec ldconfig

    + + + +
    sudo su
    +echo /usr/local/cuda-11.5/lib64 >> /etc/ld.so.conf
    +ldconfig
    +exit
    + + + +

    Ce code va nous permettre d'extraire les capacités de notre installation et de les enregistrer dans des fichiers de configuration.

    + + + +
    if [ -f ~/$CUDA_EXAMPLES_PATH/1_Utilities/deviceQuery/deviceQuery ];  then 
    +   ~/$CUDA_EXAMPLES_PATH/1_Utilities/deviceQuery/deviceQuery
    +   ~/$CUDA_EXAMPLES_PATH/1_Utilities/deviceQuery/deviceQuery | grep "CUDA Capability Major/Minor version number:" >  ~/ComputeCapability.CUDA
    +   for i in ` sed s'/=/ /g' ~/ComputeCapability.CUDA | awk '{print $6}' `
    +       do  
    +       export CUDA_COMPUTE_CAPABILITY=$i
    +       echo "CUDA_COMPUTE_CAPABILITY "$CUDA_COMPUTE_CAPABILITY                
    +       awk -v "a=$CUDA_COMPUTE_CAPABILITY" -v "b=10" 'BEGIN {printf "%.0f\n", a*b}' >     ~/ComputeCapability.opencv
    +   done  
    +fi
    + + + +

    Installation de CuDNN

    + + + +

    On peut maintenant installer l'extension CuDNN pour les réseaux de neurones. On va créer des liens symboliques vers toutes les combinaisons de fichiers objets requis.

    + + + +
    chmod +x cudnn-linux-x86_64-8.3.2.44_cuda11.5-archive.tar.xz
    +tar -xf ~/cudnn-linux-x86_64-8.3.2.44_cuda11.5-archive.tar.xz -C ~/  
    +
    +
    +sudo cp cudnn-linux-x86_64-8.3.2.44_cuda11.5-archive/include/cudnn*.h /usr/local/cuda/include  
    +sudo cp cudnn-linux-x86_64-8.3.2.44_cuda11.5-archive/lib/libcudnn* /usr/local/cuda/lib64  
    +sudo chmod a+r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn*
    +cd /usr/local/cuda/lib64
    +
    +if [ -f libcudnn.so ];   then sudo rm libcudnn.so;   fi 
    +if [ -f libcudnn.so.8 ]; then sudo rm libcudnn.so.8; fi 
    +
    +sudo ln libcudnn.so.8.3.2 libcudnn.so.8
    +sudo ln libcudnn.so.8 libcudnn.so
    +
    +cd  /usr/local/cuda-11.5/targets/x86_64-linux/lib
    +if [ -f libcudnn_adv_infer.so ];   then sudo rm libcudnn_adv_infer.so;   fi 
    +if [ -f libcudnn_ops_train.so ];   then sudo rm libcudnn_ops_train.so;   fi 
    +if [ -f libcudnn_cnn_train.so ];   then sudo rm libcudnn_cnn_train.so;   fi 
    +if [ -f libcudnn_cnn_infer.so ];   then sudo rm libcudnn_cnn_infer.so;   fi 
    +if [ -f libcudnn_adv_train.so ];   then sudo rm libcudnn_adv_train.so;   fi 
    +if [ -f libcudnn_ops_infer.so ];   then sudo rm libcudnn_ops_infer.so;   fi 
    +if [ -f libcudnn_adv_infer.so.8 ]; then sudo rm libcudnn_adv_infer.so.8; fi 
    +if [ -f libcudnn_ops_train.so.8 ]; then sudo rm libcudnn_ops_train.so.8; fi 
    +if [ -f libcudnn_cnn_train.so.8 ]; then sudo rm libcudnn_cnn_train.so.8; fi 
    +if [ -f libcudnn_cnn_infer.so.8 ]; then sudo rm libcudnn_cnn_infer.so.8; fi 
    +if [ -f libcudnn_adv_train.so.8 ]; then sudo rm libcudnn_adv_train.so.8; fi 
    +if [ -f libcudnn_ops_infer.so.8 ]; then sudo rm libcudnn_ops_infer.so.8; fi 
    +
    +sudo ln libcudnn_adv_infer.so.8.3.2 libcudnn_adv_infer.so.8
    +sudo ln libcudnn_ops_train.so.8.3.2 libcudnn_ops_train.so.8
    +sudo ln libcudnn_cnn_train.so.8.3.2 libcudnn_cnn_train.so.8
    +sudo ln libcudnn_cnn_infer.so.8.3.2 libcudnn_cnn_infer.so.8
    +sudo ln libcudnn_adv_train.so.8.3.2 libcudnn_adv_train.so.8
    +sudo ln libcudnn_ops_infer.so.8.3.2 libcudnn_ops_infer.so.8
    +sudo ln libcudnn_adv_infer.so.8 libcudnn_adv_infer.so
    +sudo ln libcudnn_ops_train.so.8 libcudnn_ops_train.so
    +sudo ln libcudnn_cnn_train.so.8 libcudnn_cnn_train.so
    +sudo ln libcudnn_cnn_infer.so.8 libcudnn_cnn_infer.so
    +sudo ln libcudnn_adv_train.so.8 libcudnn_adv_train.so
    +sudo ln libcudnn_ops_infer.so.8 libcudnn_ops_infer.so
    +
    +sudo ldconfig
    + + + +

    Création d'un environnement avec Anaconda pour SpaCY

    + + + +

    Nous allons créer un environnement de développement pour SpaCY et y installer plusieurs librairies, dont PyTorch et SpaCY

    + + + +
    conda create -n spacyvenv
    +conda activate spacyvenv
    + + + +

    Installation de PyTorch et SpaCY sur CUDA 11.5

    + + + +

    Nous installons PyTorch depuis le dépôt GitHub officiel au lieu d'utiliser Conda. C'est beaucoup moins de trouble comme ça et on s'assure d'avoir la version la plus à jour.

    + + + +
    conda install astunparse numpy ninja pyyaml mkl mkl-include setuptools cmake cffi typing_extensions future six requests dataclasses python=3.10
    +conda install -c pytorch magma-cuda115
    +
    +git clone --recursive https://github.com/pytorch/pytorch
    +cd pytorch
    +
    +export CMAKE_PREFIX_PATH=${CONDA_PREFIX:-"$(dirname $(which conda))/../"}
    +python setup.py install
    + + + +

    Installation de spaCy et des dépendances. CuPy donne parfois du trouble alors il faut le réinstaller.

    + + + +
    git clone https://github.com/explosion/spaCy
    +cd spaCy
    +export PYTHONPATH=`pwd`
    +pip install -r requirements.txt
    +python setup.py build_ext --inplace
    +pip install '.[cuda115]'
    +conda update -n base -c defaults conda
    +pip install --upgrade pip
    +pip uninstall cupy-cuda115
    +pip install cupy-cuda115
    + + + +

    Installation des modèles en anglais et en français

    + + + +

    Les deux premiers sont des modèles précis entrainés sur des GPU et les deux derniers sont des modèles simples entraînés sur des CPU.

    + + + +
    python -m spacy download en_core_web_trf
    +python -m spacy download fr_dep_news_trf
    +
    +python -m spacy download en_core_web_sm
    +python -m spacy download fr_core_news_sm
    + + + +

    Articles qui pourraient aussi t'intéresser

    + + + + +]]>
    + + 3513 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[5 conseils pour favoriser la diversité en STIM]]> + https://jevalide.ca/2022/08/23/5-conseils-pour-favoriser-la-diversite-en-stim/ + Tue, 23 Aug 2022 17:58:11 +0000 + + https://jevalide.ca/?p=3537 + + +

    Le 21 juin dernier, j'ai assisté à une conférence à l'Université Laval sur la diversité et l'inclusion dans le domaine des sciences, technologies, ingénierie et mathématiques (STIM). J'ai pris de nombreuses pages de notes lors de cette conférence. De celles-ci, j'en ai tiré 5 conseils favoriser la diversité en STIM que n'importe quelle organisation peut appliquer.

    J'écris cet article en sachant pertinemment que j'ai des privilèges et que ma perspective pourrait être biaisée. Je suis comme toujours ouvert au dialogue pour améliorer mon contenu !

    + + + +

    + + + +
    +
    +
    Maria Klawe, présidente du Harvey Mudd College et récipiendaire d'un doctorat Honoris Causa de l'Université Laval
    Maria Klawe
    +
    + + + +
    +

    L'invitée était Maria Klawe, une sommité dans le domaine de l'inclusion au niveau académique. C'était le lendemain de la remise d'un doctorat honoris causa par l'université pour reconnaître sa carrière. Une des premières femmes à devenir doyenne d'une faculté de science et avec un parcours impressionnant.

    +
    +
    + + + +

    Il n'y a pas de raccourcis pour favoriser la diversité en STIM

    + + + +

    + + + +

    Elle raconte qu'à ses débuts en 1988, il y avait seulement 4% de femmes professeures pour 50% d'étudiantes à la faculté de sciences de l'université de Colombie-Britannique (UBC). Son premier constat, c'est qu'augmenter le ratio de femmes dans un corps facultaire est un travail à très long terme, pour tenir compte de la durée des carrières. En voici dont un premier conseil:

    + + + +

    + + + +
    • Augmenter la diversité dans un département est un travail à très long terme qui ne peut pas être imposé.
    • Garder une attention constante sur le processus de recrutement et ne pas laisser place à des compromis. Il n'y a pas de raccourcis.
    + + + +

    Valoriser le partage de connaissances, une clé pour recruter davantage de femmes

    + + + +

    Elle est maintenant présidente du collège Harvey Mudd, en Californie. C'est un collège spécialisé dans les sciences qui reçoit des étudiants de l'équivalent du premier cycle au Canada (le diplôme est un baccalauréat). La spécialité de ce collège est l'enseignement, avant la recherche. Elle mentionne que la recherche est souvent mise à l'avant dans la carrière académique, au détriment de l'enseignement. Et que c'est une des raisons qui incite moins les femmes à faire des études supérieures. Les femmes professeures aiment enseigner ! Voici donc le deuxième conseil:

    + + + +

    + + + +
    • Valoriser la place de l'enseignement et du partage de connaissances permet de recruter davantage de femmes.
    + + + +

    Faire vivre la diversité des expériences à toutes et tous

    + + + +

    Tous les étudiant.es, lors de la première année, ont un parcours commun. Ceci leur permet d'explorer un peu tout ce qui est offert par le collège, incluant les arts, les sciences et les humanités. Le développement du leadership est une de leurs valeurs importantes.

    + + + +

    + + + +

    Comme certaines personnes plus privilégiées ont pu apprendre l'informatique avant le début de leurs études, deux versions des cours d'introduction sont offertes. Comme ça, c'est possible de ne pas décourager les étudiant·es pour qui ça serait nouveau. Ça permet aussi d'offrir suffisamment de défi pour les plus expérimenté·es.

    + + + +

    + + + +

    Lorsque des projets d'équipe sont au plan de cours, les assignations d'équipes sont aléatoires, pour éviter que des équipes privilégiées (par exemple qui auraient pu se former durant l'été) ne puissent pas prendre d'avance et créer un sentiment d'iniquité.

    Au fil du temps, le collège s'est construit une telle réputation qu'il y a maintenant 50% de femmes étudiantes dans les programmes d'informatique grâce à ces initiatives.

    On peut en tirer trois principes, qui forment notre troisième conseil:

    + + + +

    + + + +
    • Offrir un parcours de formation diversifié pour créer un sentiment de communauté.
    • Ne pas juger l'expertise des candidat·es à leur arrivée.
    • Montrer le chemin vers le succès à l'aide de modèles inspirants
    + + + +

    Les valeurs de diversité, équité et inclusion, autant à l'extérieur qu'à l'intérieur

    + + + +

    Lorsqu'elle a obtenu le rôle de présidente du collège, elle n'a jamais demandé s'il y avait un programme de formation à la diversité, l'équité et l'inclusion (EDI). Elle avait présumé que le conseil de direction connaissait son expertise et qu'ils étaient formés à ce sujet. Il a malheureusement fallu attendre un évènement tragique impliquant le décès d'un étudiant pour réaliser qu'il y avait besoin de mettre en place un programme structuré en EDI. Que ça prenne un évènement tragique pour que l'administration réalise le problème était quelque chose de terrible à vivre.

    + + + +

    + + + +

    Elle a alors décidé d'investir l'entièreté d'une subvention importante pour former tout le personnel et tous les étudiant.es aux enjeux EDI. Elle a aussi fait réviser tout le matériel marketing et publicitaire du collège. Et surtout, elle a travaillé à mettre en place une culture d'entraide. De façon à ce que demander de l'aide devienne la norme et non pas un geste de dernier recours. Cette leçon nous apporte le quatrième conseil:

    + + + +

    + + + +
    • Ce qui est reflété à l'extérieur doit se produire aussi à l'intérieur d'une organisation pour que l'EDI fonctionne.
    • Mettre en place un parcours de formation en diversité, équité et inclusion auprès de toutes les parties prenantes de l'organisation (clientèle, personnel, gestion et administration)
    + + + +

    Les compétences techniques n'ont jamais le dernier mot

    + + + +

    Finalement, elle a terminé la conférence en laissant quelques précieux conseils pour l'industrie.

    + + + +

    + + + +

    Bien que le milieu académique soit le meilleur endroit pour favoriser la diversité en STIM pour les prochaines générations, il est toujours possible de faire des efforts dans le marché du travail actuel, dans un contexte de vieillissement de la population.

    + + + +

    + + + +

    La perception du niveau de compétence varie entre les genres, entre les communautés culturelles et selon l'âge.

    + + + +

    + + + +

    Pour avoir des équipes diversifiées, il faut commencer par le début du processus d'embauche, et créer un processus de recrutement qui tient compte des biais internalisés, notamment au niveau des compétences techniques. Voici le dernier conseil que j'ai tiré de cette conférence:

    + + + +

    + + + +
    • Ne pas exiger de compétences techniques dans les affichages, afin d'éviter que les biais internalisés viennent nuire à la qualité des candidatures pour un poste.
    • Former les intervieweur·euse·s à ces enjeux.
    + + + +

    En savoir plus:

    + + + + + + + +

    Articles qui pourraient aussi t'intéresser

    + + + + + + + +

    Crédits

    + + + + +]]>
    + + 3537 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[5 conseils pour des formulaires en ligne inclusifs et respectueux]]> + https://jevalide.ca/2022/08/24/5-conseils-pour-des-formulaires-en-ligne/ + Wed, 24 Aug 2022 20:40:09 +0000 + + https://jevalide.ca/?p=3613 + + +

    De plus en plus, nos interactions sur le web se font à travers des formulaires en ligne. Même chez jevalide.ca, je ne fais pas exception. Si tu souhaites me contacter, c'est aussi via un formulaire. Certains sont courts, comme pour s'inscrire à une infolettre, d'autres sont très longs, comme des sondages de recherche.

    + + + +

    Dans presque tous les cas, ils vont contenir des informations qu'on peut classer de privées, confidentielles et même secrètes !

    + + + +

    Quelques enjeux avec les formulaires en ligne

    + + + +

    J'ai remarqué, dans la dernière décennie, la prolifération de formulaires demandant une quantité abusive d'informations, souvent juste pour pouvoir s'inscrire à une infolettre.

    + + + +

    + + + +
    Un formulaire en ligne d'abonnement à une infolettre qui recueille une quantité abusive de données. Capture d'écran du site web Les Affaires.
    Un formulaire d'abonnement à une infolettre qui recueille une quantité abusive de données
    + + + +

    + + + +

    Heureusement, les contextes législatifs ont évolué entre notre faveur, nous, humbles citoyens, pour une fois, et non pas pour les grandes entreprises seulement.

    + + + +

    + + + +

    Les lois telles que le Règlement général de protection des données (RGPD) en Europe, le California Consumer Privacy Act (CCPA) en Californie et bientôt, la loi 25 au Québec, contrôlent les raisons pour lesquelles des données peuvent être collectées.

    + + + +

    + + + +

    Malheureusement, il y a encore beaucoup de sites web qui, intentionnellement ou non, accumulent beaucoup trop de données, mettant à risque la vie privée et la confidentialité des renseignements en cas d'incident de cybersécurité ou de mauvais usage.

    + + + +

    + + + +

    Je te présente cinq conseils clés pour créer de meilleurs formulaires en ligne, plus respectueux et plus inclusifs. Tu seras prêt·e pour l'arrivée de nouvelles lois et de nouveaux comportements de la part de toutes les parties prenantes qui interagissent avec nos entreprises.

    + + + +

    + + + +

    Demande le strict minimum

    + + + +

    C'est la base de la gouvernance de données. Moins on accumule d'information, plus il sera facile de bien la gérer et de la protéger. La première question à te poser, c'est quelles sont les informations qui sont essentielles pour la prestation de ton service.

    + + + +

    + + + +

    Par exemple, si tu livres un produit gratuit en ligne, tel qu'un document ou une infolettre, tu n'as généralement pas besoin de l'adresse physique de tes clients.

    + + + +

    + + + +

    Un autre exemple d'information qui est rarement utile, c'est le genre et l'orientation sexuelle. À moins que tu sois une agence de rencontres ou dans le domaine de la santé, c'est bien rare que cette information soit utile pour ton entreprise. Et ne t'essaie pas avec l'utilisation de titres de civilité. C'est dépassé et ce n'est pas inclusif.

    + + + +

    + + + +

    Pour personnaliser ton contenu, le prénom suffit. Le nom de famille est encore une fois une information qui n'est souvent pas utile en dehors d'une transaction où on doit valider des informations de paiement.

    + + + +

    Découple l'inscription et les sondages dans des formulaires en ligne différents

    + + + +

    En entreprise, on aime avoir un portrait démographique de nos clients et de nos visiteurs. Cependant, nous n'avons pas besoin de savoir qui est qui lorsqu'on fait des statistiques.

    + + + +

    C'est pour cette raison que lorsqu'on crée un formulaire d'inscription, on ne devrait pas demander d'information démographique, mais seulement les informations nécessaires pour identifier la personne avec qui on interagit.

    + + + +

    + + + +

    Les informations démographiques devraient être demandées dans un sondage anonyme à part

    + + + +

    + + + +

    Ce sont, par exemple:

    + + + +
      +
    • l'âge,
    • + + + +
    • le genre (on ne demande plus le sexe),
    • + + + +
    • le pays,
    • + + + +
    • la ville,
    • + + + +
    • le code postal
    • + + + +
    • le revenu annuel…
    • +
    + + + +

    Un sondage ne devrait surtout pas contenir des informations qui permettent l'identification personnelle telle qu'un courriel ou un numéro de téléphone. Et que je ne te prenne pas à utiliser la tactique du concours ou de la communication des résultats pour attraper une adresse courriel par la bande. C'est un manque d'éthique flagrant !

    + + + +

    + + + +

    Un formulaire est anonyme seulement lorsque c'est impossible de retracer qui l'a rempli, même si on avait accès à toutes les données de la planète !

    + + + +

    + + + +

    L'anonymat, c'est lorsqu'il est fortement possible que plusieurs personnes puissent donner les mêmes réponses à toutes les questions. On appelle ça la k-anonymat. C'est la mesure qui permet de s'assurer qu'au moins k personnes différentes donneraient la même réponse si elles répondaient au sondage.

    + + + +

    + + + +

    Donc moins on pose des questions précises, plus la valeur de k est grande. Il faut trouver le bon compromis entre la précision et l'anonymat. Ça revient à mon point précédent. Est-ce que tu as vraiment besoin de savoir ça !

    + + + +

    Pense aux autres usages possibles des données

    + + + +

    Lorsque tu construis un questionnaire, tu as souvent une seule idée en tête. C'est généralement pour offrir un service, livrer un produit ou pour connaître l'opinion de tes abonnés sur un sujet d'actualité qui les concerne de près.

    + + + +

    Cependant, les données que tu vas obtenir pourraient probablement servir aussi à autre chose. Et surtout, si elles étaient entre les mains de personnes mal intentionnées.

    + + + +

    + + + +

    C'est un bon exercice de se demander ce qu'on peut faire d'autre avec les données qu'on accumule. On se livre à un vrai exercice de remue-méninges. On suppose qu'on a accès à tout ce qui se trouve sur Internet et qu'il n'y a aucune loi pour interdire tout ce à quoi on a pensé. Bref, on se met dans la peau de pirates et de criminels!

    + + + +

    + + + +

    Utilise l'écriture épicène et inclusive

    + + + +

    Les gens vont avoir davantage tendance à remplir un formulaire en ligne s'ils et elles se sentent interpellé·es. De plus, utiliser cette forme d'écriture augmente l'égalité sur le web, car les moteurs de recherche ont tendance à favoriser le contenu au masculin.

    + + + +

    + + + +

    Pour ce faire, c'est recommandé d'utiliser l'écriture épicène et inclusive:

    + + + +
      +
    • L'écriture épicène, c'est utiliser des noms collectifs au lieu de noms genrés. Par exemple, au lieu de client, on peut utiliser clientèle.
    • + + + +
    • L'écriture inclusive, c'est d'utiliser à la fois le masculin et le féminin. Cette syntaxe se nomme le doublet, et elle est disponible soit avec +
        +
      • une forme complète: client et cliente. +
          +
        • Cette forme peut devenir lourde. Il n'est pas conseillé de l'utiliser plus d'une fois par phrase.
        • +
        +
      • + + + +
      • une forme abrégée, qui va utiliser le point médian: client·e. +
          +
        • Cette forme est pratique sur les réseaux sociaux et dans les espaces restreints, mais elle est plus difficile à lire pour les lecteurs vocaux et pour les gens dyslexiques.
        • +
        +
      • +
      +
    • +
    + + + +

    Tu peux utiliser mon outil en ligne pour faciliter l'usage du point médian.

    + + + +

    Je te laisse en référence quelques ressources utiles pour apprivoiser l'écriture inclusive:

    + + + + + + + +

    + + + +

    Choisis une plateforme de formulaires en ligne qui respecte la confidentialité

    + + + +

    Il existe plusieurs outils de création de formulaires en ligne. Certains hébergent seulement les données aux États-Unis. Je te conseille ici de prendre le temps de lire les conditions d'utilisation et les paramètres de confidentialité des logiciels que tu choisis. Ce ne sont pas uniquement tes données, mais aussi celles de ta clientèle et tu en es responsable selon la loi !

    + + + +

    Parmi les services les plus populaires et gratuits, les données sont généralement hébergées aux États-Unis. Certains vont offrir le choix de la localisation si on creuse bien loin dans les paramètres.

    + + + +

    + + + +

    Mais, le mieux, c'est de savoir exactement où se trouvent les données. Pour ça, il y a deux options:

    + + + +
      +
    1. Payer un fournisseur qui nous permet de choisir la localisation, tel que LimeSurvey
    2. + + + +
    3. Héberger nous-même l'outil de création de formulaires et sa base de données, ce qui demande plus de compétences techniques.
    4. +
    + + + +

    Encore une fois, l'outil LimeSurvey peut être utilisé en mode auto-hébergement. Sinon, les logiciels libres Nextcloud et YakForms permettent de construire des formulaires qui seront aussi auto-hébergés. Sinon, le site web AlternativeTo va te permettre d'en trouver d'autres !

    + + + +

    + + + +

    Conclusion

    + + + +

    Je souhaite que ces conseils t'aiderons à construire des formulaires en ligne qui sont plus respectueux de la vie privée, et plus inclusifs !

    + + + +

    + + + +

    Partage-nous tes formulaires révisés sur les réseaux sociaux !

    + + + +

    + + + +

    Autres contenus qui pourraient t'intéresser

    + + + + +]]>
    + + 3613 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[Libérer de l'espace disque sur Manjaro Linux]]> + https://jevalide.ca/2022/09/09/liberer-de-lespace-disque-sur-manjaro-linux/ + Fri, 09 Sep 2022 15:04:24 +0000 + + https://jevalide.ca/?p=3704 + + +

    Je te partage quelques conseils pour libérer de l'espace disque sur Manjaro Linux.

    + + + +

    + + + +
    1. Vider la corbeille (on l'oublie parfois, celle-là !)
    2. Vider le cache de pacman avec sudo pacman -Scc
    3. Vider le cache de yay avec yay -Scc
    4. Vider les journaux système avec sudo journalctl --vacuum-time=1d
    5. Vider le cache de pip (Python) avec pip cache purge
    6. Vider le cache de Gradle (Java) avec rm -rf ~/.gradle
    + + + +

    Si tu veux découvrir d'autres opportunités pour faire du ménage, je te conseille d'installer FileLight, un outil pour visualiser l'utilisation de son espace disque.

    +]]>
    + + 3704 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[Sauvegarder ses données Instagram et se protéger]]> + https://jevalide.ca/2022/09/17/sauvegarder-ses-donnees-instagram-et-se-proteger/ + Sun, 18 Sep 2022 01:28:14 +0000 + + https://jevalide.ca/?p=3741 + + +

    Pourquoi sauvegarder ses données Instagram et protéger son compte ?

    + + + +

    Tes données Instagram sont précieuses et ont beaucoup de valeur. Pour toi et aussi pour des personnes malveillantes.

    + + + +

    + + + +
      +
    • Tu crées probablement beaucoup de contenu sur Instagram.
    • + + + +
    • Tu as beaucoup de contacts et c'est ton réseau d'affaires privilégié.
    • +
    + + + +

    Malheureusement, comme tu n'es qu'un produit aux yeux de Meta, dès que tu deviens défectueux, parce que ton compte est soit trop agressif, trop engagé politiquement ou que tu te fais saisir tes accès par un pirate informatique, tu es mis aux oubliettes et tu dois tout recommencer. Bonne chance pour avoir de l'aide…

    + + + +

    + + + +

    C'est pourquoi je te propose ici deux actions à faire immédiatement pour sécuriser ton compte.

    + + + +

    Voici comment sauvegarder tes données Instagram

    + + + + + + + +
    Section Sécurité et confidentialité des paramètres Instagram
    Va dans tes paramètres, puis clique sur Sécurité et confidentialité
    + + + +
      +
    • Clique sur Demander un téléchargement
    • +
    + + + +
    Demander un téléchargement de tes données Instagram.
    Clique sur Demander un téléchargement
    + + + +
      +
    • Ensuite, sélectionne le format JSON, il est plus facile à manipuler pour récupérer un compte que le format HTML, même s'il est moins facile à consulter. +
        +
      • Tu peux aussi demander le HTML parce que ça fait un genre de mini-site web si jamais tu perds tes accès, pour au moins avoir ton contenu et tes contacts sous la main. Mais en priorité, demande le JSON, ça permet aux bibites geek comme moi de t'aider rapidement.
      • +
      +
    • + + + +
    • Tu vas recevoir un courriel avec un lien cliquable. Clique et télécharge tes données.
    • + + + +
    • Tu peux ensuite les mettre sur un lieu sécuritaire tel qu'un stockage cloud chiffré ou un disque dur externe, avec tes autres sauvegardes.
    • + + + +
    • Ce qui est intéressant avec ces données, c'est qu'on peut les utiliser pour faire de l'analytique marketing aussi, par exemple en les fusionnant avec ton logiciel CRM, ou en utilisant du code. Si ça t'intéresse, je t'invite à me contacter !
    • +
    + + + +

    Je te conseille de répéter cette procédure régulièrement. Pour ma part, je le fais une fois par mois, mais plus tu as d'abonnements, plus je te conseille de le faire souvent.

    + + + +

    Malheureusement, ce n'est pas possible de l'automatiser, alors mets-toi au moins un rappel dans ton calendrier !

    + + + +

    Voici comment sécuriser ton compte Instagram

    + + + +

    Un courriel unique

    + + + +

    + + + +

    Premièrement, je te conseille d'utiliser une adresse courriel unique pour ton compte Instagram. Souvent, avec les fournisseurs de courriels, tu peux créer des adresses additionnelles en utilisant des alias, qui prennent la forme de ton nom d'utilisatieur régulier additionné d'un suffixe, séparé par un signe "+".

    par exemple, si ton courriel est moi@mondomaine.com, si tu crées l'adresse moi+instagram@mondomaine.com, tu vas tout recevoir au même endroit que d'habitude, et tu peux créer des règles de tri de courriel sur cette adresse pour les mettre dans un autre dossier ou leur associer une étiquette si ton service le permet.

    + + + +

    + + + +

    Si tu reçois des courriels par rapport à Instagram qui ne sont pas envoyés à cette nouvelle adressse, tu peux être pas mal sûr que c'est une arnaque.

    + + + +

    + + + +

    La double authentification

    + + + +

    Nous allons aussi activer la fonctionnalité de double authentification, ou deux facteurs. Je te recommande d'utiliser un téléphone mobile ou une tablette Android ou iOS. Mais, tu peux aussi utiliser l'application Authy qui est disponible sur PC et Mac pour commencer !

    + + + +

    + + + +
      +
    • Procures toi une application d'authentification TOTP tel que Authy, Aegis ou Microsoft Authenticator. +
        +
      • Personnellement, j'utilise Aegis qui permet de faire une copie des amorces du générateur de nombres aléatoires sur un autre appareil Android. Je fais une sauvegarde sur ma tablette Android avec ça. Comme ça les deux appareils sont synchros à quelques secondes près.
      • + + + +
      • Authy et Microsoft Authenticator permettent de leur côté de faire une sauvegarde cloud avec un compte.
      • +
      + + + +
        +
      • Oui, même nous outils de sécurité, il faut leur faire des sauvegardes !
      • + + + +
      • N'oublie pas d'ajouter ce compte à ton gestionnaire de mots de passe.
      • +
      +
    • + + + +
    • Depuis tes paramètres, toujours dans Sécurité et confidentialité, va dans la section Authentification à deux facteurs et clique sur le lien bleu qui se nomme Modifier le paramètre d’authentification à deux facteurs dans mon cas. Clique sur Utiliser une app d’authentification et suis les instructions.
    • +
    + + + +
    + + + +

    Je te conseille aussi de télécharger les codes de secours, de les imprimer (oui sur du vrai papier) et de t'en laisser une copie dans ton coffre-fort et aussi une autre dans un lieu de confiance (chez un membre de ta famille, par exemple) et d'en avoir une copie sur ton disque chiffré de sauvegarde. Ne les garde pas sur ton téléphone ou ton ordinateur !

    + + + +

    + + + +

    Comme tu vois, c'est aussi possible de le faire en utilisant un texto, mais je ne te le conseille que si tu as un téléphone qui n'est pas avec Android ou iOS (donc que tu as un flip phone), et que tu ne souhaites pas utiliser Authy, parce qu'il y a des risques additionnels, notamment le SIM Swapping. Ce risque est encore plus présent si tu voyages.

    + + + +

    + + + +

    J'espère que ces conseils pourront te rassurer !

    + + + +

    + + + +

    + + + +

    Tu aimerais sécuriser ton entreprise ?

    + + + +

    Ce contenu est une petite partie du parcours de cybersécurité que nous faisons ensemble dans mon programme Mission Cybersécurité.

    + + + +

    Si tu veux dormir sur tes deux oreilles, rejoins-nous dès maintenant !

    + + + +

    Autres articles qui pourraient t'intéresser

    + + + + +]]>
    + + 3741 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[Sécurité de Kubernetes]]> + https://jevalide.ca/2022/11/11/securite-de-kubernetes/ + Fri, 11 Nov 2022 04:14:04 +0000 + + https://jevalide.ca/?p=3828 + + +

    Dans cet article, je vais te présenter plusieurs outils pour améliorer la sécurité de Kubernetes, au niveau de la grappe et des applications encapsulées.

    + + + +

    + + + +

    Le 29 octobre 2022, j'ai assisté à une présentation sur la sécurité des installations Kubernetes (prononciation) au Hackfest de Québec, par Magno Logan, qui travaille pour l'entreprise de cybersécurité Trend Micro. Je vais ici te faire un résumé de la présentation accompagné de notes additionnelles. Je veux rendre le sujet le plus accessible possible si tu débutes comme moi !

    + + + +

    + + + +

    J'ai commencé à utiliser Kubernetes, plus précisément OpenShift, dans le cadre de mon contrat de professionnel de recherche à l'Université Laval. Notre projet consiste à produire une plateforme d'imagerie médicale sous forme d'un lac de données structurées pour des applications en apprentissage automatique ou en simulation stochastique.

    + + + +

    + + + +

    C'est quoi, justement, Kubernetes ?

    + + + +

    Commençons par la base: le conteneur. Un conteneur est un système de fichiers qui représente une version allégie d'un système d'exploitation Linux, mais avec juste ce qu'il faut pour exécuter un seul logiciel. C'est un peu comme une archive Zip tout-en-un, mais pour un logiciel de serveur.

    + + + +

    + + + +

    Pour créer et exécuter les conteneurs individuellement, on utilise généralement Docker. Pour en faire fonctionner plusieurs ensemble, on utilise Docker Compose, qui permet de créer un réseau informatique virtuel entre les différents conteneurs. Mais, lorsque vient le temps de mettre plusieurs de ces applications ensemble, ça devient assez complexe.

    + + + +

    Imaginons maintenant des certaines d'applications à coordonner ! C'est là qu'intervient Kubernetes.

    + + + +
    "Helm" by macieklew is licensed under CC BY-SA 2.0 .
    + + + +

    Kubernetes, c'est un peu le capitaine d'une flotte de navires. Chaque navire représente un noeud de calcul, ou un serveur. Dans chaque noeud, il y a des déploiements qui contiennent des capsules d'un ou plusieurs conteneurs et des réseaux pour les relier ensemble. Chaque capsule peut aussi avoir ses propres fichiers de configuration, des secrets tels que des clés d'API ou des mots de passe, ainsi que du stockage.

    + + + +

    + + + +
    Représentation d'une grappe Kubernetes pour expliquer les différents principes de sécurité. Plan de contrôle, trois noeuds contenant chacun plusieurs capsules.
    + + + +

    + + + +

    Tous les composantes d'un même projet sont sous un même espace de noms. Les espaces de noms peuvent être sur un ou plusieurs noeuds de calculs. Leur principale propriété est d'être isolés logiquement les uns des autres. C'est à dire que pour utiliser un service qui se trouve dans un autre espace de nom, il faut passer par le réseau Internet. On pourrait associer un espace de nom à un compte client dans un contexte d'hébergement partagé, par exemple.

    + + + +

    + + + +

    Une dernière chose que permet Kubernetes, c'est le passage à l'échelle. Lorsqu'il y a des pics de demande, Kubernetes peut déployer de nouvelles copies d'images d'applications automatiquement.

    + + + +

    L'API de Kubernetes

    + + + +

    L'ensemble de Kubernetes est contrôlé de deux façons. La première, c'est au travers de fichiers de configuration YAML. La seconde, c'est par une interface de programmation (API). Cette interface est accessible via des utilitaires en ligne de commandes tels que kubectl, ou au travers de divers langages de programmation, tel que Python. Les détails se trouvent sur cette page: https://kubernetes.io/docs/concepts/overview/kubernetes-api/

    + + + +

    + + + +

    Le plan de contrôle est essentiellement un serveur d'API entouré de différentes composantes:

    + + + +
    • kube_controler
    • cloud_controler
    • etcd
    • scheduler
    + + + +

    Les capsules ont aussi des composantes:

    + + + +
    • kubelet
    • kube_proxy
    + + + +

    L'ensemble de ces composantes permettent l'orchestration des différentes applications sur la grappe Kubernetes. Parmi celle-ci, il y a le serveur API et la base de données etcd qui vont être particulièrement ciblées par des attaques.

    + + + +

    + + + +

    L'API contient plusieurs objets, qui permettent de manipuler les noeuds, les espaces de noms, les déploiements, les ensembles de réplication, les capsules et les conteneurs. Voici les noms utilisés à l'intérieur:

    + + + +
    • Node
    • Namespace
    • Deployment
    • ReplicaSet
    • Pod
    • Container
    + + + +

    Analyser l'état de la sécurité de Kubernetes

    + + + +

    Il existe plusieurs ressources pour évalier l'état de la sécurité de Kubernetes, incluant la grappe de calcul et les applications hébergées dans des capsules.

    + + + +

    + + + +

    Voici deux ressources assez complète incluant de la documentation et du matériel de formation:

    + + + + + + + +

    Vulnérabilités sur des capsules

    + + + +

    Une des principaux moyens d'attaquer une grappe Kubernetes est d'entrer dans une capsule, puis de faire des mouvements latéraux vers d'autres capsules appartenant au même espace de noms. Cette tactique est notamment utilisée pour accéder à des ressources de calcul permettant de miner des cryptoactifs.

    + + + +

    + + + +

    Un des moyens utilisés pour identifier des grappes potentiellement vulnérable, c'est le moteur de recherche Shodan. Cet outil spécialisé permet de savoir quels services sont installés et accessibles depuis Internet sur tout serveur qui y est connecté. Les identifiants recherchés sont:

    + + + +
    • Kube API Server
    • Kubernetes
    + + + +

    Les types de vulnérabilités recherchées sont au niveau des applications web, ou encore de tableaux de bords exposés publiquement, comme c'est le cas chez les principaux fournisseurs infonuagiques Amazon (EKS), Google (GKS) et Azure (AKS). L'objectif est de réussir à obtenir un accès au terminal de la capsule (shell).

    + + + +

    + + + +

    Voici quelques outils qui peuvent détecter ces vulnérabilités:

    + + + +
    • kube-hunter par Aqua Security. Il vérifie 38 vulnérabilités et problèmes de configuration courants
    • Regarder les variables d'environnement:
    + + + +
    env | grep -i kube
    + + + +
    • Regarder les jetons de comptes de service:
    + + + +
    /var/run/secrets/kubernetes.io/
    + + + +
    • amicontainerd par Genuine Tools, permet de regarder à l'intérieur des containers pour capturer les appels d'exécution
    + + + +

    Vulnérabilités sur la grappe Kubernetes

    + + + +

    Il existe quelques outils pour détecter des vulnérabilités au niveau des grappes Kubernetes:

    + + + + + + + +

    Il y a aussi plusieurs outils pour scanner les images de conteneurs au repos:

    + + + +
    • Clair Scanner: Va utiliser les capacités de l'outil Clair installé sur les hébergeurs d'images tels que Docker Hub ou Quay.io
    • Docker Scan: Outil natif fourni avec Docker
    • SmartCheck: Outil développé par Trend Micro et utilisable via GitHub Actions
    • Snyk: Un outil général pour détecter des vulnérabilités dans des applications infonuagiques, dont les conteneurs.
    • Trivy (Aqua Security)
    + + + +

    Les outils précédents ne pourront pas, par contre, détecter les vulnérabilités qui pourraient avoir été insérées après le déploiement de l'image. Nous avons donc aussi besoin d'outils de détection à l'exécution en temps réel:

    + + + +
    • Falco: permet de surveiller les évènements du noyau Linux utilisé depuis un conteneur. C'est un projet initialement créé par Sysdig, une entreprise de suivi de performance de grappes Kubernetes. Il est maintenant accueilli par la CNCF, la fondation responsable de la normalisation des applications conteneurisées.
    • Sigma Rules: Un outil pour définir des règles personnalisées pour les systèmes de suivi d'incidents de sécurité (SIEM)
    + + + +

    Configuration pour améliorer la sécurité de Kubernetes

    + + + +

    Je vais lister ici plusiers pistes à valider pour améliorer la sécurité de Kubernetes, autant au niveau des applications que de la grappe.

    + + + +

    + + + +

    Applications

    + + + +
    • Diminuer les ressources demandées par application, autant au niveau de la mémoire que de la capacité de calcul processeur. En plus de diminuer les coûts, ça limite les possibilités d'exploitation de la capsule pour, par exemple, miner des cryptoactifs.
    • Quelques paramètres:
      • Ne pas autoriser l'escalade de privilèges
      • Système de fichier racine en lecture seule
      • Exécution avec un utilisateur non-root
    • Mettre en place un outil de sécurité associé aux permissions d'exécution:
    • Mettre en place des contrôleurs d'admission:
    • Utiliser les niveaux de sécurité pour les capsules (Pod Security Standards):
      • Accès privilégié: permet l'escalade de privilèges
      • Accès de base: niveau par défaut, prévient la plupart des escalades de privilèges
      • Accès restreint: suit les meilleures pratiques actuelles
    • Mettre en place une politique d'accès RBAC
      • Définir des rôles par espace de noms (Roles ), des rôles pour la grappe (Cluster Roles) et des bindings. Faire attention parce qu'il est possible de donner beaucoup trop de permissions.
    + + + +

    etcd

    + + + +

    etcd, C'est la base de données utilisée par Kubernetes. Elle n'est pas chiffrée au repos et son contenu est accessible en format texte. On peut activer le chiffrement au repos, mais elle sera moins performante.

    + + + +

    Pour protéger etcd, le meilleur moyen est d'appliquer des règles de réseautique pour restreindre au maximum son accès.

    + + + +

    La réseautique de Kubernetes

    + + + +

    On peut sécuriser les communications entre les différentes capsules en utilisant des politiques de réseau. Elles peuvent être configurées lors des déploiements.

    + + + + + + + +

    Sans de bonnes politique réseau dans une grappe kubernetes, une seule application attaquée peut donner un accès complet au réseau à l'intérieur de la grappe, y compris au plan de contrôle.

    + + + +

    Le service EKS d'Amazon ne permet pas de configurer des Network Policies. Cependant, il offre l'option de créer des groupes de sécurité pour les capsules. C'est aussi possible de configurer une surveillance accrue en utilisant CloudWatch.

    + + + +

    + + + +

    Pour conclure: niaise pas avec la sécurité de Kubernetes

    + + + +

    Voici quelques conseils de base pour conclure cet article:

    + + + +
    • Assures-toi de mettre à jour Kubernetes le plus souvent possible
    • N'utilise pas de compte administrateur pour interagir avec Kubernetes
    • Utilise des offres gérées, soit avec des fournisseurs infonuagiques, soit avec des offres de fournisseurs avec service tel que OpenShift ou Rancher.
    • Utilise les CIS Security Benchmarks
    +]]>
    + + 3828 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[Statistiques courriel: 8 raisons de ne plus paniquer]]> + https://jevalide.ca/2022/11/16/statistiques-courriel-8-raisons-de-ne-plus-paniquer/ + Wed, 16 Nov 2022 05:43:38 +0000 + + https://jevalide.ca/?p=3883 + + +

    Les statistiques de ta liste courriel tels que les taux d'ouverture et de clics, c'est un peu de la bullshit ! Celles-ci, qui servent pourtant de baromètre pour les gourous du marketing qui vont inventer des notions telles que les abonnés froids ou chauds ne sont pas du tout fiables !

    + + + +
    + + + +

    Voici pourquoi plus paniquer sur tes statistiques courriels !

    + + + +

    Les clients courriel

    + + + +

    1. Outlook ouvre tous les courriels à la réception et charge les images en arrière-plan même si tu ne les actives pas. Ce qui augmente significativement ton taux d'ouverture pour les gens qui ont des adresses corporatives même si ce sont probablement tes lecteurs les moins assidus.

    + + + +

    2. Outlook pour entreprise (Exchange avec Safe Links activé) clique parfois sur tous les liens de tes courriels. Ce qui va faire exploser ton taux de clics. J'ai parfois des taux de clics supérieurs au taux d'ouverture !

    + + + +

    3. Thunderbird et certains autres clients courriel vont ouvrir le vrai lien au lieu du lien de pistage. Ce qui fait baisser ton taux de clics ! Ils bloquent aussi le pixel de pistage, ce qui va faire baisser ton taux d'ouverture.

    + + + +

    4. Apple Mail modifie certains liens de pistage. Donc, eux, ils savent que tes abonnés ont cliqué sur les liens, mais pas toi.

    + + + +

    Mais bon il n'y a pas grand monde qui utilise Apple Mail comme client principal, donc ça doit être assez marginal. Bref, ça diminue probablement un peu ton taux d'ouverture et ton taux de clics.

    + + + +

    Les comportements serveur

    + + + +

    5. Environ 50% des courriels envoyés dans les grandes entreprises ne se rendent jamais à destination, mais tu ne recevras jamais de "bounce" parce qu'Exchange répond quand même un code SMTP 250. Exchange est définitivement l'ennemi #1 des statistiques courriel !

    + + + +

    6. Contrairement à ce que certaines entreprises de courriels veulent te faire croire, un "bounce" n'a souvent rien à voir avec le spam. Ça veut juste dire que l'adresse courriel n'existe pas. Un "hard bounce" peut signifier que ton fournisseur de courriel est bloqué au complet, et pas seulement ton domaine. Par contre, il peut aussi simplement dire que l'adresse n'est plus en service.

    + + + +

    La plupart des courriels classés comme spam sont classés dans un dossier dans ta boite de réception. Donc le courriel est livré ! La notion de spam est basée sur le contenu, alors que la notion de bounce est basée sur les métadonnées ou l'état du serveur.

    + + + +

    La chaleur des abonnés

    + + + +

    7. Tes abonnés "froids" sont souvent des abonnés qui utilisent des clients courriel respectueux de la vie privée, ou une configuration qui ne charge pas les images. Ils t'aiment, te lisent, mais ne créent pas de belles statistiques pour ton fournisseur de listes courriel.

    + + + +

    Les "chaleurs" d'abonnés c'est de la bullshit inventée par les gourous du marketing. Ne les supprime pas pour sauver quelques dollars par mois et améliorer tes statistiques de liste courriel !

    + + + +

    Ceux qui ne te lisent jamais sont probablement super bien classés "chauds" pour la raison expliquée au point 1. Tes abonnés qui sont aussi abonnés chez moi vont de plus en plus adopter ces méthodes ! Alors si tu ne veux pas que je ne te fasse perdre du monde ... retient ceci !

    + + + +

    8. Les gens qui ne te lisent pas, ils se désabonnent. On reçoit assez de spam comme ça pour ne pas s'en imposer davantage. Les gens abonnés à ta liste, ils te lisent. Peut-être pas chaque fois, mais assez souvent pour te garder.

    + + + +

    Conclusion

    + + + +

    Écris tes courriels pour ton lectorat, pas pour avoir des belles statistiques de taux d'ouverture et de clics!

    + + + +


    Si tu veux découvrir davantage sur les sujets entourant les données, l'informatique libre, l'éthique, la vie privée et la sécurité sur le web ...

    + + + +

    + + + +

    J'te mettrai pas dehors même si tu bloque le pixel d'ouverture ! Et je ne traque pas les clics !

    + + + + + + + +

    Poursuis ta lecture !

    + + + + +]]>
    + + 3883 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[Comment améliorer ma sécurité informatique]]> + https://jevalide.ca/2022/11/20/comment-ameliorer-ma-securite-informatique/ + Mon, 21 Nov 2022 02:49:28 +0000 + + https://jevalide.ca/?p=3913 + + +
    + + + +

    Je te propose 20 défis de 2 minutes pour améliorer ta sécurité informatique. C'est tout à fait gratuit !

    + + + +

    Navigation

    + + + +

    1. Installer le navigateur Brave

    + + + +

    Brave est un navigateur basé sur Google Chrome qui inclut beaucoup d’améliorations pour augmenter la sécurité informatique et la vie privée.

    + + + +

    Tu peux l’installer sur tous tes appareils.

    + + + + + + + +

    Une fois installé, tu peux importer tes paramètres en entrant cette adresse brave://settings/importData, ou en allant dans le menu (Favoris, Importer les favoris et les paramètres). Une fois complété, tu peux même désinstaller Google Chrome !

    + + + +

    Sur macOS, tu dois autoriser Brave à avoir un accès disque pour importer les paramètres de Safari:

    + + + +
      +
    • Préférences système
    • + + + +
    • Vie privée - Accès complet au disque
    • + + + +
    • Clique sur le cadenas en bas à gauche et entre ton mot de passe
    • + + + +
    • Clique sur ajouter (+) et va dans Applications, puis Navigateur Brave (Brave Browser), puis clique sur Ouvrir.
    • +
    + + + +

    Note: Ce défi te prendra un peu plus de temps que les autres, mais te permettra de sauver beaucoup de temps dans le futur !

    + + + +

    + + + +

    2. Installe l’extension Fake Data

    + + + +

    Souvent, les sites web demandent beaucoup trop d’information pour accéder à leur contenu ou pour télécharger un fichier. Tu peux protéger ton identité avec l’extension Fake Data.

    + + + +
    + + + + + + + +

    + + + +

    3. Cartes de paiement

    + + + +

    Les navigateurs basés sur Chrome, dont Brave, permettent de conserver des informations de cartes de paiement. C’est une très mauvaise idée ! Plusieurs experts de sécurité informatique ont démontré qu'avec un simple script dans une extension, on peut obtenir le contenu sauvegardé dans le navigateur.

    + + + +
      +
    • Brave: brave://settings/payments (tu dois copier-coller le lien dans un nouvel onglet)
    • + + + +
    • Chrome: chrome://settings/payments (tu dois copier-coller le lien dans un nouvel onglet)
    • +
    + + + +
    + + + +
      +
    • Firefox: about:preferences#privacy (tu dois copier-coller le lien dans un nouvel onglet)
    • +
    + + + +
    + + + +

    + + + +

    + + + +

    4. Vider l’historique

    + + + +

    Ton historique contient de nombreuses informations qui peuvent être utilisées pour automatiser tes recherches futures, et elles sont souvent utilisées par les moteurs de recherche pour marquer tes habitudes.

    + + + +

    Tu peux le supprimer ici:

    + + + +
      +
    • Brave: brave://settings/clearBrowserData (tu dois copier-coller le lien dans un nouvel onglet)
    • + + + +
    • Chrome: chrome://settings/clearBrowserData (tu dois copier-coller le lien dans un nouvel onglet)
    • +
    + + + +
    + + + +
      +
    • Firefox: about:preferences#privacy (tu dois copier-coller le lien dans un nouvel onglet) +
        +
      • Section Historique - Effacer l’historique
      • +
      +
    • +
    + + + +
    + + + +

    + + + +

    5. Bloquer les traceurs des réseaux sociaux

    + + + +

    Même si tu n’utilises pas les réseaux sociaux en tout temps, ils te suivent partout sur le web. Plus de 70% des sites web ont des traceurs qui rapportent tes activités sans ton consentement.

    + + + +

    Brave inclus une fonctionnalité intégrée pour bloquer ces traceurs

    + + + +
    + + + +
      +
    • Brave: brave://settings/socialBlocking (tu dois copier-coller le lien dans un nouvel onglet)
    • +
    + + + +

    Sur Firefox et Google Chrome, tu peux installer l’extension Privacy Badger

    + + + + + + + +

    + + + +

    Tes réseaux sociaux

    + + + +

    6. LinkedIn: Visibilité des Abonnés

    + + + +

    Sur LinkedIn, tout le monde peut voir à qui tu t’abonnes. Ce n’est pas vraiment une bonne idée au niveau de la vie privée. Tu peux cacher cette information depuis tes préférences de visibilité

    + + + +
    + + + + + + + +
    + + + +

    + + + +

    7. Vérifier les appareils connectés

    + + + +

    Les réseaux sociaux sont souvent connectés sur plusieurs de nos appareils. Peut-être qu’il y a encore certains appareils que tu n’utilises plus qui sont encore connectés, par exemple, l’ordinateur d’un ami que tu as visité la semaine passée, ou encore ton poste de travail au bureau ? Ça vaut la peine d’aller voir et déconnecter ce qui n’a plus besoin de l’être ! Un principe de sécurité informatique: si ce n'est pas connecté, c'est beaucoup plus difficile à pirater !

    + + + + + + + +
    + + + + + + + +

    + + + +

    8. Découverte du profil

    + + + +

    Sur Instagram, pour que ton profil ne puisse pas être découvert, tu peux le rendre privé. Ce n’est pas applicable pour les comptes d’entreprise, par contre ! Si tu utilises ton compte professionnel aussi pour partager du contenu personnel, je te conseille de te créer un nouveau compte personnel privé.

    + + + + + + + +

    Sur LinkedIn, tu peux configurer la possibilité de découvrir ton profil de trois façons: depuis des services externes, avec ton courriel ou avec ton numéro de téléphone

    + + + + + + + +

    + + + +

    9. Télécharger tes données de réseaux sociaux

    + + + +

    Une bonne pratique pour garder une copie de tous nos contacts et contenus publiés sur les réseaux sociaux, c’est de faire une sauvegarde des données de notre profil périodiquement.

    + + + +

    Tu peux demander une sauvegarde avec ces liens et les instructions te seront envoyées par courriel.

    + + + +

    Je te conseille de demander le format JSON sur Instagram et Facebook.

    + + + + + + + +
    + + + +

    LinkedIn n’offre aucun choix de téléchargement au niveau du format. Ce sont des fichiers CSV. Mais, tu peux choisir quelles données télécharger

    + + + + + + + +

    En passant, ce sont ces données que tu vas utiliser si tu t’inscris à ma formation Libère tes chaînes de mots, pour apprendre l’analyse du langage naturel !

    + + + +

    + + + +

    10. Identification manuelle

    + + + +

    Un des éléments les plus intrusifs sur les réseaux sociaux, c’est la possibilité de se faire identifier automatiquement sur du contenu alors qu’on ne le souhaite pas. Heureusement, on peut configurer l’identification pour qu’elle soit manuelle et modérée par nous.

    + + + +

    (ps. une identification est différente d'une mention avec un @ !)

    + + + +
    + + + +

    Instagram

    + + + +

    LinkedIn

    + + + +

    + + + +

    Courriel

    + + + +

    11. Have I Been Pwned

    + + + +

    Have I Been Pwned est un site web que tu peux consulter pour vérifier si tes données personnelles ont été compromises à la suite d’une fuite de données. On utilise notre adresse courriel pour obtenir la liste des sites.

    + + + +

    Résultat positif: rien à faire !

    + + + +
    + + + +

    Résultat négatif: Assures-toi de changer tous les mots de passe sur ces sites si tu ne l’as pas déjà fait !

    + + + +
    + + + +

    + + + +

    12. Les alias dans GMail

    + + + +

    Le service de courriel GMail permet de créer des alias lorsque tu entres ton adresse dans différents formulaires. C’est un moyen pratique pour savoir d’où proviennent les courriels que tu reçois.

    + + + +

    + + + +

    Si ton adresse est identifiant@gmail.com, tu peux créer des alias instantanément en utilisant une adresse au format identifiant+nomalias@gmail.com

    + + + +

    + + + +

    Ensuite, tu peux créer des filtres spécifiques dans GMail pour envoyer les courriels reçus à cette adresse dans un répertoire spécifique, par exemple.

    + + + +

    + + + +

    D’autres fournisseurs de courriels, tel que Fastmail, que j’utilise, offrent aussi cette fonctionnalité, ça peut valoir la peine de vérifier !

    + + + +

    + + + +

    Ton défi du jour:  Si possible, crée un alias pour ma liste courriel ! Utilise le bouton Update your profile la fin du courriel.

    + + + +

    + + + +

    + + + +

    13. Une adresse courriel par réseau social

    + + + +

    Hier, je t’ai partagé comment créer des alias dans GMail. Aujourd’hui, je te partage comment tirer profit de l’utilisation de plusieurs courriels.

    + + + +

    Comme tu le sais, les adresses courriels sont des identifiants utilisés pour se connecter sur les réseaux sociaux, et aussi pour identifier les contacts. Si tu souhaites avoir un meilleur contrôle sur la source des données utilisées pour te suivre, je te conseille d’utiliser une adresse courriel différente pour chacun de tes réseaux sociaux.

    + + + + + + + +

    + + + +

    Ton site web

    + + + +

    14. Protection des données personnelles

    + + + +

    As-tu nommé un·e responsable de la protection des données personnelles dans ton entreprise ? Tu es solopreneur·e ? Alors c’est toi qui as ce rôle dans ton entreprise si tu es au Québec, avec la nouvelle loi 25 !

    + + + +

    Idéalement, tu dois l’afficher sur ton lieu d’affaires ou sur ta principale présence en ligne, c’est-à-dire bien souvent ton site web. Tu dois aussi fournir un moyen de te contacter.

    + + + +

    Alors, prends deux minutes et profites-en pour mettre à jour ton site web avec ces informations ! Pourquoi ne pas en profiter pour créer un alias courriel dédié à ces questions ?

    + + + +

    + + + +

    + + + +

    15. Mettre à jour tes extensions Wordpress

    + + + +

    Comme plus de 60% des entreprises, tu utilises probablement Wordpress pour héberger ton site web. Tu utilises aussi plusieurs extensions pour ajouter des fonctionnalités. Est-ce qu’elles sont à jour ? Les extensions périmées sont une des plus grandes sources de piratage des sites web.

    + + + +

    Tu peux aller rapidement faire le tour en consultant la section Extensions de ton panneau d’administration, ou via cette page (remplace <mon.site> par ton nom de domaine):

    + + + +
    https://<mon.site>/wp-admin/plugins.php
    + + + +

    16. Désactiver les commentaires

    + + + +

    Wordpress inclus un module de commentaires. Il est de moins en moins utilisé et de plus en plus ciblé dans certains types d’attaques. C’est mieux de le désactiver si on ne l’utilise pas activement. Tu peux y accéder par la section Réglages, puis Commentaires de ton panneau d’administration, ou via cette page (remplace <mon.site> par ton nom de domaine):

    + + + +
    https://<mon.site>/wp-admin/options-discussion.php
    + + + +

    + + + +

    17. As-tu une sauvegarde de ton site web Wordpress ?

    + + + +

    As-tu une sauvegarde de ton site web Wordpress ? De plus en plus, ce système de site web est victime d'attaques qui le rendent inutilisable. Heureusement, restaurer un site Wordpress est simple, mais a condition d'avoir une sauvegarde !

    + + + +

    Depuis Outils-Exporter, tu peux obtenir un fichier au format XML qui contient tout le contenu texte ainsi que toutes les métadonnées de ton site web, ou via cette page (remplace <mon.site> par ton nom de domaine):

    + + + +
    https://<mon.site>/wp-admin/export.php
    + + + +

    Ce fichier n’inclus cependant pas le contenu de ta médiathèque Wordpress. Tu peux l’obtenir en deux étapes:

    + + + +
    + + + +
      +
    1. Installer l’extension Export Media Library
    2. + + + +
    3. Depuis le menu Medias, tu as maintenant l’option Export. Choisis Nested Folders et Yes, puis lance l’exportation.
    4. +
    + + + +
    + + + +

    + + + +

    Quelques autres conseils pratiques !

    + + + +

    18. Qui a accès à ton Google Drive ?

    + + + +

    Google Drive est un outil très utilisé par la plupart des étudiants, puis dans notre vie personnelle et professionnelle. Bien souvent, nous partageons des fichiers et des dossiers pour une durée indéterminée avec une multitude de personnes.

    + + + +

    + + + +

    + + + +

    Google n’offre pas de vue centralisée de tes partages. Mais, tu peux les voir en recherchant cette icône à droite des noms de fichiers et répertoires.

    + + + +
    + + + + + + + +

    Profites-en pour aller faire un tour et supprimer les partages qui ne sont plus nécessaires ! Peut-être que tu vas faire des retrouvailles !

    + + + +

    + + + +

    19. Le presse-papiers

    + + + +

    Le presse-papiers, c’est un espace dans la mémoire de l’ordinateur ou se trouvent les données lorsque tu fais un couper-coller ou copier-coller (avec la souris, avec Control-X, Control-C et Control-V ou Command-X, Command-C et Command-V sur mac OS)

    + + + +


    Combien de fois as-tu perdu de l’information que tu as copié dans le presse-papiers de ton ordinateur, mais que tu as écrasé avant d’avoir l’opportunité de la coller ailleurs ?

    + + + +

    Et si c’était fini ? Je te montre comment activer l’historique du presse-papier sur ton ordinateur:

    + + + +

    Sur Windows:

    + + + +
      +
    • Paramètres - Système - Presse-papiers
    • + + + +
    • Active le bouton Historique du presse-papiers Utilise la touche Windows+V pour voir le contenu du presse-papiers dès maintenant !
    • +
    + + + +
    + + + +

    Sur macOS

    + + + +

    Il n’y a pas d’historique du presse-papiers sur macOS. Mais, tu peux installer l’application libre CopyQ avec Homebrew.

    + + + +

    brew install --cask copyq

    + + + +

    Si tu n’as jamais utilisé Homebrew, c’est le temps d’enlever les petites roulettes de sur ton Mac et d’en profiter pour de vrai ! Installe Homebrew

    + + + +


    Petite note: lorsque tu vas taper ton mot de passe dans un Terminal, les caractères de ton mot de passe n'apparaîtront pas. C'est une mesure de sécurité additionnelle et c'est tout à fait normal. Fais Entrée pour valider ton mot de passe.

    + + + +

    Sur Linux:

    + + + +
      +
    • Sur KDE Plasma, tu as déjà un historique du presse-papiers, Klipper. Alors, rien à faire !
    • + + + +
    • Sur GNOME, je conseille Clipboard History
    • +
    + + + +
    + + + +

    + + + +

    + + + +

    20. Partager des données confidentielles

    + + + +

    Il est possible de partager des données confidentielles sur Internet. On s’approche même de l’Inspecteur Gadget avec ses mémos qui s’autodétruisent.

    + + + +

    PrivateBin permet de faire ça en toute sécurité, avec un chiffrement de bout en bout, une protection par mot de passe, une durée d’expiration et la possibilité d’autodétruire le message après la première lecture.

    + + + +

    Prêt.e à partir en mission ?

    + + + +

    Tu souhaites sécuriser l'ensemble de ta petite entreprise en apprenant les meilleures pratiques et réflexes de sécurité informatique?

    + + + +


    Rejoins le parcours Mission Cybersécurité maintenant !

    + + + + +]]>
    + + 3913 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[Extraction web: Comment bien planifier son projet ?]]> + https://jevalide.ca/2022/11/28/extraction-web-comment-bien-planifier-son-projet/ + Mon, 28 Nov 2022 23:39:32 +0000 + + https://jevalide.ca/?p=3940 + + +

    L'extraction web, aussi connue comme le web scraping ou moissonnage du web, est une pratique de plus en plus utilisée, en particulier dans le domaine de la veille concurrentielle et de la recherche marketing.

    + + + +

    Elle se résume à extraire des données depuis des pages web accessible publiquement pour en faire des bases de données structurées.

    + + + +

    + + + +

    Cette pratique permet, entre autre, d'identifier des mots clés, de calculer des statistiques ou d'enrichir des sources de données existantes. Par contre, ce n'est pas en utilisant des API ni en utilisant des outils d'extraction intégrés aux sites web, mais bien en exploitant le code HTML, le même qui est utilisé pour afficher les pages dans ton navigateur.

    + + + +
    L'extraction web: téléchargement de la page, extraction du code HTML, conversion en tableau de données
    + + + +

    Dans cet article, je vais te partager les éléments légaux, techniques et éthiques à considérer dans un projet d'extraction web.

    + + + +

    Est-ce que c'est légal, l'extraction web ?

    + + + +

    La première question qu'on va souvent se poser, c'est: est-ce que c'est légal, le web scraping ? Ça demeure une question ambigue, étant donné qu'il y a très peu de jurisprudence. Mais, en se basant sur les éléments de lois actuelles, on peut conclure que, dans certains contexte, la pratique est légale.

    + + + +

    Je te donne ici une liste de conditions à respecter pour rester dans les bonnes grâces. Si tu veux t'en assurer, par contre, n'hésite pas à consulter un.e juriste.

    + + + +
    • Les données ne comportent aucune information personnelle, à l'exception de coordonnées d'affaires
    • Tu n'as pas besoin d'un compte sur le site web pour y accéder
    • Les données ne sont pas couvertes par le droit d'auteur. C'est à dire que tu n'extrait pas des textes entiers (la règle officieuse de l'usage légitime est de 20% du contenu d'une page), ni des contenus média, audio ou vidéo. Ce qui est généralement exclus du droit d'auteur, ce sont les points de données, les statistiques et les mots pris individuellement.
    • Le site web n'a pas de conditions à accepter, ni de formulaire de vérification humaine (appelés souvent Captcha)
    • Les données collectées ne sont pas distribuées ou vendues directement au client. Elles sont pour ton usage interne seulement, à des fins de recherche et développement.
    + + + +

    Comment savoir si c'est possible ?

    + + + +

    Il faut aussi savoir si c'est possible au niveau technique de le faire sur le site web en question. Les sites web complexes, tels que ceux avec du contenu dynamique, peuvent être très difficiles à utiliser. Les réseaux sociaux sont des exemple de sites qui sont très difficiles à moissonner. Voici quelque éléments qui vont augmenter les chances de succès:

    + + + +
    • Les URL ont un format de requête simple et lisible par l'humain. C'est à dire qu'on peut y trouver des "patterns" qui permettent de créer de nouvelles requêtes.
    • Les pages comportent des formulaires manipulables qui permettent d'extraire les données ou de les filtrer. Pour que le formulaire soit manipulable, il doit faire partie de la page principale et non être une intégration. Il faut aussi que les éléments soient du HTML.
    • Il faut pouvoir faire les requêtes depuis le pays où le site est hébergé avec un VPN, ou depuis le Canada (où ton pays de résidence). Certains sites web vont automatiquement bloquer les adresses IP des VPN ce qui va rendre la tâche plus difficile.
    • Enfin, il faut aussi qu'il n'y ait aucun mécanisme de limitation d'appels, souvent appelés "Rate limiter". Ces systèmes limitent le nombre de visites possibles par intervalle de temps. C'est souvent le cas sur les sites d'actualité qui proposent quelques articles gratuits par mois, par adresses IP, avant de devoir payer.
    + + + +

    Avant de se lancer en grand

    + + + +

    Je te laisse quelques conseils avant de te lancer en grand dans la programmation d'un script de web scraping:

    + + + +
    1. Vérifie si ça n'a pas déjà été fait ! Tu peux trouver des jeux de données sur des sites web tels que Kaggle, Google Datasets ou Data World.
    2. Consulte les réseaux sociaux et les sites collaboratifs. Reddit et GitHub sont de bons endroits pour recenser des jeux de données. Voir ces pages en particulier:
      1. https://github.com/awesomedata/awesome-public-datasets
      2. https://www.reddit.com/r/datasets/
    3. Si tu n'as pas trouvé de données, regarde si du code n'a pas déjà été développé pour le même site web que tu veux extraire. Ça pourrait te sauver beaucoup de temps. Encore une fois, des sites comme GitHub ou Zenodo pourront aussi t'aider.
    4. Enfin, tu peux vérifier sur un revendeur de données n'a pas déjà ce qu'il te faut !
      1. Data & Sons https://www.dataandsons.com/
      2. Datarade: https://datarade.ai/
      3. AWS Data Exchange: https://aws.amazon.com/fr/data-exchange/
      4. ArcGIS Marketplace: https://www.esri.com/en-us/arcgis-marketplace/products?data=Data
    + + + +

    Les outils pour l'extraction web

    + + + +

    Tu n'as finalement pas trouvé ce que tu cherchais sur le marché, et tu te sens prêt à faire ta propre collecte de données.

    + + + +

    Voici différents logiciels que tu pourrais explorer:

    + + + + + + + +

    Faire une extraction web respectueuse

    + + + +

    Pour faire une extraction respectueuse, il faut respecter certains critères de base, une fois que tu t'es assuré de la faisabilité au niveau légal et technique.

    + + + +
    • Si le site web offre une API, je te conseille toujours de l'utiliser au lieu de faire du web scraping.
    • Espace les requêtes dans le temps. Un maximum d'une requête par seconde risque moins de te faire bloquer que des requêtes en continu.
    • Conserve seulement ce que tu as besoin. Il est possible que tu arrives à extraire davantage de données que ce que tu as besoin, ou même que tu te retrouves avec des données confidentielles inattendues. Dans ce cas, contacte les responsables du site, explique leur la situation, et supprime les données de ton ordinateur.
    + + + +

    Conclusion

    + + + +

    J'espère que ces conseils t'aideront à mieux planifier ton projet d'extraction web. Si tu souhaites un accompagnement, n'hésite pas à me contacter !

    +]]>
    + + 3940 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[Application Point Médian - Behind the scenes !]]> + https://jevalide.ca/2022/07/10/application-point-median-behind-the-scenes/ + Sun, 10 Jul 2022 16:00:00 +0000 + + https://jevalide.ca/?p=4914 + + +

    Objectifs de cet atelier

    + + + +
      +
    • Partager le parcours de création de l'application Point Médian
    • + + + +
    • Présenter le coeur du logiciel
    • + + + +
    • Présenter la création de l'interface
    • + + + +
    • Présenter quelques technologies qui permettent d'itérer super rapidement (DevOps)
    • +
    + + + +

    Parcours de création

    + + + +
      +
    • Un besoin: Utiliser le point médian dans l'écriture inclusive
    • + + + +
    • Un problème: Pas évident à faire sur le clavier
    • + + + +
    • Première solution: Une fonction Python pour convertir un texte que j'avais déjà en main
    • +
    + + + +

    Améliorations

    + + + +
      +
    • Identifier davantage de cas de figure à l'aide de ressources que j'avais sous la main + +
    • + + + +
    • Gérer des caractères additionnels (- et /)
    • +
    + + + +
      +
    • Faire une application web pour PC avec Flask
    • + + + +
    • Déployer l'application dans un Docker
    • + + + +
    • Déployer le docker sur CapRover
    • + + + +
    • Automatiser la compilation du docker sur GitLab avec Docker in Docker
    • + + + +
    • Automatiser le déploiement sur CapRover
    • + + + +
    • Faire des tests unitaires avec Python pour éviter les régressions
    • +
    + + + +

    Constats

    + + + +
      +
    • Progression successive
    • + + + +
    • Maintenant
    • + + + +
    • une mise à jour de mon code passe en production en moins de 3 minutes
    • + + + +
    • de manière entièrement automatique.
    • + + + +
    • Voici les outils que j'ai utilisés
    • + + + +
    • PyCharm IDE
    • + + + +
    • Flask et Bootstrap pour l'application web
    • + + + +
    • Docker, GitLab et CapRover pour le déploiement
    • +
    + + + +

    Intellij IDEA ou PyCharm

    + + + +
      +
    • Environnement de développement gratuit
    • + + + +
    • Utile pour de nombreux langages de programmation
    • + + + +
    • La version commerciale offre davantage de modules et d'options de collaboration
    • +
    + + + +
    Capture d'écran de PyCharm
    + + + +

    Coeur du de l'application point-median: Expression régulière

    + + + +
      +
    • Le coeur du logiciel est une fonction qui utilise les expressions régulières.
    • + + + +
    • Souvent appelées Regex
    • + + + +
    • Permettent de représenter des motifs de texte et de les extraire
    • +
    + + + +

    Exemple avec deux groupes

    + + + +
    (teur[s]?)[.\-/]([t]?rice[s]?)
    + + + +
    Exemple d'expression régulière avec deux groupes
    + + + +

    Exemple avec trois groupes

    + + + +
      +
    • Voici comment la visualiser avec un diagramme "chemin de fer"
    • + + + +
    • https://regexper.com/
    • +
    + + + +
    (teur)[.\-/](trice)[.\-/]([s]+)
    + + + +
    Exemple d'expression régulière avec trois groupes
    + + + +

    Création de l'interface avec Flask et Bootstrap

    + + + +

    Flask

    + + + +
      +
    • Flask est un module Python qui permet de faire des applications web simples
    • + + + +
    • Il consiste en trois parties:
    • + + + +
    • du contenu web, comme des pages HTML, des scripts Javascript, des fichiers CSS et des images
    • + + + +
    • des templates Jinja2, qui sont des fonctions Python pour du contenu dynamique dans les pages
    • + + + +
    • Un script python utilisant des décorateurs pour indiquer les pages web
    • +
    + + + +

    Illustrons ça

    + + + +
    Architecture de l'application point-median
    + + + + + + + +

    Code HTML du formulaire

    + + + +

    Voici le code HTML du formulaire de saisir

    + + + +
    <div class="container">
    +<form class="form-inline">
    +    <div class="form-group">
    +        <label class="sr-only" for="texte_input">Texte en
    +            entrée</label><br>
    +        <textarea id="texte_input" class="form-control" name="texte_input"></textarea>
    +    </div>
    +    <br>
    +    <div class="form-group">
    +        <button type="submit" class="btn btn-primary">Convertir</button>
    +    </div>
    +</form>
    +</div>
    + + + +

    Bootstrap

    + + + +
      +
    • Afin de rendre l'application adaptative sur mobile, j'ai utilisé Bootstrap, un outil Javascript/CSS
    • + + + +
    • On voit ici un exemple de templates Jinja2 entre les accolades {{ }}
    • +
    + + + +

    Exemple:

    + + + +
    <script src="{{ url_for('static', filename='js/jquery.min.js') }}"></script>
    + + + +

    Exemple de Bootstrap: barre de navigation

    + + + +

    Voici un exemple de composants tirée de la librairie Bootstrap: la barre de navigation

    + + + +
    <nav class="navbar navbar-toggleable-md navbar-inverse bg-light">
    +    <div class="container">
    +        <h1>Convertisseur point médian</h1>
    +    </div>
    +</nav>
    + + + +

    Rendre l'application dynamique: JQuery

    + + + +

    JQuery permet d'écrire des fonctions pour rendre l'application dynamique. Comme ça, elle ne se recharge pas à chaque fois qu'on convertit un texte.

    + + + +
    $(document).ready(function () {
    +    $('form').on('submit', function (event) {
    +        $.ajax({
    +            data: {
    +                texte_input: $('#texte_input').val(),
    +            },
    +            type: 'POST',
    +            url: '/point_median'
    +        })
    +            .done(function (data) {
    +                $('textarea#output').
    +                val(data.texte_output).show();
    +            });
    +        event.preventDefault();
    +    });
    +});
    + + + +

    Fonction appelée

    + + + +

    Cette fonction est appelé lorsque le bouton est cliqué.

    + + + +
    @app.route('/point_median', methods=['POST'])
    +def call_convertir_point_median():
    +    texte = request.form['texte_input']
    +    # Règles à 3 composantes
    +    texte_output = convertir_point_median(texte)
    +    return jsonify({'texte_output': texte_output})
    + + + +

    Docker

    + + + +
      +
    • Docker est une plateforme qui utilise le noyau Linux et des conteneurs d'applications pour exécuter des applications orientées serveur sur n'importe quel système basé sur Linux.
    • +
    + + + +
    + + + + + + + +

    Dockerfile

    + + + +
      +
    • Le Dockerfile permet de prendre une image existante et d'y mettre notre application pour créer une nouvelle image.
    • +
    + + + +
    FROM python:3.10.5-slim-buster
    +
    +WORKDIR /python-docker
    +
    +COPY requirements.txt requirements.txt
    +RUN pip3 install -r requirements.txt
    +
    +COPY templates templates
    +COPY app.py app.py
    +COPY static static
    +
    +CMD [ "python3", "-m" , "flask", "run", "--host=0.0.0.0"]
    + + + +

    CapRover

    + + + +
      +
    • CapRover est une plateforme de type PaaS qui permet de gérer simplement des applications utilisant Docker.
    • +
    + + + +
    + + + +

    PaaS

    + + + +
      +
    • Le PaaS est un modèle d'infonuagique où le client gère les données et l'application, mais pas le reste.
    • +
    + + + +
    + + + + + + + +

    DevOps

    + + + +

    Le DevOps est une technique de développement logiciel qui permet d'accélérer le cycle de développement en utilisant de l'automatisation et de déploiement en continu par la même équipe.

    + + + +
    + + + + + + + +

    GitLab

    + + + +

    L'environnement GitLab est un logiciel en ligne qui permet la gestion de code source et la gestion de projets de développement, incluant toute la partie intégration et déploiement en continu (CI/CD) et le DevOps.

    + + + +
    + + + +

    GitLab CI/CD

    + + + +
      +
    • Tout se passe dans le fichier .gitlab-ci.yml
    • + + + +
    • On définit les différentes étapes pour publier l'application
    • +
    + + + +
    stages:
    +  - test
    +  - dockerize
    + + + +

    Étape du test

    + + + +
      +
    • Je vais maintenant te montrer l'étape de test, on pourra voir le contenu du fichier .gitlab-ci.yml
    • +
    + + + +

    Tests unitaires

    + + + +
      +
    • Un test unitaire permet de tester un scénario de l'application et s'assurer que le bon résultat est obtenu
    • + + + +
    • Voici un exemple:
    • +
    + + + +
    assert convertir_point_median("invité.e") == "invité·e"
    + + + +

    Contenu du fichier .gitlab-ci.yml pour l'étape de test

    + + + +
    test-cases:
    +  stage: test
    +  image: python:3
    +  before_script:
    +    - pip install -r requirements.txt
    +  script:
    +    - pytest test.py
    + + + +

    Git

    + + + +
      +
    • Pour orchestrer tout ce beau travail, j'utilise git, un gestionnaire de code source.
    • + + + +
    • Pour envoyer le travail au serveur, j'utilise ces deux commandes. Le serveur s'occupe ensuite de faire le reste et de rendre l'application disponible
    • +
    + + + +
    git commit -m "voici des modifications"
    +git push origin main
    + + + +

    Ressources

    + + + + +]]>
    + + 4914 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[Liste de priorité pour changer ses mots de passe]]> + https://jevalide.ca/2022/12/25/liste-de-priorite-pour-changer-ses-mots-de-passe/ + Sun, 25 Dec 2022 17:39:26 +0000 + + https://jevalide.ca/?p=4043 + + +
    + + + +
      +
    • Tu soupçonnes un piratage d'un de tes comptes de réseaux sociaux, de tes courriels.
    • + + + +
    • Tu as des activités suspectes dans ton compte bancaire ou ta carte de crédit ?
    • + + + +
    • Ton gestionnaire de mots de passe s'est fait pirater (ex: LastPass) ?
    • +
    + + + +

    Tu as probablement accumulé des dizaines, voire centaines de mots de passe dans ton gestionnaire, et les changer va te prendre plusieurs jours ! Voici lesquels prioriser pour que ça te prenne moins d'une heure.

    + + + +

    Ton compte de courriel

    + + + +

    Le premier mot de passe à changer en cas de soupçon, c'est le mot de passe de ton courriel.

    + + + +

    Pourquoi ? Parce que c'est avec celui-ci que tu vas probablement recevoir la confirmation pour changer tous les autres mots de passe !

    + + + +

    Ton gestionnaire de mots de passe

    + + + +

    Le mot de passe qui donne accès à tous les autres. Le seul qui n'a aucune trace informatique ! Comme il a un rôle stratégique dans la cybersécurité, c'est toujours mieux de le changer le plus tôt possible.

    + + + +

    Si ton gestionnaire s'est fait pirater, c'est aussi le temps d'aller voir ailleurs. Regarde du côté de Bitwarden pour rester en ligne ou de KeePass pour passer hors-ligne.

    + + + +

    Tes comptes bancaires, de crédit et d'investissement

    + + + +

    La sécurité des banques et des services de crédit en ligne est souvent assez rudimentaire selon les standards modernes.

    + + + +

    Changer ton mot de passe dans ces endroits est toujours une bonne chose après une transaction suspecte.

    + + + +

    Tes réseaux sociaux

    + + + +

    Les comptes de réseaux sociaux sont des cibles très prisées par les pirates, car ils peuvent servir à découvrir qui dans ton réseau de contact est le plus vulnérable si on se fait passer pour toi.

    + + + +

    Ils contiennent entre autre de nombreuses conversations privées.

    + + + +

    Tes partages de fichiers

    + + + +

    Tes comptes de partage de fichiers tels que DropBox, Google Drive ou OneDrive contiennent souvent de nombreuses données confidentielles prisées par les pirates.

    + + + +

    C'est le temps de changer tous ces mots de passe.

    + + + +

    Tes outils de planification

    + + + +

    Tes outils de planification contiennent souvent beaucoup d'information confidentielle ou stratégique. On parle ici de Notion, Asana, ClickUp.

    + + + +

    Notion en particulier est vulnérable, car il n'implémente pas la double authentification.

    + + + +

    Tu aimerais aller plus loin pour sécuriser ton entreprise ?

    + + + +

    Mission Cybersécurité est mon programme de formation en cybersécurité pour les petites entreprises.

    + + + +

    Au travers d'une mission sur 6 différents territoires, tu apprendras comment:

    + + + +
      +
    • gérer tes mots de passe
    • + + + +
    • mettre en place la double authentification,
    • + + + +
    • faire des sauvegardes,
    • + + + +
    • naviguer en sécurité sur le web,
    • + + + +
    • sécuriser tes logiciels
    • + + + +
    • sécuriser tes réseaux sociaux
    • +
    + + + + +]]>
    + + 4043 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[16 publications qui résument mon année 2022]]> + https://jevalide.ca/2022/12/31/16-publications-qui-resument-mon-annee-2022/ + Sat, 31 Dec 2022 23:26:02 +0000 + + https://jevalide.ca/?p=4075 + + +
    16 publications qui résument mon année 2022
    + + + +

    J'ai décidé de faire ça simple comme bilan ! 16 publications qui résument bien mon année 2022 en projets d'entreprise ! Pêle-mêle, selon le bon vouloir de mon logiciel de montage !

    + + + +

    + + + +

    Une petite description de chaque publication

    + + + +

    De gauche à droite, et haut en bas:

    + + + +

    1. Nouveau site web et positionnement avec les conseils de Tatiana St-Louis et Julie Therrien qui m'accompagnent depuis février maintenant !
    2. Lancement de mon podcast Aires Communes avec mon amie Gwenn Seemel
    3. Une formation gratuite pour sauvegarder son espace Notion, que j'ai lancée à la fête d'Alexe Martel
    4. Un des 5 logos que j'ai créés pour m'amuser dans le défi de logos d'Aimée Desrosiers
    5. Ma première formation en ligne sur l'analyse du langage naturel: Libère tes chaînes de mots
    6. Mon défi de 20 jours Cyber Avent pour sensibiliser à la cybersécurité avant le temps des fêtes et annoncer le lancement de Mission Cybersécurité!
    7. M'amuser à me donner de nouveaux titres sur LinkedIn, cette fois c'était Bûcheron de données !
    8. Live avec Julie Therrien où on a parlé des algorithmes et de la voix unique
    9. Webinaire avec Melissa St-Louis où on a parlé de recrutement inclusif en TI
    10. Live avec Jérémy Viau-Trudel chez TALSOM (merci Stéphane Ricoul)
    11. Invité par Sarah Jodoin-Houle, CEBS, CRHA sur le podcast de La Talenterie
    12. Article invité sur la cybersécurité chez J&J (Julia Coudert et Julie Fabre)
    13. 2e épisode de mon podcast Aires Communes avec Magalie Nichols
    14. Un exemple de réalisation amusante qu'on fait dans ma formation Libère tes chaînes de mots
    15. Lancement de Mission Cybersécurité avec pleins d'analogies de bouffe du temps des fêtes
    16. Promo que j'ai fait au printemps que je trouvais drôle !

    + + + +


    Ça mérite un beau 5/5 pour mon évaluation de rendement ! Note que je n'aurais jamais eu à mon ancien emploi 🤣🤣🤣!

    +]]>
    + + 4075 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[On démonte le robot]]> + https://jevalide.ca/2023/01/13/on-demonte-le-robot/ + Fri, 13 Jan 2023 05:14:08 +0000 + + https://jevalide.ca/?p=4089 + + +
    + + + +

    Quand t’étais p'tit-e, ça t’arrivait de défaire tes jouets pour aller voir comment ça marche ? Et de ne jamais être capable de les reconstruire ?

    + + + +

    Les modèles d’apprentissage automatique comme GPT-3, leur plus gros problème, c’est qu’on ne peut pas vraiment aller voir ce qu’il se passe dedans pendant qu’on les utilise. Et même si on pouvait, ça prendrait des connaissances que très peu d’entre nous ont (à part peut-être les prochains robots). La version geek du neurochirurgien n’est pas à nos portes en tout cas.

    + + + +

    Heureusement, ça adonne que ton ami geek pas neurochirurgien (ça, c'est moi 🤓) bien, il sait comment les bâtir, ces algorithmes-là ! Fait que, je me suis dit que tu serais probablement bien excité.e de voir ça, la construction d’un algorithme qui génère du texte.

    + + + +

    Je te propose d'en construire ensemble vendredi prochain. Il ne sera pas aussi sophistiqué que celui d’OpenAI avec ses 170 milliards de paramètres. On va rester modeste, avec 5 millions de paramètres !

    + + + +

    Ce qu’on va voir naître, c’est un bébé qui commence à peine à parler. Les mots qu’on n'est pas trop sûr, les hésitations, les débuts de phrases sans début ni fin. C’est clair qu’en une heure, on n'écrira pas une conférence TED Talk ! Mais, comme tu sais, petit train va loin, ou comme on dit en science des données, petit entrainement va loin ! 🤣

    + + + +

    Parlant d’entraînement, ça ressemble un peu à Wordle. Je ne sais pas si tu as déjà joué à ça. C’est comme le jeu Mastermind, mais tu dois trouver un mot à la place des couleurs. C’est de l’essai et erreur, et quand tu as trouvé une lettre, ça te dit si elle est à la bonne place ou non.

    + + + +

    L’entraînement des modèles de langue, ça marche pas mal comme ça. C’est ce qui s’appelle l’apprentissage par renforcement.

    + + + +

    Vendredi prochain, le 20 janvier, on va créer un algorithme qui génère du vrai texte, qui ressemble à des mots et des phrases. Je vais t’expliquer un peu de théorie sur les réseaux de neurones, on va faire une démo ensemble et on va surtout rire pas mal en cours de route.

    + + + +

    Et à la fin, tu vas savoir quelques-uns des secrets de la nouvelle génération d’outils à nos portes (pour le mieux ou pour le pire !).

    + + + +

    Tu n’as pas besoin de savoir programmer pour venir. Mais, je te cacherai pas, mon objectif, c’est de te donner le goût d’apprendre à programmer. Parce que c’est une compétence selon moi essentielle pour ne pas juste subir les modes et vivre en itinérance digitale, d’un SaaS à un autre !

    + + + +

    Et c’est un travail créatif, selon moi, bien plus que ça en a l'air. Si tu me suis, c'est probablement parce que tu me trouves un peu flyé pour un gars qui écrit du code, non ?

    + + + +

    + + + +
    + + + +

    Voir le vidéo du webinaire

    + + + +

    + + + +


    +]]>
    + + 4089 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[Tu es la cible parfaite pour les pirates !]]> + https://jevalide.ca/2023/01/31/tu-es-la-cible-parfaite-pour-les-pirates/ + Wed, 01 Feb 2023 01:26:39 +0000 + + https://jevalide.ca/?p=4099 + + +
    🧑🏽‍💼Gestionnaire de médias sociaux
+👨🏻‍💼Coach business
+👩🏼‍💼Soutien administratif
+👩🏾‍💼Copywriter
+
+Quel est le point commun entre toutes ces belles personnes ?
    + + + +

    + + + +

    🧑🏽‍💼Gestionnaire de médias sociaux
    👨🏻‍💼Coach business
    👩🏼‍💼Soutien administratif
    👩🏾‍💼Copywriter

    Quel est le point commun entre toutes ces belles personnes ?

    + + + +

    Tu es une cible parfaite pour les pirates.

    + + + +

    + + + +
      +
    • Tu as souvent accès à des informations très confidentielles sur les entrepreneur·es que tu accompagnes. Tu connais des détails intimes, tu es souvent leur confident·e, et tu travailles principalement sur les réseaux sociaux.
    • + + + +
    • Tes conversations sur les réseaux sociaux regorgent d'information super intéressantes pour des attaques d'ingénierie sociale.
    • + + + +
    • Tu te fais pirater par de l'hameçonnage, puis, les pirates utilisent ton compte pour alimenter leur base de données. Ils ont de plus en plus d'information sur les client·es des personnes hackées, qu'elle vont aussi à leur tour hameçonner, parce qu'elles sont maintenant des cibles parfaites pour les pirates !
    • +
    + + + +

    + + + +

    Résultat: tu perds ton compte, ton entreprise est à risque, et celle de tes client·es aussi.

    + + + +


    Comment prévenir:

    + + + +
      +
    • 🤗 Double authentification: un code généré par une application ou que tu reçois par SMS pour confirmer ton identité
    • + + + +
    • 🪜Mots de passe longs (16+) et uniques
    • + + + +
    • 🤿Éviter les réseaux wifi publics: la connexion LTE ou 5G est plus fiable que les réseaux publics. Sinon, pense à utiliser un VPN
    • + + + +
    • 🖥 Privilégie ton ordinateur à ton mobile pour faire des transactions: ton ordinateur a de meilleures protection contre les maliciels et l'hameçonnage.
    • + + + +
    • 🚱 Ne te connecte jamais à un site directement depuis les réseaux sociaux. Une attaque très fréquente s'appelle browser-in-the-browser et est difficile à détecter sur les navigateurs intégrés aux apps des réseaux sociaux.
    • +
    + + + +

    Tu veux savoir comment mettre tout ça en place sans te casser la tête, et ne plus être une cible parfaite pour les pirates.

    Rejoins Mission Cybersécurité, mon accompagnement autodidacte, avec une communauté d'entraide, pour sécuriser tous les aspects des petites entreprises comme la tienne !

    + + + +

    + + + +
    + + + + +]]>
    + + 4099 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[Pétition officielle pour que le Canada accepte les demandes de réfugiés de personnes trans et non-binaires]]> + https://jevalide.ca/2023/02/09/petition-officielle-pour-que-le-canada-accepte-les-demandes-de-refugies-de-personnes-trans-et-non-binaires/ + Thu, 09 Feb 2023 04:58:01 +0000 + + https://jevalide.ca/?p=4143 + + +

    🏳️‍🌈 Pétition officielle pour que le Canada accepte les demandes de réfugiés de personnes trans et non-binaires 🏳️‍🌈

    + + + +

    (Citoyens et résidents canadiens seulement)

    + + + + + + + +

    Pétition à la Chambre des communes
    e-4268 (Citoyenneté et immigration)

    + + + +


    Attendu que :

    + + + +
      +
    • Le monde devient de plus en plus hostile pour les personnes transgenres et non binaires;
    • + + + +
    • Le droit des personnes transgenres et non binaires de vivre leur identité est restreint et retiré dans de nombreux endroits;
      Cela comprend les prétendues « démocraties occidentales » qui pendant longtemps ont été présumées sûres;
    • + + + +
    • Le Royaume-Uni révise actuellement l’Equality Act pour exclure les personnes trans de ses protections;
    • + + + +
    • Plus d’une dizaine d’États américains ont adopté des lois qui éliminent ou criminalisent les soins de santé liés à l’affirmation de genre, ou envisagent de le faire;
    • + + + +
    • Le Canada s’enorgueillit d’être une société inclusive, tolérante et accueillante pour tous, sans égard à l’identité de genre ou à l’expression de genre.
    • +
    + + + +

    Nous, soussignés, résidents du Canada, prions la Chambre des communes d’étendre le droit de demander l’asile au Canada aux personnes transgenres et non binaires en raison des lois visant à éliminer leurs droits dans leurs pays, peu importe le pays dont il s’agit.

    + + + +

    Source et lien vers la pétition
    https://petitions.noscommunes.ca/fr/Petition/Sign/e-4268

    +]]>
    + + 4143 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[Est-ce que je devrais abandonner TikTok]]> + https://jevalide.ca/2023/03/01/est-ce-que-je-devrais-abandonner-tiktok/ + Wed, 01 Mar 2023 14:39:19 +0000 + + https://jevalide.ca/?p=4162 + + +
    Un ballon sonde Chinois auquel le logo de TikTok a été ajouté par photomontage
    + + + +

    Est-ce que je devrais abandonner TikTok? Ce sera la question la plus fréquente en mars 2023 sur les réseaux sociaux. Le gouvernement canadien a interdit l'utilisation de cette application chinoise de médias sociaux sur les appareils mobiles des fonctionnaires.
    Et comme plusieurs, tu te poses des questions, et c'est bien normal ! Je vais t'aider à t'y retrouver.

    + + + +

    + + + +

    Le contexte

    + + + +

    Un enjeu stratégique et géopolitique

    + + + +

    Nous le savons, les données sont un enjeu stratégiques pour les entreprises, mais aussi pour les gouvernements. La Chine veut se positionner comme un leader mondial dans l'influence technologique et dans l'intelligence artificielle, et pour ça, ça prend beaucoup de données.

    + + + +

    C'est aussi un pays qui est maître dans la manipulation de masse et dans la censure. On le sait très bien avec tout le contrôle de l'information autour du génocide du peuple Ouighour.

    + + + +

    L'espionnage, pas un exclusivité Chinoise

    + + + +

    D'un autre côté, nous avons aussi, du côté des États-Unis, des entreprises qui ont participé à des projets avec les services d'espionnages étatiques, notamment la NSA. C'est du moins ce que nous a révélé Edward Snowden.

    + + + +

    Les États-Unis, et leurs alliés dans le cyber-espionnage, les 5EYES, dont fait partie le Canada, ainsi que le Royaume-Uni, l'Australie et la Nouvelle-Zélande, font aussi de l'espionnage de masse par le biais d'entreprises privées, telles que Facebook, Amazon et Microsoft.

    + + + +

    TikTok, une immense ferme de données

    + + + +

    TikTok est une des entreprises qui génère le plus de données. En plus d'être massives, les données vidéos contiennent une tonne de données comportementales et biométriques. Il suffit de quelques secondes de vidéo pour identifier quelqu'un uniquement à l'aide de ses mouvements, et c'est très difficile à falsifier.

    Mais, il s'avère que TikTok ne se limite pas à ça. Ils ont accès à une quantité massive d'information générées par le téléphones et fournies à travers les API développées par Google et Apple. Ces entreprises sont les complices de cette collecte de données.

    + + + +

    Je ne veux pas abandonner TikTok, quoi faire?

    + + + +

    La chose la plus importante à savoir à propos de TikTok, c'est que l'application a accès à la majorité du contenu de ton téléphone, même en dehors de l'application. D'un point de vue pratique, on veut isoler TikTok des autres données de ton entreprise.

    Pour ça, je te propose deux façons de procéder:

    + + + +
      +
    • Utiliser la version PC de l'application
    • + + + +
    • Utiliser un appareil mobile dédié
    • +
    + + + +

    Utiliser la version site web de l'application

    + + + +

    TikTok est disponible via son site web et permet de consommer et de charger des vidéos. Ce n'est pas la même expérience en continu qu'on retrouve sur mobile, mais c'est beaucoup mieux pour la confidentialité et aussi pour ta santé mentale, car l'utilisation de vidéos en continu consomme beaucoup d'attention.

    + + + +

    Dédier un appareil mobile pour TikTok

    + + + +

    Si tu utilises TikTok comme moyen de commercialisation, fais surement des vidéos avec ton téléphone mobile. Tu voudras alors avoir un appareil similaire. Malgré que cette option a un coût environnemental additionnel, c'est peut-être ce que tu recherches.

    + + + +

    + + + +

    Tu pourras alors regarder pour utiliser un appareil usagé ! Les gens changent souvent de téléphone, malheureusement, alors c'est assez facile de trouver un téléphone qui n'a pas plus que deux ou trois ans.

    + + + +

    Abandonner TikTok ?

    + + + +

    Comment rejoindre les jeunes autrement?

    + + + +

    Certains gourous marketing vont te faire croire que tu délaisses toute une tranche de la population en te libérant de TikTok. C'est un peu vrai, parce que les jeunes fréquentent moins les autres réseaux sociaux. Mais faire l'analogie entre jeunes et TikTok, c'est tiré par les cheveux pas mal.

    Ce n'est pas le seul moyen de rejoindre cette clientèle, et c'est probablement une bonne chose que les gouvernements commence à lancer de sérieux avertissement sur l'application.

    + + + +


    Le contenu à long terme sur un site web, un blog ou une plateforme de vidéos en ligne tel que Youtube ou PeerTube et les réseaux sociaux professionnels comme LinkedIn sont des alternatives intéressantes pour abandonner TikTok.

    + + + +

    Considérer les effets néfastes de la consommation de contenu

    + + + +

    Il y a aussi de plus en plus de jeunes qui sont conscients des impacts néfastes du numérique en mode consommation de contenu et qui font un retour vers un mode plus organique et relationnel.

    L'affichage public, l'organisation d’événements et les communautés en ligne tel que les serveurs Discord sont aussi un bon moyen de les rejoindre.

    + + + +

    + + + +

    C'est une belle opportunité de montrer que tu considères les enjeux sociaux dans tes choix technologiques !

    + + + +

    Quoi partager sur TikTok ?

    + + + +

    Obtiens toujours un consentement

    + + + +

    Peu importe où tu partages sur le web, la vie privée est toujours une considération que tu dois garder en tête. Tu dois avoir le consentement de toutes les personnes qui apparaissent dans les vidéos que tu publies.

    Et quand je parle de consentement, c'est pas juste à être filmées, c'est aussi de savoir sur quelles plateformes va se retrouver la vidéo. De plus en plus, les gens sont sensibilités aux enjeux de partage et vont être exigeants avant de donner leur accord.

    + + + +


    Tes enfants ne sont pas des objets promotionnels

    + + + +

    Le consentement s'applique aussi aux enfants. Si tu n'as pas le consentement de tes enfants, ou s'ils sont trop jeunes pour le faire, alors tu ne publies pas de contenu d'eux sur les réseaux sociaux.

    Cette pratique, nommée le sharenting, pose de nombreux problèmes et peut même mettre en danger tes enfants ou augmenter le risque qu'ils subissent du harcèlement ou de l'intimidation.

    + + + +

    En conclusion

    + + + +

    L'application TikTok est de plus en plus ciblée comme étant un outil d'espionnage pour le compte du gouvernement chinois.

    Il faut faire attention dans son utilisation et idéalement l'isoler de nos autres données.

    Il faut aussi que tu respectes la vie privée et obtienne le consentement des personnes qui apparaissent dans les vidéos. Enfin, si tu souhaites abandonner TikTok, tu peux regarder pour des alternatives qui sont plus respectueuses de tes données et de tes droits.

    + + + +

    + + + +

    Autres articles

    + + + + +]]>
    + + 4162 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[Laisse faire, tu ne comprendras pas de toute façon]]> + https://jevalide.ca/2023/03/08/tu-ne-comprendras-pas-de-toute-facon/ + Wed, 08 Mar 2023 16:11:51 +0000 + + https://jevalide.ca/?p=4185 + + +

    Même si je prenais du temps pour te l’expliquer, tu ne comprendras pas !

    + + + +

    Combien de fois, comme frère, tu as dis ça à ta soeur, quand t’étais plus jeune ?

    + + + +

    Est-ce que tu as déjà refuser de lui partager tes jouets ?

    + + + +

    Les rares fois ou elle a pu participer à tes projets, quand elle t’as donné un coup de main pour construire ton méga village de Lego, je suis pas mal certain que tu n’en as jamais parlé à tes chums de gars.

    + + + +

    Pour te “protéger” de l’univers féminin, pour ne pas que tu deviennes gai, on t’as appris qu’il fallait jouer avec des camions, des petits soldats, des voitures et surtout éviter tout ce qui est rose.

    + + + +

    Tu n’as jamais eu à te pratiquer à faire la cuisine, à changer des vêtements ni à faire des coiffures. On t’a placé dans un rôle de bâtisseur, de gestionnaire, de pionnier. Un monde plein de possibilités et où l’échec est inexistant. À l’école, tant que tu passais tes cours, tu pouvais aller au sport ou jouer avec des amis. Ta soeur, elle était privée de sortie cinéma si elle avait en bas de 80%.

    + + + +

    Quand t’es arrivé au secondaire, on a commencé à t’exposer à la sexualité, tes jeux vidéos avaient des superhéroines avec des grosses poitrines sous une maigre armure et sur les isoloirs des toilettes de la poly, il y avait des gros pénis gravés avec un couteau avec “suce-moi” écris en dessous.

    + + + +

    Les filles autour de toi ont commencé à se faire harceler pour leurs choix vestimentaires et à se faire dire d’attendre à la fin du cours pour aller à la toilette ! Leurs cours de choix de carrière les destinaient déjà à être mères, autant au travail qu’à la maison, comme infirmière, esthéticienne, psychologue, travailleuse sociale. Parce qu’une fille qui n’a jamais appris à faire des ponts en Lego n’en fera jamais des vrais non plus.

    + + + +

    Alors que toi, c’était déjà clair que tu allais devenir travailleur de la construction, investisseur, programmeur, ingénieur, comptable ... Bref, la même chose que tu faisais déjà comme enfant, bâtir, gérer, contrôler.

    + + + +

    Ce qu’on ne t’a pas dit, c’est qu’en plus, tu allais aussi pouvoir continuer à penser que les femmes ne comprendront pas ce que tu fais de toute façon, que tu refuserais encore de partager tes jouets et que tu n’aurais jamais à parler de leurs coup de main pour terminer tes projets à tes collègues ! On ne te l’a jamais dit, parce que le système est déjà fait pour nous, les gars. Ça s’appelle le patriarcat.

    + + + +

    Le 8 mars, c’est une journée pour faire un effort de plus à reconnaître notre parcours de vie parsemé de misogynie (et d'homophobie, ça vient souvent ensemble) et mettre nos soeurs de l’avant, reconnaître leurs contributions et nos mauvais coups et accepter que bien souvent, elles avaient déjà compris bien avant nous.

    +]]>
    + + 4185 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[Un graphe des problèmes systémiques]]> + https://jevalide.ca/2023/03/11/un-graphe-des-problemes-systemiques/ + Sun, 12 Mar 2023 02:45:27 +0000 + + https://jevalide.ca/?p=4187 + + +
    Visualisation de The ecosystem of wicked problems
    + + + +

    Je me suis dis que ça serait intéressant de faire une représentation sous forme de graphe de cette image, représentant les interrelations entre plusieurs problèmes systémiques, partagée sur LinkedIn ici: https://www.linkedin.com/feed/update/urn:li:activity:7003067680815509504

    + + + +


    Extrait de la publication

    + + + +

    Je te partage une traduction par ChatGPT d'un extrait de la publication:

    Début de la traduction

    "La pensée design devrait devenir synonyme de la pensée en réseau. C'est la seule façon pour nous de comprendre pleinement les répercussions, de concevoir de manière plus consciente et durable. Penser en réseau signifie en fin de compte réfléchir à la réciprocité, à la causalité, à la symbiose et à l'interdépendance. Cela signifie également poser des questions importantes, inhabituelles et souvent inconfortables. Quel est le lien entre le climat et les conflits humains ? Entre la disponibilité d'un produit à Miami et une tempête en Asie ? la déforestation et la faim ? la production de plastique et la santé humaine ? Pour les personnes intéressées par la sociologie et les enjeux stratégiques et politiques, cela souligne la nécessité d'une approche systémique pour résoudre les problèmes complexes de notre époque."

    + + + +


    "L'image ci-dessous expose l'importance de la pensée systémique en révélant la toile d'interdépendances qui sous-tend l' "écosystème des problèmes complexes" selon Christian Sarkar et Philip Kotler. En d'autres termes, elle montre les multiples facteurs qui sous-tendent les défis existentiels auxquels nous sommes confrontés en tant qu'espèce. Cette carte représente une échelle où le design peut, et doit, opérer."

    + + + +

    Fin de la traduction

    + + + +

    Ce que j'ai développé

    + + + +

    J'ai d'abord représenté le graphe sous la forme d'une matrice d'adjacence dans un fichier Excel, puis j'ai utilisé visNetwork avec R pour en arriver à ceci. Cette image est statique, mais si tu cliques dessus, tu vas avoir la version dynamique.

    + + + +

    + + + +

    La version dynamique permet de changer le problème que l'on met au centre et de visualiser plus facilement les intrants et les extrants pour chacun des noeuds du graphe des problèmes systémiques (Wicked Problems).

    + + + +

    Les couleurs ne signifient rien en particulier et sont purement esthétiques, c'était pour répliquer le choix sur l'image d'origine et faciliter la lecture.

    + + + +
    Graphe de Wicked Problems avec visNetwork en R
    Graphe de Wicked Problems fait avec visNetwork
    + + + +

    Tu pourras trouver la matrice d'adjacence et le code source ici:

    + + + +

    https://git.jevalide.ca/jevalideca/mission-cybersecurite/-/snippets/4

    +]]>
    + + 4187 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[On démonte le robot #1 - les réseaux de neurones]]> + https://jevalide.ca/2023/04/01/on-demonte-le-robot-1-les-reseaux-de-neurones/ + Sat, 01 Apr 2023 21:00:30 +0000 + + https://jevalide.ca/?p=4379 + + +

    Je te présente une série d'articles basés sur la présentation On démonte le robot que j'ai fait en janvier 2023. Dans cette présentation, j'ai d'abord présenté quelques concepts théoriques sur les réseaux de neurones.

    J'ai ensuite expliquer plus précisément comment fonctionne les réseaux de neurones profonds utilisés par les algorithmes génératifs.

    Enfin, j'ai présenté un exemple pratique d'entraînement et d'utilisation d'un algorithme génératif à partir d'un ensemble de documents.

    + + + +
    Affiche de la présentation: On démonte le robot !
    + + + +

    + + + +

    Dans ce premier article, je te présente le fonctionnement des réseaux de neurones

    + + + +

    Quelle est la différence entre un neurone biologique et un neurone artificiel ?

    + + + +

    Le système nerveux envoie des signaux chimiques au neurone biologique qui les convertit en signal électrique. Celui-ci permet de relier plusieurs parties du cerveau qui ont chacune leurs spécialités.

    + + + +
    Illustration d'un neurone biologique
    + + + +

    Le neurone comprend des récepteurs. situés sur les dendrites, qui servent à recevoir des signaux chimiques transmis à l'aide de neurotransmetteurs, des molécules conçues pour s'imbriquer sur des récepteurs spécifiques.

    + + + +

    Le neurone transmet un signal via l'axone vers les synapses s'il y a suffisamment d'interaction. Les synapses génèrent alors des neurotransmetteurs pour poursuivre la communication vers d'autres neurones.

    + + + +

    Le neurone artificiel est un modèle mathématique qui réplique les dendrites, l'axone et les synapses en utilisant une fonction d'activation et un produit scalaire. Nous verrons plus en détail le fonctionnement de ces deux composantes ci-dessous.

    + + + +

    Qu'est ce que l'activation ?

    + + + +

    Lorsqu'un signal positif est suffisamment fort pour déclencher une action, on parle d'activation. Les 0 et les 1 représentent l'activation de transistors qui, à leur tour, représentent l'information dans un système informatique. C'est le système binaire.

    Dans les systèmes biologiques, le signal est une distribution continue entre 0 et 1. On parle aussi de fonction de répartition, une fonction strictement croissante dont la valeur se situe sur l'intervalle entre 0 et 1. Pour faire le pont entre les deux, on va utiliser une fonction d'activation qui va traduire un signal continu vers une sortie binaire.

    + + + +
    Illustration du concept d'activation. Binaire 0-1 dans l'ordinateur, mais continu en biologie. Courbe d'activation. Fonction de répartition de probabilités
    + + + +

    Attention Maths !

    + + + +
    Attention: Maths
    + + + +


    Pour représenter cette continuité en informatique, on utilise une fonction d'activation. C'est une fonction qui retourne une valeur entre 0 et 1, ou entre -1 et 1, selon les cas.

    + + + +

    Il y a plusieurs fonctions d'activation. Voici les plus courantes dans les réseaux de neurones utilisés dans les algorithmes d'intelligence artificielle

    + + + +
      +
    • Sigmoïde
    • + + + +
    • Tangente hyperbolique (oui, une de ces fameuses fonctions "inutiles" que tu as vu au Cégep dans ton cours d'intégrales)
    • + + + +
    • ReLU: Rectified Linear Unit
    • +
    + + + +
    Illustration du concept de fonction d'activation utilisé dans les réseaux de neurones. Sigmoïde, ReLU et tangente hyperbolique
    + + + +

    En retrouve souvent la constante d'Euler e dans les équations des algorithmes d'apprentissage automatique (et un peu partout en maths).

    + + + +

    Comment fonctionne un neurone artificiel ?

    + + + +

    Deux éléments composent le neurone artificiel : une somme (produit scalaire) et une fonction d'activation. La fonction d'activation multivariée est appelée softmax (par exemple, pour prédire une lettre de l'alphabet, il y a 26 sorties).

    + + + +

    + + + +
    Illustration d'un neurone artificiel: paramètres d'entrée, poids, somme, fonction d'activation, produit scalaire, paramètres de sortie et version multivariée softmax
    + + + +

    On retrouve d'abord les paramètres d'entrée, qui sont des valeurs numériques provenant d'un neurone précédent ou de données fournies en entrée. Ces paramètres sont ensuite multipliés par des poids.

    + + + +


    L'entraînement d'une algorithme cherche à trouver les valeurs optimales de ces poids pour prédire la meilleur valeur de sortie possible. La somme des produits entre les poids et les paramètres en entrée se nomme un produit scalaire. C'est un nombre.

    + + + +


    On insère ensuite ce nombre dans une fonction d'activation, ce qui va nous retourner une valeur entre -1 et 1, ou entre 0 et 1, selon la fonction choisie. Cette valeur va ensuite être fournie comme paramètre de sortie du neurone. Si l'on a plusieurs sorties possibles, nous allons utiliser la fonction softmax qui va normaliser toutes les valeurs de sortie pour que leur somme soit de 1, c'est à dire une distribution des probabilités que chacune des valeurs possibles soient la bonne.

    Lorsque la sortie est une lettre de l'alphabet, chaque lettre se verra attribuer une probabilité et celle avec la probabilité la plus élevée sera retournée. On pourrait appliquer le même raisonnement pour des chaînes de plusieurs caractères, appelées jetons. Entre autres, le modèle GPT-3 fonctionne à l'aide de jetons.

    + + + +

    Qu'est-ce qu'un réseau de neurones ?

    + + + +

    Un réseau de neurones est un assemblage de neurones sous la forme de parcours de décision. Ils relient chaque valeur en entrée à toutes les réponses possibles en sortie en passant par plusieurs neurones différents, dans un chemin linéaire (sans retour en arrière).

    + + + +

    Ils servent à prédire une catégorie ou une valeur numérique, à partir de toutes les valeurs en entrées. Ces valeurs ont initialement un poids égal (en théorie) ou déterminé aléatoirement (en pratique).

    + + + +

    Un réseau de neurones est composé de couches successives de neurones identiques entre eux. À la base, toutes les sorties d'une couche sont reliées à toutes les entrées de la couche suivante. On parle alors de couches pleinement connectées.

    Comme nous le verrons plus tard, il existe aussi plusieurs autres types de couches, dont les couches récurrentes. Dans le traitement d'images, on a aussi des étapes de convolution, qui ont un comportement similaires aux filtres photo dans Photoshop.

    + + + +

    + + + +

    Dans cette architecture, la fonction d'activation la plus fréquente est la ReLU.

    + + + +
    Réseau de neurones traditionnel. Fully connected layers. Le milieu est appelé un"embedding" ou plongement en français (dictionnaire des synonymes)
    + + + +

    On appelle souvent la couche la plus centrale d'un réseau de neurones profond "Embedding" ou plongement, en français. C'est une sorte de dictionnaire des synonymes de concepts représentés à l'aide de vecteurs de très grande dimensions. Pour déterminer quels concepts sont similaires, la mesure la plus fréquence et le cosinus entre les vecteurs. On parle alors de similarité cosinus.

    + + + +

    + + + +

    Pour produire du contenu, on n'utilisera pas des réseaux avec des couches pleinement connectées, mais plutôt des réseaux récurrents, où les valeurs en entrée ont un ordre précis.

    + + + +

    Les réseaux récurrents permettent de préserver l'ordre des lettres et des mots

    + + + +

    Dans un texte, l'ordre des lettres ou des mots a une importance, parce qu'elle apporte le contexte. On doit donc utiliser une forme différente de réseaux pour reproduire la création d'une phrase ou d'un texte.

    + + + +

    + + + +

    Les réseaux récurrents permettent de tenir compte du résultat de la fonction d'activation des neurones précédents au lieu de prendre toutes les valeurs en entrée comme égales.

    + + + +

    + + + +
    Réseau récurrent: entrée, couche récurrente de neurones LSTM. Sens de l'information: chaque neurone a les infos précédentes. Softmax. Fully connected layers en sortie.
    + + + +

    Chaque valeur en entrée est associée à un seul neurone dans la première couche et non à chacun d'entre eux. Ce qui est vraiment différent ici, c'est que les neurones sont reliés à tous les autres neurones de la même couche qui leur succèdent. C'est ici qu'on a une récurrence, ou une propagation de l'information qui suit toujours le même motif dans la même direction.

    + + + +

    + + + +

    Le reste de la structure du réseau est similaire: on retrouve plusieurs couches successives, donc une qui sert de plongement, et une fonction softmax en sortie.

    Les neurones utilisés dans ces couches sont différents de ceux qu'on a vus précédemment, ils sont plus complexes, parce qu'ils doivent tenir compte de plusieurs sources d'information et produire plusieurs sorties. On les appelle LSTM, pour Long and Short Term Memory.

    + + + +

    Le neurone LSTM permet de préserver le contexte des mots précédents

    + + + +

    Le neurone Long and Short Term Memory (Mémoire à long et à court terme) est le plus fréquent dans les réseaux récurrents en langage naturel. Il permet de transporter l'état précédent des neurones en plus d'un paramètre de contexte. C'est une façon mathématique de préserver le sens des mots qu'il a lus précédemment pour améliorer le choix du mot suivant.

    Il compte 5 fonctions d'activation: 3 sigmoïdes et deux tangentes hyperboliques.

    Ce neurone est celui qui permet d'utiliser un champ lexical cohérent dans la génération de textes. Si tu as déjà énoncé un des synonymes d'un concept, il y a plus de chance que ça soit celui-là qui soit réutilisé plus tard.

    + + + +
    Illustration d'une neurone récurrent LSTM: long and short term memory
    + + + +


    Dans les prochains articles, je vais te partager comment fonctionne l'entraînement, puis nous allons faire une démonstration ensemble en utilisant un processeur graphique.

    + + + +

    + + + +

    Si tu ne veux pas manquer mes prochaines publications, assures-toi de t'abonner à la Cyberlettre maintenant !

    +]]>
    + + 4379 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[On démonte le robot #2 – l'entraînement des réseaux de neurones]]> + https://jevalide.ca/2023/04/07/on-demonte-le-robot-2-entrainement-des-reseaux-de-neurones/ + Sat, 08 Apr 2023 03:57:54 +0000 + + https://jevalide.ca/?p=4402 + + +

    Dans mon article précédent, je t'ai présenté comment fonctionne les réseaux de neurones derrière les algorithmes. Je vais maintenant te présenter, de la façon la plus simple possible, comment fonctionne l'entraînement de ces réseaux de neurones.

    + + + +
    + + + +

    + + + +

    Les réseaux de neurones sont des structures mathématiques très complexes. Ils ont des milliers, des millions ou même des milliards de paramètres. Heureusement, nous avons maintenant accès à des ordinateurs très puissants qui peuvent faire des milliards de calculs par seconde. C'est pourquoi nous avons maintenant la capacité technique pour entraîner ces algorithmes dans un temps et avec un coût raisonnable.

    Ça n'était pas possible dans les années 1970 lorsque ces réseaux ont été inventés. C'est ça qui a causé ce qu'on appelle aujourd'hui l'hiver de l'intelligence artificielle.

    + + + +

    Les étapes de l'entraînement des réseaux de neurones

    + + + +

    L'entraînement des algorithmes se fait à l'aide de données étiquetées. C'est à dire des données accompagnées de la "bonne réponse".

    + + + +
    Données étiquetées pour l'entraînement des réseaux de neurones
    + + + +



    Il y a trois séquences de calculs dans un entraînement: l'évaluation, le calcul de l'erreur et la rétro-propagation. C'est possible de répéter ces étapes plusieurs fois en utilisant des époques d'entraînement où on repasse sur toutes nos données plusieurs fois.

    + + + +

    L'évaluation

    + + + +

    Dans l'article précédent, j'ai présenté une introduction à la partie de l'évaluation. Essentiellement, pour chaque donnée, on calcule, de gauche à droite:

    + + + +
      +
    • le produit des valeurs en entrée avec les paramètres correspondants
    • + + + +
    • la somme de ces produits pour chaque neurone
    • + + + +
    • la valeur de la fonction d'activation qu'on envoie ensuite en sortie
    • +
    + + + +

    Lorsqu'on arrive à la dernière couche de neurones, on applique la fonction Softmax pour obtenir une probabilité pour chacune des valeurs possibles.

    + + + +
    L' évaluation. Entraînement des réseaux de neurones.
    + + + +

    Le calcul de l'erreur

    + + + +

    L'erreur, c'est la différence entre les probabilités calculées et le vecteur de probabilités qui correspond à l'étiquette. Ce vecteur prend la valeur 0 pour toutes les positions sauf celle de l'étiquette qui prend la valeur 1. L'erreur est donc la valeur négative de la probabilité (-p) pour toutes les sorties possibles sauf l'étiquette, et de (1-p) pour l'étiquette.

    + + + +
    Le calcul des erreurs. Entraînement des réseaux de neurones.
    + + + +

    L'objectif de l'entraînement de l'algorithme est de diminuer la somme des erreurs. Donc, on veut que les probabilités de toutes les sorties possibles soient près de 0 sauf celle de la valeur de l'étiquette qu'on veut la plus près possible de 1.

    + + + +

    Chaque itération de l'entraînement, ou époque dans le langage de l'apprentissage automatique, va faire le calcul de l'erreur pour toutes les paires de données étiquetées dont on dispose.

    + + + +

    La rétro-propagation des erreurs

    + + + +

    + + + +

    Tu te rappelles qu'on a multiplié les valeurs par les paramètres pour arriver à la valeur de sortie lors de l'évaluation. Maintenant, on va faire le chemin inverse pour la rétro-propagation des erreurs.

    On va prendre l'erreur qu'on a obtenue à la sortie, et on va corriger les paramètres de tout notre réseau. Notre but, c'est de diminuer l'erreur pour la prochaine fois qu'on va entrer les mêmes données. On veut augmenter la probabilité qu'on tombe sur la valeur étiquetée en sortie.

    Et tu te demandes comment on peut corriger tous les paramètres à partir d'une seule valeur d'erreur ? C'est ici que les grosses mathématiques débarquent !

    + + + +
    + + + +



    Nous allons utiliser le calcul différentiel. Tu te rappelles, au premier cours de maths au Cégep... le même où tu as vu la tangente hyperbolique, que tu as oubliée après l'examen ! Plus particulièrement, nous allons utiliser la règle de la chaîne. C'est super utile pour calculer l'impact cumulatif sur la valeur en sortie des différentes couches de neurones.

    C'est ce qui explique le choix de nos fonctions d'activation. Pour mettre à jour un poids, on calcule sa contribution dans l'erreur à l'aide de la règle de la chaîne. On ajoute ensuite un facteur delta pour le corriger.

    + + + +

    + + + +

    Je ne m’attarderai pas davantage ici sur ces calculs, mais tu peux voir tous les détails dans le livre de référence Deep Learning. Ce livre a été écrit par Ian Goodfellow, Yoshua Bengio et Aaron Courville, trois pionniers de l'intelligence artificielle par réseaux de neurones profonds.

    + + + +
    La rétropropagation des erreurs. Entraînement des réseaux de neurones. Calcul de nouveaux poids à l'aide de calcul différentiel. Dérivées, Règle de la chaîne. Delta additionné aux poids pour obtenir les nouveaux poids.
    + + + +

    + + + +

    C'est facile de calculer leur dérivée pour un ordinateur, et encore plus de le faire en parallèle, en utilisant l'algèbre matricielle.

    + + + +

    La suite !

    + + + +

    + + + +

    Sur nos ordinateurs modernes, les calculs d'entraînement des réseaux de neurones sont très performants, en particulier si on utilise des processeurs graphiques (GPU).

    + + + +

    + + + +

    Dans le prochain article, nous allons mettre tout ça en pratique avec un exemple.

    +]]>
    + + 4402 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[Préserver l'anonymat dans un sondage de diversité]]> + https://jevalide.ca/2023/04/20/anonymat-dans-un-sondage-de-diversite/ + Thu, 20 Apr 2023 16:59:13 +0000 + + https://jevalide.ca/?p=4558 + + +

    Faire un sondage de diversité tout en respectant l'anonymat des personnes, c'est possible !

    Une pratique qui me semble de plus en plus courante, c'est de vouloir faire un sondage afin de mesurer la diversité d'un groupe. Je comprends tout à fait le souhait de vouloir mesurer le résultat de nos efforts ou vouloir établir des objectifs réalistes. Mais, malheureusement, c'est plus souvent qu'autrement fait de façon maladroite.

    La principale conséquence pour toi, c'est que ça rend les gens mal à l'aise et que ça va fausser les données. Il y a aussi un risque de fuite de données et d'identification des répondants

    + + + +

    Quelques exemples problématiques

    + + + +

    Le recensement du Canada

    + + + +

    Un des exemples les plus cités, c'est le recensement de la population de Statistiques Canada. Il est effectué par ménage et non par individu, et où, souvent, une personne va répondre au nom de tout le monde.

    Plusieurs personnes n'ont par exemple pas partagé leur orientation sexuelle, un handicap, une pratique religieuse ou un enjeu de santé mentale aux autres personnes de leur ménage, que ce soit leur famille, des colocataires ou un cercle d'amis. Dans les deux cas, soit la personne qui répond va fournir des données faussées, soit chacun répond à sa partie, mais va mentir pour ne pas se dévoiler aux autres.

    + + + +

    + + + +

    Les formulaires d'embauche

    + + + +

    + + + +

    Dans plusieurs entreprises, ces questions seront posées lors de l'embauche. Premièrement, il n'y a encore aucune relation de confiance de créée à ce moment, alors la personne n'a aucun incitatif à se dévoiler à ce moment. Il y a aussi le fait que les réponses sont automatiquement attachées au profil de la personne.

    + + + +

    + + + +

    Les formulaires d'inscription

    + + + +

    + + + +

    Au niveau des organismes à but non lucratif, on pose souvent ces questions lors des inscriptions à des événements. C'est aussi une pratique plutôt maladroite, parce qu'encore une fois, on peut rattacher les informations aux données d'identification de la personne.

    + + + +

    Quoi faire alors pour préserver l'anonymat dans un sondage de diversité ?

    + + + +
    Infographie: Comment préserver l'anonymat dans un sondage. 
+
+Trois sections de texte: 1. Isoler l'information d'identification personnelle des données de sondage 2. Limiter le traçage du sondage par la date, les liens et les cookies 3. Faire une campagne indépendante de toute autre action
+
+Trois images: 1. Une feuille coupée en deux 2. Un biscuit avec des miettes 3. Un sablier avec un marqueur d'intervalle de temps à gauche
+
    + + + +

    Isoler l'information personnelle des données de sondage

    + + + +

    Il faut commencer par éviter tout lien entre les informations recherchées et l'identité des personnes qui répondent au sondage. Donc, il faut faire un questionnaire séparé et l'envoyer dans un autre contexte, par exemple après un événement et non lors de l'inscription. Encore une fois, il ne faut pas l'associer à un sondage de satisfaction. Le sondage de diversité doit être autoportant et anonyme.

    + + + +

    + + + +

    Limiter le traçage du sondage par la date, les liens et les cookies

    + + + +

    + + + +

    Il faut aussi éviter de l'insérer dans un parcours avec d'autres éléments. On doit le diffuser indépendamment de toute autre campagne ou promotion. Il y a deux raisons à ça:

    + + + +
      +
    • Les courriels et les médias sociaux incluent des identifiants de traçage qui peuvent se propager entre les différents contenu d'une même publication ou d'un même courriel. Ces identifiants peuvent même suivre lors d'une même visite sur un site web, via les cookies ou des variables dans les adresses des liens.
    • + + + +
    • Un des moyens les plus efficaces pour briser l'anonymat dans un sondage, c'est la date de soumission des données. Souvent, les personnes vont répondre successivement à plusieurs sondage ou inscriptions en traitant leurs courriels. C'est possible de rapprocher des sondages différents mais avec des dates similaires. C'est même fréquent dans les entreprises qui font de l'analytique web.
    • +
    + + + +

    Faire une campagne indépendante de toute autre action

    + + + +

    Je te conseille de faire une campagne indépendante en utilisant un moyen de diffusion séparé. Tu peux aussi d'utiliser une adresse différente de son site principal, par exemple un sous-domaine qui mentionne clairement ton intention:
    https://sondage-diversite.mondomaine.com

    Si tu envoies à une liste courriel, assures-toi que le lien ne soit pas associé à un traceur. Encore une fois, on peut associer le moment du clic avec un courriel en particulier. Nous vivons dans une société de capitalisme de surveillance. Il faut avoir des yeux partout, sinon les entreprises ne sont pas de gêner.

    + + + +


    Essaie aussi d'éviter les outils de sondage tels que Google Forms. Ils peuvent, sans que tu le veuilles, associer le compte Google de la personne à ces données. Même chose pour les réseaux sociaux (à éviter absolument). Les outils de ressources humaines ne sont pas anonymes, même s'ils le prétendent, c'est juste un bouton dans l'interface. La preuve, c'est qu'on peut retirer l'anonymat d'une réponse dans le futur. C'est possible de retracer qui répond quand avec les marqueurs de dates. Surtout la base de données reste accessible aux équipes d'informatique.

    Le réflexe à avoir, c'est de penser à l'éventualité d'une fuite de données. Ce sont des données qui, entre de mauvaises mains, peuvent mettre des vies en danger. Les données de diversité, ce sont aussi des critères de discrimination. Elles doivent, dans tous les cas, être manipulées avec le même soin que des dossiers médicaux sous le secret professionnel.

    + + + +

    + + + +

    La qualité des données d'un sondage de diversité

    + + + +

    Pour s'assurer de la qualité des données, il faut aussi avoir une relation de confiance. Donc, la familiarité de la personne avec votre organisation va avoir un impact sur ses réponses. Afin de maximiser la qualité des données, c'est une bonne pratique de sonder les gens qui ont une relation de plus longue durée avec ton organisation en premier.

    Ça peut aussi être l'occasion de consulter auprès de services-conseils en diversité et inclusion. Ces spécialistes peuvent t'aider à poser les bonnes questions et améliorer les choix de réponses pour qu'ils soient plus représentatifs.

    Afin d'augmenter le nombre de répondants, il faut être transparent sur nos intentions et nos objectifs avec le sondage. Idéalement, il faut partager les réponses avec toutes les personnes qui ont pris leur temps pour répondre.

    + + + +

    + + + +

    Il faut aussi rassurer les participants qu'ils ne pourront pas être recontactés suite au sondage pour avoir plus de détails. Justement, il faut leur dire explicitement que le sondage est anonyme. C'est important de préciser le contexte du sondage. Ce n'est pas tout le monde qui a les connaissances pour savoir si un sondage est anonyme ou non.

    + + + +

    + + + +

    Quelques logiciels pratiques pour faire des sondages vraiment anonymes

    + + + +
      +
    • LimeSurvey est un logiciel libre de sondages, aussi disponible avec un abonnement annuel. C'est un logiciel complet qui offre de nombreuses options et personnalisation pour les entreprises de toutes tailles. Il est même utilisé par des firmes de sondages.
    • + + + +
    • Nextcloud est un logiciel libre de gestion de données qu'on peut aussi héberger sur sur notre propre serveur. Son module Forms permet de faire des sondages anonymes.
    • + + + +
    • YakForms est un autre logiciel libre, développé à partir de la plateforme de sites web Drupal. Disponible gratuitement au travers de plusieurs instances.
    • + + + +
    • Xoyondo est un logiciel en ligne allemand, conçu dans l'esprit du RGPD.
    • + + + +
    • Tu peux aussi créer ton propre formulaire dans ton site web ou avec une application web personnalisée
    • +
    + + + +

    Ressources externes

    + + + + + + + +

    Articles qui pourraient aussi t'intéresser

    + + + + +]]>
    + + 4558 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[Sauvegarde facile de contenu mobile avec Nextcloud]]> + https://jevalide.ca/2023/04/23/sauvegarde-facile-de-contenu-mobile-avec-nextcloud/ + Sun, 23 Apr 2023 23:33:47 +0000 + + https://jevalide.ca/?p=4620 + + +

    Dans cet article, je vais te présenter une méthode de sauvegarde facile de contenu mobile avec Nextcloud et sa fonctionnalité de téléversement automatique.

    + + + +

    La fonctionnalité de téléversement automatique

    + + + +

    L'application client de Nextcloud pour Android et iOS te donne accès à tous tes fichiers. Elle va aussi te permettre de sauvegarder facilement et automatiquement le contenu créé sur ton mobile. Ça inclut les photos, vidéos et tout le contenu que tu vas créer via les réseaux sociaux tels que Facebook, Instagram et LinkedIn.

    La fonctionnalité se nomme, en français. téléversement automatique (en anglais, Instant Upload). Tu peux la trouver depuis le menu paramètres de l'application client Nextcloud. C'est vraiment pratique et c'est une de mes fonctionnalités préférées.

    + + + +

    + + + +

    L'application supporte les formats vidéos et images courants de façon séparée. Comme ça, tu peux choisir de synchroniser seulement tes photos, mais pas tes vidéos, si l'espace disque est limité.

    + + + +

    + + + +
    + + + +

    Choisir les sources à sauvegarder

    + + + +

    Une fois dans la section Téléversement automatique, tu peux choisir les sources de contenus que tu souhaites sauvegarder dans Nextcloud en activant un nuage bleu. Comme tu peux voir, il y a plusieurs sources disponibles. En général, il y en a une pour chaque application avec laquelle tu as au moins déjà pris une photo ou fait un vidéo.

    + + + +
    + + + +

    Il n'y a rien d'autre à faire pour que ça soit fonctionnel. Par défaut, la sauvegarde conserve tous les fichiers et ne fonctionne que sur le WiFi. Si tu as beaucoup de contenu, la sauvegarde initiale pourrait prendre quelques dizaines de minutes, dépendamment de ta connexion et de la configuration de ton serveur Nextcloud.

    + + + +

    La configuration avancée

    + + + +

    Si tu veux changer les paramètres de sauvegarde pour chaque source, appuie sur les trois points à droite de chacune. Tu pourras personnaliser la sauvegarde en choisissant une structure de répertoires et différentes autres options.

    + + + +
    + + + +

    J'espère que ça pourra contribuer à mettre ton contenu créé sur mobile plus en sécurité grâce à Nextcloud !

    + + + +

    + + + +

    Autre contenus que tu pourrais aimer

    + + + + +]]>
    + + 4620 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[Script de sauvegarde manuelle Borg pour Yunohost]]> + https://jevalide.ca/2023/05/12/script-de-sauvegarde-manuelle-borg-pour-yunohost/ + Sat, 13 May 2023 01:01:54 +0000 + + https://jevalide.ca/?p=4686 + + +

    Dans cet article, je te présente un script de sauvegarde manuelle Borg pour Yunohost. Sur un de mes serveurs, l'instance de Borg Backup crashe constamment lors de la sauvegarde automatisée, pour une raison que je n'ai pas réussi à diagnostiquer.

    J'ai donc écris un script bash qui me permet de faire la sauvegarde de toutes mes applications manuellement. Il remplace le script configuré par défaut lors de l'installation de Borg. Je tenais à le partager ici pour la communauté.

    + + + +

    + + + +

    Le script

    + + + +

    Ce script effectue une boucle sur la liste de toutes les applications installées avec /usr/bin/yunohost app list --json. Pour chacune, j'utilise l'outil de manipulation de fichiers json jq pour extraire seulement le nom interne des applications. Ce qui me donne une liste de noms.

    + + + +
    Représentation graphique du flux de traitement du script de sauvegarde manuelle Borg sur Yunohost
    + + + +

    + + + +

    Dans la boucle, je vais le traitement suivant:

    + + + +
      +
    • Je crée d'abord la sauvegarde avec yunohost en utilisant yunohost backup create et la méthode borg_app. Le fait que ça fonctionne me confirme que mon installation de Borg est correcte !
    • + + + +
    • J'envoie ensuite un appel POST à un webhook mon serveur n8n. Ceci démarre un script qui se charge de m'envoyer un courriel pour me dire que la sauvegarde pour une application donnée a été complétée. Comme ça mon serveur ne communique pas directement par SMTP et je n'ai pas les enjeux de délivrabilité.
    • +
    + + + +
    #!/bin/bash
    +# Sauvegarde Borg Manuelle
    +# /root/borg_manual_backup.sh
    +
    +export n8n_url="https://adresse.de.n8n.sur.mon.serveur"
    +export n8n_webhook_path="une clé secrète ici"
    +
    +for app in $(/usr/bin/yunohost app list --json | jq '.apps | .[] | .id' | tr -d '"')
    +do
    +  echo "=== Sauvegarde de $app démarrée ==="
    +  /usr/bin/yunohost backup create -n "auto_$app" --method borg_app --apps "$app" &> /var/log/backup_log.txt
    +  echo "=== Sauvegarde de $app terminée ==="
    +  /usr/bin/curl -XPOST "https://${n8n_url}/webhook/${n8n_webhook_path}/borg-backupnc-complet/${app}"
    +done
    +
    + + + +
      +
    • C'est tout ! Un peu rudimentaire, mais ça marche !
    • +
    + + + +

    Ce script est ensuite exécuté par l'utilitaire de tâches planifiées cron à chaque jour avec cette entrée:

    + + + +
    0 0 * * * /bin/bash /root/borg_manual_backup.sh
    + + + +

    Pour éditer le fichier de configuration de cron, j'utilise crontab -e en tant que root.

    + + + +

    Bien que le système par défaut pour mettre des tâches en automatisation sur Yunohost soit les timers de systemd, cron est toujours disponible.

    + + + +

    + + + +

    J'espère que cette technique de sauvegarde manuelle Borg pour Yunohost te sera utile !

    + + + +

    + + + +

    Articles connexes

    + + + + +]]>
    + + 4686 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[Nettoyer son Mac]]> + https://jevalide.ca/2023/05/21/nettoyer-son-mac/ + Sun, 21 May 2023 19:13:53 +0000 + + https://jevalide.ca/?p=4698 + + +

    Dans cet article, je te partage plusieurs éléments utiles pour nettoyer son Mac lorsque ton espace disque est limité.

    + + + +

    Faire du ménage régulièrement est un bon moyen pour augmenter la sécurité parce qu'il y a moins de données à te préoccuper et moins d'applications à garder à jour.

    + + + +

    Supprimer les applications inutilisées

    + + + +

    Va dans le Finder, puis dans le menu Applications. Pour désinstaller des applications, tu n'as qu'à faire bouton droite ou deux doigts et à les mettre à la corbeille

    + + + +
    Capture d'écran du menu des applications dans le Finder de Mac OS
    + + + +

    Vider la corbeille

    + + + +

    Ça peut paraître une évidence, mais une quantité importante de fichiers peut finir par prendre beaucoup de place dans la corbeille, surtout si tu viens de supprimer des applications à l'étape précédente.

    + + + +

    + + + +

    Pour vider celle-ci, tu peux cliquer dessus avec le bouton droit ou avec deux doigts sur ton pavé tactile pour afficher le menu contextuel et cliquer sur Vider la corbeille.

    + + + +
    Capture d'écran pour vider la corbeille dans Mac OS
    + + + +

    Nettoyer Homebrew

    + + + +

    Homebrew est un outil génial pour installer des logiciels qui ne sont pas distribués via le App Store, généralement des utilitaires en ligne de commandes. Il ne faut pas oublier que Mac OS est un système Unix complet, et qu'il est possible d'installer de nombreux logiciels comme on le ferait avec une distribution GNU/Linux.

    Pour nettoyer les répertoires de travail de Homebrew, tu n'as qu'à effectuer la commande suivante:

    + + + +

    brew cleanup -s

    + + + +

    Nettoyer le cache des applications

    + + + +

    Plusieurs applications laissent de nombreux fichiers en cache, par exemple d'anciennes versions des programmes ou des fichiers temporaires. Il peut être difficile de faire le ménage de tout ça sur un Mac étant donné que l'arborescence de fichiers est complexe.

    + + + +

    + + + +

    Heureusement, le logiciel mac-cleanup-py nous aide avec ça. Tu peux l'installer via Homebrew ou avec Python en suivant les instructions sur leur site GitHub:

    + + + +

    https://github.com/mac-cleanup/mac-cleanup-py

    + + + +

    + + + +

    Dans l'interface, tu peux choisir quels modules exécuter pour faire le nettoyage de ton Mac. Tu peux choisir seulement les modules pertinents pour toi.

    + + + +

    + + + +
    Capture d'écran du logiciel mac-cleanup-py
    + + + +

    Tu peux ensuite le configurer avec mac-cleanup -c et l'exécuter avec mac-cleanup

    + + + +

    + + + +

    En utilisant ces outils pour nettoyer son Mac régulièrement, tu pourras sauver beaucoup d'espace disque et augmenter la performance de ton Mac !

    + + + +

    Autres contenus qui pourraient t'intéresser

    + + + + +]]>
    + + 4698 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[Le spectre des opinions sur les mesures inclusives]]> + https://jevalide.ca/2023/06/02/le-spectre-des-opinions-sur-les-mesures-inclusives/ + Fri, 02 Jun 2023 16:58:21 +0000 + + https://jevalide.ca/?p=4735 + + +

    Nous vivons parmi des opinions de plus en plus polarisées. Je cherchais un moyen d'illustrer cette polarisation et d'en faire une échelle de mesure. Je suis donc arrivé à créer un outil que j'ai appelé le spectre des opinions. Il s'applique plus spécifiquement aux mesures inclusives, c'est à dire à toute adaptation de comportement qui vise à répondre aux besoins d'autres personnes que le groupe socialement le plus privilégié. Je propose donc un spectre des opinions sur les mesures inclusives

    + + + +

    1- J'aimerais que tout le monde utilise des mesures inclusives
    2- J'utilise des mesures inclusives
    3- Je comprends l'intérêt des mesures inclusives
    4- Les mesures inclusives ne m'interpellent pas
    5- Je ne comprends pas l'intérêt de mesures inclusives
    6- Je ne veux pas utiliser de mesures inclusives
    7- Personne ne devrait utiliser des mesures inclusives

    + + + +


    Ces éléments additionnels ne sont pas des opinions sur les mesures inclusives, mais des idéologies radicales basées sur des discours haineux.

    + + + +

    8- On devrait interdire les mesures inclusives
    9- On devrait interdire de demander des mesures inclusives
    10- On devrait éliminer les personnes différentes

    + + + +
    We welcome
+All races and ethnicities
+All religions
+All ountries of origin
+All gender identities
+All sexual orientations
+All abilities and disabilities
+All spoken languages
+All ages
+
+We stand here with you
+You are safe
    + + + +

    Malheureusement, les personnes qui ont les opinions 1-3 ne sont pas confrontées seulement aux personnes dans 5-7, mais aussi aux personnes dans 8-10. Et c'est ça le problème qu'on a actuellement comme société et qui crée de la polarisation. Pourtant, l'opinion contraire à la 1 et bien la 7 et non la 10 !

    Le discours opposé sémantiquement à 8-10 n'existe pas, c'est une invention de l'extrême droite. Je n'ai jamais rencontré personne qui voulait imposer des mesures inclusives ou forcer les gens à en demander. Encore moins, de vouloir éliminer les personnes des groupes majoritaires (manger les riches, ça ne compte pas, ils et elles ne sont pas majoritaires).

    Cette échelle me permet de classer les positions opposées tout le monde dans la radicalité. Je crois que ce pourrait être un outil utile au niveau du travail des données, pour étiqueter les discours haineux qui sont de plus en plus présents sur le web. C'est pour ça que je partage ça ici !

    + + + +

    + + + +

    Autres contenus

    + + + + +]]>
    + + 4735 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[L'analyse du langage naturel, c'est quoi ça ?]]> + https://jevalide.ca/2023/06/07/lanalyse-du-langage-naturel-cest-quoi-ca/ + Wed, 07 Jun 2023 23:20:28 +0000 + + https://jevalide.ca/?p=4747 + + +

    L'analyse du langage naturel, c'est un ensemble de techniques du domaine de l'intelligence artificielle, adaptées pour le texte en prose écrit par nous, l'humain derrière les données !

    + + + +

    Voici quelques utilisation de ce grand coffre à outils:

    + + + +
      +
    • Classifier par sujet de textes et de documents
    • + + + +
    • Détecter les émotions dans une conversation
    • + + + +
    • Identifier des entités nommées (dates, noms de personnes et de lieux, entreprises, ...)
    • + + + +
    • Créer des lexiques et des cartes conceptuelles propres à ton domaine d'expertise
    • + + + +
    • Éliminer le vocabulaire plate, imprécis ou offensant de tes publications
    • + + + +
    • Déterminer le niveau de risque et anonymiser tes données pour préserver la confidentialité.
    • +
    + + + +

    Est-ce que ça peut vraiment m'être utile ?

    + + + +

    Voici quelques exemples d'objectifs que je peux t'aider à atteindre en utilisant l'analyse du langage naturel:

    + + + +
      +
    • Mieux comprendre les comportements de ta clientèle et de ta communauté pour améliorer leur expérience et les fidéliser.
    • + + + +
    • Découvrir des opportunités pour améliorer ta relation avec tes employées et employés
    • + + + +
    • Résumer tes séances de brainstorming et tes sondages de manière concise aux gestionnaires.
    • + + + +
    • Simplifier le langage légal et bureaucratique pour que ta clientèle comprenne ce que tu leur dis !
    • + + + +
    • Accélérer ta veille stratégique en automatisant l'extraction du contenu pertinent à partir d'une grande variété de sources.
    • +
    + + + +

    Mes études de cas en analyse du langage naturel

    + + + +
      +
    • Démonte le robot ! +
        +
      • Un webinaire sur les algorithmes génératifs derrière les modèles tels que ChatGPT
      • +
      +
    • + + + +
    • Comparaison de commentaires Facebook +
        +
      • Analyse du niveau de langage et de la tonalité des commentaires sur la page de trois médias de masse
      • +
      +
    • + + + +
    • Censure littéraire: L'amour à l'index +
        +
      • Classification par thème de résumés de livres visés par une interdiction dans les écoles du Texas
      • +
      +
    • + + + +
    • Frigos communautaires +
        +
      • Extraction des adresses d'une page web pour construire une carte géographique
      • +
      +
    • + + + +
    • Les droits humains au menu +
        +
      • Création d'un travail pratique pour un cours d'analyse du langage naturel à HEC Montréal avec des données d'Amnistie Internationale
      • +
      +
    • +
    +]]>
    + + 4747 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[Nextcloud avec Postmark comme service SMTP]]> + https://jevalide.ca/2023/06/13/postmark-avec-nextcloud-comme-service-smtp/ + Tue, 13 Jun 2023 19:36:20 +0000 + + https://jevalide.ca/?p=4752 + + +

    Dans cet article, je te présente comment utiliser le service d'envoi de courriel Postmark avec Nextcloud. La configuration par défaut ne semble pas être fonctionnelle, mais il y a en dessous des paramètres des choix par défaut qui ne sont pas très bien documentés. Je vais t'aider à clarifier ça.

    + + + +

    + + + +

    Le service SMTP permet à Nextcloud d'envoyer des courriels pour divers événements, tels que:

    + + + +
      +
    • Le partage de fichiers dans Files
    • + + + +
    • La création de rendez-vous dans Agenda
    • + + + +
    • Les alertes de tâches dans Deck
    • + + + +
    • L'installation de mise à jour de sécurité
    • +
    + + + +

    Si tu utilises Yunohost, prends note que Nextcloud n'utilise pas la configuration du serveur SMTP de Yunohost, mais a sa propre configuration dans le fichier config/config.php.

    + + + +

    Pourquoi utiliser Postmark comme service SMTP

    + + + +

    L'envoi de courriel depuis notre propre serveur nous expose au risque de délivrabilité. En effet, la plupart des adresses IP des fournisseurs infonuagiques sont sur des listes d'exclusion dans les logiciels de filtre anti-spam.

    + + + +

    + + + +

    Pour éviter ça, c'est mieux d'utiliser un service SMTP reconnu qui a une bonne réputation. Dans mon cas, j'ai choisi Postmark. Il y en a aussi d'autres, mais j'ai commencé à utiliser celui-là avec un client et il m'a plu.

    + + + +

    + + + +

    Je l'utilise aussi maintenant pour envoyer ma cyberlettre.

    + + + +

    Où trouver les paramètres SMTP dans Nextcloud

    + + + +

    Pour configurer le service SMTP, il faut aller dans la section Administration, puis paramètres de base. L'adresse est https://<ŖACINE>/settings/admin

    + + + +

    + + + +

    Va ensuite dans la section Serveur de messagerie. Voici la bonne configuration

    + + + +
      +
    • Mode d'envoi: SMTP
    • + + + +
    • Chiffrement: Aucun (et c'est là qu'il y a cachette, ça va en fait utiliser STARTTLS)
    • + + + +
    • Adresse source: L'expéditeur, tel que configuré dans Postmark (ça ne te dira pas s'il y a erreur, mais tes courriels vont rebondir)
    • + + + +
    • Le port: smtp.postmarkapp.com
    • + + + +
    • Méthode d'authentification: Login
    • + + + +
    • Authentification requise
    • +
    + + + +

    Comment créer un jeton d'authentification unique dans Postmark

    + + + +

    Postmark offre la possibilité de créer un jeton d'authentification unique. C'est une bonne pratique, puisque s'il arrive de quoi, tu n'as qu'à le désactiver. De plus, c'est mieux que le nom d'utilisateur qui est identique au mot de passe.

    + + + +
      +
    • Ensuite, dans Postmark, génère un token SMTP depuis la page de paramètres avancés SMTP
    • +
    + + + +
    Localisation des instructions pour le SMTP chez PostMark
    + + + +

    Clique sur Authenticate with an SMTP token

    + + + +
    Paramètres avancés pour le SMTP chez PostMark
    + + + +
      +
    • Ensuite, clique sur Generate an SMTP Token, et copie le Access Key comme nom d'utilisateur et le Secret Key comme mot de passe dans Informations d'identification.
    • + + + +
    • Ça devrait ressembler à ceci
    • +
    + + + +
    Configuration des paramètres SMTP dans Nextcloud avec PostMark
    + + + +

    Il te reste maintenant à envoyer un courriel de test, et hop, ta configuration de Postmark avec Nextcloud devrait fonctionner !

    + + + +

    + + + +

    Articles connexes

    + + + + +]]>
    + + 4752 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[Mieux gérer les données dans ta business: 5 astuces]]> + https://jevalide.ca/2023/06/14/mieux-gerer-les-donnees-dans-ta-business-5-astuces-simples-et-rapides/ + Wed, 14 Jun 2023 19:13:18 +0000 + + https://jevalide.ca/?p=4783 + + +

    Ces 5 astuces astuces simples et rapides pour mieux gérer les données dans ton entreprise vont t'aider à:

    + + + +
      +
    • Mettre plus d'organisation et de sécurité dans tes affaires
    • + + + +
    • Mieux protéger ta clientèle
    • + + + +
    • Faire un bon bout de chemin pour respecter les obligations de la loi 25
    • + + + +
    • Et tout ça gratuitement, aucun achat requis !
    • +
    + + + +
    + + + +

    Cet article est issu d'une présentation LinkedIn Live en collaboration avec Collab Machine.

    + + + +
    +

    CollabMachine n’est pas seulement un site, c’est une machine à collaboration ! Plus de 1000 spécialistes dans tous les domaines de l’informatique, l’e-commerce et le marketing web sont nos collaborateurs.

    +
    + + + +

    1. Utilise un navigateur web sécuritaire

    + + + +
    + + + +
      +
    • Je recommande le navigateur Brave +
        +
      • Indépendant des firmes GAFAM
      • + + + +
      • Logiciel libre basé sur Chromium, le projet derrière Chrome
      • + + + +
      • Bloque les publicités et les maliciels sans devoir installer d'extension
      • + + + +
      • Permet de créer facilement des profils pour différents usages
      • +
      +
    • + + + +
    • Éviter d'enregistrer ses identifiants dans le navigateur +
        +
      • Attaque de plus en plus fréquente
      • + + + +
      • Utilise un gestionnaire de mots de passe à la place. Je recommande Bitwarden.
      • +
      +
    • +
    + + + +

    2. Archive tes fichiers avec des mots de passe

    + + + +
    + + + +

    Nous accumulons de plus en plus de données confidentielles dans nos entreprises.

    + + + +
      +
    • Le format Zip permet de protéger un ensemble de fichiers avec un mot de passe. En plus, ça prend moins de place !
    • + + + +
    • L'algorithme de chiffrement AES-256 utilisé par ce format n'a jamais été piraté et il est réputé "post-quantique".
    • + + + +
    • Je recommande d'utiliser l'application libre 7-Zip, qui gère de nombreux formats d'archives.
    • +
    + + + +

    3. Utilise une structure de fichiers dans ton ordinateur

    + + + +
    + + + +

    Une structure de fichiers hiérarchique va permettre de gérer ton contenu et aussi de gérer les accès si tu utilises un partage de fichiers (serveur ou stockage cloud tel que Google Drive ou Dropbox)

    + + + +

    Voici un exemple:

    + + + +
      +
    • Domaine d'activité (comptabilité, contrats, marketing, contenu de formation, projets clients, …)
    • + + + +
    • Parties prenantes
    • + + + +
    • Individu ou entreprise
    • + + + +
    • Projet
    • + + + +
    • Type de contenu
    • + + + +
    • Maturité du fichier
    • +
    + + + +

    Cette structure permet de mettre en place une politique Role-Based Access Control (RBAC):

    + + + +
      +
    • Groupes associés aux parties prenantes
    • + + + +
    • Utilisateurs pour les individus ou les entreprises
    • + + + +
    • Comptes invités par projet
    • +
    + + + +

    Pour avoir une démarche complète de protection des données, j'ai monté le programme Mission Cybersécurité (lien vers Collab Machine)

    + + + +

    4. Design tes formulaires web avec empathie et confidentialité en tête

    + + + +
    + + + +

    Un formulaire construit avec empathie va apporter davantage de réponses et elles vont être de meilleure qualité. Faire des bons questionnaires, c'est une autre façon de mieux gérer les données de notre clientèle.

    + + + +
      +
    • Utilise un langage inclusif
    • + + + +
    • Évite de proposer trop de choix de réponses
    • + + + +
    • Utilise une police d'écriture lisible par les dyslexiques
    • + + + +
    • Assures-toi que ta page est accessible sur mobile et pour les non-voyants
    • + + + +
    • Propose de sauvegarder les résultats intermédiaires
    • +
    + + + +

    Un formulaire ne devrait jamais servir de sondage. Ça devrait toujours être séparé pour garder la confidentialité

    + + + +

    Informations nominatives:

    + + + +
      +
    • Nom, prénom
    • + + + +
    • Date de naissance
    • + + + +
    • Adresse
    • + + + +
    • Courriel
    • + + + +
    • Numéro de téléphone
    • + + + +
    • Numéro de permis de conduire
    • + + + +
    • Numéro d'assurance sociale
    • +
    + + + +

    Informations confidentielles:

    + + + +
      +
    • État civil
    • + + + +
    • Identité sexuelle et de genre
    • + + + +
    • Ethnicité
    • + + + +
    • État de santé et situations de handicap
    • + + + +
    • Diagnostics de santé mentale
    • + + + +
    • Appartenance à une organisation politique, sociale ou un syndicat
    • + + + +
    • Pratiques religieuses ou spirituelles
    • +
    + + + +

    Pour en savoir plus, tu peux consulter mon blog à https://jevalide.ca/blog.
    Je publie souvent à ce sujet.

    + + + +

    5. Sauvegarde tes données de réseaux sociaux

    + + + +
    + + + +

    Nous produisons beaucoup de contenus et créons des relations sur les réseaux sociaux. Ce serait dommage de les perdre en se faisant désactiver son compte.

    + + + + + + + +

    Conclusion

    + + + +

    En appliquant ces 5 conseils, tu vas déjà pouvoir mieux gérer les données de ton entreprise et avoir des pratiques plus sécuritaires pour protéger ta clientèle.

    Ps: Je ne suis pas avocat, aucune information dans cet article ne constitue un avis juridique !

    + + + +

    + + + +

    Tu aimerais aller plus loin ? Rejoins Mission Cybersécurité maintenant !

    +]]>
    + + 4783 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[Comment détecter un courriel douteux]]> + https://jevalide.ca/2023/06/24/comment-detecter-un-courriel-douteux/ + Sun, 25 Jun 2023 01:21:08 +0000 + + https://jevalide.ca/?p=4830 + + +

    Je te présente ici les indices les plus courants pour détecter si un courriel est douteux, d'un point de vue de la cybersécurité. Il y a aussi plein d'autres types de courriels douteux, par exemple, ceux des coachs marketing et les invitations de dernière minute à des événements, mais ce n'est pas le sujet ici.

    + + + +

    Dans cet article, je vais faire le tour des différentes composantes visibles qui peuvent t'indiquer que tu as affaire à un courriel douteux

    + + + +

    Les indices pour identifier un courriel douteux

    + + + +
    Capture d'écran d'un courriel douteux contenant plusieurs éléments suspects qui seront décrit dans l'article: destinataire non pertinent, domaine pas rapport, identification vague, urgence, orthographe bizarre, pièce jointe non sollicités, lien avec url pas en lien avec l'expéditeur
    + + + +

    Indicateur dans le client courriel

    + + + +
      +
    • Il y a un indicateur de pourriel ou de courriel frauduleux dans ton client courriel
    • +
    + + + +
      +
    • Bien qu'ils se trompent parfois, les logiciels sont de plus en plus fiables en détection de courriels frauduleux, alors c'est un bon signe pour prêter attention à ce qui suit.
    • +
    + + + +

    L'expéditeur ou expéditrice du courriel

    + + + +
      +
    • L'adresse courriel m'est inconnue.
    • + + + +
    • Le courriel s'adresse à quelqu'un qui a une expertise ou un métier différents de la mienne.
    • + + + +
    • Le nom de domaine de l'adresse courriel est similaire à celui d'une grande entreprise en informatique, en télécommunication ou en livraison de colis, ou à celui d'un organisme gouvernemental.
    • + + + +
    • Je n'ai jamais eu de relation d'affaires avec l'individu ou l'entreprise qui m'envoie le courriel.
    • + + + +
    • Le courriel provient d'une adresse courriel qui m'est connue, mais à un moment où je ne m'y attendais vraiment pas.
    • +
    + + + +

    Le ou la destinataire

    + + + +
      +
    • La liste des destinataires n'est pas connue et je suis en copie conforme.
    • + + + +
    • Je vois les autres destinataires et c'est un ensemble incohérent de mes contacts et de personnes que je ne connais pas.
    • + + + +
    • Je ne vois pas que le courriel est destiné à moi dans l'entête.
    • +
    + + + +

    Le sujet

    + + + +
      +
    • Le courriel est un transfert de quelqu'un que je ne connais pas.
    • + + + +
    • Le courriel est une réponse d'un courriel que je n'ai jamais envoyé.
    • + + + +
    • Le sujet n'est pas cohérent avec le contenu du courriel.
    • + + + +
    • Le sujet contient des caractères servant à remplacer des lettres (3 pour e, par exemple).
    • +
    + + + +

    Le texte

    + + + +
      +
    • On t'identifie de façon vague: Cher client, Cher membre, ...
    • + + + +
    • On me parle de conséquences négatives ou d'un gain immédiat.
    • + + + +
    • Il y a un sentiment d'urgence exprimé dans le courriel.
    • + + + +
    • Le courriel contient trop de fautes d'orthographe ou étonnamment peu pour l'expéditeur ou expéditrice.
    • + + + +
    • Le courriel contient plusieurs polices d'écriture différentes.
    • + + + +
    • Le courriel mentionne que l'expéditeur possède des informations compromettantes.
    • +
    + + + +

    Les liens

    + + + +
      +
    • On me demande de cliquer sur un lien sans détails additionnels.
    • + + + +
    • Les liens ne correspondent pas à ce qui est affiché dans le texte du courriel.
    • + + + +
    • Le courriel contient une URL extrêmement longue avec des chaînes de caractères complexes.
    • + + + +
    • L'URL contient des caractères spéciaux, tels que des barres obliques plus grandes qu'à l'habitude ou des tirets double-cadratin (—).
    • + + + +
    • Le domaine se termine par zip.
    • +
    + + + +

    Les pièces jointes

    + + + +
      +
    • On me demande d'ouvrir une pièce jointe sans détails additionnels.
    • + + + +
    • Il y a une pièce jointe que je n'ai jamais demandée et qui n'est pas une signature électronique (.txt) ou une carte de visite (.vcf).
    • + + + +
    • L'extension de la pièce jointe m'est inconnue. Éviter d'ouvrir autre chose que des images PNG, JPG ou des documents PDF. Tu peux consulter les extensions les plus populaires sur cette page: Microsoft - Extensions de nom de fichier courantes dans Windows.
    • +
    + + + +

    Les outils automatisés pour identifier les courriels douteux

    + + + +

    Les clients courriel

    + + + +
      +
    • Un client courriel tel que Microsoft Outlook ou Mozilla Thunderbird pourra t'aider à identifier certains de ces éléments et va généralement afficher un bandeau d'avertissement. Il ne prendra pas action à ta place par contre
    • +
    + + + +

    Les logiciels antivirus

    + + + +
      +
    • Les logiciels antivirus peuvent scanner les pièces jointes et les liens pour identifier et bloquer les courriels douteux
    • +
    + + + +

    Les logiciels anti-spam

    + + + +
      +
    • Les logiciels anti-spam s'installent généralement au niveau du serveur de courriel. Ils vont attribuer une note de crédibilité au courriel, où 0 est un courriel très sécuritaire, et en haut de 5, la possibilité qu'il soit frauduleux est élevée. C'est ensuite à toi, via les paramètres de ton service de courriel, de fixer le seuil de tolérance. Par exemple, mon fourniseur FastMail permet de mettre différents niveaux prédéfinis de filtrage.
    • + + + +
    • Le logiciel anti-spam le plus populaire est Apache SpamAssasin. C'est un logiciel libre. Windows Defender pour Exchange permet de filtrer les courriels dans l'environnement Office 365.
    • +
    + + + +

    J'espère qu'avec ces conseils, tu auras tout ce qu'il te faut pour détecter et supprimer rapidement les courriels douteux.

    + + + +

    Autres contenus qui pourraient t'intéresser

    + + + + +]]>
    + + 4830 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[L'intégration continue, même pour les petites entreprises ?]]> + https://jevalide.ca/2023/06/29/l-integration-continue-meme-pour-les-petites-entreprises/ + Thu, 29 Jun 2023 17:22:46 +0000 + + https://jevalide.ca/?p=4850 + + +

    Je t'introduit aujourd'hui au concept de l'intégration continue. Mais, avant, je te mets un peu la table.

    + + + +

    Les humains ne sont généralement pas friands des changements à répétition. S'adapter à une nouvelle réalité, ça peut prendre du temps. Sauf si on y va une étape à la fois.

    + + + +


    Lorsqu'on crée du contenu avec l'informatique, que ce soit des logiciels, des documents ou des publications, on a tendance à garder les choses de notre côté pour faire des lancements, pour tout changer d'un seul coup.

    Mais, en faisant ça, on accumule beaucoup de charge mentale. On crée un moment où ça passe ou ça casse. Le risque d'avoir mis des efforts pour rien est énorme.

    Dans le monde logiciel, un des domaines d'ingénierie les plus complexes, on veut éviter de faire des grands dévoilement. Les gens de la SAAQ au Québec l'ont appris bien à leurs dépens. Les hauts dirigeants aiment ça couper le ruban et faire des cérémonies. Mais, d'un point de vue développement logiciel, et de relations de travail harmonieuses, c'est un plan foireux. Ça ne se passe jamais comme prévu.

    Les grandes firmes de consultation sont habituées de s'en mettre plein les poches avec les biais cognitifs des dirigeants. Mais, tu n'es pas dirigeant d'une grande entreprise, et tu te soucie de ton bien-être et de celle des gens autour de toi.

    L'intégration continue pourrait être une solution pour toi ! Tu pourrais apprendre à créer tes propres outils qui travaillent à ta place, à ton rythme !

    + + + +

    C'est quoi, l'intégration continue ?

    + + + +

    L'intégration continue, c'est un mécanisme qui permet d'intégrer les changements dans un produit numérique, tel que des documents ou du code, presque immédiatement.

    Ça met à profit deux technologies: la gestion des versions et l'automatisation.

    + + + +

    + + + +

    La gestion des version

    + + + +

    La gestion des version est apparue pour réconcilier le travail fait par des équipes distribuées qui travaillent sur des projets qui comportent de nombreuses composantes.

    C'est un moyen de ne pas se piler sur les pieds et de séparer le travail. Chacun part avec ses tâches, modifie les fichiers informatiques requis, puis envoie son travail à un serveur centralisé qui s'occupe d'intégrer les nouveautés au produit automatiquement.

    + + + +

    L'automatisation

    + + + +

    L'automatisation est composée de deux parties: les tests et le déploiement. Avant d'apporter des modifications à un contenu, tu veux t'assurer de ne rien briser.

    + + + +

    Les tests

    + + + +

    + + + +

    Les tests de non-régression vont t'assurer que les améliorations passées sont toujours présentes. Tu ne voudrais pas ramener des bogues que tu as déjà corrigés.

    Tu veux aussi t'assurer que les nouveauté fonctionnent bien comme prévu. Ce sont les tests unitaires qui vont permettre ça. Et enfin, pour t'assurer que le produit au complet est cohérent. on va faire des tests d'intégration.

    Une fois que tous les tests ont réussi, on passe à une nouvelle étape: le déploiement.

    + + + +

    Le déploiement

    + + + +

    Le but du déploiement est de remplacer l'ancienne version du produit par une nouvelle, sans devoir faire des opérations manuelles. On veut que ça soit le plus instantané possible.

    La pratique la plus fréquente est d'utiliser des conteneurs pour les logiciels et des générateurs de contenu statique pour les contenus rédigés tels que les documents ou les sites web. Au lieu de modifier, on supprime et on en crée un nouveau. Comme ça, on recommence toujours avec une version propre et on n'a pas à corriger les anciennes version.

    + + + +

    On utilise quels outils pour faire de l'intégration continue ?

    + + + +

    On va généralement utiliser trois outils différents:

    + + + +
      +
    • un gestionnaire de version, tel que GitHub ou GitLab
    • + + + +
    • un outil d'intégration, tel que Jenkins, ou encore ceux intégrés aux gestionnaires de versions tels que GitHub Actions ou GitLab CI/CD
    • + + + +
    • un outil d'exécution de tâches: +
        +
      • dans le cas de déploiements d'applications avec des conteneurs, on va construire une nouvelle image et la remplacer sur les serveurs où elle est exécutée (généralement, dans un environnement Docker Swarm ou Kubernetes). Ce travail se fait souvent avec un outil en ligne de commandes tel que ssh, kubectl ou oc.
      • + + + +
      • dans le cas de la production de sites web, on va utiliser un générateur de site statique tel que Jekyll ou Hugo, ou un générateur de document tel que Pandoc, PDFtk ou ImageMagick.
      • + + + +
      • Tu peux même déclencher des tâches à distance en utilisant des API ou des systèmes de composition de tâches tels que Zapier ou n8n !
      • +
      +
    • +
    + + + +
    Diagramme de Venn avec trois cercles: Programmation, Automatisation et Gestion de version. L'intersection des trois cercles est Intégration continue.
    + + + +

    Et ça demande beaucoup de ressources, tout ça ?

    + + + +

    Comme toute technologie, il y a une courbe d'apprentissage au départ. C'est normal ! Mais, l'avantage, c'est qu'une fois que tu as fait un premier projet d'automatisation, tu peux ensuite réutiliser tout ce que tu as développé pour les suivants. C'est un peu ça, la magie du code !

    + + + +

    Les compétences à développer

    + + + +

    Les compétences à développer seront utiles dans plusieurs aspects de ton entreprise:

    + + + +
      +
    • La gestion de versions: un excellent moyen de gérer les itérations avec ta clientèle. +
        +
      • Si tu fais de la rédaction, des sites web ou des logiciels, c'est incontournable ! Les juristes, en particulier, adorent utiliser la gestion de versions !
      • +
      +
    • + + + +
    • La programmation: savoir programmer permet de se sauver du travail ennuyeux en créant nos propres outils pour aller plus vite ! Pas besoin de devenir pro. Des scripts simples peuvent faire beaucoup pour nous !
    • + + + +
    • L'automatisation: ça te demande de mettre sur papier ton processus de création. Pour chacun de tes projets, il y a toujours une étape d'emballage qui se répète d'une fois à une autre. +
        +
      • Les graphistes, par exemple, fournissent différents formats des mêmes contenus dans plusieurs formats de fichiers.
      • + + + +
      • Les gens en rédaction publient sous forme de blogs, de eBook et de présentations visuelles.
      • + + + +
      • Les créateurs et créatrices de contenus vont exporter dans des formats différents pour plusieurs réseaux sociaux.
      • +
      +
    • +
    + + + +

    C'est tout à fait réaliste pour une personne d'apprendre les bases de l'intégration continue et d'ajouter ces compétences à celles d'entrepreneur ou d'employé spécialisé. Même dans une petite entreprise. C'est même là qu'on va y trouver le plus grand gain étant donné les ressources limitées.

    Mais, comme toute gestion du changement, ça ne se fait pas du jour au lendemain. Il faut accepter de faire un peu d'essais et erreurs pour trouver la bonne formule pour nous ! C'est un apprentissage qui, de par mon expérience, peut se faire à un rythme de quelques heures par semaine sur un mois ou deux.

    + + + +

    + + + +

    Si tu souhaites avoir un accompagnement en développement d'outils et en intégration continue, inscris-toi à mon infolettre, je lance mon programme Y'app pas d'problème à l'automne 2023.

    +]]>
    + + 4850 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[La fabrique à documents est maintenant libre !]]> + https://jevalide.ca/2023/07/05/la-fabrique-a-documents-est-maintenant-libre/ + Wed, 05 Jul 2023 19:41:41 +0000 + + https://jevalide.ca/?p=4889 + + +

    Jadis (quand il y avait de la neige), j'ai créé un groupe pour tester mon outil La fabrique à documents. Je crois que le format que j'ai proposé n'était pas idéal pour tester ce genre de logiciels.

    Alors j'ai simplement décidé de libérer le code de mon outil en public.

    + + + +

    C'est quoi, La fabrique à documents ?

    + + + +

    La fabrique à documents est un outil qui convertit un contenu rédigé en syntaxe Markdown vers différents formats pour la publication ou les réseaux sociaux, tels que des stories, des publications ou des e-book en format PDF.

    + + + +


    Voici une vidéo résumé du projet:

    + + + +
    + + + +


    C'est un projet expérimental, en cours de développement, disponible sous licence GNU Affero General Public License (AGPL-3.0). Toute contribution est bienvenue !

    + + + +

    + + + +

    C'est une application en deux parties:

    + + + +

    - un client graphique pour entrer le texte, les images et gérer les options, basé sur Streamlit

    + + + +

    - un backend basé sur FastAPI

    + + + +

    Le tout peut être utilisé localement sur ton ordinateur avec Docker Desktop (je montre comment faire)

    + + + +

    Si tu es plus avancé, tu peux le déployer sur un serveur de containers Docker tel que CapRover ou Dokku, ou un cluster Kubernetes/OpenShift.

    + + + +


    L'application vient par défaut avec mes thèmes que tu pourras (devras) remplacer par les tiens !

    + + + +

    + + + +

    Les liens

    + + + +

    La documentation se trouve ici:

    + + + +

    https://git.jevalide.ca/partage/fabriquedoc-documentation

    + + + +


    Le serveur ici:

    + + + +

    https://git.jevalide.ca/partage/fabriquedoc-backend

    + + + +


    Et l'interface ici:

    + + + +

    https://git.jevalide.ca/partage/fabriquedoc-frontend

    +]]>
    + + 4889 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[Le langage DOT pour visualiser des graphes]]> + https://jevalide.ca/2023/07/10/le-langage-dot-pour-visualiser-des-graphes/ + Tue, 11 Jul 2023 00:00:00 +0000 + + https://jevalide.ca/?p=4893 + + +

    J'utilise le langage DOT pour visualiser des graphes dans mes documents. C'est un langage qui a été développé en parallèle avec le logiciel de génération de visualisation de graphes Graphviz.

    + + + +

    Le langage DOT est différent de Tikz ou D3 parce qu'il permet de définir ce que tu veux voir . Il favorise la description plutôt que de déterminer la position de chaque élément de manière précise. C'est un langage basé sur les données, ou les décisions d'agencement se prennent avec des algorithmes.

    Tu ne contrôles donc pas vraiment la sortie. Par contre, tu as une garantie que le graphe va être cohérent avec ce que tu as saisi en entrée.

    + + + +

    Le langage DOT permet de créer deux types de graphes:

    + + + +
      +
    • des graphes orientés (avec des flèches)
    • + + + +
    • des graphes non orientés (avec des arêtes).

      Voici un exemple de graphe orienté:
    • +
    + + + +
    Une visualisation de graphe avec Graphviz. Un graphe orienté et cyclique.
    + + + +

    Voici le code DOT pour définir ce graphe.

    + + + +
    digraph {
    +    label="Guide de dépannage"
    +    bgcolor="beige"
    +    rankdir="LR";
    +    subgraph {
    +        node [margin=0 fontcolor=black style=filled shape=""]
    +        a [label="Au secours ?", fillcolor="red"]
    +        b [label="Met à jour ton système", fillcolor="yellow"]
    +        c [label="Redémarre ton ordinateur", fillcolor="green"]
    +        d [label="Supprime tous les plugins inutiles", fillcolor="yellow"]
    +        e [label="Met à jour ton navigateur", fillcolor="green"]
    +
    +        a -> b [label="ton ordi ?"] 
    +        b -> c
    +        c -> a
    +        a -> d [label="un site web ?"] 
    +        d -> e
    +        e -> a
    +    }
    +}
    +
    + + + +

    Mais ça ne s'arrête pas là ! On peut aussi créer toutes sortes de diagrammes avec ce logiciel-là !

    + + + +

    DOT permet de définir des formats de tableau, des organigrammes et plusieurs autres structures.

    + + + +

    Voici un exemple simple de graphe formé de deux tableaux:

    + + + +
    Une visualisation de graphe avec Graphviz. Un graphe formé de deux tableaux.
    + + + +

    Voici le code pour définir ces tableaux.

    + + + +
    digraph {
    +    tableau1 [shape=record, 
    +    label="Enregistrement|{<f0>étiquette 1|<f1>étiquette 2|<f2>étiquette 3}|description"]
    +    tableau2 [shape=record, 
    +    label="Enregistrement|{<f0>étiquette 4|<f1>étiquette 5|<f2>étiquette 6}|description"]
    +    tableau1 -> tableau2
    +}
    + + + +

    Tu peux découvrir DOT sur le site officiel de Graphviz. C'est un logiciel libre. Il est intégré à de nombreux éditeurs tels que Visual Studio Code, à travers une extension. Tu peux aussi utiliser l'éditeur en ligne Edotor.

    + + + +

    Tu pourras aussi trouver de nombreux exemples via les moteurs de recherche. C'est un outil qui a fait ses preuves dans le domaine technique et académique.

    Tu ne t'en doutes probablement pas, mais plusieurs des logiciels que tu utilises qui travaillent avec des graphes se servent de Graphviz !

    + + + +

    + + + +

    Articles connexes

    + + + + +]]>
    + + 4893 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[Manipulation de fichiers texte avec sed, AWK et grep]]> + https://jevalide.ca/2023/07/09/manipulation-de-fichiers-texte-avec-sed-awk-grep/ + Sun, 09 Jul 2023 14:43:08 +0000 + + https://jevalide.ca/?p=4929 + + +

    Le but de cette mini-formation est d'introduire trois outils courants dans le monde POSIX pour traiter des fichiers texte. Ces outils sont disponibles sur toutes les distributions Linux, ainsi que sur MacOS et dans Windows Subsystem for Linux.

    + + + +
      +
    • sed, un éditeur de flux de texte
    • + + + +
    • AWK, un langage de programmation orienté par les données
    • + + + +
    • grep, un outil de sélection d'enregistrements
    • +
    + + + +

    Introduction

    + + + +
      +
    • Nous avons souvent à travailler avec des données en format texte, que ce soit des fichiers CSV, du HTML ou des fichiers de journalisation de différents outils et systèmes.
    • + + + +
    • Il peut être tentant de travailler avec des langages tels que R ou Python avec ce type de fichiers, mais ils sont limités par la mémoire. Parfois même, les fichiers ne sont pas lisibles par ces langages dus à des problèmes de bas niveau.
    • + + + +
    • Les trois outils présentés fonctionnent à la volée, une ligne à la fois, avec des besoins en mémoire limités. Ils peuvent sans problème traiter des gigaoctets de données sur un ordinateur personnel.
    • + + + +
    • Ils sont installés par défaut sur tout Linux et macOS, ce qui les rend faciles d'accès. Par contre, ils ne sont pas disponibles dans Windows.
    • +
    + + + +

    sed

    + + + +
      +
    • sed signifie Stream EDitor
    • + + + +
    • C'est un logiciel assez simple, qui prend en argument une expression régulière et un fichier en entrée. Il retourne ses résultats à la sortie standard. On peut écrire cette sortie dans un fichier avec un chevron droit > ou la rediriger vers un autre programme avec un tube|.
    • + + + +
    • Ce programme effectue principalement un "rechercher et remplacer".
    • +
    + + + +

    La syntaxe la plus utilisée est de la forme suivante :

    + + + +
    sed -e 's/Ancien/Nouveau/g' nomFichierEntrée > nomFichierSortie
    + + + +

    L'expression est composée de commandes (s pour substitution), de deux expressions régulières et de drapeaux (g pour global). La deuxième expression peut aussi inclure des références vers les groupes de la première expression.

    + + + +

    Il est possible d'éditer sur place et de créer une copie de sauvegarde

    + + + +
    sed -ibak 's/Ancien/Nouveau/g' nomFichierEntrée
    + + + +

    awk

    + + + +

    AWK est un langage de programmation orienté par les données. En fait, ce sont les données qu'on lui passe en entrée qui déterminent le flux d'exécution. Il sert entre autres à produire du code automatiquement selon un fichier de paramètres.

    + + + +

    La version la plus utilisée d’AWK est GNU AWK, appelé avec la commande gawk.

    + + + +

    Un programme prend la forme suivante :

    + + + +
    awk [options] [programme] [fichier]
    + + + +

    Les principales options utilisées sont :

    + + + +
      +
    • -F: le séparateur de champs, utile pour lire un CSV par exemple
    • + + + +
    • -f: le programme dans un fichier externe
    • + + + +
    • -v: Initialiser des variables depuis l'environnement bash.
    • +
    + + + +

    Le programme a la structure suivante : 'motif{action}motif{action}'

    + + + +

    Le motif est soit une expression régulière, une variable ou un motif spécial : BEGIN ou END

    + + + +

    grep

    + + + +

    La commande grep provient de global regular expression print et permet de rechercher les lignes qui contiennent une certaine expression régulière dans un texte, un fichier ou un répertoire de fichiers.

    Utilisé en combinaison avec d'autres commandes, c'est le principal outil de recherche des systèmes POSIX.

    + + + +

    La syntaxe de grep est :

    + + + +
    grep 'expression' fichiers
    + + + +

    Exemples de manipulation de fichiers texte

    + + + +

    Données

    + + + +

    Nous travaillerons sur un extrait de texte libre : Amusements in Mathematics par Henry Ernest Dudeney
    Il s'agit d'un recueil de problèmes mathématiques

    + + + +
    wget https://ia800300.us.archive.org/27/items/amusementsinmath16713gut/16713.txt
    + + + +

    Voici un aperçu du contenu, extrait avec ce programme que nous étudierons

    + + + +
    cat 16713.txt | \
    +gawk 'BEGIN{count=1}/^9\.\-\-/{print "Extrait : "count" ";flag=1;count++;next}/^10\.\-\-/{flag=0}flag{print NR": "$0}' - | \
    +grep '^[Extrait|0-9]\+ :\s\w\+' | \
    +sed -E 's/L([0-9]*.?[0-9]+)/\1$/g'
    + + + +
    Extrait : 1
    +399 : A man recently bought two aeroplanes, but afterwards found that they
    +400: would not answer the purpose for which he wanted them. So he sold them
    +401: for 600$ each, making a loss of 20 per cent. on one machine and a profit
    +402: of 20 per cent. on the other. Did he make a profit on the whole
    +403: transaction, or a loss? And how much?
    +Extrait : 2
    +11569 : The man must have paid 500$ and 750$ for the two machines, making
    +11570: together 1,250$; but as he sold them for only 1,200$, he lost 50$ by the
    +11571: transaction.
    + + + +

    AWK

    + + + +

    Explorons la première section de la commande :

    + + + +
    gawk 'BEGIN{count=1}/^9\.\-\-/{print "Extrait : "count" ";flag=1;count++;next}/^10\.\-\-/{flag=0}flag{print NR" : "$0}' -
    + + + +

    Le programme lié au motif BEGIN est exécuté avant la lecture du fichier en entrée.

    + + + +
      +
    • Initialisation de la variable count à 1. Ce compteur sert à numéroter les différents extraits.
    • +
    + + + +

    Ensuite, le programme parcourt le fichier ligne par ligne jusqu'à ce qu'il rencontre une des situations suivantes :

    + + + +
      +
    • ^9\.\-\-
    • + + + +
    • ^10\.\-\-
    • + + + +
    • la variable flag vaut 1
    • +
    + + + +

    À ce moment, il exécutera le code associé à chacune d'elles. Dans le premier cas, il imprimera le numéro de l'extrait print "Extrait : "count" ", mettra l'indicateur flag=1 et incrémentera le compteur count++.

    + + + +

    Pendant que la variable flag vaut 1, les lignes sont imprimées, incluant le numéro de la ligne au début, représenté par la variable NR.

    + + + +

    Lorsque la deuxième expression est rencontrée, le flag reprend la valeur 0 et les lignes cessent d'être imprimées. Ce programme permet donc d'extraire tous les blocs de texte inclus entre des lignes commençant par 9.-- et 10.--. Dans notre cas, il s'agit du problème # 9 et de sa solution.

    + + + +

    La sortie obtenue est la suivante :

    + + + +
    Extrait : 1
    +398 :
    +399 : A man recently bought two aeroplanes, but afterwards found that they
    +400: would not answer the purpose for which he wanted them. So he sold them
    +401: for L600 each, making a loss of 20 per cent. on one machine and a profit
    +402: of 20 per cent. on the other. Did he make a profit on the whole
    +403: transaction, or a loss? And how much?
    +404:
    +405:
    +Extrait : 2
    +11568 :
    +11569 : The man must have paid L500 and L750 for the two machines, making
    +11570: together L1,250; but as he sold them for only L1,200, he lost L50 by the
    +11571: transaction.
    +11572:
    +11573:
    + + + +

    grep

    + + + +

    Explorons maintenant la deuxième expression :

    + + + +
    grep '^[Extrait|0-9]\+:\s\w\+'
    + + + +

    Cette expression sert à conserver les lignes qui ne sont pas vides, c'est-à-dire contenant au moins un mot \w+ après le numéro de ligne ou le mont Extrait, et la séquence : \s . C'est donc un filtre sur les lignes qui nous permet d'obtenir :

    + + + +
    Extrait : 1
    +399 : A man recently bought two aeroplanes, but afterwards found that they
    +400: would not answer the purpose for which he wanted them. So he sold them
    +401: for L600 each, making a loss of 20 per cent. on one machine and a profit
    +402: of 20 per cent. on the other. Did he make a profit on the whole
    +403: transaction, or a loss? And how much?
    +Extrait : 2
    +11569 : The man must have paid L500 and L750 for the two machines, making
    +11570: together L1,250; but as he sold them for only L1,200, he lost L50 by the
    +11571: transaction.
    + + + +

    Lorsque la commande est exécutée dans un terminal supportant les couleurs, les chaines de caractères correspondant à l'expression recherchée seront en couleur.

    + + + +
    Exemple d'utilisation de AWK et de grep pour faire une manipulation de fichier texte, avec de la couleur
    + + + +

    sed

    + + + +

    Explorons enfin la dernière commande :

    + + + +
    sed -E 's/L([0-9]*.?[0-9]+)/\1$/g'
    + + + +

    Nous voulons remplacer les montants en livres pour des dollars.

    Cette commande recherche un nombre décimal précédé de L. Nous voulons le remplacer par le même nombre, suivi d'un symbole de dollar $.

    Le groupe que l'on désire identifier et conserver est placé entre parenthèses. C'est un groupe de capture. On peut ensuite rappeler ces groupes dans la substitution à l'aide des marqueurs de groupes \1... \9.

    + + + +


    On obtient enfin

    + + + +
    Extrait : 1
    +399 : A man recently bought two aeroplanes, but afterwards found that they
    +400: would not answer the purpose for which he wanted them. So he sold them
    +401: for 600$ each, making a loss of 20 per cent. on one machine and a profit
    +402: of 20 per cent. on the other. Did he make a profit on the whole
    +403: transaction, or a loss? And how much?
    +Extrait : 2
    +11569 : The man must have paid 500$ and 750$ for the two machines, making
    +11570: together 1,250$; but as he sold them for only 1,200$, he lost 50$ by the
    +11571: transaction.
    + + + +

    Articles connexes

    + + + + +]]>
    + + 4929 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[Comment sauvegarder une formation Thrivecart Learn?]]> + https://jevalide.ca/2023/07/22/comment-sauvegarder-une-formation-thrivecart-learn/ + Sat, 22 Jul 2023 20:53:29 +0000 + + https://jevalide.ca/?p=4959 + + +
    + + + +

    J'ai préparé un outil qui te permettra de sauvegarder une formation Thrivecart Learn hors-ligne.

    + + + +

    + + + +

    Tu as investi beaucoup de temps dans la création de ta formation sur Thrivecart Learn. Ce serait vraiment chiant si elle devait être supprimée par erreur et que tu devais reconstruire toutes tes pages.

    + + + +

    + + + +

    Malheureusement, c'est quelque chose qui pourrait t'arriver, parce que Thrivecart Learn n'a pas de sauvegardes intégrées. Il suffit d'une mauvaise manipulation pour supprimer une page, un module ou même ta formation au complet, sans pouvoir revenir en arrière.

    + + + +

    + + + +

    Mon outil règle ce problème là !

    + + + +

    + + + +

    Cet outil n'est pas parfait, et il ne permet pas, par exemple, de sauvegarder les contenus intégrés tels que les vidéos ou les documents. Il sauvegarde les pages, les images et les liens, tels qu'ils sont vus lorsqu'on visite ta page.

    + + + +

    + + + +

    Si tu dois recréer une page, tu devras quand même recréer tous les blocs de ta page un par un. Mais, au moins, tu va avoir tout le contenu sous la main, et les images, elles devraient avoir resté en place, parce qu'elles sont hébergées séparément chez Amazon S3.

    + + + +

    + + + +

    Cet outil utilise le langage de programmation Python. Tu devras donc installer un environnement pour exécuter du code Python sur ton ordinateur si tu n'en as pas déjà. Je vais te guider comment faire !

    + + + +

    Installer Python et Jupyter

    + + + +

    Pour utiliser cet outil, tu as besoin de Jupyter Notebook.

    Sur Windows, tu peux utiliser la plateforme Anaconda.

    + + + + + + + +

    Pour Mac, tu peux installer Python avec Homebrew.

    + + + + + + + +

    Avec Linux, il va souvent déjà être installé, la version va varier selon ta distribution.

    + + + +


    Pour utiliser les Notebook, il faut soit

    + + + +
      +
    • (recommandé) utiliser un éditeur de code tel que Visual Studio Code + +
    • + + + +
    • installer jupyter notebook (Jupyter Lab) dans Python +
        +
      • pip install jupyterlab
      • + + + +
      • Démarrer Jupyter Lab depuis ton projet avec la ligne de commande +
          +
        • jupyter lab
        • +
        +
      • +
      +
    • +
    + + + +

    Une fois que tu as Python et Jupyter Notebook de fonctionnel, c'est le temps de cloner le projet. Voici le lien:
    https://git.jevalide.ca/partage/backup-thrivecart-learn

    + + + +

    + + + +
      +
    • Tu peux télécharger une archive zip et l'extraire (1).
    • +
    + + + +
      +
    • Si tu sais utiliser git, tu peux cloner directement vers Visual Studio Code (2).
    • +
    + + + +
    + + + +

    + + + +

    Maintenant, crée toi un environnement Python dans le projet que tu as téléchargé ou cloné précédemment.

    + + + +
      +
    • Sur Windows
    • +
    + + + +
    python -m venv c:\chemin-vers-ton-projet\backup-thrivecart-learn\venv
    +C:\chemin-vers-ton-projet\backup-thrivecart-learn\venv\Scripts\activate.bat
    + + + +
      +
    • Sur Mac et Linux
    • +
    + + + +
    python -m venv ./venv
    +source ./venv/bin/activate
    + + + +

    Installe le contenu du requirements.txt. Ce sont les librairies Python requises pour faire fonctionner le notebook.

    + + + +
    pip install -r requirements.txt
    + + + +

    Aller chercher les informations de Thrivecart Learn

    + + + +

    Nous avons besoin d'informations de connexion pour le module Learn de ThriveCart. La sauvegarde utilise une connexion active basée sur des cookies. Tu dois donc te connecter à la formation comme apprenant et obtenir ces cookies.

    + + + +

    + + + +

    Voici comment faire:

    + + + +

    + + + +
      +
    • Depuis un navigateur, va dans les outils de développeur (touche F12)
    • + + + +
    • Connecte toi à ta formation avec un compte apprenant (inscris-toi à ta formation avec un code rabais de 100%, le compte "John Smith" ne fonctionne pas).
    • + + + +
    • Tu devrais voir dans la section Réseau (Network en anglais) une page avec le nom de ta formation en haut de la liste.
    • + + + +
    • Clique dessus, et tu devrais voir les informations de la capture ci-dessous
    • +
    + + + +
    + + + +

    Remplir le Jupyter Notebook avec les informations

    + + + +

    Ensuite, complète les premières section du notebook thrivecart-backup.ipynb en l'ouvrant dans ton éditeur de code tel que Visual Studio Code (le plus facile).

    + + + +

    + + + +
      +
    • Dans la section URL, entre l'URL complète de ta formation tel que vue par les apprenants, et non celle que tu vois lorsque tu bâtis la formation.
    • + + + +
    • Dans la section headers, met le contenu du bloc User-Agent identifié précédemment.
    • + + + +
    • Dans la section cookies, remplis avec les cookies que tu as trouvé dans la section Cookie. Il se peut que tu aies à supprimer ou ajouter des entrées. L'idée c'est de faire croire au site web que tu navigues toujours dedans depuis ton navigateur web.
    • +
    + + + +

    + + + +
    Informations provenant de Thrivecart Learn à compléter dans le Jupyter Notebook: URL de la formation, user-agent et bloc de cookies
    + + + +

    Exécuter le Jupyter Notebook

    + + + +

    Tu devrais pouvoir l'exécuter d'un seul coup de haut en bas une fois que tu as complété les informations tel que j'ai indiqué sur la capture d'écran.

    + + + +

    + + + +

    La sauvegarde va être dans le dossier html. Si tu veux faire plusieurs sauvegardes, je te conseille de faire un notebook différent. Fais attention de ne jamais partager le notebook avec les identifiants sur le web, ils sont secrets !

    + + + +

    + + + +

    J'espère que cet outil de sauvegarde pourra te rendre service !

    + + + +

    Commentaires et améliorations

    + + + +

    Tu peux me partager des commentaires ou améliorations via ce lien:

    + + + +

    https://nc.jevalide.ca/apps/forms/s/Fi5Y8epFWgzSZ9njJYkgZ3Jm

    N'hésites surtout pas à partager cet outil pour sauvegarder une formation Thrivecart Learn sur les réseaux sociaux et à tes contacts en faisant le lien vers cette page !

    + + + +

    Mission Cybersécurité

    + + + +

    Si tu veux prendre soin de tous les aspects de cybersécurité dans ta petite entreprise, j'ai préparé une formation pour toi.

    Gestion des mots de passe, double authentification, sauvegardes, courriels, contenus, site web ... Tout ça te stresse ? Je te montre comment sécuriser tout ça !

    Rejoins-nous ici: https://jevalide.ca/missioncyber

    + + + +

    + + + +

    Mission Cybersécurité est ta porte d'entrée pour obtenir du support en groupe (inclus) et personnalisé (à un tarif horaire préférentiel).

    Je n'offre pas de support individuel en cybersécurité en dehors de ma formation !

    + + + +

    Contenus connexes

    + + + + +]]>
    + + 4959 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[Moteur de recherche, moteur de requête et modèle de langage]]> + https://jevalide.ca/2023/07/26/moteur-de-recherche-moteur-de-requete-et-modele-de-langage/ + Wed, 26 Jul 2023 18:24:39 +0000 + + https://jevalide.ca/?p=4988 + + +

    Dans cet article, je vais t'expliquer ce que sont les moteur de recherche, moteur de requête et modèle de langage, et pourquoi ils sont complémentaires (et non substituables).

    + + + +

    Mise en contexte

    + + + +

    De plus en plus d'apprentis-experts en intelligence artificielle (les copywriters déchus de la mode crypto-NFT qui ont du se réinventer en décembre 2022) inondent les réseaux sociaux de propos les plus désinformés les uns les autres.

    À coup de grands superlatifs et de discours décousus aux yeux des plus attentifs, ils vantent les nouveaux jouets d'OpenAI comme s'ils en était des porte-paroles payés à coup de millions:

    + + + +
      +
    • Google est mort.
    • + + + +
    • C'est la fin des logiciels et des bases de données.
    • + + + +
    • Si tu n'apprends pas l'AI le chômage t'attend.
    • + + + +
    • Multiplie ta productivité par 10
    • +
    + + + +

    À ces influenceurs, je leur dis: Wô minute mon p'tit clown.

    + + + +

    Démêlons tout ça !

    + + + +

    Ce sont trois outils utilisés dans le domaine de l'analyse du langage naturel (NLP en anglais) à ne pas confondre avec la pratique de mieux-être "Programmation Neuro-Linguistique".

    + + + +

    + + + +

    Prenons un exemple tout simple pour illustrer le fonctionnement et l'utilisation de ces trois outils bien différents:

    + + + +
    1. Je mange une pomme
    2. Il mange des fraises
    + + + +

    + + + +

    Moteur de recherche

    + + + +

    Un moteur de recherche, aussi appelé index inversé, va prendre un contenu, généralement du texte ou un document, et indexer toutes les valeurs qu'il contient en faisant une tokenisation, puis en l'associant au document.

    La tokenisation est une opération où on crée des jetons, formés souvent de syllabes, de mots ou de phrases, selon nos besoins. On peut ensuite leur associer un identifiant unique dans une base de données. À des fins de simplification, je vais assumer ici qu'un jeton équivaut à un mot.

    + + + +

    + + + +

    Notre exemple devient ceci sous la forme d'un index inversé. Comme tu remarques, c'est la même forme que ce qu'on retrouve à la fin de certains livres de référence. Contrairement à la table des matières qui est chronologiques, on associe ici les différents positions de chacun des jetons.

    + + + +
    Je:1
    +mange:1,2
    +une:1
    +pomme:1
    +Il:2
    +des:2
    +fraises:2
    + + + +

    Ensuite, si je cherche pomme, il me retourne le document 1.
    Si je cherche mange, il me retourne les documents 1 et 2.

    L'ordre des documents 1 et 2 peut changer si je mets d'autres mots clés. S'il y a trop de documents, il va retourner les "meilleurs". Et c'est là la force des moteurs basés sur la sémantique (synonymes, contextes ...) qui calculent la pertinence des pages. PageRank, par exemple, développé par Larry Page, le co-fondateur de Google, est un algorithme de pertinence basé sur le contexte qui utilise les liens entrants.

    Les algorithmes recherche sont variés et peuvent être optimisés sur plusieurs critères différents, dont certains à des fins commerciales. Mais dans tous les cas, un moteur de recherche va retourner des documents basé sur leur index et une mesure de pertinence.

    + + + +

    Quelques exemples

    + + + +

    Voici des moteurs de recherche en logiciel libre:

    + + + + + + + +

    Quelques moteurs privatifs

    + + + + + + + +

    Moteur de requête

    + + + +

    Un moteur de requête, c'est pour interroger une base de données.
    Il va te retourner tous les documents qui correspondent exactement à ta requête, sans opinion ni priorisation a priori, dans l'ordre qu'il les croise. Sur certains sites web, les moteurs de recherchent se confondent avec les moteurs de requêtes de par leur interface.

    Le langage le plus fréquent pour faire des requêtes est le SQL, pour Structured Query Language. Supposons ici que nous avons mis nos deux exemples dans une table nommée documents, dans une base de données relationnelle. Pour trouver les documents qui contiennent le mot pomme, on utilise cette requêtes. Ici, ce sont les caractères dans le texte qui sont recherchés et non un jeton. Lorsque tu utilises la fonction "rechercher" dans un traitement de texte (ou avec les touches Control+F), tu fais un peu la même chose.

    + + + +
    select * from documents where content like %pomme%
    + + + +

    Cette requête va me retourner l'entrée de la base de données suivante, si on utilise le format de sortie en JSON.

    + + + +
    {"index":1, "content": "Je mange une pomme"}
    + + + +

    + + + +

    Sinon, ce sera un tableau

    + + + +
    indexcontent
    1Je mange une pomme
    Requête issue de la table documents
    + + + +

    Un moteur de requêtes va fournir des résultats similaires à ceux d'un moteur de recherche, mais avec un fonctionnement et des objectifs différent et complémentaires.

    + + + +

    + + + +

    Quelques exemples

    + + + +

    Je te mentionne quelques bases de données libres avec leur langage de requêtes:

    + + + + + + + +

    D'autres alternatives privatives populaires (entrepôts de données):

    + + + + + + + +

    Le modèle de langage

    + + + +

    Un modèle de langage est un algorithme qui a été construit en observant l'alignement de jetons dans des textes. Il est entraîné pour donner le mot qui suit dans un énoncé, ou encore pour donner le mot manquant dans un contexte de dictée trouée. Les premiers modèles de langage ont été développés dans les années 1960, et la science de la linguistique informatique a progressé jusqu'à nous.

    + + + +

    + + + +

    Dernièrement, l'apparition de modèles GPT (Generalized Pretrained Transformers) a rendu populaire plusieurs applications tels que les modèles génératifs. Ils écrivent du texte basé sur leur apprentissage des structures de phrases et des proximités de mots, combiné à des instructions données dans un "prompt".

    On peut le "personnaliser" avec notre contenu pour augmenter la probabilité que certains mots soient utilisés.

    + + + +


    Si on limite la portée d'un modèle de langage à nos deux exemples, le prompt "Il mange des" va probablement retourner "fraises", parce que c'est associé à "il" et non à "je".

    On s'entend ici que ça n'a aucun sens, mais un modèle de langage, ça construit des phrases, ça n'analyse pas le contexte ni la sémantique.

    + + + +


    Le prompt "Je bois des" va probablement retourner "pommes". Même si on sait que des pommes ne se boivent pas, il va faire cette proposition parmi les deux phrases du contexte. C'est probablement parce qu'il a déjà vu "pomme" avec "jus" et "jus" avec "boire" souvent dans son entraînement.

    + + + +

    À faire attention

    + + + +

    Le modèle de langage n'est pas conscient de l'existence des documents "Je mange une pomme" et "Il mange des fraises" et ne peux donc pas expliquer d'où viennent ses réponses. C'est pourquoi il est possible qu'il invente des réponses qui ne font aucun sens!

    Il peut seulement inférer la proximité ou non de certains mots ou contextes en se basant sur sa structure interne, appelée un plongement (embedding en anglais). Mais, il est possible de le combiner à un moteur de requêtes pour lui fournir de l'information factuelle et un moteur de recherche pour lui fournir de nouvelles sources d'information.

    + + + +


    Quelques exemples

    + + + +

    Voici des logiciels libres pour utiliser des modèles de langage:

    + + + + + + + +

    Quelques modèles de langage larges et "ouverts" (il y a de nombreux enjeux éthiques non-adressés avec ces modèles):

    + + + + + + + +

    Pour utiliser ces modèles des langage, tu peux:

    + + + +
      +
    • passer par spaCy ou la librairie Transformers de HuggingFace dans le langage Python
    • + + + +
    • Utiliser le logiciel libre ollama (Linux, WSL ou MacOS) qui permet d'utiliser directement les modèles sur ton ordinateur via la ligne de commande.
    • + + + +
    • Utiliser un exécutable llamafile, une technique développée par Mozilla
    • +
    + + + +

    Ces modèles peuvent utiliser un nouveau type de bases de données, appelées bases vectorielles, pour améliorer la création de prompts et fournir un contexte.

    + + + +

    Pour résumer ...

    + + + +

    Un moteur de recherche retourne les meilleurs documents correspondant aux mots mentionnés dans la requête. Il se base sur un index contenant tous les jetons provenant des documents. Ça permet d'associer les jetons aux documents où chacun se trouve. Son objectif, c'est d'offrir des choix pertinents à explorer.

    + + + +

    Un moteur de requêtes va extraire toutes les informations d'une base de données qui correspondent exactement à la requête en entrée. Il sert à faire un inventaire de tout ce qui est disponible.

    Un modèle de langage va compléter des phrases ou des textes en se basant sur un apprentissage de la structure de la langue. Il peut aussi utiliser des informations complémentaires en entrée sous la forme de prompt. Il sert surtout à trouver de nouvelles idées.

    + + + +

    En savoir plus

    + + + + +]]>
    + + 4988 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[Libère-toi des p'tit monstres informatiques]]> + https://jevalide.ca/2023/08/13/libere-toi-des-ptit-monstres-informatiques/ + Sun, 13 Aug 2023 04:01:00 +0000 + + https://jevalide.ca/?p=5021 + + +

    Ce produit à durée éphémère n'est plus disponible

    + + + +

    + + + +

    Merci de participer au Festival web de création de contenu 2023 !

    Tu es sur la bonne page pour recevoir ton guide amusant.

    Je vais t'aider à te libérer des p'tit monstres informatiques qui embêtent ton quotidien !

    + + + +
    + + + +
    +
    +

    C'est ici que ça se passe !

    + +

    Ton courriel:

    +

    Ton prénom (facultatif):

    + +

    + + +

    + +

    +
    +
    + + + +

    En recevant ton guide, tu seras abonné.e à ma cyberlettre.

    Tu recevras un courriel de confirmation avant de recevoir le guide (ça prend environ 5 minutes pour que mes p'tites bêtes se mettent au travail et envoient ton guide).

    +]]>
    + + 5021 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[La sécurité informatique des petites entreprises]]> + https://jevalide.ca/2023/08/03/la-securite-informatique-des-petites-entreprises/ + Thu, 03 Aug 2023 19:05:20 +0000 + + https://jevalide.ca/?p=5030 + + +

    Tu te demandes peut-être pourquoi je fais un article sur ce sujet de la sécurité informatique dans les petites entreprises. Oui, il y a la loi 25 dans l'air du temps, mais pas juste ça. Je veux répondre aux principales questions qui se posent:

    + + + +

    + + + +
      +
    • Est-ce que c'est vraiment différent en petite entreprise.?
    • + + + +
    • Est-ce que je dois investir en cybersécurité ?
    • + + + +
    • Est-ce que les pirates s'intéressent vraiment à moi ?
    • +
    + + + +

    La réponse à ces 3 questions est oui. Je t'explique rapidement !

    + + + +

    Les différences en sécurité informatique pour les petites entreprises

    + + + +

    Je vais te partager ici les principales différences entre les petites et les grandes entreprises au niveau informatique. Commençons par ce que tu n'as pas en petite entreprise:

    + + + +
      +
    • Une gestion de parc informatique
    • + + + +
    • Une équipe de technologie dédiée (un département TI)
    • + + + +
    • Des technologie de contrôle d'accès à Internet (ex: VPN, proxy, pare-feu matériel)
    • + + + +
    • Un centre de données ou de l'infonuagique privée.
    • + + + +
    • Un réseau intranet avec des sites privés
    • +
    + + + +

    Maintenant, regardons tes particularités

    + + + +
      +
    • Tu utilise une plateforme de collaboration en ligne avec tes clients et fournisseurs (ex: Slack, Discord, WhatsApp, Telegram)
    • + + + +
    • Tu utilises tes réseaux sociaux comme moyen de communication avec tes clients
    • + + + +
    • Tu utilises principalement des ordinateurs personnels (PC et Mac). Ces ordinateurs peuvent appartenir aux employés ou à l'entreprise
    • + + + +
    • Tu utilises généralement une connexion internet pour particuliers ou mobile. Si tes employés sont en télétravail, c'est presque toujours le cas.
    • + + + +
    • Tu utilises des logiciels de type Software-as-a-service (SaaS) et des serveurs infonuagiques que tu paies sur une base mensuelle.
    • +
    + + + +

    La proximité et la confiance

    + + + +

    De plus, j'aimerais ajouter un élément super important dans les petites entreprises: la proximité. La création d'un lien de confiance plus grand entre l'entreprise et la clientèle peut avoir plusieurs conséquences au niveau sécurité.

    + + + +
      +
    • C'est plus facile de faire de l'ingénierie sociale (de se faire passer pour une des deux personnes de la relation de manière crédible)
    • + + + +
    • Il y a beaucoup d'informations confidentielles disponibles dans les messages privés des réseaux sociaux
    • + + + +
    • Une petite entreprise peut servir de tremplin pour faire des attaques vers ses plus gros clients.
    • +
    + + + +

    Les fournisseurs en sécurité informatique ont oublié les petites entreprises

    + + + +

    Malheureusement, peu de solutions de sécurité sur le marché s'adressent vraiment aux petites entreprises. On va arriver devant toi avec les gros sabots et on va essayer de te vendre des solutions dispendieuses. On va aussi te parler de cyber-assurance. Mon expérience, c'est que c'est pas au point encore et qu'il y a trop d'exclusions (des excuses pour ne pas payer). Alors, mon conseil ici, si on essaie de te vendre des technologies ou des produits pour les grandes entreprises et que tu es une petite entreprise, tu peux passer ton chemin.

    + + + +

    Tu n'as pas besoin de sécurité intranet (appelé Endpoint Detection and Response, EDR), tu n'as pas besoin de VPN et tu n'as pas besoin de pare-feu matériel (aussi appelé applicatif ou appliance).

    + + + +

    C'est pas que c'est pas bon ou inutile. Mais ça ne devrait juste pas être une priorité pour toi, tant que tu n'as pas passé à travers ta liste de choses à sécuriser (la liste de tes particularités !).

    + + + +

    + + + +

    On te propose des formations qui ne s'adressent même pas à toi !

    + + + +

    + + + +

    La plupart des formations qui se trouvent sur le marché vont adresser la première liste d'éléments que je t'ai mentionné. Les choses que tu n'as pas. C'est parce que les grandes entreprises ont des gros budgets pour ça. Elle visent davantage la conformité. des programmes tels que ISO 27001. Ça répond essentiellement à une liste de choses à cocher. Mais ce n'est pas suffisant pour elles, ni pour toi !

    + + + +

    + + + +

    J'ai créé Mission Cybersécurité pour toi !

    + + + +

    + + + +

    C'est pour ça que j'ai voulu créer une formation, qui n'en est pas vraiment une comme tu l'imagines, où on te fais une liste d'épicerie, mais qui est plutôt un atelier pratique.

    Tu veux savoir comment sécuriser tes affaires et passer à autre chose. Tu ne veux pas juste apprendre ce que tu devrais faire, tu veux le faire une bonne fois pour toute ! Et avoir quelqu'un pour répondre à tes questions.

    + + + +

    + + + +

    C'est exactement ça, Mission Cybersécurité. Je mets des efforts pour rendre un travail qui disons le, n'est pas des plus excitants, accessible et réaliste. C'est un vrai boost pour la sécurité informatique des petites entreprises.

    + + + +

    + + + +

    Si tu veux t'inscrire, le lien est juste ici: https://jevalide.ca/missioncyber

    +]]>
    + + 5030 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[Les types d'intelligence artificielle]]> + https://jevalide.ca/2023/09/08/les-types-dintelligence-artificielle/ + Fri, 08 Sep 2023 04:10:03 +0000 + + https://jevalide.ca/?p=5105 + + +

    Dans cet article, je te présente à travers une perspective historique et pratique, les différents types d'intelligence artificielle. Parce qu'il y a bien d'autres choses que ChatGPT !

    + + + +
    Les types d'intelligence artificielle. 6 images représentant de gauche à droite et de haut en bas: Les algorithmes logiques et symboliques (séquence de blocs et de flèches), Les systèmes à base de règles (liste de règles sur un calepin), L'apprentissage automatique (deux robots face à face), L'analyse et le traitement du langage naturel (une femme tient un livre), L'optimisation et la recherche opérationnelle (un stationnement de camions), L'apprentissage par renforcement (une manette de jeu vidéo)
    + + + +

    Un peu d'histoire !

    + + + +

    Depuis l'invention du terme intelligence artificielle par John McCarthy en 1956, bien des données ont coulé sous les ponts. Le terme a eu plusieurs significations à travers le temps. Aujourd'hui, on peut dire que l'IA regroupe pas mal tous les outils d'aide à la décision où les ordinateurs utilisent des données en entrée.

    Cette réponse était au départ des valeurs numériques ou des vrai ou faux (qu'on appelle des booléens). Elle a ensuite pris la forme de courtes phrases et de conversations, dès la fin des années 1960. L'IA générative et la compréhension du langage étaient déjà un grand rêve pour des pionniers tels que Joseph Weizenbaum et Noam Chomsky. Tu connais probablement plus ce dernier pour ses écrits sur la propagande, toujours aussi pertinents de nos jours.

    Il y a eu ensuite les premiers réseaux de neurones, appelés les perceptrons, qui servaient surtout à classer des informations. Puis, avec les jeux vidéos, on a voulu créer des adversaires virtuels pour jouer seul. Ce sont les premiers algorithmes qu'on appelle "par renforcement". Ils sont entraînés à éviter des pénalités et accumuler des bonis pour découvrir eux-mêmes les règles d'un jeu.

    Enfin, on a vu la commercialisation de l'IA par les banques et les compagnies d'assurances. Ça a servi d'abord pour calculer les taux d'intérêt, les primes et faire des portefeuilles de placements. Ç'a été le premier domaine que j'ai côtoyé étant donné que j'ai une formation en actuariat.

    + + + +

    L'hiver et le printemps de l'intelligence artificielle

    + + + +

    Il y a eu ensuite une longue période où ça n'était plus à la mode, appelée l'hiver de l'IA. C'est revenu sur le radar lorsqu'on a eu des ordinateurs assez puissants pour que les réseaux de neurones reprennent vie.

    + + + +

    + + + +

    C'est là que les scientifiques Geoff Hinton, Yan LeCun et Yoshua Bengio développé ce qui allait devenir le Deep Learning.

    + + + +

    + + + +

    Ensuite, dans les 10 dernières années, on a vu arriver l'IA générative avec les réseaux génératifs adversariaux. En anglais, on le appelle GAN, pour generative adversarial networks.

    + + + +

    + + + +

    Enfin, il y a eu l'apparition des réseaux récurrents et des mécanismes d'attention. C'est ça qui a mené aux modèles dits transformers tels que GPT, autour de 2017.

    + + + +

    Les différents types d'intelligence artificielle

    + + + +

    L'intelligence artificielle, c'est une grande famille de techniques mathématiques, implémentés par des algorithmes informatiques. La mécanisation et l'automatisation ne sont pas ce qui n’en fait de l'intelligence ni de l'artificiel. On peut faire la plupart de ces opérations en mode papier avec un plus petit volume de données, bien entendu !

    L'intelligence vient de nous, et on la systématise pour qu'elle soit mise à l'échelle. Le côté artificiel vient du fait qu'on tente de reproduire des techniques de raisonnement logique avec du code informatique. Au fil du temps, plusieurs méthodes se sont développées, qu'on a ensuite regroupées en ces types d'intelligence artificielle:

    + + + +
      +
    • Les algorithmes logiques et symboliques
    • + + + +
    • Les systèmes à base de règles
    • + + + +
    • L'apprentissage automatique
    • + + + +
    • L'analyse et le traitement du langage naturel +
        +
      • Les moteurs de recherche et de recommandation
      • +
      +
    • + + + +
    • L'optimisation et la recherche opérationnelle
    • + + + +
    • L'apprentissage par renforcement
    • +
    + + + +

    Il y en a aussi d'autres, plus spécialisés, mais ce sont les principaux que je te présente ici.

    + + + +

    Les algorithmes logiques et symboliques

    + + + +

    La symbolique, c'est un moyen de faire de l'abstraction de concepts à l'aide de structures mathématiques comme l'algèbre et la logique. Ensuite, en utilisant des théorèmes mathématiques et des substitutions, on peut démontrer des énoncés ou prouver qu'ils sont faux. Dis-toi que c'est en lien avec tes cours de maths et de philo du cégep.

    + + + +


    Le terme le plus fréquent pour ce genre de technologie est le système d'algèbre informatique. Les plus populaires sont Wolfram Mathematica et Maple. Il y a aussi des logiciels libres, tels que Sympy, YACAS et Maxima. Ils peuvent être utilisés ensemble avec l'interface SageMath.

    Les algorithmes logiques, eux, appliquent des règles logiques à des prédicats, pour imiter le raisonnement humain. Ils sont fondés sur les théories de George Boole et de Charles Sanders Peirce, deux scientifiques connus du XIXe siècle. Ils permettent de démontrer si des ensembles de faits (ou axiomes) sont cohérents et complets dans leur ensemble. Certains logiciels pour faire du raisonnement logique sont PROLOG (programmation logique) et le web sémantique (Ontology Web Language).

    + + + +

    Les systèmes à base de règles

    + + + +

    Les systèmes de règles (rule-based engine en anglais) sont assez similaires au raisonnement logique. La différence, c'est que les règles ne sont pas universelles et intemporelles, mais liées au contexte d'affaires.

    + + + +

    Ces règles-là servent à avoir un traitement uniforme des situations dans ton entreprise et à créer de la prévisibilité. Un autre nom pour ce genre de logiciels, c'est les systèmes experts.

    Dans les entreprises avec des produits complexes, comme l'assurance, on retrouve beaucoup de ces systèmes. Ils servent entre autres à orienter la clientèle vers les bons produits et les bonnes options, mais aussi à refuser certains risques que les compagnies ne veulent pas couvrir.

    Quelques logiciels qui permettent de construire ces systèmes: Drools, CLIPS et GoRules.

    + + + +

    L'apprentissage automatique

    + + + +

    L'apprentissage automatique (machine learning en anglais) est basé sur des jeux de données. Il y a deux types d'apprentissages: supervisé et non supervisé. L'apprentissage supervisé, c'est lorsqu'on fournit des attributs et des étiquettes connues à l'algorithme d'apprentissage. L'apprentissage non supervisé, c'est lorsqu'on laisse l'algorithme trouver les étiquettes tout seul pour les données que l'on a fournies. Il existe aussi plusieurs algorithmes qui combinent ces deux méthodes, qu'on va appeler semi-supervisées.

    + + + +

    + + + +

    Les étiquettes peuvent être des valeurs numériques continues ou discrètes, ou encore des catégories nommées. On parle alors de régression ou de classification. Mais fais attention, un algorithme de régression peut aussi être discrétisé et devenir une forme de classification.

    + + + +

    Les familles d'algorithmes d'apprentissage automatique

    + + + +

    Parmi les familles d'algorithmes les plus courantes, on peut en nommer trois:

    + + + +
      +
    • les modèles linéaires et additifs
    • + + + +
    • les arbres de décisions et les forêts aléatoires
    • + + + +
    • les réseaux de neurones
    • +
    + + + +

    Ces familles de modèles ont chacune leurs forces et leurs faiblesses. Mais, ce qui les distingue, dans cet ordre, c'est la quantité de données requise.

    Les modèles linéaires ont besoin de moins de données parce qu'ils ont moins de paramètres. Un modèle linéaire de régression avec deux variables peut se contenter d'une dizaine de points !

    Les réseaux de neurones sont eux qui ont besoin du plus de données parce qu'ils ont plus de paramètres. Les plus gros réseaux de neurones peuvent avoir des centaines de milliards de paramètres. Il faut alors au moins quelques centaines de milliards de points de données étiquetés pour les entraîner.

    + + + +

    + + + +

    Les outils les plus communs pour l'apprentissage automatique sont:

    + + + +
      +
    • Dans le langage R, il y a plusieurs algorithmes qui sont natifs au langage. Sinon tu peux complémenter avec les librairies suivantes: caret, e1071, glmnet, xgboost, randomForest. Tu peux en découvrir d'autres dans la Machine Learning Task View du site officiel du langage R, CRAN.
    • + + + +
    • Dans le langage Python, la principale et plus connue librairie d'apprentissage automatique est Scikit-Learn. Pour l'apprentissage des réseaux de neurones, la librairie PyTorch, développée par Meta, et TensorFlow, par Google, sont les deux plus populaires.
    • +
    + + + +

    L'analyse et le traitement du langage naturel

    + + + +

    L'analyse et traitement du langage naturel (natural language processing) est basé sur un mélange de plusieurs autres types d'intelligence artificielle. La classification de texte utilise l'apprentissage automatique pour déterminer les catégories les plus probables pour un texte.

    + + + +

    La base de l'analyse du langage naturel, c'est au départ la construction de corpus (ensembles) de textes. On les décompose ensuite en paragraphes, phrases, mots et même parfois, en phonèmes ou syllabes. Pour ça, on utilise la tokenisation (oui, comme quand tu dis que t'as un ami noir). Ensuite, on utilise l'analyse lexico-syntaxique pour identifier le rôle de chacun des mots dans la phrase. On peut aussi utiliser des algorithmes qui permettent d'identifier les référents des pronoms dans les phrases précédentes.

    L'identification des entités nommées (personnes, marques, entreprises, lieux et événements) se fait à l'aide de système à base de règles. La similarité de documents se fait à l'aide des mêmes outils que les moteurs de recherche et de recommandation. On va les voir dans la prochaine section.

    C'est une application plus qu'un type d'intelligence artificielle. Mais, comme son champ d'application est tellement large, il a souvent sa propre catégorie pour les logiciels. Les algorithmes génératifs de type transformers et les modèles de langage larges font aussi partie de ce type d'intelligence artificielle.

    Quelques librairies logicielles courantes sont: BeautifulSoup, spaCy, et transformers dans. le langage Python, tidytext et quanteda avec le langage R, et CoreNLP pour le langage Java. Parmi les outils plus grand public, on retrouve les correcteurs Antidote, Grammarly et LanguageTool.

    + + + +

    Les moteurs de recherche et de recommandation

    + + + +

    Les moteurs de recherche sont probablement l'exemple le plus visible et le plus connu d'intelligence artificielle appliquée. Leur fonctionnement se fait en deux parties. D'abord, il y a l'indexation, puis il y a la recherche. Pour des fins de simplification, je vais aussi ajouter la recommandation, puisque c'est de plus en plus fréquent aussi.

    + + + +

    L'indexation

    + + + +

    L'indexation, c'est une technique qui prend tous les mots et concepts d'un document, les normalise (par exemple en mettant les adjectifs au masculin singulier et les verbes à l'infinitif), puis construit une base de données où pour chaque mot, on a la liste des documents dans lequel il se trouve.

    + + + +

    Les index créent ce qu'on appelle une représentation vectorielle d'un document. Il y a maintenant de nouvelles méthodes d'indexation de documents qui utilisent des vecteurs de plongements (embeddings en anglais) qui sont construits à l'aide de réseaux de neurones génératifs. Les plus connus sont word2vec et GloVe. Ces techniques appartiennent au domaine du traitement du langage naturel, que je t'ai présenté plus haut.

    + + + +

    + + + +

    L'outil d'indexation le plus connu est Apache Lucene

    + + + +

    La recherche

    + + + +

    La recherche de documents se fait en consultant la liste des documents pour chacun des mots-clés recherchés, et en faisant l'intersection de ces listes pour trouver les documents qui ont tous les mots recherchés. Ensuite, il peut y avoir différentes techniques pour trier les documents, notamment la proximité des mots, leur fréquence ou leur spécificité dans le texte.

    + + + +

    + + + +

    Les moteurs de recherche libres les plus connus sont Elasticsearch (et la fourche OpenSearch d'Amazon), Solr et Meilisearch. Parmi les logiciels commerciaux, on retrouve Algolia et Coveo. Le domaine est en développement très rapide.

    + + + +

    La recommandation

    + + + +

    La recommandation se fait en utilisant la similarité entre des documents. Un document qui contient tous les mots-clés de la recherche devient la référence de base. À partir de celui-ci, on trouve des documents similaires à l'aide d'une méthode nommée "plus proches voisins approximatifs". C'est un algorithme qui peut, par exemple, être utilisé pour suggérer des lectures complémentaires à la fin d'un article.

    + + + +

    + + + +

    Je te fais remarquer que les sites E-commerce utilisent aussi des algorithmes de recommandation pour des produits complémentaires. Ils sont basés sur l'historique d'achat ou sur les commentaires de la clientèle. Ils vont utiliser un autre type d'algorithme appelé filtrage collaboratif.

    L'idée ici est d'utiliser l'apprentissage automatique pour essayer de deviner quelle note tu donnerais à un item à partir de ceux que tu as dans ton panier ou noté par le passé. Ensuite, on va te présenter des recommandations d'items qui obtiendraient les plus hautes notes de ta part.

    + + + +


    La plupart des outils de recherche par recommandation sont des extensions des bases de données de vecteurs. Quelques outils qui font leur place sur le marché:

    + + + +
      +
    • faiss, par Facebook,
    • + + + +
    • pgvector pour la base de données PostgreSQL et
    • + + + +
    • marqo, une base de données nouveau genre pour les vecteurs.
    • +
    + + + +

    + + + +

    L'optimisation et la recherche opérationnelle

    + + + +

    L'optimisation, c'est le type d'intelligence artificielle qui est le plus souvent oublié par les spécialistes des données. Ça consiste à trouver soit une solution optimale pour un problème parmi un ensemble de solutions, ou à trouver une solution possible pour un ensemble de contraintes. Ce domaine est souvent associé davantage à l'ingénierie qu'à l'intelligence artificielle, en particulier la recherche opérationnelle.

    + + + +

    + + + +

    Par exemple, en finance, on veut augmenter le profit d'un portefeuille de placements tout en diminuant le plus possible de risque. On parle dans ce contexte-là de frontière efficiente.

    + + + +

    + + + +

    En logistique, on veut diminuer le coût pour transporter les marchandises en mettant le plus grand nombre possible de boîtes dans un conteneur maritime. On va aussi optimiser les trajets de livraisons pour faire le plus d'arrêts possible par trajet, ou encore limiter les virages à gauche.

    + + + +

    + + + +

    Une autre application courante, c'est la conception d'horaires de travail pour le personnel d'une grande entreprise manufacturière ou dans un hôpital.

    + + + +

    + + + +

    Les principaux logiciels utilisés dans ce domaine sont les solveurs de contraintes (Google OR Tools en Python, Choco en Java) et les logiciels d'optimisation par programmation, dont certains sont libres comme GLPK et les plus puissants sont souvent très dispendieux (CPLEX, Gurobi).

    + + + +

    L'apprentissage par renforcement

    + + + +

    L'apprentissage par renforcement (aussi appelé Q-learning) est une pratique qui vise à apprendre un comportement par essais et erreurs en accumulant des pénalités ou des récompenses. C'est un domaine complexe et encore assez restreint au domaine de la robotique et des jeux vidéos.

    Tu as probablement déjà vu les robots humanoïdes de Boston Dynamics ou des vidéos d'ordinateurs qui apprennent à jouer à Super Mario.

    + + + +

    + + + +

    Ce sont des exemples d'apprentissage par renforcement. Comme c'est un domaine très spécialisé qui n'est pas aussi visible, il y a peu de logiciels disponibles. Mais en voici quelques-uns: pyqlearning et RLlib pour Python.

    + + + +

    En résumé

    + + + +

    Dans cet article, je t'ai présenté 6 types d'intelligence artificielle. Ils sont tous aussi importants les uns que les autres pour résoudre des problèmes complexes et créer les algorithmes d'automatisation promis par la révolution informatique.

    + + + +

    + + + +

    Mon objectif était ici d'ouvrir ta curiosité et d'élargir tes horizons. Et de te faire réaliser que les discours populaires sur l'intelligence artificielle ne font aucun sens face à tant de variété.

    + + + +

    Évite une erreur couteuse !

    + + + +

    L'erreur que beaucoup de gens qui ne sont pas formés dans le domaine font, c'est de choisir une technique ou un outil et d'essayer de résoudre son problème avec.

    + + + +

    + + + +

    Tu peux éviter de faire cette erreur toi aussi !

    + + + +

    + + + +

    Ce que je peux t'apporter, c'est un regard externe pour t'aider à choisir les bons outils.

    + + + +

    + + + +

    Réserve-moi une consultation express et je vais pouvoir t'orienter sur le meilleur chemin à prendre !

    + + + +

    + + + + + + + +

    Quelques lectures complémentaires

    + + + +

    Je tiens à te faire part que je n'utilise aucun algorithme ici, je le fais encore à la main !

    + + + + +]]>
    + + 5105 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[Gouvernance des données des peuples autochtones]]> + https://jevalide.ca/2023/09/30/gouvernance-des-donnees-des-peuples-autochtones/ + Sun, 01 Oct 2023 02:06:01 +0000 + + https://jevalide.ca/?p=5439 + + +

    Aujourd'hui, c'est la journée nationale de vérité et réconciliation. Je vais profiter pour partager quelques éléments de la gouvernance des données des peuples autochtones.

    + + + +

    + + + +

    Souveraineté des données

    + + + +

    Un des éléments clés de l'autodétermination d'un peuple est le contrôle de ses données. C'est ce qu'on appelle la souveraineté des données. C'est un élément de la Déclaration des Nations Unies sur les droits des peuples autochtones. Cette déclaration est force de loi au Canada depuis 2021: https://www.justice.gc.ca/fra/declaration/legislation.html

    + + + +

    Il y a un principe de gouvernance des données qui a été développé par les premiers peuples, qui s'appelle PCAP. Il signifie: Propriété, Contrôle, Accès, Possession. C'est un concept développé par le Centre de Gouvernance de L’information des Premières Nations. Je te donne la référence pour avoir plus de détails sur le principe PCAP: https://fnigc.ca/fr/

    + + + +

    + + + +

    Données de santé

    + + + +

    Il y a aussi eu durant les dernières années des travaux concernant plus précisément les données de santé. L'illustration qui suit provient de la page qui résume des travaux: https://www.sac-isc.gc.ca/fra/1667579335081/1667579367781#chp3

    + + + +
    + + + +

    Une des mises en oeuvre de ces travaux est la Politique des Trois Conseils pour les données de recherche sur les humains. C'est un outil de travail auquel j'ai parfois à me référer comme je travaille avec des données médicales: https://ethics.gc.ca/fra/policy-politique_tcps2-eptc2_2022.html

    + + + +

    Je donne aussi le lien vers plus de ressources provenant du Réseau de recherche sur les données de santé Canada: https://www.hdrn.ca/fr/gsad/donnees-sur-les-autochtones

    + + + +


    Cet organisme a présenté la conférence de Tatiana Kim de BC Stats sur les données d'ethnicité et raciales, plus tôt cette semaine. Je t'invite à regarder cette présentation si tu fais des études statistiques avec des données d'identification ethnique ou raciale. Si tu travailles en ressources humaines ou dans le domaine de la santé, ça pourrait aussi t'intéresser.

    + + + +

    Le devoir de s'informer

    + + + +

    Ça fait partie de nos responsabilités de s'informer des droits des premiers peuples quand on travaille avec des données qui les concernent !

    + + + +

    + + + +

    J'espère que cette courte publication t'aidera à mieux comprendre le contexte des données des peuples autochtones.

    +]]>
    + + 5439 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[Nope, t'es pas chez Valides/Urbania]]> + https://jevalide.ca/2023/10/10/nope-tes-pas-chez-valides-urbania/ + Tue, 10 Oct 2023 23:29:36 +0000 + + https://jevalide.ca/?p=5498 + + +

    Salut !

    + + + +

    Tu croyais peut-être te retrouver sur le site web d'une agence avec un nom qui ressemble un peu (trop) à mon nom d'entreprise. Mais non !

    À voir le look de mon site web, tu comprendras que c'est pas ma spécialité.

    + + + +

    + + + +

    Mais pendant que tu es ici, je m'appelle François. Je suis peut-être ton futur ami geek.

    + + + +


    J'ai une cyberlettre que je publie à chaque semaine.

    + + + +

    Je te laisse visiter mon site pour en savoir plus sur mes services et mon petit moi.
    Tu peux découvrir tout ça ici !

    + + + +

    + + + +

    En passant, il y a aussi un roman qui se nomme Valide, par Chris Bergeron. C'est peut-être ce que tu cherchais, pis c'est excellent à part ça: C'est ici !

    Sinon, je suis tout de même heureux de t'avoir croisé·e.

    Tu peux faire Précédente et retourner sur Google 😜.

    +]]>
    + + 5498 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[Beurk ! - Reçois ton guide cybersécurité]]> + https://jevalide.ca/2023/10/17/beurk-recois-ton-guide-cybersecurite/ + Tue, 17 Oct 2023 23:10:23 +0000 + + https://jevalide.ca/?p=5500 + + +
    + + + +
    +
    +

    Subscribe

    + +

    +

    + +

    + + +

    +

    + + +

    + +

    +
    +
    + + + +

    Si tu ne reçois pas le guide dans les 5 prochaines minutes, écris-moi à cyberlettre@jevalide.ca !

    + + + +

    +]]>
    + + 5500 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[Maximiser ta sécurité informatique avec le chiffrement]]> + https://jevalide.ca/2023/10/22/maximiser-ta-securite-informatique-avec-le-chiffrement/ + Sun, 22 Oct 2023 04:35:31 +0000 + + https://jevalide.ca/?p=5504 + + +

    Le chiffrement est un élément essentiel de toute stratégie de sécurité informatique. C'est aussi un des plus difficiles à comprendre parce qu'il est souvent invisible et basé sur des mathématiques avancées.

    + + + +

    + + + +

    Dans cet article, je vais t'expliquer les différents types de chiffrement qui s'appliquent sur un système informatique. Je vais aussi te dire de quels types de menaces ils peuvent te protéger ou non.

    + + + +

    + + + +

    Le chiffrement est une mesure additionnelle pour complémenter les autres bonnes pratiques que tu as mises en place. C'est pour ça que je parle de maximiser ta sécurité informatique. Tu dois déjà avoir des bons mots de passe, de la double authentification et des sauvegardes. Bref, avoir mis en place des bonnes habitudes pour en tirer profit.

    + + + +

    Chiffrer son disque dur

    + + + +

    Le chiffrement du disque dur, c est une action qui se passe au niveau du système d'exploitation. C'est une puce spécialisée sur la carte mère de ton ordinateur qui chiffre les données avant de les enregistrer. Ce type de chiffrement se fait de façon transparente et passive et tu n'en sera jamais vraiment conscient.

    + + + +

    + + + +

    Un logiciel qui peut être utilisé sur Windows, pour chiffrer une partition, et même la partition de démarrage, c'est VeraCrypt.

    + + + +

    + + + +

    Sur Windows, on peut aussi utiliser la solution native BitLocker, disponible sur les éditions pour entreprise du système de Microsoft seulement. Si tu as un ordinateur personnel acheté sur une grande surface, tu n'auras probablement pas accès à cet outil sans faire une mise à niveau vers Windows Professionnel (269$ canadien en 2023).

    + + + +

    + + + +

    Sur MacOS, tu peux activer le mécanisme FileVault qui fait partie de MacOS.

    + + + +

    + + + +

    Sur Linux, le chiffrement se fait avec LUKS. Tu peux y accéder avec un utilitaire de partitionnement tel que GParted ou KDE Partition Manager.

    + + + +

    + + + +

    Comme le chiffrement se fait au niveau matériel, tu vois seulement les fichiers déchiffrés lorsque tu travaille avec ton ordinateur. Les rançongiciels et les virus voient aussi des fichiers déchiffrés. Donc, ce type de chiffrement n'a aucune utilisé contre les types d'attaques qui utilisent ces outils.

    + + + +

    + + + +

    Ce chiffrement, appelé chiffrement au repos, protège contre les vols physiques d'ordinateurs. Il ne faut pas que tu aies ouvert une session sur l'ordinateur au moment du vol. C'est pour ça que c'est important de ne jamais laisser un ordinateur ouvert sans surveillance.

    + + + +

    Chiffrer tes fichiers et dossiers

    + + + +

    Le chiffrement des fichiers et des dossiers vise à protéger certains contenu sensible d'une accès au niveau logiciel. Ça se fait soit par des logiciels un peu trop fouineurs installés sur ton ordinateur, soit par un pirate qui accéderait à tes fichiers via Internet.

    + + + +

    + + + +

    Il existe certaines solutions qui permettent de chiffrer des fichiers individuels ou des dossiers tels que VeraCrypt ou Cryptomator.

    + + + +

    + + + +

    Ces logiciels permettent de chiffrer des fichiers et de ne les rendre disponibles que lorsqu'on en a besoin pour travailler. Ils sont aussi très utiles si tu utilises aussi la synchronisation cloud avec des services tels que Nextcloud, OneDrive, iCloud, Dropbox ou Google Drive.

    + + + +

    + + + +

    Ce type de chiffrement protège contre le vol de données par des rançongiciels, mais ne bloquera pas l'action du rançongiciel. Si tu as fait des sauvegardes externes de tes fichiers, tu peux déjouer leur stratagème et te remettre sur pied rapidement en formatant ton ordinateur et restaurant tes sauvegardes, une fois que le rançongiciel a été éliminé. Donc, fais tes sauvegardes !

    + + + +

    + + + +

    Un niveau de protection additionnel, c'est aussi de chiffrer le contenu de tes sauvegardes hors ligne. Pour ça, je trouve que le chiffrement du disque suffit parce que le disque externe n'a pas de système d'exploitation. Le chiffrement au niveau des fichiers et dossiers, c'est surtout pratique pour les sauvegardes infonuagiques.

    + + + +

    Chiffrer les données qui circulent sur le réseau

    + + + +

    Un autre aspect du chiffrement, c'est lorsqu'on transporte des données entre différents ordinateurs, sur un réseau informatique interne ou plus souvent, sur le réseau Internet.

    + + + +

    De plus en plus, les sites web utilisent le chiffrement par défaut avec le protocole HTTPS.

    + + + +

    + + + +

    Mais, il y a encore des modes de communication moins sécurisés tels que le courriel ou encore tout ce qui implique un tiers qui n'est pas de confiance, comme les réseaux sociaux ou les services de messagerie instantanés.

    + + + +

    + + + +

    Petite mise en garde ici avant d'aller plus loin. Le protocole HTTPS est essentiel, mais il n'est pas suffisant. Il faut aussi que tu t'assures de communiquer avec le bon site web et avec la bonne adresse, parce qu'un site web faux ou cloné peut aussi avoir un certificat HTTPS valide !

    + + + +

    Les courriels

    + + + +

    Pour chiffrer des courriels, il existe plusieurs technologies notamment avec Microsoft Exchange et Proton Mail. Il est aussi possible d'utiliser la cryptographe et les cercles de confiance avec le système PGP (pour Pretty Good Privacy) ou son implémentation libre GnuPG. C'est un système un peu plus complexe à mettre en place, mais qui a fait ses preuves et qui est utilisé un peu partout dans le domaine du renseignement, de la diplomatie et du journalisme d'enquête. Pour le mettre en place, je te conseille le guide d'autodéfense courriel de la Free Software Foundation.

    + + + +

    Les SMS et la messagerie

    + + + +

    Pour chiffrer les SMS, je te conseille d'utiliser l'application Signal sur mobile et enfin, pour la messagerie privée, je te conseille d'utiliser Jami ou Wire.

    + + + +

    La navigation sur Internet

    + + + +

    Pour chiffrer l'ensemble de ta connexion internet, si tu es dans un lieu qui n'est pas sécuritaire, tu peux utiliser un VPN ou le réseau anonyme TOR. Cependant, la protection offerte par ces services est limitée car les noeuds de sortie peuvent être compromis. Il y a beaucoup de marketing pompeux et de programmes d'affiliation autour de ces services et c'est quelque chose dont il faut se méfier (ça s'appelle du growth hacking et souvent, tout l'argent dépensé sert pour le marketing futur et non améliorer le produit).

    + + + +

    + + + +

    Plusieurs entreprises offrent aussi des réseaux VPN pour le télétravail. Ils peuvent jouer le même rôle pour sécuriser des connexions Internet. Cependant, c'est à toi de vérifier avec ton employeur ce qu'il est possible de faire ou non sur ce réseau. N'oublie pas que tout ce qui circule sur un réseau VPN est visible par le propriétaire de celui-ci !

    + + + +

    + + + +

    Chiffrement des sauvegardes

    + + + +

    Pour chiffrer les sauvegardes, je te conseille dès le départ d'activer le chiffrement sur les disques externes. Ça va te protéger contre le vol, qui est un risque plus élevé pour les disques que pour d'autres types d'appareils.

    + + + +

    Les systèmes de sauvegarde de Windows, MacOS et Linux permettent de faire des sauvegardes chiffrées au niveau des fichiers aussi. Tu peux configurer Time Machine sur MacOS pour chiffrer les sauvegardes. Windows Backup sur Windows peut aussi faire une tâche similaire (bien lire la documentation). Pour ce qui est de Linux, on va alors se fier sur l'utilisation de LUKS (Linux Unified Key Setup) au niveau disque.

    + + + +

    + + + +

    Au niveau des fichiers et des dossiers, si tu sauvegardes les fichiers chiffrés par les outils tels que VeraCrypt ou Cryptomator, tu vas avoir le même niveau de protection.

    + + + +

    + + + +

    Conclusion

    + + + +

    Dans cet article, je t'ai présenté quatre types de chiffrements qui sont tout aussi important les uns des autres. La sécurité de l'information, ça se fait en additionnant des mécanismes de protection qui sont souvent simples, pris individuellement.

    + + + +

    La sécurité des disques protège contre le vol physique. Le chiffrement des fichiers et dossiers contre les vols au niveau logiciel. Le chiffrement sur les réseau protègent contre la capture et l'espionnage du trafic réseau, et enfin, le chiffrement des sauvegardes protège contre la perte ou le vol des disques externes.

    + + + +

    Sécuriser ton entreprise

    + + + +

    Tu aimerais avoir accès à tous mes tutoriels pour sécuriser ton entreprise ? Mission Cybersécurité, c'est toutes les instructions pas à pas pour améliorer significativement ta sécurité et repousser les criminels du web.

    + + + +

    + + + +

    Je ne suis pas un partisan des formations de sensibilisation qui ne font qu'ajouter du stress et de la charge mentale.

    + + + +

    + + + +

    Je préfère qu'on utilise tous les outils technologiques qu'on a déjà sous la main et les meilleures pratiques de configuration pour avoir le meilleur filet de sécurité possible.

    + + + +

    + + + + + + + +

    Autres articles sur le sujet

    + + + + +]]>
    + + 5504 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[Copywriting et sondage : mélange toxique ?]]> + https://jevalide.ca/2023/11/24/copywriting-et-sondage-melange-toxique/ + Fri, 24 Nov 2023 06:07:50 +0000 + + https://jevalide.ca/?p=5621 + + +

    Dans cet article, je te présente plusieurs raisons pour lesquelles copywriting et sondage, ça ne fait pas nécessairement bon ménage !

    + + + +

    + + + +

    Pour débuter, je te présente la situation de vulnérabilité qu'implique le sondage. Puis, je te présente quelques éléments d'un plan statistique pour enfin, te présenter l'impact du copywriting sur chacun de ces éléments.

    + + + +

    + + + +

    Pour te rassurer, je redonne un peu d'espoir à la fin !

    + + + +

    + + + +
    Image carrée: Sondage et Copywriting: mélange toxique ? Emojis sourire, visage neutre et vomir, avec cases à cocher. Logos de jevalide.ca en bas de l'image.
    + + + +

    Un moment de vulnérabilité

    + + + +

    Le sondage est un instrument de mesure pour connaître un marché, une opinion, un besoin de la clientèle ou tout simplement ses préférences en salade de choux au St-Hubert. C'est l'objet du sondage.

    + + + +

    + + + +

    Comme sujet, répondre à un sondage est un investissement en temps. C'est aussi un moment très vulnérable, parce qu'on partage une opinion, un vécu ou une préférence, sans appel et sans avoir nécessairement les outils pour se justifier. Bref, on se livre à froid.

    + + + +

    + + + +

    C'est pour ça que le sondage doit être neutre au niveau émotionnel. Un bon sondage, c'est un sondage plate, mais qui est efficace pour répondre à notre question de recherche. C'est notre motivation première d'avoir une réponse. Et on veut que cette réponse-là, elle soit la moins biaisée possible.

    + + + +

    + + + +

    Une des conséquences d'un sondage biaisé, c'est de te faire de fausses idées. Tu vas prendre de mauvaises décisions d'affaires et déplaire à tes clientes et clients. En pensant augmenter la qualité de tes réponses, tu te retrouves dans la situation contraire et tu ne rends service à personne. Pire encore, tu vas te ramasser avec quatre mois de provision de salade de choux au frigo. Penses-y !

    + + + +

    Le plan statistique

    + + + +

    Un bon sondage est construit à l'aide d'un plan statistique. C'est-à-dire qu'il va avoir certains éléments pour s'assurer de la puissance statistique de ce qu'on va mesurer. En voici quelques éléments :

    + + + +
      +
    • La portée du sondage : c'est-à-dire la population à qui on s'adresse. On peut la délimiter selon plusieurs critères : géographique, démographique, clientèle, membres, relations…
    • + + + +
    • La couverture: À quel point l'échantillon de la population dans le sondage est représentatif de la population étudiée +
        +
      • La couverture peut être problématique lorsque le sondage est envoyé à la population en entier, sans incitatif qui incite l'ensemble de la population à y répondre. Sans stratégie de communication de ses objectifs, on se retrouve alors avec une couverture qui représente les extrêmes. Les répondantes sont alors les parties prenantes de l'objet du sondage. C'est le biais de participation.
      • +
      +
    • + + + +
    • Les questions : +
        +
      • Chaque question doit avoir un énoncé qui est clair et est autoportant le plus possible. On essaie de ne pas être influencé par les autres questions du sondage. On doit assumer que les gens ne se souviennent plus de ce qu'ils ont répondu avant.
      • +
      +
    • + + + +
    • Les choix de réponse : +
        +
      • S'il y a des choix de réponses, ils doivent avoir un poids égal et couvrir l'ensemble du domaine des réponses possibles. Pour ça, on peut se baser sur des statistiques publiques. Lorsqu'on crée des intervalles, on essaie de les rendre les plus représentatifs possibles de la population. Par exemple, si on s'adresse à des enfants, ça ne fait aucun sens d'avoir les classes 0-12, 12-18 et 18+.
      • +
      +
    • +
    + + + +

    La peur qui s'installe

    + + + +

    Jusque-là, tout va bien ! Tu construis ton sondage et tu es prêt·e à l'envoyer. Mais, tout le monde sait que les sondages, c'est désagréable à remplir.

    + + + +

    + + + +

    Tu as peur que les gens abandonnent ton sondage en plein milieu. Encore pire, tu crois même qu'ils et elles vont juste l'ignorer ou le remplir un peu tout croche.

    + + + +

    + + + +

    Si tu n'as pas assez de réponses, ton plan statistique tombe à l'eau. Tu n'auras pas assez de couverture ... les résultats ne veulent rien dire. Si ton sondage est abandonné en plein milieu, c'est un peu la même chose. Tu as des données, mais elles sont inutilisables.

    + + + +

    Et si les gens répondent n'importe quoi, alors tu as du n'importe quoi pour travailler, et le pire, c'est que tu ne t'en rendras probablement pas compte tout de suite.

    + + + +

    + + + +

    Alors tu te dis : pourquoi pas utiliser des techniques d'écriture persuasive, du copywriting, pour rendre ton sondage plus agréable à remplir ?

    + + + +

    Le piège du copywriting dans ton sondage

    + + + +

    Le problème ici, c'est que, comme je t'ai dit au début, tu es dans une situation de vulnérabilité, d'ajouter des éléments de copywriting va immédiatement activer des biais cognitifs. Qui dit biais cognitif dit aussi biais dans les réponses. Voici comment l'utilisation de langage persuasif peut nuire aux différents éléments du plan statistique de ton sondage.

    + + + +

    Dans le texte d'introduction du sondage

    + + + +

    Si tu crées une ambiance dans le texte d'introduction de ton sondage, tu communiques une intention qui devrait rester cachée. Est-ce que tu souhaites, au fond de toi, des réponses positives ou négatives ? Ou est-ce que tu recherches la sincérité ?

    + + + +

    + + + +

    Une tonalité joyeuse et positive va inciter des réponses plus extrêmes. Les gens déjà joyeux vont l'être encore plus et celles qui ne le sont pas, encore moins.

    + + + +

    + + + +

    La mise en contexte du sondage est souvent utilisée par les partis politiques et les groupes de pression pour accumuler des opinions en faveur de leur cause. Ces sondages, relayés par les médias et utilisés pour la prise de décision au gouvernement, n'ont souvent aucune valeur statistique. Pour les gens déjà informés de l'objet du sondage, de découvrir l'intention, ça peut les décourager de répondre, ce qui va amplifier encore plus les biais.

    + + + +

    Dans les questions

    + + + +

    La tonalité de la question peut grandement influencer la perception de l'échelle de valeurs d'un choix de réponses. Par exemple, si tu demandes à quel point ton client a adoré faire affaire avec toi, tu lui mets tes mots dans la bouche.

    + + + +

    + + + +

    L'échelle de valeurs prend alors un sens complètement différent pour quelqu'un qui a effectivement adoré ton service. Mais, pour quelqu'un qui l'a détesté, ton échelle aura des poids complètement différents, et l'opinion de notre client·e, qui aurait pu être 4/10 dans une formulation neutre, deviendra 0/10. En fait, tu risques de te retrouver seulement avec des 0/10 et des 10/10 avec ce genre de question !

    + + + +

    Dans les choix de réponses

    + + + +

    L'utilisation d'un certain langage dans les choix de réponses peut provoquer aussi une translation dans les poids d'une échelle. Peu importe où elle se trouve, une réponse avec une tonalité positive va attirer et une réponse avec une tonalité négative va repousser. Si je veux être sincère et te dire que je n'ai pas apprécié un élément de ton offre, mais que la réponse négative c'est que beurk, c'était nul à chier, je vais probablement me sentir obligé de répondre que bof, c'était pas si pire parce que j'ai quand même apprécié les autres éléments.

    + + + +

    + + + +

    En utilisant des éléments qui déstabilisent le sujet du sondage, on vient biaiser les résultats au niveau des poids d'une échelle de valeurs ou on effectue une translation des résultats. Les résultats peuvent avoir pour conséquence d'augmenter notre sentiment de confiance envers une opinion préconçue, ou au contraire, complètement nous démoraliser !

    + + + +

    Un risque légal ?

    + + + +

    L'utilisation de langage persuasif lorsqu'on demande un consentement qui a une portée légale, par exemple pour utiliser les renseignements du sondage à d'autres fins, ou lorsqu'on fait signer un contrat, peuvent être considéré comme de la manipulation.

    + + + +

    + + + +

    C'est pourquoi on devrait toujours faire rédiger nos contrats et réviser tous nos éléments de consentement dans nos formulaires par des juristes.

    + + + +

    Où utiliser le copywriting dans ton sondage ?

    + + + +

    Tu peux utiliser le copywriting pour inviter les gens à venir répondre à ton sondage, tout simplement !

    + + + +

    + + + +

    Tu as toute la légitimité de convaincre les gens de l’importance et des bénéfices du sondage pour elles et eux, pas juste pour toi; le fameux « what’s in it for me ».

    + + + +

    + + + +

    Le plus important étant de le faire avec honnêteté, d'expliquer ses motivations et de ne pas influencer au préalable l'opinion sur l'objet du sondage. Tu veux avoir des résultats, pas manipuler les opinions comme le sondage maison d'une feuille de chou.

    + + + +

    + + + +

    Pour en savoir plus sur le design de sondages, il faut faire un peu de lecture.

    + + + +

    Voici une référence gratuite en français: https://datadesignfrench.github.io/SurveyDesign-French.html

    + + + +

    + + + +

    Pour conclure

    + + + +

    Dans cet article, je t'ai présenté plusieurs raisons pour lesquelles utiliser de l'écriture persuasive dans un sondage n'est pas l'idée du siècle. Je t'ai aussi partagé où en utiliser.

    Je t'offre mon accompagnement pour construire des questionnaires ou des sondages éthiques et respectueux de la vie privée.

    + + + +

    + + + + + + + +

    + + + +

    Ça pourrait aussi t'intéresser:

    + + + + +]]>
    + + 5621 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[Le logiciel libre au Québec]]> + https://jevalide.ca/2023/12/01/le-logiciel-libre-au-quebec/ + Sat, 02 Dec 2023 02:41:18 +0000 + + https://jevalide.ca/?p=5667 + + +

    Sur cette page, je te partage les principales ressources pour suivre ce qui se passe en logiciel libre au Québec et t'impliquer dans la communauté !

    + + + +

    + + + +

    Au fil des années, les regroupements d'utilisateurs de logiciels libres au Québec se construisent et se déconstruisent. Certains fusionnent, d'autres partent dans des directions différentes. Tout comme les logiciels libres, quelque part !

    + + + +

    Linux-Meetup

    + + + +
    20e anniversaire - Linux-Meetup au Québec. Logo du pingouin Tux avec un fleur de lys sur le ventre.
    + + + +

    Actif depuis plus de 20 ans, le groupe de Linux-Meetup se rencontre à chaque premier mardi du mois. Il est organisé par Martial Bigras. Il a démarré dans la région de Valleyfield, pour ensuite s'implanter à Québec durant plusieurs années, puis se déplacer à Montréal.

    La pandémie de Covid-19 a vu le groupe devenir virtuel, sur la plateforme libre BigBlueButton hébergée par l'entreprise de Martial, Services Conseil Linux. Maintenant, le groupe se rencontre selon la formule hybride, sur BigBlueButton et à l'École de Technologie Supérieure (ÉTS) à Montréal.

    Depuis quelques années, en septembre, nous organisons aussi un concours CTF pour célébrer Linux-Meetup et la Journée du Logiciel Libre.

    + + + + + + + +

    FACiL, pour l'appropriation collective de l'informatique libre

    + + + +
    Logo de FACiL, pour l'appropriation collective de l'informatique libre
    + + + +

    FACiL, pour l'appropriation collective de l'informatique libre, c'est le pilier militant du mouvement du logiciel libre au Québec. C'est une organisation à but non lucratif qui a une mission d'éducation à l'informatique libre. Elle fait aussi une vigie des activités au niveau gouvernemental, législatif et commercial dans la province de Québec.

    + + + +

    FACiL participe aussi au mouvement CHATONS en offrant les Services FACiLes, un ensemble de logiciels disponible en mode logiciel-service (SaaS). En devenant membre, tu as aussi accès à Nextcloud et Collabora Online

    + + + +

    FACiL administre aussi l'Agenda du Libre du Québec et les Forums du Libre du Québec. Tu pourras les découvrir juste après.

    + + + +

    Enfin, FACiL a un site wiki collaboratif pour documenter ce qui se passe en logiciel libre au Québec. Il sert aussi pour faire le suivi de ses activités internes.

    + + + + + + + +

    Agenda du Libre du Québec

    + + + +
    Logo de l'Agenda du Libre du Québec
    + + + +

    L'agenda du libre du Québec est un calendrier collaboratif regroupant les activités qui concerne le logiciel libre ayant lieu au Québec. Chacun peut soumettre ses activités, puis une équipe de modération va valider le contenu et l'afficher. Un service similaire existe en France.

    + + + + + + + +

    Forums du Libre du Québec

    + + + +
    + + + +

    Les Forums du libre du Québec sont un ensemble de canaux de discussion pour demander de l'aide, annoncer ses services ou partager ses découvertes à propos du logiciel libre.

    + + + + + + + +

    Je suis impliqué dans ces initiatives, tu peux en savoir plus sur ma page de geek !

    + + + +

    + + + +

    Tu aimerais que je participe à ton événement ?

    + + + +

    Je suis disponible comme conférencier pour parler de logiciel libre, de cybersécurité et de gouvernance des données. Voici quelques sujets pour lesquels j'ai déjà fait des présentations:

    + + + +
      +
    • Les licences de logiciel libre
    • + + + +
    • La sécurité des courriels
    • + + + +
    • La sécurité de la navigation sur le web
    • + + + +
    • Les principes FAIR de gouvernance des données
    • + + + +
    • Le web sémantique et les données ouvertes
    • + + + +
    • Le document ouvert avec Markdown
    • + + + +
    • Le langage de programmation R pour la science reproductible
    • +
    + + + + +]]>
    + + 5667 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA["Économies" du vendredi fou !]]> + https://jevalide.ca/2023/11/20/economies-du-vendredi-fou/ + Mon, 20 Nov 2023 04:15:45 +0000 + + https://jevalide.ca/?p=5692 + + +

    Vendredi noir ... Vendredi fou ...

    + + + +

    + + + +

    Peu importe comment on appelle ce concept de journée de magasinage excessif post-dinde, je n'y participe pas.

    + + + +

    + + + +

    Il n'y aura aucun rabais exceptionnel sur mes services et mes formations. Je ne te partagerai aucun code affilié pour acheter des logiciels dont tu n'as pas besoin.

    + + + +

    + + + +

    Je vais te partager des moyens de garder l'argent dans tes poches et en plus, de profiter de produits et de services de qualité pour ta business mais aussi pour toi.

    + + + +

    J'y vais pas par 4 chemins, voici la liste de cadeaux !
    Je t'invite à aller explorer !

    + + + +

    Ta liste de cadeaux pas si fous !

    + + + +
      +
    • FACiL +
        +
      • Une association québécoise (dont je suis sur le CA depuis plusieurs années) qui offre les Services FACiLes, des alternatives libres pour gérer des projets pro et perso.
      • + + + +
      • Voici notre page de services gratuits: https://facil.services
      • +
      +
    • + + + +
    • Framasoft +
        +
      • Une association française qui offre et développe des services alternatifs pour Dégoogliser Internet.
      • + + + +
      • Voici le site principal de leurs services gratuits en ligne: https://degooglisons-internet.org/fr/
      • +
      +
    • + + + +
    • Runa Capital +
        +
      • Une firme de Venture Capital qui investit beaucoup dans des projets de logiciels libres.
      • + + + +
      • Voici leur liste d'alternatives libres pour des SaaS populaires (tu trouveras comment remplacer les Notion, Zapier, ...): https://github.com/RunaCapital/awesome-oss-alternatives
      • +
      +
    • + + + +
    • SourceForge + +
    • + + + +
    • HomeBrew +
        +
      • Si tu es sur MacOS, il n'y a pas que le App Store ! Après tout, MacOS ressemble à Linux, étant donné que leurs origines sont communes (UNIX), alors beaucoup de logiciel venant du monde Linux sont aussi disponible via Homebrew.
      • + + + +
      • Le site n'est pas tant convivial, mais si tu découvres un logiciel libre et veut savoir s'il s'installe sur Mac, ça vaut la peine de faire une recherche: https://formulae.brew.sh/
      • +
      +
    • + + + +
    • F-Droid +
        +
      • Un petit dernier pour la route. Si tu as un appareil Android, regarde pour installer le magasin d'application alternatif F-Droid. Il n'est pas disponible dans le Google Play Store, mais tu peux l'installer à l'aide du fichier APK disponible sur leur site.
      • + + + +
      • Vas-y directement avec ton mobile. https://f-droid.org/fr/
      • +
      +
    • +
    + + + +

    Ta machine ressuscitée du vendredi fou !

    + + + +

    Si tu veux offrir un ordinateur en cadeau, un bon portable usagé de gamme professionnel (et résistant aux enfants) se trouve souvent pour moins de 400$. Tu peux aussi y installer une distribution Linux et comme ça, donner accès sans coût additionnel à des dizaines de milliers de logiciels !

    Au Québec, tu peux regarder chez Insertech, OrdiVert, QuébecPC, PC en vrac, PC Dépot et plusieurs autres détaillants locaux (ordinateur usagé + ta ville sur Google) ...

    + + + +


    Si tu recherches la marque Dell, regarde Dell Refurbished, j'en ai vu à moins de 200$: https://www.dellrefurbished.ca/laptops

    + + + +

    Bon magasinage du vendredi fou!

    +]]>
    + + 5692 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[ghorg, pour sauvegarder tous tes dépôts git]]> + https://jevalide.ca/2023/12/02/ghorg-pour-sauvegarder-tous-tes-depots-git/ + Sat, 02 Dec 2023 23:01:25 +0000 + + https://jevalide.ca/?p=5705 + + +

    ghorg est un logiciel en ligne de commande pour automatiser la copie de dépôts git. Il permet de cloner tous les dépôts d'un compte ou d'un groupe sur les plateformes GitHub, GitLab, Bitbucket ou Gitea en utilisant leur API.

    + + + +

    + + + +

    C'est un excellent outil pour faire une sauvegarde du contenu de nos projets de développement.

    + + + +

    + + + +

    Il est disponible pour Windows, MacOS (via Homebrew) et Linux. Il est aussi disponible sous forme de conteneurs Docker.

    + + + +

    + + + +

    Voici un exemple d'utilisation avec GitLab.

    + + + +
    capture d'écran de l'utilisation du logiciel ghorg avec un dépôt GitLab
    + + + +

    Configuration de ghorg

    + + + +

    Le logiciel se configure avec un fichier situé à cet endroit: $HOME/.config/ghorg/conf.yaml

    + + + +

    + + + +

    Voici les principales variables à configurer

    + + + +
      +
    • GHORG_SCM_TYPE: le type de dépôt (gitlab, github, bitbucket ou gitea)
    • + + + +
    • GHORG_ABSOLUTE_PATH_TO_CLONE_TO: le chemin où cloner les différents dépôts
    • + + + +
    • GHORG_CLONE_TYPE: type de compte (org, pour un groupe ou user, pour un compte personnel)
    • + + + +
    • GHORG_SCM_BASE_URL: URL de base du dépôt (seulement le domaine avec https://)
    • + + + +
    • GHORG_CLONE_WIKI: Mettre à true si tu utilises aussi la fonctionnalité wiki des dépôts.
    • + + + +
    • GHORG_FETCH_ALL: Télécharger toutes les branches en mettant à true.
    • + + + +
    • GHORG_GITHUB_TOKEN, GHORG_GITLAB_TOKEN, GHORG_GITEA_TOKEN ou GHORG_BITBUCKET_OAUTH_TOKEN: le jeton API pour accéder au dépôt
    • +
    + + + +

    Avec GitLab, tu peux aussi préciser de garder l'arborescence des groupes et sous-groupes avec GHORG_PRESERVE_DIRECTORY_STRUCTURE à true.

    + + + +

    Tu as plusieurs dépôts ?

    + + + +

    Si tu as plusieurs dépôts différents, tu peux te créer un fichier de configuration pour chacun, puis le copier dans $HOME/.config/ghorg/conf.yaml avant de cloner.
    Par exemple, j'ai un fichier pour mon instance personnelle de GitLab, situé à $HOME/.config/ghorg/conf-gitlab-jevalideca.yaml. Pour le copier, j'utilise la commande suivante

    + + + +
    cp $HOME/.config/ghorg/conf-gitlab-jevalideca.yaml $HOME/.config/ghorg/conf.yaml
    + + + +

    + + + +

    J'utilise ensuite la commande ghorg suivante pour cloner tous les projets faisant partie du groupe partage dans le répertoire que j'ai précisé dans le fichier de configuration à la variable GHORG_ABSOLUTE_PATH_TO_CLONE_TO

    + + + +
    ghorg clone partage
    + + + +

    Une autre option est de tout spécifier dans l'appel de la commande au lieu d'utiliser le fichier de configuration. Tout paramètre passé directement à ghorg remplace le contenu du fichier de configuration.

    + + + +

    Conclusion

    + + + +

    ghorg permet de faire rapidement une sauvegarde de tous les projets dans git. Je t'invite à l'essayer sans plus attendre !

    + + + +

    + + + +

    Visite le site officiel avec tous les détails pour l'installation.

    + + + +

    Aller plus loin avec git ?

    + + + +

    Tu aimerais découvrir tout le potentiel de git pour ton entreprise, même au delà du code ? J'ai eu vent que les professionnels de la rédaction et les juristes aimaient beaucoup utiliser git pour leurs textes !

    + + + +

    + + + + +]]>
    + + 5705 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[ListMonk, un logiciel d'infolettre libre]]> + https://jevalide.ca/2023/12/08/listmonk-un-logiciel-dinfolettre-libre/ + Fri, 08 Dec 2023 17:47:24 +0000 + + https://jevalide.ca/?p=5718 + + +

    Dans cet article, je te présente la solution libre que j'utilise pour la cyberlettre de Je valide ça, service-conseil: ListMonk.

    + + + +

    + + + +

    ListMonk, c'est un logiciel de gestion de listes de courriel, qu'on appelle aussi infolettres, entièrement libre. Tu peux l'installer sur ton propre serveur et t'éviter des frais mensuels élevés exigés par les plateformes populaires tel que MailChimp, ConvertKit ou ActiveCampaign.

    + + + +

    + + + +

    ListMonk permet entre autres de contrôler tous les aspects de la collecte d'information et du respect de la vie privée en conformité avec la loi 25 du Québec et le RGPD en Europe.

    + + + +

    À quoi ressemble ListMonk ?

    + + + +

    Listmonk a une interface web simple et épurée qui permet de se concentrer sur l'essentiel de la gestion d'infolettre: Les listes, les abonnements et les campagnes.

    + + + +

    + + + +
    Tableau de bord de ListMonk sur la page d'accueil
    + + + +

    Les listes

    + + + +

    ListMonk permet de créer des listes privées et des listes publiques. Les listes privées ne permettent l'inscription que via l'application alors que les listes publiques permettent l'inscription en libre-service via un formulaire.

    + + + +

    C'est aussi possible de spécifier un mode d'abonnement simple, sans courriel de confirmation, ou double, avec un courriel de confirmation.

    Dans tous les cas, la gestion du consentement peut se faire à chaque étape de l'abonnement.

    + + + +

    + + + +

    C'est aussi possible de créer plusieurs points d'entrée pour un même contenu et d'avoir de la personnalisation de cette façon. La gestion des tags et des métadonnéees est un peu plus complexe, car elle utilise du JSON et il faut donc faire un peu de programmation. C'est un des inconvénients de la plateforme sous sa forme actuelle.

    + + + +

    + + + +
    Gestion de plusieurs listes dans ListMonk. Il y a des listes publiques et privées et la possibilité d'un opt-in simple ou double. Une même liste peut avoir plusieurs points d'entrée.
    + + + +

    Les abonnements

    + + + +

    ListMonk permet de générer des formulaires d'abonnement pour une ou plusieurs listes, au format HTML, faciles à intégrer dans tous les logiciels de gestion de contenu tels que Wordpress.

    + + + +

    + + + +
    Génération d'un formulaire d'abonnement
    + + + +

    Les abonnés

    + + + +

    ListMonk permet de gérer les abonnements et les désabonnements au niveau des listes individuellement ou au niveau de l'abonné, ce qui permet de bloquer l'abonnement à toute liste future.

    + + + +

    + + + +
    Gestion des abonnés
    + + + +

    Les campagnes

    + + + +

    Listmonk permet de définir des campagnes de courriel simplement, via un formulaire, puis un éditeur complet qui se concentre sur le contenu.

    + + + +

    + + + +

    Les campagnes peuvent être programmées à une date future. L'outil permet aussi d'envoyer des messages de test.

    + + + +

    + + + +

    Les campagnes utilisent des modèles de courriel prédéfinis au format HTML que l'on peut personnaliser. Nous allons voir ça dans la prochaine section.

    + + + +
    Formulaire de création de campagne
    + + + +

    L'éditeur de courriel est complet et permet d'utiliser plusieurs modes d'édition, soit le mode en texte riche similaire à un traitement de texte, ou encore du HTML ou du Markdown.

    + + + +

    + + + +
    Éditeur de campagne
    + + + +

    Les modèles

    + + + +

    ListMonk permet de définir des modèles de courriel pour les campagnes et aussi pour des courriels transactionnels. Les modèles de campagne peuvent être choisis indépendamment pour chaque campagne, et les modèles transactionnels sont accessibles via l'API de ListMonk.

    + + + +
    Modèles de courriels de ListMonk pour campagne et transactionnel
    + + + +

    ListMonk respecte la vie privée

    + + + +

    ListMonk permet de configurer plusieurs paramètres en lien avec la vie privée pour respecter les différentes lois en vigueur et permettre l'exercice des droits en lien avec les renseignements personnels: consultation, modification et retrait.

    + + + +

    + + + +

    Ceci s'ajoute à la gestion des abonnés et la possibilité d'activer ou non les liens de suivi dans les campagnes.

    + + + +
    Configuration des paramètres de vie privée de ListMonk. Loi 35, RGPD et loi anti-spam.
    + + + +

    La configuration serveur

    + + + +

    ListMonk doit être connecté à un service SMTP pour envoyer les courriels. Il offre plusieurs options préconfigurées tel que Amazon SES, Mailgun, Mailjet, SendGrid et PostMark.

    + + + +

    + + + +

    Si tu as un petit volume d'abonnés, tu peux aussi utiliser Gmail (mais il y a une limite de 100 envois par jour)

    + + + +

    + + + +

    Pour ma part, j'utilise le service PostMark.

    + + + +

    + + + +
    Configuration SMTP de ListMonk
    + + + +

    Pour te procurer ListMonk

    + + + +

    Il y a plusieurs façons de te procurer ListMonk pour ton serveur. La marche à suivre est détaillée sur leur site web.

    + + + +
      +
    • Premièrement, tu peux utiliser Docker pour l'héberger et le rendre disponible. Si tu utilises déjà Docker, c'est probablement le plus simple pour garder l'application à jour.
    • + + + +
    • Tu peux aussi télécharger le binaire de l'application et l'exécuter directement sur ton serveur, pour ça, tu auras aussi à configurer une base de données PostgreSQL
    • + + + +
    • Tu peux l'installer en quelques clics sur un serveur utilisant le système Yunohost. La plupart de la configuration va être automatisée. C'est la méthode que j'utilise actuellement.
    • + + + +
    • Tu peux l'héberger chez un fournisseur de plateforme-service tel que Railway (fais juste attention parce que ça peut monter vraiment vite, les factures, sur ce genre de services)
    • +
    + + + +

    Je peux aussi le faire à ta place ! Contacte-moi !

    + + + +

    Abonnes-toi à ma cyberlettre

    + + + +

    Maintenant que tu connais tout des coulisses de ma cyberlettre, c'est le bon moment pour t'abonner !

    + + + + + + + +

    Ces articles pourraient t'intéresser !

    + + + + +]]>
    + + 5718 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[La naissance de la culture Tech Bro]]> + https://jevalide.ca/2024/01/30/la-naissance-de-la-culture-tech-bro/ + Wed, 31 Jan 2024 03:49:58 +0000 + + https://jevalide.ca/?p=6083 + + +

    La culture Tech Bro est apparue dans les années 1940, lors de la 2e guerre mondiale, aux États-Unis et au Royaume-Uni. Le tech bro est un homme blanc hétérosexuel qui n'a jamais connu le syndrome de l'imposteur. Il est généralement l'imposteur en s'appropriant le travail des autres, particulièrement dans le rôle bien prisé de fondateur de startup.

    + + + +

    + + + +

    Durant les premières années de l'informatique, entre 1940 et 1975 environ, ce qui était à la mode et bien en vue, c'est le développement du matériel informatique. Les premières sociétés de type startup ont vu le jour autour de l'université Stanford. On la baptise la Silicon Valley, principalement parce que le silicium, un semi-conducteur, sert à fabriquer les microprocesseurs des ordinateurs. À ne pas confondre avec le silicone des faux seins (ils le savent très bien).

    + + + +

    Femmes = calculatrices humaines

    + + + +

    Les femmes en informatique ont eu un rôle de calculatrice humaine, puis de programmeuse d'ordinateurs. Ce sont les femmes qui ont inventé le métier du génie logiciel. Mais, c'était pas cool. On perçoit ce métier comme clérical, similaire au secrétariat. On tape les programmes informatiques sur des cartes perforées avec des machines similaires à des dactylos.

    + + + +
    + + + +

    Lors du dévoilement du premier ordinateur programmable à l'Université de Pennsylvanie, on n'a jamais invité les femmes qui l'ont programmé au lancement. Les organisateurs pensaient que les femmes sur les photos étaient des mannequins qui étaient là pour mousser le marketing du produit.

    + + + +
    + + + +


    Conclusion, il n'y avait aucune femme impliquée dans le projet de présente au lancement du premier ordinateur. À cet événement, il y avait des politiciens, des hommes d'affaires et des hauts placés de l'armée. Ce serait là que serait officieusement née la culture masculinisée de l'informatique. Le tech bro est apparu dans les murs de UPenn, une université de la renommée Ivy League.

    + + + +

    + + + +

    Dans les communiqués de presse et les publicités subséquentes, on ne voyait que des hommes. Les femmes, pourtant, avaient développé l'expertise nécessaire pour les faire fonctionner. Elles ont créé les premiers compilateurs, ce qui a permis de créer des langages de programmation plus proches de l'anglais, dont le FLOW-MATIC et ensuite le COBOL, encore utilisé dans nos banques.

    + + + +
    + + + +

    Intelligence artificielle

    + + + +

    Le domaine de l'intelligence artificielle s'est développé durant les mêmes années. C'est un domaine principalement masculin, qui a été fondé par le regretté Alan Turing. Ce dernier s'est suicidé après que son homosexualité aie été dénoncé par un chercheur concurrent, et qu'il ait du subir une castration chimique.

    + + + +

    + + + +

    Ce mouvement visait à développer une intelligence de type humaine, basée sur le raisonnement et l'apprentissage automatique à l'aide de réseaux de neurones. Très peu de femmes ont été impliquées dans ces travaux, qui se sont surtout fait au MIT. On connait cette univertisé pour avoir longtemps été un repaire de "mauvais garçons" qui faisaient des "hacks" durant la nuit. On aura l'occasion d'en reparler.

    + + + +

    + + + +

    Au milieu des années 1970, alors que la création de microprocesseurs devenait un processus industrialisé, et que l'un des fondateurs d'Intel, James Moore, ait émit la "loi mathématique" selon laquelle la puissance allait doubler aux deux ans et que les coûts allait d'autant diminuer, l'intérêt s'est pointé sur le développement de systèmes d'exploitation. On venait en quelque sorte de régler la question de la puissance de calcul.

    + + + +
    + + + +

    L'arrivée du logiciel: la fin des tech bro?

    + + + +

    C'est là que deux personnages bien connus sont arrivés dans l'histoire: Bill Gates et Steve Jobs. Le logiciel devenait incontournable, et deux visions allaient s'affronter: le système universel de Microsoft, Windows, et les ordinateurs tout-en-un d'Apple, les Macintosh.

    + + + +

    + + + +

    Est-ce que ce sera l'occasion pour les femmes de reprendre leur place ?

    + + + +

    + + + +

    Ce sera pour le prochain article !

    + + + +

    + + + +

    En attentant, je t'invite à écouter cette entrevue de podcast que j'ai enregistré avec Tatiana St-Louis de l'Ambition au Féminin: Pourquoi la Silicon Valley n’aime pas les femmes ?

    + + + +

    Crédits

    + + + + +]]>
    + + 6083 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[Convertir des fichiers MP3 en mono]]> + https://jevalide.ca/2024/02/17/conversion-audio-fichiers-mp3-mono-ffmpeg/ + Sat, 17 Feb 2024 14:33:11 +0000 + + https://jevalide.ca/?p=6248 + + +

    Dans cet article, je te présente comment convertir des fichiers MP3 en mono à l'aide du logiciel FFmpeg.

    + + + +
    + + + +

    Obtenir le logiciel FFmpeg

    + + + +

    FFmpeg est un logiciel libre qui permet de transformer des fichiers contenant de l'audio et du vidéo. Il permet de faire de l'édition et de la conversion vers d'autres formats audio et vidéo ou dans le même format avec d'autres paramètres. C'est à la fois un codec et un éditeur de contenu. Il est un peu considéré comme le couteau suisse de l'audio-vidéo dans le monde du logiciel libre.

    + + + +
      +
    • Sur Windows, le logiciel est distribué via le système Winget. Tu peux l'installer avec la commande PowerShell suivante:
    • +
    + + + +
    winget install ffmpeg
    + + + +
      +
    • Sur MacOS, le logiciel est disponible via Homebrew avec cette commande:
    • +
    + + + +
    brew install ffmpeg
    + + + +
      +
    • Tu peux aussi obtenir FFmpeg via ta distribution Linux. Sur les systèmes Ubuntu et Debian, tu peux utiliser cette commande:
    • +
    + + + +
    sudo apt install ffmpeg
    + + + +

    Convertir les fichiers mp3

    + + + +

    Dans le cas qui m'intéresse ici, j'ai besoin de convertir des fichiers MP3 au format mono afin de les envoyer comme entrée à un algorithme de reconnaissance vocale qui convertis la voix en texte.

    + + + +

    Je vais donc utiliser:

    + + + +
      +
    • le codec audio (-c:a) libre LibMP3Lame
    • + + + +
    • une qualité (-q:a) de 2 (medium)
    • + + + +
    • un seul canal audio (-ac 1)
    • +
    + + + +

    J'utilise une boucle for pour itérer sur tous les fichiers avec une extension .mp3 dans mon répertoire. Le fichier résultant est préfixé par mono- pour le différencier des fichiers originaux.

    + + + +

    + + + +
    for f in *.mp3
    +do 
    +ffmpeg -i "$f" -c:a libmp3lame -q:a 2 -ac 1 mono-"$f"
    +done
    + + + +

    Ce code ne fonctionnera pas dans PowerShell, mais tu peux aussi utiliser WSL sur Linux pour avoir accès à Bash. Tu devras installer FFMpeg comme pour Ubuntu ci-dessus par contre.

    + + + +

    Si tu souhaites utiliser Powershell, voici le script à utiliser:

    + + + +
    Get-ChildItem -Filter *.mp3 | ForEach-Object {
    +    $outputFileName = "mono-$($_.Name)"
    +    ffmpeg -i $_.FullName -c:a libmp3lame -q:a 2 -ac 1 $outputFileName
    +}
    + + + +

    + + + +

    Bonne conversion !

    + + + +

    Ça pourrait aussi t'intéresser

    + + + + +]]>
    + + 6248 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[Invitation: Viens découvrir l’écologie numérique]]> + https://jevalide.ca/2024/02/21/23-fevrier-2024-viens-decouvrir-l-ecologie-numerique/ + Wed, 21 Feb 2024 20:33:56 +0000 + + https://jevalide.ca/?p=6258 + + +
    Affiche de l'évènement Viens découvrir l'écologie numérique
    + + + +

    Viens découvrir l’écologie numérique à travers une séances questions-réponses en ligne ce vendredi le 23 février à 13h EST.

    + + + +

    + + + +

    Tu peux envoyer toutes tes questions d'avance ici : https://bit.ly/3UB8Bw5

    + + + +

    Dans le cadre du Mois Numérique Jeunesse de Printemps numérique, je te proposons une rencontre avec mes collègues praticien·ne·s du numérique responsable de l'association AGIT Québec - Alliance pour une gestion informatique techno-responsable.

    + + + + + + + +

    Voici le lien pour la visioconférence : https://bit.ly/3I1SIam

    + + + +

    + + + +

    À vendredi !

    +]]>
    + + 6258 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[Custom Styles]]> + https://jevalide.ca/2022/06/29/wp-global-styles-go/ + Wed, 29 Jun 2022 22:31:34 +0000 + + https://nouveau.jevalide.ca/2022/06/29/wp-global-styles-go/ + + + + 5 + + + + + + + + + 0 + 0 + + + 0 + + + + <![CDATA[Le biais d'automatisation]]> + https://jevalide.ca/2024/02/22/le-biais-d-automatisation/ + Thu, 22 Feb 2024 16:38:22 +0000 + + https://jevalide.ca/?p=5740 + + +
    Le biais d'automatisation. Robot animé qui coche des cases
    + + + +

    Comme humain, on a tendance à faire confiance aux processus répétitifs et bien structurés. Ce sont des processus qui s'automatisent bien, en général. Mais, il y a un danger. Celui de faire confiance aux décisions de l'ordinateur même lorsque les conditions changent. La science récente démontre que notre instinct que "quelque chose cloche" disparait lorsqu'on fait trop confiance à l'informatique. C'est le biais d'automatisation.

    + + + +

    C'est dangereux lorsque les décisions ont trait à la vie, comme dans le domaine médical et de la justice. C'est aussi risqué lorsqu'on parle d'accès à un emploi ou à des produits financiers.

    + + + +

    C'est là que l'usage d'intelligence artificielle devrait être limitée, parce qu'on est directement dans le contexte des droits humains. Si tu fais partie d'un ordre professionnel, tu dois prendre une attention particulière à ces technologies et éviter les effets de mode, parce que l'accélération technologique, ça se fait rarement dans le respect des droits des citoyens.

    + + + +

    + + + +

    Si tu veux savoir comment profiter de la technologie sans tomber dans le biais d'automatisation, c'est une bonne occasion de planifier une consultation express !

    + + + + +]]>
    + + 5740 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[Bibliographie avec Python depuis une liste de livres]]> + https://jevalide.ca/2024/03/24/bibliographie-avec-python-depuis-une-liste-de-livres/ + Mon, 25 Mar 2024 02:31:29 +0000 + + https://jevalide.ca/?p=6383 + + +

    Dans cet article, je te présente comment construire une bibliographie avec Python à partir d'une liste de livres et d'auteurs qui n'est pas nécessairement structurée. Dans cet exemple, je vais utiliser une liste de livres publiée dans une publication sur le réseaux social LinkedIn par Rachelle Houde Simard.

    + + + +

    + + + +

    Voici comment j'ai fait pour traiter cette liste et arriver à une bibliographie structurée sans faire aucune recherche manuellement, ni en ayant à utiliser un outil génératif.

    + + + +

    + + + +

    J'ai commencé par mettre le texte brut dans une variable texte.

    + + + +
    book_titles = """
    +<texte ici>
    +"""
    + + + +

    + + + +

    + + + +

    La bibliothèque isbnlib

    + + + +

    J'ai ensuite cherché sur un moteur de recherche s'il y avait une bibliothèque de code Python pour convertir des titres et auteurs vers le code ISBN, qui est un identifiant unique pour les livres publiés par un éditeur.

    + + + +

    + + + +

    Je suis tombé sur le logiciel isbntools écrit en Python, qui est un utilitaire en ligne de commande. Comme je voulais avoir quelque chose qui fonctionne depuis un interpréteur Python, j'ai été voir le code source de ce logiciel et j'ai remarqué que la plupart des fonctionnalités proviennent de la bibliothèque isbnlib.

    + + + +
    import isbnlib
    + + + +

    + + + +

    Cette bibliothèque permet d'extraire, de valider et de nettoyer des données relatives aux codes ISBN. Il y a une fonction, isbn_from_words, qui permet de rechercher diverses sources de données telles que Google Books ou Wikipedia pour trouver un ISBN depuis un titre et un auteur, dans un bloc de texte non-structuré.

    + + + +
    isbn_list = [isbnlib.isbn_from_words(x) for x in book_titles]
    + + + +

    Cette fonction utilise la technique de la recherche approximative (appelée fuzzy search) qui compare la similarité des résultats de recherche pour trouver la correspondance la plus probable.

    + + + +

    + + + +

    Extraire les métadonnées depuis un ISBN

    + + + +

    Une fois qu'on a obtenu un numéro ISBN, on peut alors obtenir plusieurs informations sur le livre.

    + + + +

    + + + +

    Avant, on va utiliser la fonction clean sur les ISBN. C'est une façon de corriger les entrées de notre liste et d'avoir une bibliographie propre.

    + + + +
    isbn_list_clean = [isbnlib.clean(x) for x in isbn_list if x is not None]
    + + + +

    La fonction meta permet d'extraire des métadonnées depuis plusieurs sources de données. Par défaut, elle utilise Google Books.

    + + + +

    + + + +

    Tu remarqueras que j'utilise la fonction tqdm. Elle sert simplement à mettre une barre d'avancement dans la fenêtre d'exécution pour voir l'avancement du code et avoir une estimation du temps total d'exécution.

    + + + +
    from tqdm import tqdm
    + + + +

    Ces métadonnées sont:

    + + + +
      +
    • Le titre
    • + + + +
    • Les autrices et auteurs, dans une liste
    • + + + +
    • La maison d'édition
    • + + + +
    • L'année de publication
    • + + + +
    • La langue
    • + + + +
    • Le numéro ISBN corrigé à 13 chiffres
    • +
    + + + +
    isbn_meta = []
    +for x in tqdm(isbn_list_clean):
    +    try:
    +        isbn_meta_item = isbnlib.meta(x,"goob")
    +        isbn_meta.append(isbn_meta_item)
    +    except Exception as e:
    +        isbn_meta.append({})
    + + + +

    + + + +

    On peut aussi créer un lien vers Worldcat, qui est un catalogue mondial des bibliothèques publiques, principalement universitaires, qui contient la majorité des livres publiés dans le monde. C'est une source de référence agnostique qui n'appartient pas à une entreprise privée.

    + + + +

    + + + +

    Enfin, la fonction desc permet d'obtenir le résumé du livre tel qu'il se trouve sur une source de données. Encore une fois, par défaut, ça utilise Google Books.

    + + + +

    Préparer un tableau de données

    + + + +

    Enfin, pour rassembler ces données dans un tableau, j'utilise Pandas.

    + + + +
    import pandas as pd
    + + + +

    Je pars des métadonnées, qui sont déjà dans une liste de dictionnaires.

    + + + +
    books_df = pd.DataFrame(isbn_meta)
    + + + +

    Puis j'ajoute la colonne de l'URL et celle de la description.

    + + + +
    books_df["URL"] = [f"https://search.worldcat.org/fr/search?q={isbn}&offset=1" for isbn in books_df["ISBN"]]
    +books_df["description"] = [isbnlib.desc(x) for x in tqdm(isbn_list_clean)]
    + + + +

    + + + +

    J'en profite aussi pour changer le type de la colonne ISBN vers caractères, parce que par défaut, c'est une valeur numérique, et lors de l'exportation, ça va écrire le nombre sous forme de notation scientifique arrondie, ce qui nous fait perdre de l'information.

    + + + +
    books_df["ISBN"] = books_df["ISBN"].apply(str)
    + + + +

    Enfin, j'exporte le tableau dans un chiffrier Excel avec la fonction to_excel

    + + + +
    books_df.sort_values("Title").to_excel("liste_livres.xlsx", index=False)
    + + + +

    Listing complet pour construire une bibliographie avec Python

    + + + +

    Voici le listing complet de ce programme qui permet de construire une bibliographie avec Python depuis une liste de livres.

    + + + +
    import pandas as pd
    +import isbnlib
    +from tqdm import tqdm
    +
    +book_titles = """
    +<texte ici>
    +"""
    +
    +isbn_list = [isbnlib.isbn_from_words(x) for x in book_titles]
    +isbn_list_clean = [isbnlib.clean(x) for x in isbn_list if x is not None]
    +
    +isbn_meta = []
    +for x in tqdm(isbn_list_clean):
    +    try:
    +        isbn_meta_item = isbnlib.meta(x,"goob")
    +        isbn_meta.append(isbn_meta_item)
    +    except Exception as e:
    +        isbn_meta.append({})
    +
    +books_df = pd.DataFrame(isbn_meta)
    +
    +books_df["ISBN"] = books_df["ISBN"].apply(str)
    +
    +books_df["URL"] = [f"https://search.worldcat.org/fr/search?q={isbn}&offset=1" for isbn in books_df["ISBN"]]
    +
    +books_df["description"] = [isbnlib.desc(x) for x in tqdm(isbn_list_clean)]
    +
    +books_df.sort_values("Title").to_excel("liste_livres.xlsx", index=False)
    + + + +

    Boni: Exporter vers BibTeX

    + + + +

    Avec la bibliothèque isbnlib, c'est aussi possible d'exporter les données vers BibTex et plusieurs autres gestionnaires de bibliographie. On utilise pour ça un module de formatage dans le dictionnaire registry.bibformatters

    + + + +
    bibtex = isbnlib.registry.bibformatters["bibtex"]
    + + + +

    Pour exporter, on utilise la fonction bibtex et on écrit directement dans un fichier texte

    + + + +
    with open("isbn_meta.bib", "w") as f:
    +    for x in isbn_meta:
    +        if x != {}:
    +            f.write(bibtex(x))
    + + + +

    J'espère que tu vas apprécier utiliser isbnlib pour tes projets de données avec une bibliographie.

    + + + +

    Ces articles vont aussi t'intéresser

    + + + + +]]>
    + + 6383 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[Pistage sans cookies ! C'est possible, fais attention !]]> + https://jevalide.ca/2024/03/25/pistage-sans-cookies-cest-possible-fais-attention/ + Mon, 25 Mar 2024 19:42:17 +0000 + + https://jevalide.ca/?p=6395 + + +

    Je te présente quatre méthodes utilisées par les sites pour avoir des données de pistage sans demander de consentement et sans utiliser de cookies.

    + + + +

    + + + +

    Je te propose aussi quelques outils libres pour éviter cette forme de surveillance pour toi et pour ta clientèle.

    + + + +
    + + + +

    + + + +

    1. Se connecter avec ...

    + + + +

    Plusieurs sites web utilisent un partenaire de connexion tel que Google, Apple, Microsoft, Meta ou Amazon, aussi connu comme les GAFAM. Comme l'authentification se fait à chaque page, alors ils conservent une trace complète de ta visite.

    Évite de les utiliser, et priorise un alias courriel unique pour chaque site. Ton gestionnaire de mots de passe peut t'aider à ne pas avoir à te souvenir de chaque adresse.

    Tu peux utiliser le service de Firefox Relay pour créer des alias courriels sans utiliser ton domaine https://relay.firefox.com/

    + + + +

    2. Les entêtes HTTP

    + + + +

    Les entêtes HTTP contiennent plusieurs métadonnées: ton adresse IP, la page d'où tu arrives, l'instant exact de ta visite à la seconde près et quelques caractéristiques de ton navigateur.

    Tu peux modifier tes caractéristiques du navigateur avec l'extension Agentium: https://github.com/jichu4n/agentium

    + + + +

    3. Les paramètres de l'URL

    + + + +

    Beaucoup d'informations peuvent être encodées dans l'URL de la page que tu visites: un identifiant de suivi, un nom d'utilisateur, un code promotionnel et plein d'autres données de type UTM, souvent encodées au format Base64.

    Tu peux te protéger avec le Tracking Token Stripper, qui s'installe sur ton navigateur:

    + + + +

    https://github.com/jparise/chrome-utm-stripper

    + + + +

    4. Les polices d'écriture

    + + + +

    + + + +

    Google et Adobe fournissent des services de polices d'écriture. À chaque fois que tu visites un site qui utilise des polices, elles peuvent être téléchargées depuis le site du fournisseur si elles ne sont pas en cache, ce qui signale ta visite à ce site.

    Si tu as un site Wordpress et que tu utilises des polices d'écriture externes, tu peux utiliser le plugin OMGF pour protéger tes visiteurs: https://wordpress.org/plugins/host-webfonts-local/

    Ces outils sont tous des logiciels libres, en passant 😀 ! Partage à tes connaissances pour que nous soyons plus à éviter le pistage sans cookies !

    + + + +

    + + + +

    Ces articles vont t'intéresser

    + + + + +]]>
    + + 6395 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[Comment nos mots servent à nous exprimer]]> + https://jevalide.ca/2024/03/28/comment-nos-mots-servent-a-nous-exprimer/ + Fri, 29 Mar 2024 02:34:48 +0000 + + https://jevalide.ca/?p=6411 + + +

    Le chroniqueur Joseph Facal, en sa qualité d'homme blanc avec des opinions, a accès à une tribune rare d'une demi-page dans les journaux de Québécor, un des médias les plus lus de la province de Québec. Au lieu d'en faire un espace pour faire avancer la société, il en profite pour étaler son ignorance et sa vision étroite et réactionnaire de la société. Bref, un média qui se dit en difficulté financière offre un espace publicitaire avec une valeur au marché dans les milliers de dollars à un crétin de première classe.

    + + + +

    + + + +

    Il considère que le langage utilisé pour adresser les inégalités sociales sert à manipuler les gens. Mais en réalité ce qu'il réclame, c'est son droit d'être un mononc' aux penchants raciste, misogyne et homophobe aveuglé par ses privilèges.

    + + + +
    + + + +

    Un petit retour sur ces mots:

    + + + +
      +
    • Équité: Impartialité, c'est à dire traiter tout le monde sur un pied d'égalité. Article premier de la déclaration universelle des droits de l'homme
    • + + + +
    • Diversité: Variété, c'est à dire reconnaître que les gens sont différents et ont des besoins et désirs différents
    • + + + +
    • Inclusion: Considérer tous les gens membre du même groupe. Par exemple, tes employées et employés, parce que notre langue est genrée.
    • + + + +
    • Décolonialisme: On a conquis des territoires par le passé, tué leurs habitants et effacé leur cultures pour se faire de l'argent. C'est reconnaître leur droit d'exister.
    • + + + +
    • LGBT: C'est pas parce que tu te sens bien dans ton corps d'homme et que t'aimes ta madame que tout le monde vit et pense comme toi. Voir diversité.
    • + + + +
    • Assigné: Comme le sexe n'est pas que la présence ou l'absence de pénis, mais vient avec des facteurs génétiques et hormonaux, le médecin pose une hypothèse. Souvent c'est la bonne. Des fois ça adonne que c'était pas ça.
    • + + + +
    • Grossophobie: Les médecins, au lieu d'aider les personnes obèses, mettent la faute de tous leurs problèmes sur leur tour de taille pour s'en débarrasser. Étant donné le pouvoir social des médecins, ces croyances se sont imposées dans la société.
    • + + + +
    • Culture du viol: Le viol est considéré dans la majorité des sociétés de monde comme un acte banal ou comme une arme, étant donné que les femmes sont considérées comme des objets ou des usines à bébés. C'est un des actes les moins condamnés en justice.
    • + + + +
    • Microagression: Quand une personne se fait demander 30 fois par jour d'où elle vient parce qu'elle n'est pas blanche, ça commence à être agressant en sacrement.
    • + + + +
    • Minorités racisées: La discrimination des gens selon leurs origines, ça s'appelle du racisme.
    • +
    + + + +

    Ces mots existent. Ils ne sont pas obligatoires. Ils servent à décrire des concepts bien réels. Ils ne sont pas contre la science, la démocratie ou les droits, ils sont contre l'ignorance.

    + + + +

    Les connards comme Joseph Facal devraient prendre leur retraite et disparaître de l'espace public. Le Québec a mieux a offrir.

    +]]>
    + + 6411 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[Évaluation des facteurs relatifs à la vie privée - Discord "Chez Grincheux"]]> + https://jevalide.ca/2024/04/01/evaluation-des-facteurs-relatifs-a-la-vie-privee-discord-chez-grincheux/ + Mon, 01 Apr 2024 04:35:23 +0000 + + https://jevalide.ca/?p=6426 + + +

    Respect des lois et réglements en vigueur

    + + + +

    Quels lois sont concernées

    + + + +
      +
    • Loi sur la PRP (loi 25)
    • + + + +
    • RGPD (Europe)
    • +
    + + + +

    Risques d'atteinte à la vie privée

    + + + +

    Définir le projet ou le logiciel concerné

    + + + +

    Le projet est d'implanter un serveur sur le logiciel de communication Discord et d'y développer une communauté virtuelle.

    + + + +

    Politique de confidentialité: https://discord.com/privacy
    Entreprise: Discord Inc. est le responsable du traitement des données

    + + + +

    Pourquoi ce projet ?

    + + + +

    L'objectif de ce projet est de développer une communauté autour de l'expertise offerte par Je valide ça, service-conseil, dans un contexte décontracté. Il n'y a aucune prestation de service professionnel dans cette communauté.

    + + + +

    Faire un mapping du parcours client

    + + + +

    Le public cible pour ce parcours client consiste des abonnés aux réseaux sociaux, à l'infolettre et les visiteurs du site web de l'entreprise.

    + + + +

    Les informations requises pour créer un compte consiste en un nom d'utilisateur, un nom d'usage et un champ de description. La création d'un compte se fait de manière indépendante au serveur et est gérée par Discord.

    + + + +

    Le parcours client consiste à cliquer sur un lien d'invitation, puis à rejoindre le serveur.
    Ensuite, il y a des étapes d'introduction, dont lire les règles de la communauté et se présenter dans un canal dédié. L'ensemble des données produites dans le logiciel sont sous forme de texte libre, d'images, de fichiers et de liens vers des sites web externes. Le logiciel permet la diffusion d'audio et de vidéo, mais pas l'enregistrement.

    + + + +

    Lister les caractéristiques des données

    + + + +

    Les données sont créées dans le logiciel par les utilisateurs. Le volume des données est limité à de la conversation, des images et des pièces jointes. On pourrait estimer le volume annuel de données à quelques gigaoctets.

    + + + +

    Les données produites peuvent inclure tout type de données sensibles, produites sur une base volontaire par les utilisateurs du serveur. Il est possible d'utiliser les services à l'aide de pseudonymes et dans un anonymat relatif, d'un point de vue de l'administrateur d'un serveur.

    + + + +

    Faire un mapping des flux de données

    + + + +
      +
    • Discord stocke et traite les données aux États-Unis. Il n'y a pas d'autre options de stockage.
    • + + + +
    • Discord mentionne utiliser les services infonuagiques de Google, entre autres
    • +
    + + + +

    Identifier les techniques utilisées

    + + + +
      +
    • Intelligence artificielle
    • + + + +
    • Statistiques
    • + + + +
    • Décisions manuelles
    • + + + +
    • Stockage dans un système d'information
    • +
    + + + +

    Inventaire des renseignements et risques

    + + + +

    Lister les renseignements recueillis

    + + + +

    Par Discord

    + + + +
      +
    • Nom d'utilisateur
    • + + + +
    • Mot de passe
    • + + + +
    • Moyen de communication (courriel ou numéro de téléphone)
    • + + + +
    • Date de naissance
    • + + + +
    • Nom (facultatif)
    • + + + +
    • Contenu créé
    • + + + +
    • Information sur les activités
    • + + + +
    • Fonctionnalités facultatives
    • + + + +
    • Sondages
    • + + + +
    • Appareils: Adresse IP, Système d'exploitation, Périphériques (caméra, micro)
    • + + + +
    • Parcours de navigation
    • + + + +
    • Suivi publicitaire, si l'utilisateur clique sur une publicité
    • +
    + + + +

    Quel risque est associé à chacun

    + + + +
      +
    • La gestion des données est à la charge de l'utilisateur et peuvent être gérées depuis l'application Discord en conformité avec le RGPD.
    • + + + +
    • L'application Discord exige un niveau limité de données personnelles et elles ne sont pas accessibles par l'administrateur d'un serveur Discord
    • + + + +
    • La rétention des données s'applique tant et aussi longtemps que le compte de l'utilisateur est actif et est indépendant de l'utilisation ou non d'un serveur.
    • + + + +
    • L'application présente un risque de divulgation à des personnes non-autorisées lorsque les permissions et les rôles ne sont pas bien gérés. Cette responsabilité revient au gestionnaire du serveur.
    • +
    + + + +

    Causes

    + + + +
      +
    • Une fuite de données peut être occasionnée par les opérations de l'application par Discord.
    • + + + +
    • Une rétention des données au delà des besoins de l'application peut se produire si un compte est abandonné.
    • + + + +
    • Un accès non-autorisé peut être occasionné par une mauvaise gestion des accès par l'administrateur du serveur, mais aussi par la publication de renseignement dans une section du serveur avec des permissions larges.
    • +
    + + + +

    Quelles conséquences par parties prenantes

    + + + +

    Les principales conséquences anticipés à l'utilisation de l'application Discord par les utilisateurs sont:

    + + + +
      +
    • Atteinte à la réputation
    • + + + +
    • Discrimination
    • +
    + + + +

    Évaluation du risque

    + + + +

    Étant donné la nature non-confidentielle et publique des données qui sont attendues sur le serveur Discord, sur un horizon de 5 ans

    + + + +
      +
    • La probabilité du risque de fuite de données personnelles est considérée faible (20%)
    • + + + +
    • La probabilité d'un accès non-autorisé à des données personnelles sur le serveur est considérée faible (20%)
    • + + + +
    • La gravité d'une divulgation non-autorisée de données personnelles est considérée faible (20%)
    • +
    + + + +

    Lister les parties prenantes

    + + + +
      +
    • Les utilisateurs
    • + + + +
    • Les administrateurs du serveur
    • + + + +
    • L'entreprise Discord
    • +
    + + + +

    Enjeux éthiques

    + + + +
      +
    • Les enjeux éthiques sont adressés par une charte d'inclusion et des règles de communauté
    • +
    + + + +

    Stratégies pour réduire les risques

    + + + +
      +
    • Gestion des accès +
        +
      • Créer des groupes/rôles
      • + + + +
      • Reviser périodiquement
      • + + + +
      • Garder un registre
      • +
      +
    • + + + +
    • Restriction du serveur à un usage communautaire et à la divulgation d'information de nature publique seulement. Application via une modération mutuelle des utilisateurs.
    • + + + +
    • Ne conserver aucune copie des données à l'extérieur du logiciel. +
        +
      • Le risque d'intégrité et d'accessibilité des données est considéré comme négligeable. Les données générées par le serveur Discord ne sont pas considérées comme ayant d'autres objectifs d'affaires hors de l'existence de la communauté. Par conséquent, ne pas faire de sauvegardes externes au service Discord diminue davantage les risques identifiés qu'il augmente les risques d'affaires au niveau de l'entreprise.
      • +
      +
    • + + + +
    • Formation +
        +
      • Une bonne partie des risques peuvent être mitigés par une bonne éducation sur l'utilisation de la plateforme, ce qui consiste en des données personnelles et un rappel que c'est un espace public.
      • + + + +
      • Formation des modérateurs du serveur sur les bonnes pratiques de respect de la vie privée.
      • +
      +
    • +
    + + + +

    Ça te parle ?

    + + + +

    Tu utilises aussi Discord et tu aimerais utiliser mon analyse ? Ce peut être un excellent point de départ. Par contre, comme ton entreprise n'est pas la mienne, surtout si tu veux offrir des services professionnels sur cette plateforme, je te conseille d'avoir une petite jasette avec ton avocat·e !

    Pour tout savoir sur la loi 25, je te conseille ma formation Juste assez de loi 25 , qui fait partie de la collection Y'app pas d'problème: https://jevalide.ca/yapp-pas-dprobleme/

    +]]>
    + + 6426 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[Développement en continu libre et PaaS]]> + https://jevalide.ca/2024/04/02/developpement-continu-libre-forgejo-woodpecker-caprover/ + Wed, 03 Apr 2024 00:32:42 +0000 + + https://jevalide.ca/?p=6450 + + +

    Une suite de développement en continu libre et légère

    + + + +

    Dans cette présentation, je vais t'introduire trois outils légers pour développement en continu libre d'applications web et mise en production: Forgejo, Woodpecker et CapRover.

    + + + +

    + + + +

    Ces outils ont comme particularité de demander peu de ressources. Ils sont minimalistes et n'ont pas autant de fonctionnalités que les outils populaires tels que GitLab, Jenkins ou Kubernetes.

    + + + +

    + + + +

    Forgejo et Woodpecker sont disponibles sur la plateforme d'autohébergement Yunohost.

    + + + +

    + + + +

    Cette présentation a été faite lors du Linux Meetup Québec du 2 avril 2024.

    + + + +

    Forgejo

    + + + +

    Forgejo est un logiciel de gestion de code source utilisant git. Il est forké de Gitea par la coopérative de développement allemande Codeberg. Il est rétrocompatible avec Gitea, mais avec une équipe de développement indépendante.

    + + + +

    Fonctionnalités disponibles:

    + + + +
      +
    • Utilisateurs et organisations
    • + + + +
    • Wiki
    • + + + +
    • Tableaux de projets Kanban
    • + + + +
    • Billets et Milestones
    • + + + +
    • Webhooks
    • + + + +
    • Fournisseur d'authentification Oauth2
    • + + + +
    • API complète
    • + + + +
    • Intégrations avec Cargo (Rust) et Chef
    • + + + +
    • Forgejo
    • +
    + + + +

    Woodpecker

    + + + +

    Woodpecker est un outil simple de CI/CD dérivé de drone.io.

    + + + +

    Il utilise des containers pour exécuter des scripts. Il utilise des actions d'une manière qui est davantage similaire à GitHub Actions que GitLab. De mon coté, j'ai converti mes scripts en utilisant tout simplement Docker in Docker.

    + + + +

    + + + +

    Donc, si on passe de GitLab à Woodpecker, il faut réécrire les scripts de déploiement en continu.

    + + + +


    Nous allons en voir un exemple.

    + + + +

    + + + +

    Mon impression avec Woodpecker a été que c'est vraiment très minimaliste.

    + + + +

    Il utilise Forgejo comme fournisseur d'authentification, mais l'intégration bogue un peu. On doit vider les cookies manuellement pour se reconnecter lorsque ça fait longtemps qu'on y est allé.

    + + + +

    + + + +

    Il faut ajouter les projets manuellement dans Woodpecker. Il lit les projets du Forgejo avec l'utilisateur connecté.

    + + + +

    + + + +

    Les secrets peuvent être global, par organisation et par projet. De mon expérience, les secrets par organisation ne sont pas bien enregistrés, alors j'utilise seulement des secrets globaux. Ce n'est pas problématique comme je suis seul utilisateur, mais ça peut être un inconvénient en organisation.

    + + + +

    + + + +

    On peut aussi utiliser des images personnalisées pour exécuter des tâches CI/CD, mais je n'ai pas exploré ces fonctionnalités.

    + + + + + + + +

    Exemple de script

    + + + +

    Variables d'environnement spécifiées dans les secrets de Woodpecker. L'extraction des variables se fait en minuscules dans le script.

    + + + +
      +
    • DOCKERHUB_USERNAME
    • + + + +
    • DOCKERHUB_PASSWORD
    • + + + +
    • CAPROVER_URL
    • + + + +
    • CAPROVER_PASSWORD
    • +
    + + + +

    Variables fournies dans Woodpecker

    + + + +
      +
    • CI_REPO_NAME
    • + + + +
    • CI_COMMIT_REF
    • +
    + + + +
    steps:
    +  - name: docker
    +    image: plugins/docker
    +    commands:
    +      - docker login docker.io -u $${DOCKERHUB_USERNAME} -p $${DOCKERHUB_PASSWORD}
    +      - docker build --rm=true -f Dockerfile -t $${CI_COMMIT_REF} .
    +      - docker tag $${CI_COMMIT_REF} $${DOCKERHUB_USERNAME}/$${CI_REPO_NAME}:latest
    +      - docker push $${DOCKERHUB_USERNAME}/$${CI_REPO_NAME}:latest
    +    secrets: [ dockerhub_username, dockerhub_password ]
    +    volumes:
    +      - /var/run/docker.sock:/var/run/docker.sock
    +  - name: caprover
    +    image: plugins/docker
    +    commands:
    +      - docker login docker.io -u $${DOCKERHUB_USERNAME} -p $${DOCKERHUB_PASSWORD}
    +      - docker run --network=host caprover/cli-caprover:2.2.3 caprover deploy --caproverUrl "$${CAPROVER_URL}" --caproverPassword "$${CAPROVER_PASSWORD}" -a "$${CI_REPO_NAME}" -i docker.io/$${DOCKERHUB_USERNAME}/$${CI_REPO_NAME}
    +    secrets: [ dockerhub_username, dockerhub_password, caprover_url, caprover_password ]
    +    volumes:
    +      - /var/run/docker.sock:/var/run/docker.sock
    + + + +

    CapRover

    + + + +

    CapRover est une plateforme d'hébergement d'applications basée sur Docker Swarm. Elle fonctionne de manière similaire à Heroku ou les services PaaS des fournisseurs cloud.

    + + + +

    + + + +

    La création d'une application se fait en un clic, et le script de mise en production s'exécute depuis une application client en ligne de commande, qu'on peut appeler directement dans le fichier de script de Woodpecker avec une instance de Docker in Docker.

    + + + +

    + + + +

    On peut configurer directement les variables d'environnement dans l'interface. On peut aussi ajouter un certificat Let's Encrypt et de l'authentification HTTP Basic, si l'application n'a pas son propre mécanisme d'authentification.

    + + + + + + + +

    Registre de conteneurs

    + + + +

    GitLab a son propre registre de conteneurs, mais ces plateformes légères n'en ont pas. J'utilise donc Docker Hub pour mes images publiques parce que c'est gratuit. Sinon, je conseille d'utiliser un registre d'images privées. Il y en a chez la plupart des fournisseurs cloud.

    + + + + + + + +

    Infrastructure requise

    + + + +

    Woodpecker et Forgejo peuvent être installés avec d'autres logiciels sur un serveur.

    + + + +

    + + + +

    Woodpecker requiert aussi des workers sur un serveur séparé, idéalement pas avec des logiciels en production.

    + + + +

    + + + +

    CapRover requiert sont propre serveur sur Debian qui va servir seulement à cette plateforme.

    + + + +

    + + + +

    Je t'invite à essayer ces outils de développement en continu libre et à m'en donner des nouvelles !

    +]]>
    + + 6450 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[Le mensonge derrière l'IA qui décuple la productivité]]> + https://jevalide.ca/2024/04/06/le-mensonge-derriere-lia-qui-decuple-la-productivite/ + Sat, 06 Apr 2024 15:43:56 +0000 + + https://jevalide.ca/?p=6459 + + +

    Il y a très peu de bonne recherche académique sur les outils d'IA génératif. La raison est simple: le domaine est trop jeune pour avoir intégré des outils qui décuple la productivité.

    + + + +

    + + + +

    Un doctorat prend en moyenne 3 ans à compléter. C'est un durée normale pour un projet de recherche bien fait. Règle générale, la recherche, c'est identifier un problème de recherche, poser une hypothèse, designer un plan d'expérience, mener l'expérience, se casser la gueule plein de fois, recommencer, et éventuellement, tu peux confirmer ou non ton résultat, établir une théorie (explication) et essayer de la reproduire dans d'autres contextes.

    + + + +

    + + + +

    Par contre, la "recherche" faite en intelligence artificielle semble toujours marcher du premier coup ! Pourquoi ? Parce qu'ils font tout à l'envers. Les chercheurs inventent un résultat, puis construisent l'histoire qui mènent à ce résultat, jusqu'à enfin identifier un problème à résoudre.

    + + + +

    + + + +

    C'est ce qu'on appelle le technosolutionnisme. C'est d'un point de vue logique et sémantique, l'antonyme de la science. Cette méthode est celle adoptée par la Big Tech et par ses disciples, les tech bros.

    + + + +

    + + + +

    Les tech bros ont eux mêmes leurs disciples, les influenceurs techno. Et quoi de mieux que pour décrire ces personnages qu'un meme provenant de LinkedIn !

    + + + +
    + + + +

    + + + +

    Les influenceurs sont généralement des gens avec aucune compétence ou études dans le domaine qu'ils ont adoptés. Leur expertise est souvent située au sommet de la montagne de l'ignorance, aussi appelé l'effet Dunning-Kruger (source).

    + + + +
    + + + +

    L'article qui a tout éclairci (ou pas)

    + + + +

    Un des articles qui a le plus fait parler (Dell'Acqua et al. 2023)(PDF) au sujet des gains de productivités de l'intelligence artificielle générative est en fait un article qui confirme plutôt le contraire, quand on prend effectivement le temps de le lire. Or, la lecture, c'est plate et long, donc on extrait les statistiques qui choquent le plus de l'article, on les mets hors contexte, et on appelle ça de la vulgarisation scientifique.

    + + + +

    Décuple la productivité

    + + + +

    Ce qui donne cette affirmation qu'on a vu beaucoup trop souvent dans la dernière année:

    + + + +

    + + + +

    L'intelligence artificielle décuple la productivité.

    + + + +

    + + + +

    J'oubliais le petit emoji de tête qui explose 🤯. Donc voilà !

    + + + +

    + + + +

    L'intelligence artificielle décuple la productivité 🤯.

    + + + +

    + + + +

    Premièrement, décupler signifie multiplier par 10, sauf au sens figuré. En science, on n'utilise pas le sens figuré, encore moins lorsqu'on parle de productivité, ou tout autre mesure économétrique, où les nombres sont très importants.

    + + + +

    + + + +

    Le sens figuré et les figures de style hyperboliques sont typiques des influenceurs. Quand on est ignorant, on est plus facilement impressionné ! C'est le principe même de la magie. Une fois qu'on connait les trucs, c'est plutôt ennuyant. L'IA c'est pareil, c'est pas de la magie, c'est juste des maths.

    + + + +

    Working paper

    + + + +

    Revenons à notre article. Qui en passant n'est pas un article, mais un "working paper", qui décrit une expérience et non pas une théorie ! C'est un bout de chemin dans la démarche scientifique, mais pas un tour de roue au complet. Une chance, parce que c'est plutôt ridicule, on dirait un projet étudiant de secondaire 2 avec un trop gros budget.

    + + + +

    + + + +

    Prenons aussi le temps de regarder qui rédige l'article. Des profs de ... marketing ! Pas des spécialistes de l'IA, pas des statisticiens, mais bien des gens de marketing. Pourquoi ? Les gens de marketing aiment beaucoup les choses qui sonnent bien au profit de la rigueur, parce que c'est comme ça que le cerveau humain fonctionne.

    + + + +

    + + + +

    Ils carburent aux biais cognitifs et c'est une grande partie de leur enseignements. Étudier le marketing c'est fondamental pour ne pas se faire avoir dans la vie, ou pour aider les autres à se faire avoir. À chacun ses valeurs, comme on dit. Les gens de marketing sont souvent très créatifs, mais je ne leur ferais pas faire un audit de loi 25, encore moins une étude statistique sur l'intelligence artificielle, ceci dit !

    + + + +

    The Big Con

    + + + +

    Qui d'autre signe cet article ? Trois consultants de la célèbre firme Boston Consulting Group. Une des Big3, ces usines à rhétorique (en anglais: bullshit) notoires qui influencent les grandes entreprises et les gouvernements à mettre de côté leur éthique pour maximiser les profits de leurs entreprises (oui, tu as bien lu gouvernement et maximiser les profits dans la même phrase. Il faut être un peu naïf pour croire que les grandes machines étatiques ne sont elles-même pas devenues des entreprises qui luttent pour leur croissance et leur survie).

    + + + +

    + + + +

    La population étudiée est le groupe très diversifié de diplômés de la Ivy League qui travaillent chez Boston Consulting Group ! Un échantillon parfait pour représenter la diversité des travailleuses et travailleurs de par le monde.

    + + + +

    + + + +

    On apprend donc que dans le contexte bien précis du travail contextualisé "AI friendly" d'écrire de la bullshit (a set of 18 realistic consulting tasks within the frontier of AI capabilities) pour influencer les grandes entreprises, ChatGPT "décuple" la productivité de 12,2%, et non 1000% (they completed 12.2% more tasks on average, and completed task 25.1% more quickly). Les deux pourcentages réunis ne font aucun sens, mais on va leur pardonner, ils sont profs de marketing, pas de statistiques !

    + + + +

    Qualité !

    + + + +

    Considérant que ChatGPT écrit 600 jetons par minute (450 mots), on a ici une mesure directe de la qualité du copier-coller qu'on peut obtenir en payant 10000$ de l'heure chez Boston Consulting Group.

    + + + +

    + + + +

    On apprend aussi que la qualité de la rhétorique générée a augmenté de 40%, selon ces mêmes consultants (comme les bonnes pratiques de peer-review l'obligent). Pour une échelle de qualité du caca, il faut demander à Andréanne Martin, parce que l'article n'en propose pas, malheureusement. En fait oui, mais sérieusement, on dirait que ça aussi été généré par ChatGPT (comme une bonne partie de l'article, d'ailleurs).

    + + + +

    + + + +

    Dès que la tâche sort de ce contexte, appelé la Jagged Technological Frontier, un terme inventé par ces consultants qui veut dire sweet fuckall (Jagged est un mot qui signifie "incertain, approximatif", et Technological Frontier, ça sonne Star Trek, c'est parfait !), les centaures et les cyborgs (je n'invente rien ici, c'est les titres donnés aux consultants de l'expérience) sont beaucoup moins coproptimisateurs (ça c'est moi qui l'invente).

    + + + +

    + + + +

    On apprend que leur productivité pour les autres tâches demandées (qui ressemblent à du vrai travail, versus générer des niaiseries) diminue de 19% en utilisant ChatGPT (For a task selected to be outside the frontier, however, consultants using AI were 19 percentage points less likely to produce correct solutions compared to those without AI.)

    + + + +

    + + + +

    Notons ici qu'ils savaient où se trouvait la frontière de la bullshit avant même de concevoir l'expérience. On leur doit ça, au moins, leur modèle d'affaires est bien défini.

    + + + +

    + + + +

    On peut donc calculer la proportion minimale de temps investie à créer des niaiseries par les consultants de BCG pour que ChatGPT soit rentable. Il suffit de résoudre l'équation suivante:

    + + + +
    1.12p-0.81(1-p)=1
    + + + +

    C'est samedi, ça fait que Wolfram Alpha est mon ami (maths de 6e année primaire 🤣):

    + + + +
    + + + +

    Magnifique ! Pour que ChatGPT soit rentable chez BCG, les consultants doivent passer près de 94% de leur temps (soit environ 66 heures) à écrire des niaiseries.

    + + + +

    Revenons à nos influenceurs

    + + + +

    Il va de soi que cet article pourtant très populaire n'a pas été considéré comme du travail sérieux dans le monde académique (sauf en Marketing, mais j'hésite encore à dire si c'est un vrai domaine académique après avoir lu ça)

    + + + +

    + + + +

    Par contre, l'explosion d'experts en intelligence artificielle née entre Noel 2022 et le jour de l'an 2023 (un intervalle de 6 jours, beaucoup plus court que la durée d'une recherche doctorale, rappelons-le) est bien réelle. Et c'est là que je réalise d'où vient le 100 x dans le meme ci-haut 🤯 ! 100 x plus rapide qu'un PhD de devenir influenceur en intelligence artificielle. ChatGPT décuple la productivité pas juste une fois, mais deux fois ! Sans oublier leur temps de mise en marché incroyable de 18 jours.

    + + + +
    + + + +

    + + + +

    Devenir GrinchGPT c'est plus long, mais moi, contrairement à 99% d'entre eux, j'ai deux diplômes universitaire où j'ai appris à créer des systèmes dits d'intelligence artificielle et je sais comment créer des réseaux de neurones et des modèles de langage from scratch. Je n'ai juste pas les 10 milliards de dollars en crédits Azure de Papa Satya pour leur faire prendre vie, ni l'envie d'escalader la montagne de l'ignorance pour y planter mon drapeau. J'ai encore beaucoup trop de choses à découvrir à mon rythme.

    + + + +

    + + + +

    Aucune IA n'a été nécessaire pour la rédaction de cet article.

    +]]>
    + + 6459 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[Comment rejoindre le serveur Matrix Chez Grincheux]]> + https://jevalide.ca/2024/04/26/rejoindre-le-serveur-matrix/ + Sat, 27 Apr 2024 02:52:06 +0000 + + https://jevalide.ca/?p=6524 + + +
    + + + +

    Chez Grincheux (production technique) est une communauté sans censure, constructive, militante pour nous aider collectivement à adopter un usage responsable de la technologie.

    + + + +

    C'est là où tu peux accéder à toutes mes publications et que tu peux aussi publier toutes les tiennes. C'est un espace horizontal avec un code de vie inclusif.

    + + + +

    Pourquoi Matrix

    + + + +

    Étant donné les nombreux enjeux soulevés dernièrement avec Discord, entre autre avec l'application Spy Pet qui extrait et revend nos données et nos conversations à la police et aux grandes entreprises du web, j'ai décidé de migrer la communauté sur la plateforme libre Matrix.

    + + + +

    + + + +

    Le serveur Matrix Chez Grincheux est accessible avec le logiciel Element, dont une instance est installée à l'adresse https://matrix.grincheux.jevalide.ca.

    + + + +

    + + + +

    Je te conseille d'utiliser le client Element de bureau ou mobile en premier pour rejoindre le réseau Matrix, ou tout autre client compatible. Tu as les instructions à la fin de la page.

    + + + +

    + + + +

    Matrix est un système de communication libre et sécurité avec un serveur appelé Synapse. C'est sur ce serveur que tu vas créer ton compte, mais tu ne l'utiliseras jamais directement.

    + + + +

    + + + +

    Tu vas plutôt te connecter avec un client Matrix sur ce serveur. C'est un peu comme Discord et Slack, sauf que le serveur qui contient les données est découplé du client complètement, ce qui offre beaucoup de liberté et permet aussi d'offrir du chiffrement de bout en bout.

    + + + +

    + + + +

    D'ailleurs, pour utiliser le chiffrement, tu auras a créer et télécharger une clé, qui va te permettre de garder accès à tes messages même si tu changes d'appareil

    + + + +

    Marche à suivre

    + + + + + + + +
      +
    • Clique sur Continue
    • +
    + + + +
    + + + +
      +
    • Sélectionne le Français dans le menu, puis clique sur Créer un compte
    • +
    + + + +
    + + + +
      +
    • Crée un nom d'utilisateur, un mot de passe et associe un courriel à ton compte. Assures-toi de mettre ces informations dans un gestionnaire de mots de passe tel que Bitwarden. Je ne peux pas t'aider si tu les perds.
    • +
    + + + +
    + + + +
      +
    • Vérifie ton courriel pour confirmer ton adresse
    • +
    + + + +
    + + + +
      +
    • Clique sur le lien dans le courriel. Ça va ouvrir un nouvel onglet dans ton navigateur que tu peux fermer immédiatement.
    • + + + +
    • L'onglet précédent va automatiquement se connecter pendant ce temps là.
    • +
    + + + +
    + + + +
      +
    • Clique sur Membres de la communauté en ligne
    • +
    + + + +
    + + + +
      +
    • Clique sur la maison à gauche, puis sur Rechercher des espaces publics
    • +
    + + + +
    + + + +
      +
    • Clique sur Afficher à droite de Chez Grincheux
    • +
    + + + +
    + + + +
      +
    • Rejoins la communauté Chez Grincheux.
    • + + + +
    • Note: C'est important de rejoindre l'espace pour voir les canaux. C'est un peu l'équivalent du "serveur" sur Discord, même si les canaux sont des entités autonomes qui peuvent faire partie de plusieurs espaces !
    • +
    + + + +
    + + + +
      +
    • Depuis la page d'accueil de l'espace, tu peux t'abonner à des canaux
    • +
    + + + +
    Sélectionner l'espace, puis les canaux à rejoindre
    + + + +

    + + + + + + + +
    + + + +

    Utiliser l'application mobile Element

    + + + +

    Tu peux aussi utiliser l'application mobile Element disponible sur Google Play, F-Droid ou App Store.

    + + + +

    + + + +

    Tu pourras vérifier ton compte en t'y connectant sur le serveur synapse.grincheux.jevalide.ca et ensuite, on va te demander de confirmer ton accès en utilisant ta session ouverte sur l'ordinateur.

    + + + +

    + + + +

    Tu vas avoir plusieurs confirmations à effectuer, dont scanner un code QR à l'écran.

    + + + +

    + + + +
    +]]>
    + + 6524 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[Autohéberger son site web: deviens ton propre fournisseur !]]> + https://jevalide.ca/2024/04/28/autohebergement-site-web-sans-fournisseur/ + Sun, 28 Apr 2024 18:43:16 +0000 + + https://jevalide.ca/?p=6545 + + +

    Dans cet article, je vais te présenter comment autohéberger ton propre site web sans fournisseur. Nous allons pratiquer ce qui s'appelle couramment l'autohébergement, où tu devient ton propre fournisseur. Je t'informe des coûts, des connaissances nécessaires, des plateformes populaires à installer sur son serveur, et de tes nouvelles responsabilités !

    + + + +

    Pourquoi s'autohéberger ?

    + + + +

    La plupart des sites web sont hébergés sur des plateformes dite mutualisées. Essentiellement, une entreprise d'hébergement loue un espace sur ses serveurs à travers une plateforme de type CPanel. Tu peux ensuite y installer un gestionnaire de contenu tel que Wordpress pour construite ton site web.

    + + + +

    + + + +

    Ces fournisseurs offrent souvent un nom de domaine, des certificats HTTPS et un service de sauvergarde. Par contre, le niveau de fiabilité et la disponibilité du support est variable. On le découvre souvent trop tard lors des pannes ou incidents de sécurité. Les mises à jour ne sont pas toujours faites. Bien souvent, tu dois composer avec d'anciennes versions des logiciels qui n'incluent pas les nouvelles fonctionnalités et les correctifs de sécurité.

    + + + +

    + + + +

    Plusieurs situations d'hébergeurs qui perdent des données de dizaines, voir de milliers de sites web sont survenues dans les dernières années, au Québec ou ailleurs.

    + + + +

    + + + +

    S'autohéberger permet d'avoir le contrôle sur l'ensemble de la pile logicielle, du système d'exploitation aux versions des logiciels. Ça permet aussi de se conformer aux lois de souveraineté des données comme le RGPD ou la loi 25 au Québec. C'est aussi un beau défi, stimulant et enrichissant, qui te rendra plus résilient.e sur le web.

    + + + +

    + + + +

    Par contre, ça vient aussi avec des responsabilités. C'est ce qu'on va voir ensemble. Mais avant ça, explorons les coûts en lien avec cette option.

    + + + +

    Ça coûte combien, autohéberger son site web ?

    + + + +

    Pour s'autohéberger, il y a deux principales options disponibles: louer un serveur physique ou un serveur virtuel, ou l'acheter et l'héberger à la maison ou en colocation. C'est de là que vont provenir la majorité des coûts

    + + + +

    + + + +

    Il y a aussi une option intermédiaire qui fait partie des offres cloud: louer un serveur privé virtuel (appelé généralement VPS) qui représente une fraction d'un serveur physique. Ce dernier est généralement partagé à l'aide d'un logiciel spécialisé appelé hyperviseur.

    + + + +

    Les différentes options varient d'environ 10$ par mois jusqu'à plusieurs centaines de dollars par mois.

    + + + +

    Un serveur physique à la maison

    + + + +

    Choisir ton serveur

    + + + +

    Un serveur physique peut coûter entre 1000$ et 3000$ à l'achat pour un matériel récent, et a une durée de vie d'environ 10 ans. Il y a des options intéressantes dans l'usagé aussi à considérer, que tu peux trouver à partir de 500$. Regarde toujours pour des marques réputées pour leur matériel commercial, telles que Dell, HP ou Lenovo. L'important ici, c'est le grade de qualité du serveur qui doit être commercial. Oublie les ordinateurs du Best Buy ! C'est important parce qu'il va fonctionner 24 heures par jour, durant toute l'année.

    + + + +

    + + + +

    Tu vas souvent voir des montages avec des ordinateurs légers de type Raspberry Pi. C'est amusant pour des projets de type hobby, mais je ne conseille pas pour un usage en entreprise. Surtout parce que c'est lent, et que le système est plus sensible aux pannes. Ce n'est pas la bonne place pour économiser.

    + + + +

    Bien t'installer

    + + + +

    Si tu héberges le serveur chez toi, il faut penser à une alimentation électrique d'urgence de type UPS avec deux piles à décharge rapide. C'est environ 200$ pour les modèles de base de l'entreprise APC, Costco en ont souvent en promotion. Il te faudra aussi un climatiseur en été, parce que ça dégage beaucoup de chaleur (10$ par mois de juin à septembre). En hiver, par contre, ça contribue à ton chauffage ! il faut aussi penser à la sécurité physique, car ton serveur pourrait être volé. Donc, idéalement, tu veux avoir un rack métallique. Un serveur standard va coûter environ 5$ d'électricité par mois auprès d'Hydro-Québec.

    + + + +

    + + + +

    Si tu veux une bonne performance au niveau de la connexion au réseau Internet, tu dois avoir un service de fibre optique tel que Bell Fibre ou un forfait commercial de cable. Les forfaits résidentiels de cable ou de téléphonie ADSL ne sont généralement pas suffisants.

    + + + +

    Un serveur physique en colocation

    + + + +

    Un espace en colocation dans un centre de données va coûter autour de 100$ par mois pour y installer ton propre serveur. C'est une option intéressante si tu as acheté une bête à plusieurs milliers de dollars, pour une entreprise en croissance. Mais pour le commun des mortels, en particulier les petites entreprises, ça peut être dispendieux pour démarrer. Tu dois fournir ici ton serveur physique et le câble d'alimentation électrique. Tu pourrais aussi avoir à fournir un commutateur réseau (switch). Par contre, tout le reste est pris en charge, incluant la sécurité physique, l'alimentation de secours et l'accès internet.

    + + + +

    Un serveur privé virtuel (VPS)

    + + + +

    Le choix le plus populaire pour l'autohébergement de sites web est la location de serveurs dédiés ou de serveurs virtuels VPS dans un centre de données. Les VPS sont disponibles chez les hébergeurs en libre-service à partir d'environ 10$ par mois. Un serveur avec un processeur et 2 Gigaoctets de mémoire est en masse suffisant pour un site web d'entreprise ! Il y a beaucoup d'offre sur le web, et au Québec, tu pourras en trouver chez Planet Hoster, OVHCloud et WHC.

    + + + +

    Les serveurs VPS ont généralement une très bonne bande passante. Par contre, ils ont souvent un stockage limité, ce qui n'est pas vraiment important de toute façon pour un site web, parce que ça occupe peu d'espace disque.

    + + + +

    Un serveur dédié en location

    + + + +

    Si tu comptes autohéberger plusieurs applications en plus de ton site web, tu peux aussi regarder pour des tailles de serveur plus grandes, ou regarder pour un serveur dédié. Cette option te permet d'avoir accès à toutes les ressources d'une machine physique. La location permet de ne pas te soucier de l'entretien, de l'alimentation électrique, de la climatisation et de la sécurité physique. Tu peux trouver des serveurs dédiés bas de gamme usagés à partir de 40$ par mois , notamment chez OVHCloud, dans la gamme Eco. Mais généralement, les coûts de location d'un serveur dédié moderne débutent autour de 90$ par mois.

    + + + +

    + + + +

    De mon côté, j'utilise un serveur dédié usagé, avec une vingtaine d'applications, ainsi qu'un serveur VPS pour mon site web, qui a une meilleure bande passante.

    + + + +

    L'infonuagique en mode Infrastructure (IaaS)

    + + + +

    Les fournisseurs d'infonuagique tel que Google Cloud, Microsoft Azure, Amazon Web Services offrent aussi un service similaire dans leur offre de "Calcul" de type Infrastructure disponible au Québec (souvent appelé Canada East), avec des tarifs réduits pour des abonnements d'un an ou plus.

    + + + +

    + + + +

    Mais ici, tu vas recevoir une facturation basée sur l'usage, à l'heure, avec souvent des mauvaises surprises. Le téléchargement et le trafic web sur ton site n'est pas inclus et est imprévisible. C'est intéressant surtout pour gérer des charges de travail importante, mais pour un site web à faible trafic, c'est "overkill" pas mal.

    + + + +

    Quelles sont les connaissances nécessaires ?

    + + + +

    Pour autohéberger son site web, je dirais que la principale motivation c'est d'avoir le goût d'apprendre, de faire les choses par soi-même et d'être capable de demander de l'aide. Il y a peu de services commerciaux en autohébergement étant donné que c'est un peu contraire à la philosophie DIY.

    + + + +

    + + + +

    C'est souvent possible d'avoir accès à de l'expertise technique sur demande pour résoudre des enjeux techniques. Tu peux aussi recourir à des firmes d'infogérance qui vont s'occuper de tout pour toi. Mais on parle ici de services qui peuvent coûter plusieurs centaines de dollars par mois. Tant qu'à faire, à ce prix là, tu as avantage à te former !

    + + + +

    + + + +

    Les serveurs web fonctionnent pour la grande majorité sur le système d'exploitation Linux. C'est un système libre basé sur la philosophie UNIX où chaque application a un seul usage et est perfectionnée au niveau technique. Dans Linux, tout est configuré dans des fichiers texte, ce qui favorise la transparence et le partage de connaissances. Par contre, ça demande plus de minutie et c'est plus facile de faire des conneries. C'est pourquoi il faut prendre son temps, lire la documentation et expérimenter.

    + + + +

    + + + +
    +
    +

    Les éléments requis pour s'autohéberger sont simples:

    + + + +
      +
    • Un nom de domaine qu'on peut configurer nous-même au niveau des enregistrements DNS
    • + + + +
    • Un serveur physique ou virtuel Linux qu'on peut accéder depuis Internet ou à la maison
    • +
    +
    +
    + + + +

    + + + +

    Quelles sont les plateformes populaires pour autohéberger ton site?

    + + + +

    Heureusement, tu n'as pas besoin de développer une expertise en Linux pour avoir ton propre serveur, parce qu'il existe des plateformes qui vont prendre en charge la majorité du travail en offrant une configuration sécuritaire de base.

    + + + +

    + + + +

    Ma plateforme préférée pour l'autohébergement est Yunohost, développé par un collectif basé en Union européenne. Yunohost est basé sur Debian et automatise beaucoup de tâches d'installation. La communauté est très active et les mises à jour de sécurité sont rapidement disponibles.

    + + + +

    + + + +

    Il est aussi possible d'utiliser les plateformes suivantes:

    + + + +
      +
    • Cozy Cloud: Une offre plus raffinée que Yunohost, mais aussi plus limitée au niveau de l'offre.
    • + + + +
    • Sandstorm: Une des premières plateformes de type auto-hébergement avec Yuhonost.
    • + + + +
    • Univention: Un serveur davantage axé pour la gestion d'entreprise avec des comptes utilisateur, une authentification LDAP compatible Active Directory, mais qui offre aussi des capacités intéressantes d'auto-hébergement
    • + + + +
    • Cloudron: Une offre propriétaire avec un support commercial, similaire à Cozy Cloud
    • + + + +
    • Umbrel: Une offre qui provient de l'univers du Web3, incluant des logiciels pour miner de la cryptomonnaie et utiliser des services sur le réseau du dark web TOR (c'est aussi possible avec Yunohost, c'est pas sorcier, mais terriblement lent !)
    • + + + +
    • StartOS: Un système développé par l'entreprise Start9, dans la même lignée qu'Umbrel.
    • + + + +
    • CapRover: Un système davantage axé sur le développement d'application et l'utilisation de conteneurs. Je ne conseille pas pour débuter parce que ça demande de connaître Docker entre autres. Je l'utilise comme serveur de développement. J'en ai parlé ici: Développement en continu libre et PaaS
    • +
    + + + +

    + + + +

    Quelles sont tes libertés et responsabilités comme hébergeur ?

    + + + +

    Comme auto-hébergeur, tu as la liberté de gérer toi-même toute la couche logicielle, et selon tes choix, matérielle aussi. Tu as la responsabilité des données sur ton serveur, que ce soit au niveau de la protection des renseignements personnels, des sauvegardes et aussi d'éviter que ton serveur soit utilisé à des fins malicieuses ou criminelles.

    + + + +

    + + + +

    Heureusement, les plateformes telles que Yunohost viennent limiter les risques et offrent des fonctionnalités de sauvegarde qui fonctionnent très bien, soit nativement ou en mode automatisé avec Borg. D'ailleurs, je les ai utilisées à plusieurs reprises pour déménager mes logiciels sur de nouveaux serveurs.

    + + + +

    + + + +

    Choisir l'auto-hébergement est le début d'une belle aventure pour mieux apprivoiser l'informatique et être plus résilient. Par contre, c'est un apprentissage en continu qui demande des investissements en temps et de l'expérimentation. Si tu as une fibre DIY à développer, c'est un parcours très enrichissant. Débutes par un site web, puis commence à découvrir toutes les possibilités. Il y a des logiciels pour l'hébergement de fichiers, de la gestion de projets et même des réseaux sociaux décentralisés. Certains te permettent de faire partie du Fediverse, comme mon podcast Aires Communes.

    + + + +

    + + + +

    90% des logiciels chez Je valide ça sont auto-hébergés. J'utilise Yunohost depuis de nombreuses années, et j'ai développé une très bonne expertise de cette plateforme. Ça me fera plaisir de t'accompagner dans cette aventure. On peut débuter ensemble avec une consultation Express pour choisir les options d'autohébergement qui te conviennent le mieux !

    + + + + + + + +

    +]]>
    + + 6545 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[Libère le contenu captif de tes logiciels SaaS]]> + https://jevalide.ca/2024/07/15/libere-le-contenu-captif-de-tes-logiciels-saas/ + Tue, 16 Jul 2024 03:17:56 +0000 + + https://jevalide.ca/?p=6628 + + +

    Savais-tu que lorsque tu crées du contenu dans les logiciels SaaS Miro, Mural, Whimsical et Canva, il est captif de ces plateformes ?

    + + + +

    Aucune sauvegarde !

    + + + +

    Il n'existe aucune option d'exportation et de sauvegarde des données d'origine, seulement du résultat final. Aucune sauvegarde de tes modèles, personnalisations et collections de polices et d'images.

    + + + +

    + + + +

    Ça veut dire que les données qui décrivent ton parcours de création ne te sont pas accessibles. Celles qui permettent de modifier ton travail avec un autre logiciel non plus.

    + + + +

    + + + +

    Si l'entreprise qui publie l'application ferme ou décide un bon matin de supprimer tes données par erreur, tu dois tout recommencer !

    + + + +

    + + + +

    Difficile de sortir son contenu, mais il y a des alternatives pour le nouveau !

    + + + +

    On ne peut pas facilement migrer le contenu ailleurs, parce que leur modèle d'affaires est de te garder comme dans un zoo, en cage avec un peu de liberté. Et plus souvent qu'autrement, ton contenu sert aussi à entraîner de l'IA.

    + + + +

    Heureusement, il existe des applications avec des fonctionnalités similaires. Tu peux les utiliser dès maintenant pour ton nouveau contenu. Elles permettent de garder en tout temps le contrôle de tes données. Celles que je te présente permettent aussi de collaborer en ligne !

    + + + +

    + + + +

    Ces applications utilisent des formats de données ouverts bien documentés. Plusieurs programmes informatiques différents peuvent les lire, y compris des programmes qui n'existent pas encore !

    + + + +

    + + + +

    De plus, certaines, dont Excalidraw et CryptPad, sont sécurisées de bout en bout. C'est fait avec ce qu'on appelle maintenant le chiffrement zero-knowledge, qui est basé sur une clé symétrique générée par ton navigateur.

    + + + +

    + + + +

    D'autres s'intègrent à des outils de collaboration existants, comme

    + + + +
      +
    • FocalBoard, qui fait aussi partie de Mattermost, une alternative libre à Slack.
    • + + + +
    • diagrams.net, qui s'intègre nativement à Nextcloud, une alternative à SharePoint et Dropbox
    • +
    + + + +

    Des logiciels SaaS qui ne gardent pas ton contenu captif

    + + + +

    Voici une liste de logiciels que tu pourrais considérer pour remplacer les SaaS qui gardent ton contenu captif:

    + + + +
      +
    • Excalidraw, un tableau blanc interactif multi-utilisateurs (remplace Miro et Mural): + +
    • + + + +
    • diagrams.net, un logiciel pour créer des schémas, des diagrammes et aussi des graphiques vectoriels, (remplace Microsoft Visio, LucidChard et dans une moindre mesure Canva): + +
    • + + + +
    • CryptPad, c'est un outil de collaboration sur documents entièrement chiffré (remplace Google Docs, Trello, Microsoft 365 ...): + +
    • + + + +
    • FocalBoard, un outil de gestion de projets de type Kanban (Remplace Monday, Trello, Asana et un peu Notion ...): + +
    • +
    + + + +

    Libérons ton contenu ensemble !

    + + + +

    Je t'offre de prendre une heure ensemble pour t'aider à choisir les bons outils. Ceux que je te propose ici, je les connais bien et je peux évaluer s'ils conviennent à tes besoins.

    + + + + +]]>
    + + 6628 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[La vision tunnel de la gestion du risque technologique]]> + https://jevalide.ca/2024/05/16/la-vision-tunnel-de-la-gestion-du-risque-technologique/ + Thu, 16 May 2024 16:03:12 +0000 + + https://jevalide.ca/?p=6631 + + +

    Depuis que je travaille à développer une approche plus humaine de la cybersécurité, après avoir vécu quelques expériences qui ne m'ont pas vraiment enchantées, disons ça comme ça, je me suis mis à réfléchir à plus haut niveau quels sont les différents éléments de gestion des risques en lien avec la technologie.

    + + + +

    + + + +

    Je me suis inspiré du visuel de Jan Konietzko qu'on voit souvent sur les enjeux climatiques, où on voit la vision tunnel du carbone.

    + + + +

    + + + +
    + + + +

    J'ai donc fait Un visuel imprimable et partageable sur les aspects à considérer dans la gestion du risque technologique, au-delà de la cybersécurité.

    + + + +

    + + + +

    Et je te l'offre en cadeau !

    + + + +

    + + + +


    + + + +

    La technologie est centrale dans quasi toutes les entreprises, alors il faut gérer le risque avec toutes les autres composantes en interdépendance et non seulement voir la cybersécurité.

    + + + +

    + + + +

    Sinon tu mets ton argent dans le feu et la tête dans le sable.

    + + + +

    + + + +

    Et comme je l'ai vécu par le passé, la cybersécurité excessive devient une forme d'oppression numérique.

    + + + +

    + + + +

    Ce visuel sert à mettre les choses en perspective, et c'est un élément de discussion que je souhaite utiliser dans mon webinaire.

    + + + +

    + + + +

    Pour en savoir plus, viens à mon webinaire de mercredi prochain 22 mai 2024 à 10h00:

    + + + +

    + + + +

    https://jevalide.ca/oppnum

    +]]>
    + + 6631 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[Proton Mail n'est pas chiffré par magie !]]> + https://jevalide.ca/2024/05/23/proton-mail-nest-pas-chiffre-par-magie/ + Thu, 23 May 2024 16:33:58 +0000 + + https://jevalide.ca/?p=6654 + + +

    Dans ce court article, je te présente comment utilier le chiffrement avec tes communications par courriel dans Proton Mail. Je t'en parle ici, étant donné que ce n'est pas activé par défaut, contrairement à ce que tu pourrais penser.

    + + + +

    Proton Mail

    + + + +

    Proton Mail est une entreprise suisse qui produit un client courriel sécurisé, positionné comme alternative plus sécurisée à GMail et Outlook. Comme elle se spécialise dans ce domaine, elle ne utilise pas le courriel comme vente à perte pour attirer des clients pour d'autres produits en échange de tes données. C'est un grand avantage en plus de suivre les lois suisses très strictes sur la protection de la vie privée.

    + + + +

    Les clés PGP

    + + + +

    Proton Mail permet d'utiliser plus facilement les clés de chiffrement PGP. Ce sont ces clés qui permettent d'avoir accès à des échanges sécurisés. Elles s'appellent aussi GPG ou GnuPG selon le logiciel qui la crée, mais c'est la même chose.

    + + + +

    + + + +

    Chaque personne crée une paire de clés: une privée et une publique.

    + + + +

    + + + +
      +
    • La clé publique est partagée avec toutes les personnes qui veulent t'envoyer des messages chiffrés. C'est un peu comme si tu distribuais des cadenas pour barrer les colis qu'on t'envoie par la poste.
    • +
    + + + +
      +
    • La clé privée est secrète, reste chez toi ou dans ton client courriel, et sert à déchiffrer les messages que tu reçois. C'est la clé qui sert à ouvrir tous les cadenas des colis qu'on t'envoie par la poste
    • +
    + + + +

    Les clés PGP dans Proton Mail

    + + + +

    Dans Proton Mail, la gestion des clés se fait au niveau des contacts pour les courriels que tu envoies, et depuis l'éditeur pour envoyer ta clé publique. Je t'explique ça en vidéo en parcourant leur documentation.

    + + + +
    + + + +

    Mon objectif aujourd'hui était de te sensibiliser à l'existence de cette fonctionnalité.

    + + + +

    Comme exercice, tu peux ajouter ma clé qui se trouve ici !

    + + + +

    + + + +

    Tu as tous les détails sur la page de documentation de Proton Mail ici: https://proton.me/support/how-to-use-pgp

    + + + +

    + + + +

    Si tu veux qu'on configure tout ça ensemble, je t'invite à prendre une consultation express de 30 minutes avec moi !

    + + + +

    + + + + +]]>
    + + 6654 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[Inscription Cyberlettre]]> + https://jevalide.ca/2024/05/30/inscription-cyberlettre/ + Fri, 31 May 2024 00:45:29 +0000 + + https://jevalide.ca/2024/05/30/inscription-cyberlettre/ + + +
    +
    +

    Abonnes-toi ici !

    + +

    +

    + +

    + + +

    +

    + + +

    + +
    +
    + +
    + +

    +
    +
    + + + +

    Si tu ne souhaites pas partager ton courriel personnel, tu peux utiliser un service d'alias tel que Firefox Relay.

    + + + +

    + + + +

    Suite à ton inscription, tu vas recevoir une séquence de quatre courriels d'accueil pour apprendre à mieux se connaître. Ces courriels sont envoyés sur une période de deux semaines environ.

    + + + +

    + + + +

    Je me suis fait spam bomber en juin 2024 (des faux comptes se sont inscrits et m'ont déclaré comme spam), donc j'utilise maintenant HCaptcha pour protéger la page, qui n'est malheureusement pas accessible. Mes excuses 🥴. Contacte-moi sur mes réseaux si tu veux que je t'ajoute manuellement.

    +]]>
    + + 6694 + + + + + + + + + 0 + 0 + + + 0 + +
    + + <![CDATA[Recall sur Windows: ce programme est inutile, rappelle-toi !]]> + https://jevalide.ca/2024/06/07/recall-windows-ce-programme-est-inutile-rappelle-toi/ + Sat, 08 Jun 2024 02:47:46 +0000 + + https://jevalide.ca/?p=6734 + + +

    Sourire !

    + + + +

    Microsoft ont récemment annoncé que leur nouveau système Copilot+ pour Windows permettrait une fonctionnalité de capture d'écran en continu, Recall.

    + + + +

    + + + +

    Une photo de ce que tu es en train de faire enregistrée sur le disque aux 5 secondes. Tout le contenu texte est extrait et enregistré dans une base de données. Il devient interrogeable par un moteur de recherche et un modèle de langage de type LLM tel que GPT-4. Un truc gourmand en partant.

    + + + +

    + + + +

    Le système en question nécessite l'achat d'un nouvel ordinateur, en passant. Comme si le géant américain n'avais pas déjà augmenté de 50% son empreinte écologique en 3 ans.

    + + + +

    + + + +

    Sécuritaire ?

    + + + +

    Satya Nadella, le CEO de Microsoft, a annoncé il y a quelques semaines vouloir mettre la priorité sur la sécurité. C'est bien.

    + + + +

    + + + +

    C'est très bien même, parce que la sécurité chez Microsoft, c'est pas ça qui a fait leur réputation. Mais à peine quelques semaines plus tard, Recall apparaît.

    + + + +

    + + + +
    + + + +


    Et ça n'a pas pris plus que quelques jours pour que naisse Total Recall. C'est un outil de hacker libre qui permet d'extraire toutes les données pour éventuellement les analyser ou les exfiltrer. En étudiant son code, on apprend que Microsoft nous a encore bullshitté.

    + + + +

    + + + +
      +
    • Les données ne sont pas chiffrées, ce qui permettrait à n'importe quel pirate de les extraire sans devoir les déchiffrer.
    • + + + +
    • La technologie utilisée est SQLite, un simple fichier facile à exfiltrer !
    • + + + +
    • Il n'y a pas de gestion des accès solide, ce qui fait que n'importe quel utilisateur astucieux peut aussi accéder aux données des autres.
    • +
    + + + +

    Il ne faut pas oublier le contenu des captures d'écran ! Il n'y a aucun mécanisme de censure, donc toutes les données confidentielles sont enregistrées en clair:

    + + + +
      +
    • dossier médical,
    • + + + +
    • compte de banque,
    • + + + +
    • achats en ligne,
    • + + + +
    • carte de crédit,
    • + + + +
    • conversations privées,
    • + + + +
    • coquineries
    • + + + +
    • ...
    • +
    + + + +

    Microsoft, c'est des imbéciles !

    + + + +

    J'ai osé traiter Microsoft d'imbéciles, et on m'a rapidement remis à l'ordre.

    + + + +

    + + + +

    Comment oses-tu ?

    + + + +

    + + + +

    Comment des milliers d'ingénieurs parmi les plus brillants au monde auraient-ils laisser aller une merde pareille sur le marché ? La réponse est simple: ce sont des employés.

    + + + +
      +
    • Tu fermes ta gueule
    • + + + +
    • Tu fais le cheerleader dans les évènements
    • + + + +
    • Tu portes la marchandise (et le Saint Évangile des RH) durant tes vacances
    • + + + +
    • Tu promouvois les valeurs corporatives même dans ton lit (on parle ici de sexe non consentant, si t'avais pas compris).
    • +
    + + + +

    Microsoft est l'entreprise qui vaut le plus cher au monde à la Bourse. C'est un gros morceaux de plusieurs régimes de retraite. Parce que oui, tout notre système de retraite occidental tient grâce aux grandes entreprises technologiques, pétrolières, pharmaceutiques et alimentaires. Ils sont plus puissants que plusieurs pays et tiennent beaucoup de politiciens par les gonades.

    + + + +

    + + + +

    Pourquoi, petit cul que je suis, je peux me permettre de dire ça ? Parce que des conneries pareilles, on peut coder ça en 45 minutes. Microsoft est loin de la prouesse technique. En plus, j'ai réussi à en faire une qui est chiffrée !

    + + + +

    + + + +
    #!/bin/bash
    +
    +# Set the directory where screenshots will be saved
    +SCREENSHOT_DIR="$HOME/screenshots"
    +
    +# Create the directory if it doesn't exist
    +mkdir -p "$SCREENSHOT_DIR"
    +
    +# Set public key for GPG
    +KEY="<add key here>"
    +
    +# Take a screenshot using import every INTERVAL seconds
    +while true; do
    +  # Take a screenshot and save it to a file named "screenshot_<timestamp>.png"
    +  timestamp=$(date +"%Y-%m-%d_%H-%M-%S")
    +  png_file_path="$SCREENSHOT_DIR/screenshot_$timestamp.png"
    +  txt_file_path="$SCREENSHOT_DIR/screenshot_$timestamp.txt"
    +  import -window root "$png_file_path"
    +
    +  # Extract the text contents of the screenshot using OCR
    +  tesseract "$png_file_path" "$txt_file_path" -c debug_file=/dev/null -l fra --oem 1
    +
    +  # Encrypt files using PGP
    +  gpg --batch --yes --output "${png_file_path}.gpg" --encrypt -r ${KEY} ${png_file_path}
    +  rm ${png_file_path}
    +  gpg --batch --yes --output "${txt_file_path}.gpg" --encrypt -r ${KEY} ${txt_file_path}.txt
    +  rm ${txt_file_path}.txt
    +
    +  sleep 5
    +done
    + + + +

    C'est une preuve de concept. Ça fonctionne. C'est encombrant en espace disque, et je doute que ça aie une réelle utilité de faire ça en permanence.

    + + + +

    + + + +

    Pour faire de la formation et monter des tutoriels, ça pourrait valoir la peine d'utiliser un script du genre. Tu peux aussi utiliser OBS Studio ou Vokoscreen, parler en même temps et contrôler ce que tu enregistres ! Le format vidéo utilise aussi des astuces de compression qui va limiter la taille des fichiers. C'est vrai surtout si tu n'actives pas la caméra. On bouge beaucoup, les humains !

    + + + +

    L'utilité du machin Recall sur Windows ?

    + + + +

    L'utilité de Recall sur Windows est, selon moi, limitée, du moins pour les utilisateurs. Ça pourrait devenir une mine d'or pour le micromanagement et les pirates. Les logiciels d'espionnage d'employés se multiplient et on les appellent souvent bossware. Ces logiciels sont aussi souvent utilisés dans des contextes de violence technologique, une forme de violence conjugale utilisant la technologie.

    + + + +

    + + + +

    L'achat forcé d'un nouvel ordinateur, la capacité énergétique requise pour rouler de tels programmes en permanence et le bilan désastreux du cloud Microsoft Azure au niveau environnemental sont de bonnes raisons pour aller chercher davantage d'autonomie dans ton utilisation de l'informatique !

    + + + +

    + + + +

    Et si Linux t'attendait ! Viens m'en parler, je peux même te guider pour l'installation en consultation express !

    + + + +

    (réserve 1h30, tu auras des actions préalables à faire, prévoir surtout une clé USB)

    + + + +

    +]]>
    + + 6734 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[Restructuration sans mises à pied !]]> + https://jevalide.ca/2024/06/17/restructuration-sans-mises-a-pied/ + Tue, 18 Jun 2024 02:29:17 +0000 + + https://jevalide.ca/?p=6795 + + +

    Durant la dernière année, j'ai créé beaucoup de contenus de formation, notamment en bonifiant Mission Cybersécurité et en créant les deux premières formations initialement pour mon abonnement Y'app pas d'problème, "Optimisation courriel" et "Juste assez de loi 25".

    + + + +

    + + + +

    J'ai énormément réfléchi à la structure que je veux prendre avec mon entreprise pour y créer plus d'espace et aussi plus de plaisir.

    + + + +

    + + + +

    J'ai donc décidé que tout passerait par ces trois offres: Pleine Confiance, DéconstruIT et Consultation Express.

    + + + +

    Pleine Confiance

    + + + +

    J'ai décidé de simplifier mon offre et d'offrir un seul forfait de formation, Pleine Confiance, qui va aussi inclure les contenus sur la loi 25 et sur la délivrabilité des courriels, bref, tout ce qu'il faut pour que ta techno soit en sécurité, prête à respecter les lois et que tes communications se rendent à destination. Parce que t'as des beaux projets à réaliser dans ton entreprise et je veux que t'arrête de stresser avec la technique !

    + + + +

    + + + +

    Je réalise aussi qu'avec autant de contenus, tu auras besoin de suivi et d'accompagnement pour savoir quoi prioriser et faire un plan de travail. C'est pourquoi je vais aussi inclure deux consultations d'une heure dans l'offre, ainsi que la confection d'un itinéraire personnalisé pour sécuriser ton entreprise en respectant tes priorités et ton temps.

    + + + +

    + + + +

    Pleine Confiance sera disponible à compter du 1er juillet prochain au coût de 1350$, incluant une offre de paiement en versements. L'ensemble du contenu va rester accessible à vie et je continue à le mettre à jour plusieurs fois par année. Je viens d'ailleurs de mettre à jour une section.

    + + + +

    + + + +

    Si tu désires te procurer les formations individuellement au prix actuel, elles sont disponibles jusqu'au 30 juin prochain.

    + + + +

    DéconstruIT

    + + + +

    DéconstruIT, c'est ma nouvelle offre d'accompagnement en petit groupe. Ce sera l'occasion d'explorer ensemble comment libérer ton entreprise de l'oppression numérique et de participer à la construction d'une nouvelle vision de l'entrepreneuriat sur le web, plus collaborative et respectueuse des droits humains.

    + + + +

    + + + +

    C'est pas une formation, mais les bases de la création d'un nouvel écosystème d'entrepreneuriat où tu pourras participer, créer des relations et innover avec les autres membres.

    + + + +

    Mon rôle sera d'animer la communauté, de partager des savoirs (techniques ou non) pour développer ton autonomie et de développer des solutions technologiques que nous pourrons tester en groupe.

    + + + +

    + + + +

    L'accès à cet espace prendra la forme d'un abonnement de quatre mois et le nombre d'inscriptions sera limité à 5.

    + + + +

    + + + +

    C'est un espace avec beaucoup d'engagement de ma part, et aussi de la part des participants. Ça va être riche en savoirs et en échanges, ça va être trippant, ça va être différent, ça va parfois être ésotérique et mystérieux, mais avec comme assises mes 20 ans d'expérience avec le logiciel libre et plein d'autres expériences de vie.

    + + + +

    + + + +

    Je veux que tu aies le même plaisir avec la technologie qu'avec ton médium artistique préféré. Mon objectif n'est surtout pas de te coller encore plus à ton écran. Ça peut vouloir dire moins et mieux pour toi. La première cohorte débutera le 1er septembre 2024.

    + + + +

    + + + +

    S'il y a des projets numériques que tu aimerais réaliser, mais que l'écosystème numérique actuel de donne le goût de te cacher dans une grotte, j'aimerais t'entendre.

    + + + +

    C'est toi que je veux aider avec cet accompagnement. Ce sera un espace pour initier de grands projets, et je ne travaillerai désormais comme développeur que pour les membres de DéconstruIT.

    + + + +

    + + + +

    Je t'avoue ici que cette décision me fait peur et m'excite en même temps. J'aime la proximité et les petites gang de gens ultra motivés. Je vais te donner plus de détails sur cette offre durant les prochaines semaines.

    + + + +

    + + + +

    Consultation Express

    + + + +

    J'ai le goût d'offrir quelque chose de plus que seulement la consultation, avec une expérience personnalisée pour maximiser la valeur du temps qu'on passe ensemble.

    + + + +

    + + + +

    Nous allons construire une relation avec ces consultations, de façon à mieux t'accompagner et pas seulement régler des problèmes dans l'immédiat. Parfois ce sera le cas, parfois, le travail va initier une réflexion qui va te diriger vers mes autres offres ou un suivi personnalisé. Chaque rencontre sera accompagnée d'un plan d'action envoyé rapidement après la rencontre.

    + + + +

    + + + +

    Je revise mes tarifs pour refléter le temps que je vais investir à préparer notre rencontre et fournir un compte rendu plus détaillé avec un suivi de la mise en action.

    + + + +

    + + + +

    Pour rendre ça plus simple, je vais seulement offrir une seule durée de consultation, soit une heure. Le tarif de la consultation sera désormais de 240$ à compter du 1er juillet 2024 et inclura le questionnaire pré-rencontre personnalisé, le compte-rendu et le plan d'action.

    + + + +

    + + + +

    C'est contre mes valeurs de ne pas te livrer tout ce que je peux pour t'aider lors d'une rencontre. Chaque rencontre est autoportante. Mon cerveau fonctionne par sprints, et j'ai réalisé que ces moments de connexion génèrent beaucoup d'opportunités et je veux en faire profiter le plus possible.

    +]]>
    + + 6795 + + + + + + + + + 0 + 0 + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[Automatiser des tâches récurrentes avec Bash]]> + https://jevalide.ca/2024/06/23/automatiser-des-taches-recurrentes-avec-bash/ + Sun, 23 Jun 2024 19:56:35 +0000 + + https://jevalide.ca/?p=6803 + + +

    Je préfère utiliser Bash pour automatiser des tâches à effectuer de façon récurrente.

    + + + +

    + + + +

    Pour identifier les tâches candidates, j'ai une règle bien simple. Si tu es capable de le faire en écoutant un podcast, c'est automatisable !

    + + + +

    + + + +

    En automatisant certaines tâches, tu libères du temps pour effectuer celles qui nécessitent de la réflexion ou des interactions sociales, ou encore pour prendre du temps pour toi !

    + + + +

    Utiliser le langage de ligne de commande Bash pour automatiser

    + + + +

    Bash est un langage de programmation de type shell disponible sur les environnements de la famille Unix. On utilise ce langage de script principalement sur les systèmes d'exploitation GNU/Linux et macOS.

    + + + +

    + + + +

    Il est également possible d'installer le Windows Subsystem for Linux (WSL2) sur Windows, ce qui me permet d'accéder à une multitude de logiciels créés pour GNU/Linux, dont Bash, à travers le terminal de Windows.

    + + + +

    + + + +
    digraph ActionsBash {
+    node[shape=oval, style=filled, fillcolor="#c9e4ca", color="black"];
+    title[label="Actions Bash", shape=box, style=filled, fillcolor="#f7f2d5"];
+
+    A[label="Lancer un programme"]
+    B[label="Manipuler des fichiers"]
+    C[label="Utiliser les tubes"]
+    D[label="Exécuter des boucles"]
+
+    title -> A [dir=forward]
+    title -> B [dir=forward]
+    title -> C [dir=forward]
+    title -> D [dir=forward]
+    
+}
    + + + +


    Voici quelques-uns des usages fréquents de Bash:

    + + + +
      +
    • Appeler des logiciels: lancer un programme depuis le terminal, dans lerépertoire de travail courant
    • + + + +
    • Manipuler des fichiers: ajouter du contenu, modifier le nom ou l'emplacement d'un fichier (c'est la même chose !), supprimer un fichier
    • + + + +
    • Utiliser les tubes (ou pipes): créer des séries de commandes qui travaillent ensemble pour accomplir une tâche
    • + + + +
    • Exécuter des boucles: répéter un ensemble d'actions plusieurs fois
    • +
    + + + +

    Maintenant, je vais aller plus en détail sur chacune d'elles avec des exemples !

    + + + +

    Appeler des logiciels

    + + + +

    Les systèmes de type Unix, tels que Linux et macOS, sont composés d'un ensemble de logiciels qui fonctionnent à peu près indépendamment. Le langage Bash te permet d'interagir avec eux. Il te permet entre autres de créer des séquences de tâches exécutées les unes après les autres en suivant des conditions spécifiques.

    + + + +

    + + + +

    Bref, c'est un moyen pour ton ordinateur de travailler à ta place ! Une grosse partie du travail de développement en informatique c'est de faire travailler l'ordinateur pour nous.

    + + + +

    + + + +

    Manipuler des fichiers

    + + + +

    Au lieu d'utiliser des fichiers binaires comme ceux produits par les suites bureautiques telles que Microsoft Office, les environnements en ligne de commande préfèrent le format texte.

    + + + +

    + + + +

    Souvent, les logiciels destinés à la ligne de commande sont conçus pour s'interfacer de manière très simple en recevant du texte, généralement issu d'un fichier, et en retournant du texte dans un autre fichier.

    + + + +

    + + + +

    Dans les autres cas, les données circulent entre programmes soit via des tubes, soit par l'intermédiaire de la sortie standard, ce qui est affiché à l'écran.

    + + + +

    + + + +

    Tu peux souvent manipuler des fichiers de cette manière. Par exemple, fusionner des fichiers PDF en un seul document. Le logiciel pdftk permet d'arriver à ce résultat.

    + + + +
    pdftk document1.pdf document2.pdf document3.pdf cat output merged_document.pdf
    + + + +

    + + + +

    En passant, le lien pointe sur Framalibre, qui est un répertoire génial d'applications libres, toutes en français !

    + + + +

    Utiliser les tubes (ou pipes)

    + + + +

    Les tubes permettent d'utiliser la sortie d'un programme directement dans l'entrée d'un autre programme, sans devoir écrire un fichier. Ils sont représentés par la barre verticale |.

    + + + +

    + + + +

    Un exemple fréquent que je utilise est pour effectuer la recherche de fichiers.

    + + + +

    + + + +

    Le logiciel le plus courant sur GNU/Linux qui permet de lister tous les fichiers d'un répertoire se nomme find. Il peut répondre à certaines conditions, par exemple une extension de fichier précise comme .pdf pour les fichiers PDF.

    + + + +

    + + + +

    Si je veux filtrer plus précisément cette liste de fichiers avec d'autres attributs, je vais utiliser le logiciel grep. Ce dernier recourt à une expression régulière, une syntaxe fréquemment utilisée dans la recherche de texte.

    + + + +

    Exécuter des boucles

    + + + +

    Les boucles permettent de contrôler l'exécution répétée du code.

    + + + +

    Généralement, il s'agit d'une section d'un programme qui effectue une seule, ou ça le devrait ! Celles-ci permettent de répéter des tâches identiques ou très similaires pour de multiples valeurs en entrée.

    + + + +

    + + + +

    Par exemple, si je veux produire un rapport chaque jour de la semaine, les boucles peuvent m'aider à y arriver. L'élément de code qui permet de répéter du code un nombre déterminé de fois est nommé for.

    + + + +

    + + + +

    Il existe aussi les boucles while et until qui sont basées sur une condition. On va les utiliser lorsqu'on ne connait pas le nombre de répétitions à l'avance.

    + + + +

    + + + +

    Je peux utiliser ces boucles pour effectuer des tâches spécifiques, comme par exemple la manipulation de fichiers ou la collecte d'informations.

    + + + +

    + + + +

    Un exemple pratique : automatisation de création de documents avec Bash

    + + + +

    je te partage ici un usage fréquent du langage Bash pour automatiser ma création de documents.

    + + + +

    + + + +

    Pour créer un guide, je vais utiliser les langages Markdown et LaTeX, deux systèmes de conception de documents.

    + + + +

    + + + +

    On utilise Markdown pour du texte léger, tel que des blogs et de la documentation. On utilise LaTeX davantage pour la création de documents scientifiques ou officiels.

    + + + +

    + + + +

    Comme j'ai souvent besoin de convertir d'un à l'autre, puis en PDF pour la publication, je vais écrire un script Bash et utiliser les logiciels Pandoc et pdflatex pour automatiser cette tâche.

    + + + +

    + + + +

    Conseil important : Pandoc est sérieusement à considérer pour les créatrices et créateurs de contenu, il permet de produire ses textes avec la syntaxe Markdown, puis de publier sous une multitude de formats. Je vous recommande fortement d'y jeter un oeil.

    + + + +

    + + + +

    Supposons que je divise mon guide en 3 sections, chacune va contenir 4 chapitres distincts.

    + + + +

    + + + +

    Pour chaque section et chaque chapitre, il y a un fichier Markdown que je souhaite convertir vers le format LaTeX. J'aurai donc besoin de répéter ce processus pour chaque section (soit 3 fois) et pour chaque chapitre (soit 4 fois). Je vais donc exécuter le code 12 fois.

    + + + +

    + + + +

    Ensuite, j'utiliserai le logiciel pdflatex pour générer un document PDF en incluant les 12 sections produites à l'étape précédente.

    + + + +

    + + + +

    Si tu veux aller plus loin dans la création de documents, je t'invite à regarder ma fabrique à documents, parce que je l'ai construite sur le même principe, mais avec le langage Python au lieu de Bash, comme c'est une application web.

    + + + +
    mkdir -p ./chapitres
    +
    +for section in {1..3}
    +do
    +    for chapitre in {1..4}
    +    do
    +        pandoc -F pandoc-minted -f markdown+fenced_code_attributes+tex_math_dollars -t latex --listings --top-level-division=chapter -i "chapitre_${section}_${chapitre}.md" -o "./chapitres/chapitre_${section}_${chapitre}.tex"
    +    done
    +done
    +
    +pdflatex --shell-escape -synctex=1 -interaction=nonstopmode main.tex
    +]]>
    + + 6803 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[Pleine Confiance - Court]]> + https://jevalide.ca/2024/07/01/pleine-confiance-court/ + Mon, 01 Jul 2024 19:24:13 +0000 + + https://jevalide.ca/2024/07/01/pleine-confiance-court/ + + +

    Pleine confiance 🛡️🧘

    + + + +

    Protection techno guidée par l’humain

    + + + +

    Viens profiter du meilleur contenu en cybersécurité, loi 25 et réputation web que j'ai créé dans les dernières années, avec mon accompagnement et une communauté à échelle humaine.

    + + + +
      +
    • Deux séances de consultation pour déterminer tes priorités, construire ton parcours personnalisé et développer de bonnes habitudes.
    • + + + +
    • Un forum à même la plateforme de tutoriels pour poser toutes tes questions à mesure.
    • + + + +
    • Une bibliothèque de près de 100 tutoriels que j'ai testés un par un pour sécuriser ton entreprise une fois pour toutes, en configurant tes logiciels, en adoptant des réflexes sécuritaires et en développant une pensée critique.
    • + + + +
    • Tout ce que tu as besoin de savoir pour comprendre et bien appliquer la loi 25, dans une perspective de respect de ta clientèle et de consentement.
    • + + + +
    • Envoyer des courriels qui se rendent à destination en leur évitant de tomber dans le spam tout en conservant la bonne réputation de ton domaine web.
    • +
    + + + +

    C'est tout ce que tu as besoin de savoir et mettre en place pour avoir la paix.

    + + + + +]]>
    + + 7131 + + + + + + + + + 0 + 0 + + + 0 + +
    + + <![CDATA[Sécuriser ton entreprise en 15 étapes]]> + https://jevalide.ca/2024/07/02/securiser-ton-entreprise-en-15-etapes/ + Tue, 02 Jul 2024 04:47:52 +0000 + + https://jevalide.ca/?p=7152 + + +

    Tu pensais sécuriser ton entreprise en une demi-journée à regarder des présentations dans une salle de conférence climatisée d'un hôtel du centre-ville?

    + + + +

    Je vais te dire de quoi: la grande majorité des formations de cybersécurité offertes sur le marché ne servent à rien.

    + + + +
      +
    • Qui va vérifier les mêmes 8 éléments à chaque courriel reçu, quand on en reçoit des centaines ?
    • + + + +
    • Qui va aller vérifier la propriété du domaine avant de cliquer sur un lien.
    • + + + +
    • Qui va contre-valider la source de tous les documents reçus en pièce jointe ou partagés dans un dossier commun ?
    • + + + +
    • Qui a le temps de jouer à Colombo à longueur de journée ?
    • +
    + + + +

    Déculpabiliser les boss, ou mieux se protéger ?

    + + + +

    Ces formations servent à déculpabiliser les gestionnaires et donner bonne conscience, mais n'ont aucune valeur réelle en terme de protection.

    + + + +

    + + + +

    C'est ce qu'on appelle la fatigue cybersécuritaire. Une forme de charge mentale additionnelle imposée aux employés qui finissent par contourner les pratiques qu'on veut leur imposer.

    + + + +

    Outils et routines pour vraiment sécuriser ton entreprise

    + + + +

    Ce qu'il faut, pour se protéger, c'est des bons outils et des bonnes routines.

    + + + +

    + + + +

    Je te donne tout ce que tu as besoin de mettre en place pour sécuriser ton entreprise en 15 étapes. Solopreneur ou multinationale, les bases, c'est les mêmes. Les logiciels utilisés et les moyens pour y arriver vont changer, par contre.

    + + + +

    + + + +

    Ces items n'ont pas vraiment d'ordre d'importance, mais ils sont interconnectés. Il faut penser à son affaire pour ne pas se peinturer dans le coin, en particulier avec la double authentification.

    + + + +

    La liste !

    + + + +

    1. Adopte un gestionnaire de mots de passe, pour avoir des mots de passe uniques et difficiles à trouver.

    + + + +

    2. Active la double authentification partout où c'est offert.

    + + + +

    3. Fais des sauvegardes quotidiennes selon le modèle 3-2-1: automatiques, manuelles et hors-ligne.

    + + + +

    4. Crée toi un plan de restauration des sauvegardes (il faut se pratiquer à le faire avant que la merde prenne).

    + + + +

    5. Définis des rôles et des accès dans l'entreprise pour chacune des parties prenantes, et applique-le dans tous les logiciels que tu utilises, sans exception.

    + + + +

    6. Garde un registre de toutes les données fournies par ta clientèle, y compris celles dans les sauvegardes qui peuvent être périmées.

    + + + +

    7. Configure un service DNS fiable et indépendant des fournisseurs Internet.

    + + + +

    8. Fais les mises à jour de tous tes logiciels au moins une fois par mois

    + + + +

    9. Configure et garde actif les protections des systèmes d'exploitation : Windows Defender sur Windows, Apple XProtect sur macOS et SELinux/iptables/fail2ban sur Linux.

    + + + +

    10. N'installe que des logiciels connus depuis les sources officielles ou des logiciels libres depuis les dépôts de distribution. Évalue et assume les risques dans toutes les autres situations.

    + + + +

    11. Chiffre tout ce qui est sensible et qui est envoyé sur Internet ou dans le cloud.

    + + + +

    12. Évite le plus possible de donner des accès administrateur lorsque ce n'est pas requis.

    + + + +

    13. Ne partage jamais de compte utilisateur avec personne. Il y a habituellement un moyen d'éviter ça dans tous les logiciels, même si c'est un peu plus cher.

    + + + +

    14. Utilise des formats de fichiers ouverts qui peuvent être lus par d'autres logiciels et systèmes.

    + + + +

    15. Utilise un système de fichiers qui n'est pas propriétaire sur tous les stockages externes (exFAT peut être lu sur tous les appareils, par exemple, alors que le APFS est propriétaire à Apple).

    + + + +

    C'est trop ?

    + + + +

    Si ça te semble trop pour y arriver par toi-même, la bonne nouvelle, c'est que j'ai fait des tutoriels pour tout ça, étape par étape. Je suis là pour t'aider à sécuriser ton entreprise avec ton plan personnalisé !

    + + + +

    + + + +

    Reprends Pleine Confiance en tes moyens technologiques.

    + + + +

    + + +]]>
    + + 7152 + + + + + + + + + 0 + 0 + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + <![CDATA[maintenant-pleine-confiance]]> + https://jevalide.ca/2024/07/06/maintenant-pleine-confiance/ + Sat, 06 Jul 2024 15:51:53 +0000 + + https://jevalide.ca/2024/07/06/maintenant-pleine-confiance/ + + +

    Important:

    Cette formation fait maintenant partie de mon offre Pleine Confiance

    + + + + +]]>
    + + 7182 + + + + + + + + + 0 + 0 + + + 0 + +
    + + <![CDATA[Menu principal]]> + https://jevalide.ca/2024/05/30/menu-principal/ + Fri, 31 May 2024 00:39:16 +0000 + + https://jevalide.ca/2024/05/30/menu-principal/ + + ]]> + + 6689 + + + + + + + + + 0 + 0 + + + 0 + +
    +
    + \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index baf80ca..8f6c139 100644 --- a/requirements.txt +++ b/requirements.txt @@ -4,4 +4,7 @@ pandas~=2.2.3 pydantic~=2.11.4 python-dotenv~=1.1.0 requests~=2.32.3 -streamlit~=1.45.0 \ No newline at end of file +streamlit~=1.45.0 +xmltodict~=0.14.2 +markdownify~=1.1.0 +minio~=7.2.15 \ No newline at end of file