Repository with sources and generator of https://larlet.fr/david/ https://larlet.fr/david/
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

index.html 30KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835
  1. <!doctype html><!-- This is a valid HTML5 document. -->
  2. <!-- Screen readers, SEO, extensions and so on. -->
  3. <html lang=fr>
  4. <!-- Has to be within the first 1024 bytes, hence before the <title>
  5. See: https://www.w3.org/TR/2012/CR-html5-20121217/document-metadata.html#charset -->
  6. <meta charset=utf-8>
  7. <!-- Why no `X-UA-Compatible` meta: https://stackoverflow.com/a/6771584 -->
  8. <!-- The viewport meta is quite crowded and we are responsible for that.
  9. See: https://codepen.io/tigt/post/meta-viewport-for-2015 -->
  10. <meta name=viewport content="width=device-width,minimum-scale=1,initial-scale=1,shrink-to-fit=no">
  11. <!-- Required to make a valid HTML5 document. -->
  12. <title>Cours IUT : Web Mobile — David Larlet</title>
  13. <!-- Generated from https://realfavicongenerator.net/ such a mess. -->
  14. <link rel="apple-touch-icon" sizes="180x180" href="/static/david/icons/apple-touch-icon.png">
  15. <link rel="icon" type="image/png" sizes="32x32" href="/static/david/icons/favicon-32x32.png">
  16. <link rel="icon" type="image/png" sizes="16x16" href="/static/david/icons/favicon-16x16.png">
  17. <link rel="manifest" href="/manifest.json">
  18. <link rel="mask-icon" href="/static/david/icons/safari-pinned-tab.svg" color="#5bbad5">
  19. <link rel="shortcut icon" href="/static/david/icons/favicon.ico">
  20. <meta name="apple-mobile-web-app-title" content="David Larlet">
  21. <meta name="application-name" content="David Larlet">
  22. <meta name="msapplication-TileColor" content="#da532c">
  23. <meta name="msapplication-config" content="/static/david/icons/browserconfig.xml">
  24. <meta name="theme-color" content="#f0f0ea">
  25. <!-- That good ol' feed, subscribe :p. -->
  26. <link rel=alternate type="application/atom+xml" title=Feed href="/david/log/">
  27. <!-- Canonical URL for SEO purposes -->
  28. <link rel="canonical" href="https://larlet.fr/david/blog/2015/cours-iut-web-mobile/">
  29. <!-- SEO/Semantic metadata -->
  30. <meta name="description" content="Mon objectif est qu’ils arrivent à exprimer leurs connaissances actuelles et leurs souhaits pour ce cours." />
  31. <meta name="twitter:description" property="og:description" itemprop="description" content="Mon objectif est qu’ils arrivent à exprimer leurs connaissances actuelles et leurs souhaits pour ce cours." />
  32. <meta name="twitter:title" property="og:title" itemprop="name" content="Cours IUT : Web Mobile" />
  33. <meta name="twitter:card" content="summary" />
  34. <meta name="twitter:creator" content="@davidbgk" />
  35. <meta name="twitter:url" property="og:url" content="https://larlet.fr/david/blog/2015/cours-iut-web-mobile/" />
  36. <meta property="og:type" content="article" />
  37. <meta property="og:site_name" content="David Larlet (@davidbgk)" />
  38. <meta name="twitter:image" property="og:image" itemprop="image" content="https://larlet.fr/static/david/blog/2015/cours-iut-web-mobile.jpg" />
  39. <style>
  40. /* http://meyerweb.com/eric/tools/css/reset/ */
  41. html, body, div, span,
  42. h1, h2, h3, h4, h5, h6, p, blockquote, pre,
  43. a, abbr, address, big, cite, code,
  44. del, dfn, em, img, ins,
  45. small, strike, strong, tt, var,
  46. dl, dt, dd, ol, ul, li,
  47. fieldset, form, label, legend,
  48. table, caption, tbody, tfoot, thead, tr, th, td,
  49. article, aside, canvas, details, embed,
  50. figure, figcaption, footer, header, hgroup,
  51. menu, nav, output, ruby, section, summary,
  52. time, mark, audio, video {
  53. margin: 0;
  54. padding: 0;
  55. border: 0;
  56. font-size: 100%;
  57. font: inherit;
  58. vertical-align: baseline;
  59. }
  60. /* HTML5 display-role reset for older browsers */
  61. article, aside, details, figcaption, figure,
  62. footer, header, hgroup, menu, nav, section { display: block; }
  63. body { line-height: 1; }
  64. blockquote, q { quotes: none; }
  65. blockquote:before, blockquote:after,
  66. q:before, q:after {
  67. content: '';
  68. content: none;
  69. }
  70. table {
  71. border-collapse: collapse;
  72. border-spacing: 0;
  73. }
  74. /* http://practicaltypography.com/equity.html */
  75. /* https://calendar.perfplanet.com/2016/no-font-face-bulletproof-syntax/ */
  76. /* https://www.filamentgroup.com/lab/js-web-fonts.html */
  77. @font-face {
  78. font-family: 'EquityTextB';
  79. src: url('/static/david/css/fonts/Equity-Text-B-Regular-webfont.woff2') format('woff2'),
  80. url('/static/david/css/fonts/Equity-Text-B-Regular-webfont.woff') format('woff');
  81. font-weight: 300;
  82. font-style: normal;
  83. font-display: swap;
  84. }
  85. @font-face {
  86. font-family: 'EquityTextB';
  87. src: url('/static/david/css/fonts/Equity-Text-B-Italic-webfont.woff2') format('woff2'),
  88. url('/static/david/css/fonts/Equity-Text-B-Italic-webfont.woff') format('woff');
  89. font-weight: 300;
  90. font-style: italic;
  91. font-display: swap;
  92. }
  93. @font-face {
  94. font-family: 'EquityTextB';
  95. src: url('/static/david/css/fonts/Equity-Text-B-Bold-webfont.woff2') format('woff2'),
  96. url('/static/david/css/fonts/Equity-Text-B-Bold-webfont.woff') format('woff');
  97. font-weight: 700;
  98. font-style: normal;
  99. font-display: swap;
  100. }
  101. @font-face {
  102. font-family: 'ConcourseT3';
  103. src: url('/static/david/css/fonts/concourse_t3_regular-webfont-20190806.woff2') format('woff2'),
  104. url('/static/david/css/fonts/concourse_t3_regular-webfont-20190806.woff') format('woff');
  105. font-weight: 300;
  106. font-style: normal;
  107. font-display: swap;
  108. }
  109. /* http://practice.typekit.com/lesson/caring-about-opentype-features/ */
  110. body {
  111. /* http://www.cssfontstack.com/ Palatino 99% Win 86% Mac */
  112. font-family: "EquityTextB", Palatino, serif;
  113. background-color: #f0f0ea;
  114. color: #07486c;
  115. font-kerning: normal;
  116. -moz-osx-font-smoothing: grayscale;
  117. -webkit-font-smoothing: subpixel-antialiased;
  118. text-rendering: optimizeLegibility;
  119. font-variant-ligatures: common-ligatures contextual;
  120. font-feature-settings: "kern", "liga", "clig", "calt";
  121. }
  122. pre, code, kbd, samp, var, tt {
  123. font-family: 'TriplicateT4c', monospace;
  124. }
  125. em {
  126. font-style: italic;
  127. color: #323a45;
  128. }
  129. strong {
  130. font-weight: bold;
  131. color: black;
  132. }
  133. nav {
  134. background-color: #323a45;
  135. color: #f0f0ea;
  136. display: flex;
  137. justify-content: space-around;
  138. padding: 1rem .5rem;
  139. }
  140. nav:last-child {
  141. border-bottom: 1vh solid #2d7474;
  142. }
  143. nav a {
  144. color: #f0f0ea;
  145. }
  146. nav abbr {
  147. border-bottom: 1px dotted white;
  148. }
  149. h1 {
  150. border-top: 1vh solid #2d7474;
  151. border-bottom: .2vh dotted #2d7474;
  152. background-color: #e3e1e1;
  153. color: #323a45;
  154. text-align: center;
  155. padding: 5rem 0 4rem 0;
  156. width: 100%;
  157. font-family: 'ConcourseT3';
  158. display: flex;
  159. flex-direction: column;
  160. }
  161. h1.single {
  162. padding-bottom: 10rem;
  163. }
  164. h1 span {
  165. position: absolute;
  166. top: 1vh;
  167. left: 20%;
  168. line-height: 0;
  169. }
  170. h1 span a {
  171. line-height: 1.7;
  172. padding: 1rem 1.2rem .6rem 1.2rem;
  173. border-radius: 0 0 6% 6%;
  174. background: #2d7474;
  175. font-size: 1.3rem;
  176. color: white;
  177. text-decoration: none;
  178. }
  179. h2 {
  180. margin: 4rem 0 1rem;
  181. border-top: .2vh solid #2d7474;
  182. padding-top: 1vh;
  183. }
  184. h3 {
  185. text-align: center;
  186. margin: 3rem 0 .75em;
  187. }
  188. hr {
  189. height: .4rem;
  190. width: .4rem;
  191. border-radius: .4rem;
  192. background: #07486c;
  193. margin: 2.5rem auto;
  194. }
  195. time {
  196. display: bloc;
  197. margin-left: 0 !important;
  198. }
  199. ul, ol {
  200. margin: 2rem;
  201. }
  202. ul {
  203. list-style-type: square;
  204. }
  205. a {
  206. text-decoration-skip-ink: auto;
  207. text-decoration-thickness: 0.05em;
  208. text-underline-offset: 0.09em;
  209. }
  210. article {
  211. max-width: 50rem;
  212. display: flex;
  213. flex-direction: column;
  214. margin: 2rem auto;
  215. }
  216. article.single {
  217. border-top: .2vh dotted #2d7474;
  218. margin: -6rem auto 1rem auto;
  219. background: #f0f0ea;
  220. padding: 2rem;
  221. }
  222. article p:last-child {
  223. margin-bottom: 1rem;
  224. }
  225. p {
  226. padding: 0 .5rem;
  227. margin-left: 3rem;
  228. }
  229. p + p,
  230. figure + p {
  231. margin-top: 2rem;
  232. }
  233. blockquote {
  234. background-color: #e3e1e1;
  235. border-left: .5vw solid #2d7474;
  236. display: flex;
  237. flex-direction: column;
  238. align-items: center;
  239. padding: 1rem;
  240. margin: 1.5rem;
  241. }
  242. blockquote cite {
  243. font-style: italic;
  244. }
  245. blockquote p {
  246. margin-left: 0;
  247. }
  248. figure {
  249. border-top: .2vh solid #2d7474;
  250. background-color: #e3e1e1;
  251. text-align: center;
  252. padding: 1.5rem 0;
  253. margin: 1rem 0 0;
  254. font-size: 1.5rem;
  255. width: 100%;
  256. }
  257. figure img {
  258. max-width: 250px;
  259. max-height: 250px;
  260. border: .5vw solid #323a45;
  261. padding: 1px;
  262. }
  263. figcaption {
  264. padding: 1rem;
  265. line-height: 1.4;
  266. }
  267. aside {
  268. display: flex;
  269. flex-direction: column;
  270. background-color: #e3e1e1;
  271. padding: 1rem 0;
  272. border-bottom: .2vh solid #07486c;
  273. }
  274. aside p {
  275. max-width: 50rem;
  276. margin: 0 auto;
  277. }
  278. /* https://fvsch.com/code/css-locks/ */
  279. p, li, pre, code, kbd, samp, var, tt, time, details, figcaption {
  280. font-size: 1rem;
  281. line-height: calc( 1.5em + 0.2 * 1rem );
  282. }
  283. h1 {
  284. font-size: 1.9rem;
  285. line-height: calc( 1.2em + 0.2 * 1rem );
  286. }
  287. h2 {
  288. font-size: 1.6rem;
  289. line-height: calc( 1.3em + 0.2 * 1rem );
  290. }
  291. h3 {
  292. font-size: 1.35rem;
  293. line-height: calc( 1.4em + 0.2 * 1rem );
  294. }
  295. @media (min-width: 20em) {
  296. /* The (100vw - 20rem) / (50 - 20) part
  297. resolves to 0-1rem, depending on the
  298. viewport width (between 20em and 50em). */
  299. p, li, pre, code, kbd, samp, var, tt, time, details, figcaption {
  300. font-size: calc( 1rem + .6 * (100vw - 20rem) / (50 - 20) );
  301. line-height: calc( 1.5em + 0.2 * (100vw - 50rem) / (20 - 50) );
  302. margin-left: 0;
  303. }
  304. h1 {
  305. font-size: calc( 1.9rem + 1.5 * (100vw - 20rem) / (50 - 20) );
  306. line-height: calc( 1.2em + 0.2 * (100vw - 50rem) / (20 - 50) );
  307. }
  308. h2 {
  309. font-size: calc( 1.5rem + 1.5 * (100vw - 20rem) / (50 - 20) );
  310. line-height: calc( 1.3em + 0.2 * (100vw - 50rem) / (20 - 50) );
  311. }
  312. h3 {
  313. font-size: calc( 1.35rem + 1.5 * (100vw - 20rem) / (50 - 20) );
  314. line-height: calc( 1.4em + 0.2 * (100vw - 50rem) / (20 - 50) );
  315. }
  316. }
  317. @media (min-width: 50em) {
  318. /* The right part of the addition *must* be a
  319. rem value. In this example we *could* change
  320. the whole declaration to font-size:2.5rem,
  321. but if our baseline value was not expressed
  322. in rem we would have to use calc. */
  323. p, li, pre, code, kbd, samp, var, tt, time, details, figcaption {
  324. font-size: calc( 1rem + .6 * 1rem );
  325. line-height: 1.5em;
  326. }
  327. p, li, pre, details {
  328. margin-left: 3rem;
  329. }
  330. h1 {
  331. font-size: calc( 1.9rem + 1.5 * 1rem );
  332. line-height: 1.2em;
  333. }
  334. h2 {
  335. font-size: calc( 1.5rem + 1.5 * 1rem );
  336. line-height: 1.3em;
  337. }
  338. h3 {
  339. font-size: calc( 1.35rem + 1.5 * 1rem );
  340. line-height: 1.4em;
  341. }
  342. figure img {
  343. max-width: 500px;
  344. max-height: 500px;
  345. }
  346. }
  347. figure.unsquared {
  348. margin-bottom: 1.5rem;
  349. }
  350. figure.unsquared img {
  351. height: inherit;
  352. }
  353. @media print {
  354. body { font-size: 100%; }
  355. a:after { content: " (" attr(href) ")"; }
  356. a, a:link, a:visited, a:after {
  357. text-decoration: underline;
  358. text-shadow: none !important;
  359. background-image: none !important;
  360. background: white;
  361. color: black;
  362. }
  363. abbr[title] { border-bottom: 0; }
  364. abbr[title]:after { content: " (" attr(title) ")"; }
  365. img { page-break-inside: avoid; }
  366. @page { margin: 2cm .5cm; }
  367. h1, h2, h3 { page-break-after: avoid; }
  368. p3 { orphans: 3; widows: 3; }
  369. img {
  370. max-width: 250px !important;
  371. max-height: 250px !important;
  372. }
  373. nav, aside { display: none; }
  374. }
  375. ul.with_columns {
  376. column-count: 1;
  377. }
  378. @media (min-width: 20em) {
  379. ul.with_columns {
  380. column-count: 2;
  381. }
  382. }
  383. @media (min-width: 50em) {
  384. ul.with_columns {
  385. column-count: 3;
  386. }
  387. }
  388. ul.with_two_columns {
  389. column-count: 1;
  390. }
  391. @media (min-width: 20em) {
  392. ul.with_two_columns {
  393. column-count: 1;
  394. }
  395. }
  396. @media (min-width: 50em) {
  397. ul.with_two_columns {
  398. column-count: 2;
  399. }
  400. }
  401. .gallery {
  402. display: flex;
  403. flex-wrap: wrap;
  404. justify-content: space-around;
  405. }
  406. .gallery figure img {
  407. margin-left: 1rem;
  408. margin-right: 1rem;
  409. }
  410. .gallery figure figcaption {
  411. font-family: 'ConcourseT3'
  412. }
  413. footer {
  414. font-family: 'ConcourseT3';
  415. display: flex;
  416. flex-direction: column;
  417. border-top: 3px solid white;
  418. padding: 4rem 0;
  419. background-color: #07486c;
  420. color: white;
  421. }
  422. footer > * {
  423. max-width: 50rem;
  424. margin: 0 auto;
  425. }
  426. footer a {
  427. color: #f1c40f;
  428. }
  429. footer .avatar {
  430. width: 200px;
  431. height: 200px;
  432. border-radius: 50%;
  433. float: left;
  434. -webkit-shape-outside: circle();
  435. shape-outside: circle();
  436. margin-right: 2rem;
  437. padding: 2px 5px 5px 2px;
  438. background: white;
  439. border-left: 1px solid #f1c40f;
  440. border-top: 1px solid #f1c40f;
  441. border-right: 5px solid #f1c40f;
  442. border-bottom: 5px solid #f1c40f;
  443. }
  444. </style>
  445. <h1 class="single">
  446. <span><a id="jumper" href="#jumpto" title="Un peu perdu ?">?</a></span>
  447. Cours IUT : Web Mobile
  448. <time>Publié le 25 janvier 2015</time>
  449. </h1>
  450. <article class="single">
  451. <blockquote>
  452. <p>The more I build for the web, the more the term ‘device-agnostic’ endears itself to me.</p>
  453. <p>I used to think it merely dealt with basing responsive breakpoints on content rather than particular devices, but there’s more to devices than the size of their screens. A device-agnostic approach also takes into account infinite combinations of screen resolution, input method, browser capability, and connection speed.
  454. With such a wide range of possibilities, the sensible thing to do is to zero in on the harshest conditions (or toughest things to deliver) and build from there. Like cars designed to perform in extreme heat or on icy roads, websites should be built to face the reality of the web’s inherent variability. In my mind this approach addresses the following from the beginning:</p>
  455. <ul>
  456. <li>Hostile browsers</li>
  457. <li>Tiny screens</li>
  458. <li>Slow connection speeds</li>
  459. <li>Touch inputs</li>
  460. </ul>
  461. <p><cite><em><a href="http://trentwalton.com/2014/03/10/device-agnostic/">Device-Agnostic</a></em> (<a href="/david/cache/bee263ecc2b22dbc31411b34535f4f44/">cache</a>)</cite></p>
  462. </blockquote>
  463. <p>Je démarre <a href="/david/pro/enseignement/">un cours</a> intitulé <strong>Web Mobile</strong> avec une nouvelle classe demain, j’ai 28 heures réparties en matinées. La première séance de découverte sera l’occasion de définir ensemble ce que l’on entend par Web Mobile car je n’ai pas de définition, je ne suis même pas sûr que ça veuille vraiment dire quelque chose (mais bon c’est moi qui ait proposé le titre à la responsable alors <em>mea culpa</em>).</p>
  464. <p>Je compte pour cela faire usage d’outils à base de sujets/concepts, de priorisation, de réajustement et de flux. Toute ressemblance avec des outils liés à l’agilité serait forcément fortuite. Ce n’est pas encore tout à fait clair pour moi et c’est une bonne chose, ce sont des outils que je souhaite inventer/adapter/tordre/jeter <em>avec</em> les participants. <strong>Mon objectif est qu’ils arrivent à exprimer leurs connaissances actuelles et leurs souhaits pour ce cours.</strong> Afin que l’on puisse ensuite décider ensemble de ce que l’on va traiter tout en réajustant en cours de route s’il le faut.</p>
  465. <p>Il devrait y avoir une douzaine de personnes plus techniques que la dernière fois, ce qui donne une inertie de groupe moins importante. De quoi explorer de nouvelles façons de partager et de produire collectivement. On va forcément parler de <a href="http://stratechery.com/2015/mobile-first/">mobile-first</a> (<a href="/david/cache/493740e238723f55bddc9416ad8c512b/">cache</a>) et de <a href="http://blog.memespring.co.uk/2015/01/17/the-challenge-for-web-designers-in-2015/">challenges pour les web designers</a> (<a href="/david/cache/3c8f845f0b869e33f338b19713331de2/">cache</a>), je suis curieux et impatient de voir ce qu’ils vont me proposer en retour…</p>
  466. </article>
  467. <section>
  468. <h3>Discussion suite à l’article :</h3>
  469. <article id="comment-1" class="comment">
  470. <p>Je donne justement un cours d’une trentaine d’heures intitulé "Web Mobile" chez Ingésup Bordeaux. <a href="https://www.dropbox.com/s/kt41t5x5jgcp2tb/B2-WebMobile-01-Presentation_Cours.pdf?dl=0">Voilà le périmètre général du cours, destiné à des BAC+2.</a></p>
  471. <p>On y parle de RWD, bien sûr, mais pas uniquement du point de vue technique (la technique d’ailleurs m’intéresse peu, car je considère que d’ici à ce qu’il sorte d’école dans 3 ans, beaucoup de choses auront changé). En revanche, j’essaie de leur faire comprendre le monde du Web au sens large, ses valeurs (notamment l’interopérabilité et l’accessibilité qui sont les deux phares du device-agnostic). </p>
  472. <p>On y parle aussi de la gestion d’un projet, avec des TPs de mise en situation. Je leur donne un site pas RWD du tout et leur demande au moins 3 approches différentes de ce que pourrait être le design adapté pour Mobile. Ensuite nous en choississons une, puis je change l’expression du besoin en ajoutant des contraintes issues de l’utilisation d’un CMS... bref, on joue au client "normal" :)</p>
  473. <p>Enfin, on va parler des APIs, notamment REST, en expliquant que le Web, c’est aussi bientôt une multitude d’objets connectés qui pourront vouloir consommer des données ou à leur tour offrir des services...</p>
  474. <p>Si ça peut t’aider ;)</p>
  475. <p><cite>Boris Schapira, le <a href="#comment-1">2015-01-25 à 20:42:06</a></cite></p>
  476. </article>
  477. <article id="comment-2" class="comment">
  478. <p>Discuter du Web Mobile et nos croyances. Tu peux commencer le cours en faisant un tableau avec deux colonnes: Web Mobile et Pas Web Mobile.
  479. Et demander à chacun des participants de donner une phrase ou un mot pour chaque colonne.</p>
  480. <p>Cela donnera un bon aperçu de comment ils imaginent cela (ou n’imagine pas cela) et ainsi de construire des discussions à partir de cela. Exemple un site Web sur Arduino que l’on déplace partout fait-il parti du Web Mobile ? Est-ce que Web Mobile est seulement de lire l’information à travers un petit écran ? Est-ce des infrastructures ? Est-ce des types d’interactions ? etc.</p>
  481. <p><cite>Karl Dubost, le <a href="#comment-2">2015-01-26 à 02:07:41</a></cite></p>
  482. </article>
  483. <article id="comment-3" class="comment">
  484. <blockquote>
  485. <p>Si ça peut t’aider ;)</p>
  486. </blockquote>
  487. <p>Merci, ça me donne effectivement des idées, je n’avais pas pensé à parler des objets connectés notamment.</p>
  488. <blockquote>
  489. <p>Discuter du Web Mobile et nos croyances. Tu peux commencer le cours en faisant un tableau avec deux colonnes: Web Mobile et Pas Web Mobile.</p>
  490. </blockquote>
  491. <p>Héhé, c’est justement <a href="https://larlet.fr/david/blog/2015/cours-iut-construction-collaborative/">ce que j’ai fait</a> :)
  492. Ils ne sont pas allé plus loin dans les couches réseau par contre. Mais ça a discuté de vie privée, ce qui m’a agréablement surpris.</p>
  493. <p><cite>David Larlet, le <a href="#comment-3">2015-01-26 à 22:23:18</a></cite></p>
  494. </article>
  495. </section>
  496. <figure class="image" property="schema:image">
  497. <img src="/static/david/blog/2015/cours-iut-web-mobile.jpg" alt="" />
  498. </figure>
  499. <nav id="jumpto">
  500. <p>
  501. <a rel=prev href="/david/blog/2015/formations-explorations/">← Formations et explorations</a> | <a href="/david/blog/" title="Retour à la liste des expériences">↑</a> | <a rel=next href="/david/blog/2015/cours-iut-construction-collaborative/">Cours IUT : Construction collaborative →</a>
  502. </p>
  503. </nav>
  504. <footer>
  505. <div>
  506. <img src="/static/david/david-larlet-avatar.jpg" loading="lazy" class="avatar" width="200" height="200">
  507. <p>
  508. Bonjour/Hi!
  509. Je suis <a href="/david/" title="Profil public">David&nbsp;Larlet</a>, je vis actuellement à Montréal et j’alimente cet espace depuis 15 ans. <br>
  510. Si tu as apprécié cette lecture, n’hésite pas à poursuivre ton exploration. Par exemple via les <a href="/david/blog/" title="Expériences bienveillantes">réflexions bimestrielles</a>, la <a href="/david/stream/2019/" title="Pensées (dés)articulées">veille hebdomadaire</a> ou en t’abonnant au <a href="/david/log/" title="S’abonner aux publications via RSS">flux RSS</a> (<a href="/david/blog/2019/flux-rss/" title="Tiens c’est quoi un flux RSS ?">so 2005</a>).
  511. </p>
  512. <p>
  513. Je m’intéresse à la place que je peux avoir dans ce monde. En tant qu’humain, en tant que membre d’une famille et en tant qu’associé d’une coopérative. De temps en temps, je fais aussi des <a href="https://github.com/davidbgk" title="Principalement sur Github mais aussi ailleurs">trucs techniques</a>. Et encore plus rarement, <a href="/david/talks/" title="En ce moment je laisse plutôt la place aux autres">j’en parle</a>.
  514. </p>
  515. <p>
  516. Les dernières publications hebdomadaires sont :
  517. </p>
  518. <ul class="with_columns">
  519. <li>
  520. <a href="/david/stream/2019/12/31/">Merci</a>
  521. </li>
  522. <li>
  523. <a href="/david/stream/2019/12/27/">Intemporels</a>
  524. </li>
  525. <li>
  526. <a href="/david/stream/2019/12/24/">Outils</a>
  527. </li>
  528. <li>
  529. <a href="/david/stream/2019/12/17/">Origines</a>
  530. </li>
  531. <li>
  532. <a href="/david/stream/2019/12/10/">Publier</a>
  533. </li>
  534. <li>
  535. <a href="/david/stream/2019/12/03/">En forêt</a>
  536. </li>
  537. <li>
  538. <a href="/david/stream/2019/11/26/">Ecocentric</a>
  539. </li>
  540. <li>
  541. <a href="/david/stream/2019/11/19/">Se livrer</a>
  542. </li>
  543. <li>
  544. <a href="/david/stream/2019/11/12/">Dépendances</a>
  545. </li>
  546. <li>
  547. <a href="/david/stream/2019/11/05/">Positif</a>
  548. </li>
  549. <li>
  550. <a href="/david/stream/2019/10/29/">Dettes</a>
  551. </li>
  552. <li>
  553. <a href="/david/stream/2019/10/22/">Privilèges</a>
  554. </li>
  555. <li>
  556. <a href="/david/stream/2019/10/15/">Discrétion</a>
  557. </li>
  558. <li>
  559. <a href="/david/stream/2019/10/08/">Désespérance</a>
  560. </li>
  561. <li>
  562. <a href="/david/stream/2019/10/01/">Présent</a>
  563. </li>
  564. <li>
  565. <a href="/david/stream/2019/09/24/">Manifester</a>
  566. </li>
  567. <li>
  568. <a href="/david/stream/2019/09/17/">Arpenter</a>
  569. </li>
  570. <li>
  571. <a href="/david/stream/2019/09/10/">Nostalgie</a>
  572. </li>
  573. <li>
  574. <a href="/david/stream/2019/09/03/">Déconstruire</a>
  575. </li>
  576. <li>
  577. <a href="/david/stream/2019/08/27/">Documenter</a>
  578. </li>
  579. <li>
  580. <a href="/david/stream/2019/08/20/">Frustration</a>
  581. </li>
  582. <li>
  583. <a href="/david/stream/2019/08/13/">Holisme</a>
  584. </li>
  585. <li>
  586. <a href="/david/stream/2019/08/06/">1%</a>
  587. </li>
  588. <li>
  589. <a href="/david/stream/2019/07/30/">Exemplarité</a>
  590. </li>
  591. <li>
  592. <a href="/david/stream/2019/07/23/">Timelines</a>
  593. </li>
  594. <li>
  595. <a href="/david/stream/2019/07/16/">Écoute</a>
  596. </li>
  597. <li>
  598. <a href="/david/stream/2019/07/02/">Anxiété</a>
  599. </li>
  600. <li>
  601. <a href="/david/stream/2019/06/21/">À lier</a>
  602. </li>
  603. <li>
  604. <a href="/david/stream/2019/06/14/">Pauvreté</a>
  605. </li>
  606. <li>
  607. <a href="/david/stream/2019/06/07/">Amateur</a>
  608. </li>
  609. <li>
  610. <a href="/david/stream/2019/05/31/">Pollution</a>
  611. </li>
  612. <li>
  613. <a href="/david/stream/2019/05/24/">Apaisement</a>
  614. </li>
  615. <li>
  616. <a href="/david/stream/2019/05/10/">Folie</a>
  617. </li>
  618. <li>
  619. <a href="/david/stream/2019/05/03/">Sympathie</a>
  620. </li>
  621. <li>
  622. <a href="/david/stream/2019/04/12/">Péremption</a>
  623. </li>
  624. <li>
  625. <a href="/david/stream/2019/04/05/">Définitions</a>
  626. </li>
  627. <li>
  628. <a href="/david/stream/2019/03/29/">Acceptation</a>
  629. </li>
  630. <li>
  631. <a href="/david/stream/2019/03/22/">Dissonance</a>
  632. </li>
  633. <li>
  634. <a href="/david/stream/2019/03/15/">Reconnaissance</a>
  635. </li>
  636. <li>
  637. <a href="/david/stream/2019/03/08/">Lecture</a>
  638. </li>
  639. <li>
  640. <a href="/david/stream/2019/03/01/">Journaux</a>
  641. </li>
  642. <li>
  643. <a href="/david/stream/2019/02/22/">Écriture</a>
  644. </li>
  645. <li>
  646. <a href="/david/stream/2019/02/15/">Kyriarchie</a>
  647. </li>
  648. <li>
  649. <a href="/david/stream/2019/02/08/">Mots-serrures</a>
  650. </li>
  651. <li>
  652. <a href="/david/stream/2019/02/01/">Sans voie</a>
  653. </li>
  654. <li>
  655. <a href="/david/stream/2019/01/25/">Auto-diagnostic</a>
  656. </li>
  657. <li>
  658. <a href="/david/stream/2019/01/18/">Agilité</a>
  659. </li>
  660. <li>
  661. <a href="/david/stream/2019/01/11/">Métaphores</a>
  662. </li>
  663. <li>
  664. <a href="/david/stream/2019/01/04/">Balbutiements</a>
  665. </li>
  666. </ul>
  667. <p>
  668. Voici quelques articles choisis :
  669. <a href="/david/blog/2019/faire-equipe/" title="Accéder à l’article complet">Faire équipe</a>,
  670. <a href="/david/blog/2018/bivouac-automnal/" title="Accéder à l’article complet">Bivouac automnal</a>,
  671. <a href="/david/blog/2018/commodite-effondrement/" title="Accéder à l’article complet">Commodité et effondrement</a>,
  672. <a href="/david/blog/2017/donnees-communs/" title="Accéder à l’article complet">Des données aux communs</a>,
  673. <a href="/david/blog/2016/accompagner-enfant/" title="Accéder à l’article complet">Accompagner un enfant</a>,
  674. <a href="/david/blog/2016/senior-developer/" title="Accéder à l’article complet">Senior developer</a>,
  675. <a href="/david/blog/2016/illusion-sociale/" title="Accéder à l’article complet">L’illusion sociale</a>,
  676. <a href="/david/blog/2016/instantane-scopyleft/" title="Accéder à l’article complet">Instantané Scopyleft</a>,
  677. <a href="/david/blog/2016/enseigner-web/" title="Accéder à l’article complet">Enseigner le Web</a>,
  678. <a href="/david/blog/2016/simplicite-defaut/" title="Accéder à l’article complet">Simplicité par défaut</a>,
  679. <a href="/david/blog/2016/minimalisme-esthetique/" title="Accéder à l’article complet">Minimalisme et esthétique</a>,
  680. <a href="/david/blog/2014/un-web-omni-present/" title="Accéder à l’article complet">Un web omni-présent</a>,
  681. <a href="/david/blog/2014/manifeste-developpeur/" title="Accéder à l’article complet">Manifeste de développeur</a>,
  682. <a href="/david/blog/2013/confort-convivialite/" title="Accéder à l’article complet">Confort et convivialité</a>,
  683. <a href="/david/blog/2013/testament-numerique/" title="Accéder à l’article complet">Testament numérique</a>,
  684. et <a href="/david/blog/" title="Accéder aux archives">bien d’autres…</a>
  685. </p>
  686. <p>
  687. On peut <a href="mailto:david%40larlet.fr" title="Envoyer un courriel">échanger par courriel</a>. Si éventuellement tu souhaites que l’on travaille ensemble, tu devrais commencer par consulter le <a href="http://larlet.com">profil dédié à mon activité professionnelle</a> et/ou contacter directement <a href="http://scopyleft.fr/">scopyleft</a>, la <abbr title="Société coopérative et participative">SCOP</abbr> dont je fais partie depuis six ans. Je recommande au préalable de lire <a href="/david/blog/2018/cout-site/" title="Attention ce qui va suivre peut vous choquer">combien coûte un site</a> et pourquoi je suis plutôt favorable à une <a href="/david/pro/devis/" title="Discutons-en !">non-demande de devis</a>.
  688. </p>
  689. <p>
  690. Je ne traque pas ta navigation mais mon
  691. <abbr title="Alwaysdata, 62 rue Tiquetonne 75002 Paris, +33.184162340">hébergeur</abbr>
  692. conserve des logs d’accès.
  693. </p>
  694. </div>
  695. </footer>
  696. <script type="text/javascript">
  697. ;(_ => {
  698. const jumper = document.getElementById('jumper')
  699. jumper.addEventListener('click', e => {
  700. e.preventDefault()
  701. const anchor = e.target.getAttribute('href')
  702. const targetEl = document.getElementById(anchor.substring(1))
  703. targetEl.scrollIntoView({behavior: 'smooth'})
  704. })
  705. })()
  706. </script>
  707. <script>
  708. /* Service workers */
  709. if (navigator.serviceWorker) {
  710. window.addEventListener('load', function () {
  711. var selector = 'a[href^="/david/cache/"], a[rel=prev], a[rel=next]'
  712. function sendLinks (selector) {
  713. var links = [].slice.call(document.querySelectorAll(selector)).map(function (link) {
  714. return link.getAttribute('href')
  715. })
  716. links.push(location.pathname) // Put the current page in cache too.
  717. navigator.serviceWorker.controller.postMessage({ links: links })
  718. }
  719. navigator.serviceWorker.getRegistration()
  720. .then(function (registration) {
  721. if (!registration || !navigator.serviceWorker.controller) {
  722. return navigator.serviceWorker.register('/serviceworker.js')
  723. .then(navigator.serviceWorker.ready)
  724. .then(function () {
  725. console.log('[ServiceWorker] Ready to go!')
  726. })
  727. .catch(console.error.bind(console))
  728. } else {
  729. console.log('[ServiceWorker] Send links via registration')
  730. sendLinks(selector)
  731. }
  732. })
  733. navigator.serviceWorker.addEventListener('controllerchange', function () {
  734. console.log('[ServiceWorker] Send links via controller change')
  735. sendLinks(selector)
  736. })
  737. navigator.serviceWorker.addEventListener('message', function (event) {
  738. var link = document.querySelector('a[href="' + event.data.link + '"]')
  739. if (event.data.status && link) {
  740. link.style.backgroundColor = '#2d7474'
  741. link.style.color = '#f0f0ea'
  742. link.setAttribute('title', 'En cache pour consultation sans connexion')
  743. }
  744. })
  745. })
  746. } else {
  747. console.warn('[ServiceWorker] No cache for old browsers.')
  748. }
  749. </script>