├── .editorconfig ├── .github └── workflows │ └── main.yml ├── .gitignore ├── .husky ├── pre-commit └── pre-push ├── .markdownlint.json ├── .npmrc ├── LICENCE.md ├── README.md ├── content ├── .vuepress │ ├── config.js │ ├── public │ │ └── images │ │ │ ├── devops │ │ │ ├── devops-pipeline.png │ │ │ └── devops.jpg │ │ │ ├── js │ │ │ ├── ecmascript-history.png │ │ │ └── js-ages.jpeg │ │ │ ├── software-engineering │ │ │ └── architecture │ │ │ │ ├── CleanArchitecture.jpg │ │ │ │ ├── archi_hexa_00.png │ │ │ │ ├── archi_hexa_01.png │ │ │ │ ├── archi_hexa_02.png │ │ │ │ ├── archi_hexa_04.png │ │ │ │ ├── archi_hexa_05.png │ │ │ │ ├── archi_hexa_06.png │ │ │ │ ├── archi_hexa_11.png │ │ │ │ ├── archi_hexa_12.png │ │ │ │ ├── ports-and-adapters.png │ │ │ │ └── real-life-clean-architecture.jpg │ │ │ └── ts-typescript-overview-compiletime-vs-runtime.png │ ├── sidebar-config │ │ ├── data.js │ │ ├── devops.js │ │ ├── divers.js │ │ ├── index.js │ │ ├── languages.js │ │ ├── network.js │ │ ├── platforms-frameworks-libs.js │ │ ├── security.js │ │ ├── software-engineering.js │ │ ├── systems.js │ │ ├── tools.js │ │ └── web.js │ └── styles │ │ ├── index.styl │ │ └── palette.styl ├── README.md ├── data │ ├── README.md │ ├── data-basics.md │ └── files-formats │ │ ├── asciidoc-infos.md │ │ ├── json.md │ │ ├── markdown-from-gitlab.md │ │ ├── markdown-infos.md │ │ ├── xml.md │ │ └── yaml.md ├── devops │ ├── README.md │ ├── devops-accelerate.md │ ├── devops-metrics.md │ ├── devops-observability.md │ ├── devops-overview.md │ ├── docker.md │ ├── github-actions.md │ ├── kubernetes.md │ └── paas │ │ └── heroku │ │ ├── heroku-angularjs.md │ │ ├── heroku-helper.md │ │ └── heroku-sendgrid-mailer.md ├── divers │ ├── README.md │ ├── divers-articles.md │ ├── divers-dev-ethics.md │ ├── divers-outil-veille-techno.md │ ├── divers-pdf.md │ ├── divers-videos.md │ ├── freebox │ │ └── freebox-videos.md │ ├── ia │ │ └── ia.md │ ├── licences │ │ ├── licences-WTFPL.md │ │ ├── licences-articles-opensource.md │ │ └── licences-choose-a-licence.md │ └── raspberry │ │ └── raspberry-overview.md ├── languages │ ├── README.md │ ├── SQL │ │ ├── ACID.md │ │ └── postgre-setup.md │ ├── css │ │ ├── css-block-element-modifier.md │ │ ├── css-conventions.nommage.html.css.md │ │ ├── css-overview.md │ │ ├── css-preprocessors.md │ │ ├── css-selectors.md │ │ └── css-tips.md │ ├── html │ │ └── html-tips.md │ ├── java │ │ ├── java-ant-tips.md │ │ ├── java-jackson-cyclic-relationship.md │ │ ├── java-jpa-infos.md │ │ └── java-security-links.md │ ├── js │ │ ├── ES6-overview.md │ │ ├── ES6-promises.md │ │ ├── ES6-proxies.md │ │ ├── javascript-overview.md │ │ ├── js-best-practices.md │ │ ├── js-browser-geolocalisation.md │ │ ├── js-closures.md │ │ ├── js-database-memo.md │ │ ├── js-date.md │ │ ├── js-doc.md │ │ ├── js-double-negation.md │ │ ├── js-download-files.md │ │ ├── js-duck-typing.md │ │ ├── js-fetch-api.md │ │ ├── js-fonctions-anonymes-IIFE.md │ │ ├── js-function-invocation-patterns.md │ │ ├── js-iframe.md │ │ ├── js-math.md │ │ ├── js-modules.md │ │ ├── js-named-f-vs-expr-f.md │ │ ├── js-prototype.md │ │ ├── js-samples-and-miscs.md │ │ ├── js-simple-logger.md │ │ ├── js-spa-software-architecture.md │ │ ├── js-understanding-this-keyword.md │ │ ├── js-web-storage.md │ │ ├── js-webapp-build.md │ │ └── ts-typescript-overview.md │ └── rust │ │ ├── rust-install.md │ │ └── rust-overview.md ├── network │ ├── README.md │ ├── internet.md │ └── protocols │ │ ├── TCP.md │ │ └── http.md ├── platforms-frameworks-libs │ ├── README.md │ ├── angular-js │ │ ├── angular-js-SEO.md │ │ ├── angular-js-auth.md │ │ ├── angular-js-best-practices.md │ │ ├── angular-js-components.md │ │ ├── angular-js-controllers.md │ │ ├── angular-js-decorator.md │ │ ├── angular-js-dep-inj.md │ │ ├── angular-js-directives.md │ │ ├── angular-js-errors-exceptions.md │ │ ├── angular-js-init-app.md │ │ ├── angular-js-knowledge-overview.md │ │ ├── angular-js-lazy-downloading.md │ │ ├── angular-js-misc.md │ │ ├── angular-js-mobile.md │ │ ├── angular-js-module.md │ │ ├── angular-js-optimisation.md │ │ ├── angular-js-promise.md │ │ ├── angular-js-routing.md │ │ ├── angular-js-services.md │ │ ├── angular-js-template-cache.md │ │ └── angular-js-testing.md │ ├── angular │ │ ├── angular-migration-from-angular-js.md │ │ └── angular-overview.md │ ├── deno │ │ └── deno-overview.md │ ├── htmx │ │ └── htmx-overview.md │ ├── node.js │ │ ├── nodejs-best-practices.md │ │ ├── nodejs-express-project-structure.md │ │ ├── nodejs-handling-errors.md │ │ ├── nodejs-handling-files.md │ │ ├── nodejs-hello-world.md │ │ ├── nodejs-links.md │ │ ├── nodejs-logging.md │ │ ├── nodejs-mock-via-express.md │ │ ├── nodejs-modules.md │ │ └── nodejs-rest-api-frameworks.md │ ├── play-framework │ │ ├── java-play-OAuth.md │ │ ├── java-play-async.md │ │ ├── java-play-config-idea.md │ │ ├── java-play-gestion-fichier-config-dev-prod.md │ │ └── java-play-pojo-validation.md │ ├── svelte │ │ └── svelte-overview.md │ └── vuejs │ │ └── vuejs-overview.md ├── security │ ├── CORS │ │ ├── infos-CORS.md │ │ └── infos-JSONP.md │ ├── PKI-X509.md │ ├── README.md │ ├── authentification.md │ ├── blockchains.md │ ├── chiffrement.md │ ├── security-basics.md │ └── security-webapp.md ├── software-engineering │ ├── README.md │ ├── archi-micro-services.md │ ├── architecture.md │ ├── brooks-no-silver-bullet-notes.md │ ├── code-complexity.md │ ├── code-reviews.md │ ├── compilateur.md │ ├── composition-over-inheritance.md │ ├── ddd.md │ ├── dette-technique-et-TTM.md │ ├── genie-logiciel.md │ ├── paradigms.md │ ├── reeves-what-is-software-design-notes.md │ ├── scrum-memo.md │ ├── semver.md │ ├── stamps.md │ ├── testing.md │ └── typings.md ├── systems │ ├── README.md │ ├── filesystem.md │ ├── linux │ │ ├── apt-cheatsheet.md │ │ ├── bash │ │ │ └── bash-notes-whiptail.md │ │ ├── linux-fhs-description.md │ │ ├── linux-fhs-droits.md │ │ ├── linux-logs.md │ │ ├── linux-manipulation-fichiers.md │ │ ├── linux-manipulation-process.md │ │ ├── ubuntu-cheatsheet.md │ │ ├── ubuntu-create-usb-boot.md │ │ ├── ubuntu-nvidia.md │ │ └── ubuntu-pdf.md │ ├── process-signals.md │ └── windows │ │ ├── windows-checksum.md │ │ └── windows-ubuntu-on-windows10.md ├── tools │ ├── README.md │ ├── cheat-sheets.md │ ├── diagrams.md │ ├── elasticsearch-overview.md │ ├── envinfo.md │ ├── fiddler.md │ ├── file-diff-online-tools.md │ ├── git │ │ ├── git-articles-divers.md │ │ ├── git-cheatsheet.md │ │ ├── git-config.md │ │ ├── git-cours.md │ │ ├── git-definitions.md │ │ ├── git-gitignore-example.md │ │ ├── git-internals.md │ │ ├── git-rebase.md │ │ ├── git-reflog.md │ │ ├── git-remotes.md │ │ ├── git-tags-management.md │ │ ├── git-tools.md │ │ ├── git-tracking-branches.md │ │ ├── git-useful-commands.md │ │ └── git-workflow.md │ ├── gitbook │ │ └── gitbook-intro.md │ ├── jetbrains │ │ └── jetbrains-overview.md │ ├── json-web-token-tools.md │ ├── nano-memo.md │ ├── npm │ │ ├── npm-memo.md │ │ ├── npm-on-windows.md │ │ ├── npm-packages.md │ │ ├── npm-registry.md │ │ ├── npm-security.md │ │ └── npm-shrinkwrap.md │ ├── regex-online-tools.md │ ├── security-tools-online.md │ ├── slides │ │ ├── fusuma │ │ │ └── fusuma.md │ │ ├── gitpitch │ │ │ └── gitpitch-intro.md │ │ ├── slides.md │ │ └── webslides │ │ │ └── webslides.md │ ├── social │ │ └── social-mastodon.md │ ├── testing │ │ ├── cypress.md │ │ ├── debug-js-in-webstorm.md │ │ ├── jasmine.md │ │ ├── jest.md │ │ ├── karma.md │ │ ├── qunit.md │ │ ├── testing-tools-for-javascript.md │ │ └── tuto-cypress.md │ ├── tools-auto-deps-update.md │ ├── tools-bower.md │ ├── tools-bundlers.md │ ├── tools-grunt.md │ ├── tools-gulp.md │ ├── tools-js-linters.md │ ├── tools-markdown-editor.md │ ├── tools-release-workflow.md │ ├── tools-semantic-release.md │ ├── tools-yeoman.md │ ├── ux-tools-and-links.md │ ├── vim-memo.md │ └── visual-studio-code.md └── web │ ├── README.md │ ├── REST │ ├── open-api-initiative.md │ ├── rest-api-return-http-code.md │ ├── rest-best-practices.md │ ├── rest-design-tool-RAML.md │ ├── rest-design-tool-swagger-io.md │ └── rest-naming-convention-links.md │ ├── RFC │ ├── RFC-http.md │ └── RFC-overview.md │ ├── SEO.md │ ├── browsers │ ├── browsers-how-they-init-web-page.md │ ├── browsers-overview.md │ └── browsers-perfs.md │ ├── cookies │ └── cookies.md │ ├── debug-chrome-android.md │ ├── gestion-monetisation-web.md │ ├── http-cache.md │ ├── polyfills-shivs-shims.md │ ├── regex.md │ ├── shadow-dom.md │ ├── web-comparatifs-frameworks.md │ ├── web-components.md │ ├── web-forms-good-practices.md │ ├── web-generic-good-practices.md │ ├── web-login-forms-good-practices.md │ ├── web-scraping.md │ ├── web-semantic-web.md │ ├── web-test-selenium.md │ ├── web-tracking.md │ └── webassembly.md ├── docs ├── 404.html ├── CNAME ├── assets │ ├── css │ │ └── 0.styles.8fa48b28.css │ ├── img │ │ └── search.83621669.svg │ └── js │ │ ├── 10.4a66f45d.js │ │ ├── 100.652ecb09.js │ │ ├── 101.5b18bae3.js │ │ ├── 102.791122c1.js │ │ ├── 103.d573615d.js │ │ ├── 104.d7edf2e3.js │ │ ├── 105.6db53b8a.js │ │ ├── 106.1c96cdfe.js │ │ ├── 107.0871b923.js │ │ ├── 108.30f75dc3.js │ │ ├── 109.41de369f.js │ │ ├── 11.f1efecd7.js │ │ ├── 110.1eb592de.js │ │ ├── 111.c22d4f2a.js │ │ ├── 112.d92c5c00.js │ │ ├── 113.9130f805.js │ │ ├── 114.e479e522.js │ │ ├── 115.0751f814.js │ │ ├── 116.98b877a1.js │ │ ├── 117.79881d8f.js │ │ ├── 118.830bcd7a.js │ │ ├── 119.75832b73.js │ │ ├── 12.a801960e.js │ │ ├── 120.15cc4ab9.js │ │ ├── 121.8443ba67.js │ │ ├── 122.38632ecc.js │ │ ├── 123.92a71ff4.js │ │ ├── 124.f550c2ed.js │ │ ├── 125.8d1c688c.js │ │ ├── 126.0be40e3e.js │ │ ├── 127.e913862e.js │ │ ├── 128.7e5ddd4b.js │ │ ├── 129.002c7aa1.js │ │ ├── 13.84411f6f.js │ │ ├── 130.f3b234b3.js │ │ ├── 131.d03ad905.js │ │ ├── 132.eb14de1f.js │ │ ├── 133.5b439c48.js │ │ ├── 134.e754ddcd.js │ │ ├── 135.66cbd4cc.js │ │ ├── 136.750c68e8.js │ │ ├── 137.72898d33.js │ │ ├── 138.134c606d.js │ │ ├── 139.64ac648b.js │ │ ├── 14.a3baaa42.js │ │ ├── 140.6089a17c.js │ │ ├── 141.3e9616c5.js │ │ ├── 142.591970c6.js │ │ ├── 143.d3c4171c.js │ │ ├── 144.c0a7c7e7.js │ │ ├── 145.dd4f0ff5.js │ │ ├── 146.c0a552a3.js │ │ ├── 147.ad5e9386.js │ │ ├── 148.d7397364.js │ │ ├── 149.8e621f2b.js │ │ ├── 15.a1c14448.js │ │ ├── 150.d9e32d36.js │ │ ├── 151.78dbc674.js │ │ ├── 152.b030b275.js │ │ ├── 153.b722b4a5.js │ │ ├── 154.d89fe4ab.js │ │ ├── 155.dd1edd1d.js │ │ ├── 156.ce95e93c.js │ │ ├── 157.2362eb04.js │ │ ├── 158.eaf63d98.js │ │ ├── 159.a224df67.js │ │ ├── 16.a58f08d0.js │ │ ├── 160.b92bfbfc.js │ │ ├── 161.38329649.js │ │ ├── 162.6cf4f01b.js │ │ ├── 163.45da41a3.js │ │ ├── 164.e9e25121.js │ │ ├── 165.15fa4c5e.js │ │ ├── 166.07a999c9.js │ │ ├── 167.80bcf00c.js │ │ ├── 168.cfbe7285.js │ │ ├── 169.2969a64c.js │ │ ├── 17.e79ae9c7.js │ │ ├── 170.cf0428dd.js │ │ ├── 171.206a3db8.js │ │ ├── 172.3fd1082f.js │ │ ├── 173.a7cce73a.js │ │ ├── 174.138eae9f.js │ │ ├── 175.6f9f70a8.js │ │ ├── 176.1950e024.js │ │ ├── 177.8aabc5b5.js │ │ ├── 178.a975c74e.js │ │ ├── 179.40011da2.js │ │ ├── 18.494d2e9e.js │ │ ├── 180.635cb613.js │ │ ├── 181.1d300dc8.js │ │ ├── 182.e318f977.js │ │ ├── 183.ab1580ed.js │ │ ├── 184.b857a0ab.js │ │ ├── 185.e5400e26.js │ │ ├── 186.d7db729f.js │ │ ├── 187.b154efda.js │ │ ├── 188.34df6b64.js │ │ ├── 189.c96410d7.js │ │ ├── 19.2e99e9f2.js │ │ ├── 190.7090ea8b.js │ │ ├── 191.cd294cdb.js │ │ ├── 192.247e7286.js │ │ ├── 193.f855ee34.js │ │ ├── 194.61099670.js │ │ ├── 195.e8673a81.js │ │ ├── 196.79e2e0e7.js │ │ ├── 197.660719b7.js │ │ ├── 198.fb4c54b1.js │ │ ├── 199.6987ac00.js │ │ ├── 2.b7b184ab.js │ │ ├── 20.716e2bb9.js │ │ ├── 200.d38cb5cd.js │ │ ├── 201.28642d7b.js │ │ ├── 202.10c75ca3.js │ │ ├── 203.5bf8189c.js │ │ ├── 204.d3c0a317.js │ │ ├── 205.985fa58e.js │ │ ├── 206.00158d18.js │ │ ├── 207.317e8838.js │ │ ├── 208.894446b5.js │ │ ├── 209.55a73a60.js │ │ ├── 21.48c57da5.js │ │ ├── 210.3c774bae.js │ │ ├── 211.ce514973.js │ │ ├── 212.4465d18e.js │ │ ├── 213.999b2b0f.js │ │ ├── 214.7e4de473.js │ │ ├── 215.85f09689.js │ │ ├── 216.9b7f4066.js │ │ ├── 217.ee625d16.js │ │ ├── 218.c663cd73.js │ │ ├── 219.70b06d60.js │ │ ├── 22.0f854566.js │ │ ├── 220.a563b908.js │ │ ├── 221.df6b534c.js │ │ ├── 222.5c0a80de.js │ │ ├── 223.fcc0987b.js │ │ ├── 224.12ac857b.js │ │ ├── 225.9d202868.js │ │ ├── 226.f3032553.js │ │ ├── 227.e0679a76.js │ │ ├── 228.1c065509.js │ │ ├── 229.64dc2917.js │ │ ├── 23.f30771a4.js │ │ ├── 230.f6252676.js │ │ ├── 231.5ce01d23.js │ │ ├── 232.1fc09e37.js │ │ ├── 233.b18bca5d.js │ │ ├── 234.476afe32.js │ │ ├── 235.cb23a2f0.js │ │ ├── 236.0193ad8b.js │ │ ├── 237.8447f844.js │ │ ├── 238.7b81378c.js │ │ ├── 239.090ad426.js │ │ ├── 24.296c020e.js │ │ ├── 240.d60af288.js │ │ ├── 241.9f04ec30.js │ │ ├── 242.65b63ee2.js │ │ ├── 243.4b0f80c2.js │ │ ├── 244.d0e17505.js │ │ ├── 245.5755052c.js │ │ ├── 246.8d5d39b4.js │ │ ├── 247.a48230bd.js │ │ ├── 248.0498d7fc.js │ │ ├── 249.9068ff67.js │ │ ├── 25.e52f3a62.js │ │ ├── 250.f04eee3d.js │ │ ├── 251.72135fc8.js │ │ ├── 252.eef6ce1f.js │ │ ├── 253.167f4bd0.js │ │ ├── 254.9096789a.js │ │ ├── 255.679e07d5.js │ │ ├── 256.f373c57a.js │ │ ├── 257.6c6d2f34.js │ │ ├── 258.9ca0e62d.js │ │ ├── 259.9bb1035b.js │ │ ├── 26.b0fc0d44.js │ │ ├── 27.238c4e1b.js │ │ ├── 28.d9fbc105.js │ │ ├── 29.e7aa9ad8.js │ │ ├── 3.6d95eb82.js │ │ ├── 30.55bb283b.js │ │ ├── 31.e5abb763.js │ │ ├── 32.0846ae8e.js │ │ ├── 33.5fc787fc.js │ │ ├── 34.9754712a.js │ │ ├── 35.0ec9284c.js │ │ ├── 36.0ca29660.js │ │ ├── 37.90b61def.js │ │ ├── 38.f2e9ae30.js │ │ ├── 39.db5e9fc3.js │ │ ├── 4.6a1f048f.js │ │ ├── 40.bdcf902b.js │ │ ├── 41.dd4ace95.js │ │ ├── 42.55923ff3.js │ │ ├── 43.fd13e0b0.js │ │ ├── 44.0065a0b7.js │ │ ├── 45.3b47a1da.js │ │ ├── 46.ebf65810.js │ │ ├── 47.973bfcc3.js │ │ ├── 48.da50e531.js │ │ ├── 49.5484fb0e.js │ │ ├── 5.6dcba242.js │ │ ├── 50.c85767fa.js │ │ ├── 51.33f5d7e1.js │ │ ├── 52.6f71513b.js │ │ ├── 53.9ae205c8.js │ │ ├── 54.0f8534a3.js │ │ ├── 55.d49188de.js │ │ ├── 56.2479541b.js │ │ ├── 57.8590a417.js │ │ ├── 58.c652096f.js │ │ ├── 59.4d51d970.js │ │ ├── 6.d77cfd8b.js │ │ ├── 60.f21c6286.js │ │ ├── 61.8de7b618.js │ │ ├── 62.f0d0d768.js │ │ ├── 63.bfc39eb5.js │ │ ├── 64.7bcb8914.js │ │ ├── 65.b7c7a7a8.js │ │ ├── 66.17b3f1f7.js │ │ ├── 67.7aa58070.js │ │ ├── 68.8a5d1e06.js │ │ ├── 69.dfb0d5ad.js │ │ ├── 7.87213b1a.js │ │ ├── 70.7cf4de1e.js │ │ ├── 71.370c8306.js │ │ ├── 72.9459ded8.js │ │ ├── 73.ae5427c8.js │ │ ├── 74.0ccddbe5.js │ │ ├── 75.887744d9.js │ │ ├── 76.7aa8e42f.js │ │ ├── 77.48f88aaf.js │ │ ├── 78.c1355bbb.js │ │ ├── 79.4a2ec47b.js │ │ ├── 8.185cbed0.js │ │ ├── 80.a46f516e.js │ │ ├── 81.cfd22791.js │ │ ├── 82.cd4cab56.js │ │ ├── 83.ce9ced53.js │ │ ├── 84.eef365d5.js │ │ ├── 85.02a71519.js │ │ ├── 86.54c0adfa.js │ │ ├── 87.5e8e1c2a.js │ │ ├── 88.44376205.js │ │ ├── 89.31fedcc9.js │ │ ├── 9.821ae454.js │ │ ├── 90.fe7d54b0.js │ │ ├── 91.1fca05cb.js │ │ ├── 92.d8f7930e.js │ │ ├── 93.3a726ec1.js │ │ ├── 94.1c3f6fda.js │ │ ├── 95.34feb363.js │ │ ├── 96.d8cc0582.js │ │ ├── 97.558ef783.js │ │ ├── 98.3ca7d77a.js │ │ ├── 99.c4d71e79.js │ │ └── app.e8c60b7e.js ├── data │ ├── data-basics.html │ ├── files-formats │ │ ├── asciidoc-infos.html │ │ ├── json.html │ │ ├── markdown-from-gitlab.html │ │ ├── markdown-infos.html │ │ ├── xml.html │ │ └── yaml.html │ └── index.html ├── devops │ ├── devops-accelerate.html │ ├── devops-metrics.html │ ├── devops-observability.html │ ├── devops-overview.html │ ├── docker.html │ ├── github-actions.html │ ├── index.html │ ├── kubernetes.html │ └── paas │ │ └── heroku │ │ ├── heroku-angularjs.html │ │ ├── heroku-helper.html │ │ └── heroku-sendgrid-mailer.html ├── divers │ ├── divers-articles.html │ ├── divers-dev-ethics.html │ ├── divers-outil-veille-techno.html │ ├── divers-pdf.html │ ├── divers-videos.html │ ├── freebox │ │ └── freebox-videos.html │ ├── ia │ │ └── ia.html │ ├── index.html │ ├── licences │ │ ├── licences-WTFPL.html │ │ ├── licences-articles-opensource.html │ │ └── licences-choose-a-licence.html │ └── raspberry │ │ └── raspberry-overview.html ├── images │ ├── devops │ │ ├── devops-pipeline.png │ │ └── devops.jpg │ ├── js │ │ ├── ecmascript-history.png │ │ └── js-ages.jpeg │ ├── software-engineering │ │ └── architecture │ │ │ ├── CleanArchitecture.jpg │ │ │ ├── archi_hexa_00.png │ │ │ ├── archi_hexa_01.png │ │ │ ├── archi_hexa_02.png │ │ │ ├── archi_hexa_04.png │ │ │ ├── archi_hexa_05.png │ │ │ ├── archi_hexa_06.png │ │ │ ├── archi_hexa_11.png │ │ │ ├── archi_hexa_12.png │ │ │ ├── ports-and-adapters.png │ │ │ └── real-life-clean-architecture.jpg │ └── ts-typescript-overview-compiletime-vs-runtime.png ├── index.html ├── languages │ ├── SQL │ │ ├── ACID.html │ │ └── postgre-setup.html │ ├── css │ │ ├── css-block-element-modifier.html │ │ ├── css-conventions.nommage.html.css.html │ │ ├── css-overview.html │ │ ├── css-preprocessors.html │ │ ├── css-selectors.html │ │ └── css-tips.html │ ├── html │ │ └── html-tips.html │ ├── index.html │ ├── java │ │ ├── java-ant-tips.html │ │ ├── java-jackson-cyclic-relationship.html │ │ ├── java-jpa-infos.html │ │ └── java-security-links.html │ ├── js │ │ ├── ES6-overview.html │ │ ├── ES6-promises.html │ │ ├── ES6-proxies.html │ │ ├── javascript-overview.html │ │ ├── js-best-practices.html │ │ ├── js-browser-geolocalisation.html │ │ ├── js-closures.html │ │ ├── js-database-memo.html │ │ ├── js-date.html │ │ ├── js-doc.html │ │ ├── js-double-negation.html │ │ ├── js-download-files.html │ │ ├── js-duck-typing.html │ │ ├── js-fetch-api.html │ │ ├── js-fonctions-anonymes-IIFE.html │ │ ├── js-function-invocation-patterns.html │ │ ├── js-iframe.html │ │ ├── js-math.html │ │ ├── js-modules.html │ │ ├── js-named-f-vs-expr-f.html │ │ ├── js-prototype.html │ │ ├── js-samples-and-miscs.html │ │ ├── js-simple-logger.html │ │ ├── js-spa-software-architecture.html │ │ ├── js-understanding-this-keyword.html │ │ ├── js-web-storage.html │ │ ├── js-webapp-build.html │ │ └── ts-typescript-overview.html │ └── rust │ │ ├── rust-install.html │ │ └── rust-overview.html ├── network │ ├── index.html │ ├── internet.html │ └── protocols │ │ ├── TCP.html │ │ └── http.html ├── platforms-frameworks-libs │ ├── angular-js │ │ ├── angular-js-SEO.html │ │ ├── angular-js-auth.html │ │ ├── angular-js-best-practices.html │ │ ├── angular-js-components.html │ │ ├── angular-js-controllers.html │ │ ├── angular-js-decorator.html │ │ ├── angular-js-dep-inj.html │ │ ├── angular-js-directives.html │ │ ├── angular-js-errors-exceptions.html │ │ ├── angular-js-init-app.html │ │ ├── angular-js-knowledge-overview.html │ │ ├── angular-js-lazy-downloading.html │ │ ├── angular-js-misc.html │ │ ├── angular-js-mobile.html │ │ ├── angular-js-module.html │ │ ├── angular-js-optimisation.html │ │ ├── angular-js-promise.html │ │ ├── angular-js-routing.html │ │ ├── angular-js-services.html │ │ ├── angular-js-template-cache.html │ │ └── angular-js-testing.html │ ├── angular │ │ ├── angular-migration-from-angular-js.html │ │ └── angular-overview.html │ ├── deno │ │ └── deno-overview.html │ ├── htmx │ │ └── htmx-overview.html │ ├── index.html │ ├── node.js │ │ ├── nodejs-best-practices.html │ │ ├── nodejs-express-project-structure.html │ │ ├── nodejs-handling-errors.html │ │ ├── nodejs-handling-files.html │ │ ├── nodejs-hello-world.html │ │ ├── nodejs-links.html │ │ ├── nodejs-logging.html │ │ ├── nodejs-mock-via-express.html │ │ ├── nodejs-modules.html │ │ └── nodejs-rest-api-frameworks.html │ ├── play-framework │ │ ├── java-play-OAuth.html │ │ ├── java-play-async.html │ │ ├── java-play-config-idea.html │ │ ├── java-play-gestion-fichier-config-dev-prod.html │ │ └── java-play-pojo-validation.html │ ├── svelte │ │ └── svelte-overview.html │ └── vuejs │ │ └── vuejs-overview.html ├── security │ ├── CORS │ │ ├── infos-CORS.html │ │ └── infos-JSONP.html │ ├── PKI-X509.html │ ├── authentification.html │ ├── blockchains.html │ ├── chiffrement.html │ ├── index.html │ ├── security-basics.html │ └── security-webapp.html ├── software-engineering │ ├── archi-micro-services.html │ ├── architecture.html │ ├── brooks-no-silver-bullet-notes.html │ ├── code-complexity.html │ ├── code-reviews.html │ ├── compilateur.html │ ├── composition-over-inheritance.html │ ├── ddd.html │ ├── dette-technique-et-TTM.html │ ├── genie-logiciel.html │ ├── index.html │ ├── paradigms.html │ ├── reeves-what-is-software-design-notes.html │ ├── scrum-memo.html │ ├── semver.html │ ├── stamps.html │ ├── testing.html │ └── typings.html ├── systems │ ├── filesystem.html │ ├── index.html │ ├── linux │ │ ├── apt-cheatsheet.html │ │ ├── bash │ │ │ └── bash-notes-whiptail.html │ │ ├── linux-fhs-description.html │ │ ├── linux-fhs-droits.html │ │ ├── linux-logs.html │ │ ├── linux-manipulation-fichiers.html │ │ ├── linux-manipulation-process.html │ │ ├── ubuntu-cheatsheet.html │ │ ├── ubuntu-create-usb-boot.html │ │ ├── ubuntu-nvidia.html │ │ └── ubuntu-pdf.html │ ├── process-signals.html │ └── windows │ │ ├── windows-checksum.html │ │ └── windows-ubuntu-on-windows10.html ├── tools │ ├── cheat-sheets.html │ ├── diagrams.html │ ├── elasticsearch-overview.html │ ├── envinfo.html │ ├── fiddler.html │ ├── file-diff-online-tools.html │ ├── git │ │ ├── git-articles-divers.html │ │ ├── git-cheatsheet.html │ │ ├── git-config.html │ │ ├── git-cours.html │ │ ├── git-definitions.html │ │ ├── git-gitignore-example.html │ │ ├── git-internals.html │ │ ├── git-rebase.html │ │ ├── git-reflog.html │ │ ├── git-remotes.html │ │ ├── git-tags-management.html │ │ ├── git-tools.html │ │ ├── git-tracking-branches.html │ │ ├── git-useful-commands.html │ │ └── git-workflow.html │ ├── gitbook │ │ └── gitbook-intro.html │ ├── index.html │ ├── jetbrains │ │ └── jetbrains-overview.html │ ├── json-web-token-tools.html │ ├── nano-memo.html │ ├── npm │ │ ├── npm-memo.html │ │ ├── npm-on-windows.html │ │ ├── npm-packages.html │ │ ├── npm-registry.html │ │ ├── npm-security.html │ │ └── npm-shrinkwrap.html │ ├── regex-online-tools.html │ ├── security-tools-online.html │ ├── slides │ │ ├── fusuma │ │ │ └── fusuma.html │ │ ├── gitpitch │ │ │ └── gitpitch-intro.html │ │ ├── slides.html │ │ └── webslides │ │ │ └── webslides.html │ ├── social │ │ └── social-mastodon.html │ ├── testing │ │ ├── cypress.html │ │ ├── debug-js-in-webstorm.html │ │ ├── jasmine.html │ │ ├── jest.html │ │ ├── karma.html │ │ ├── qunit.html │ │ ├── testing-tools-for-javascript.html │ │ └── tuto-cypress.html │ ├── tools-auto-deps-update.html │ ├── tools-bower.html │ ├── tools-bundlers.html │ ├── tools-grunt.html │ ├── tools-gulp.html │ ├── tools-js-linters.html │ ├── tools-markdown-editor.html │ ├── tools-release-workflow.html │ ├── tools-semantic-release.html │ ├── tools-yeoman.html │ ├── ux-tools-and-links.html │ ├── vim-memo.html │ └── visual-studio-code.html └── web │ ├── REST │ ├── open-api-initiative.html │ ├── rest-api-return-http-code.html │ ├── rest-best-practices.html │ ├── rest-design-tool-RAML.html │ ├── rest-design-tool-swagger-io.html │ └── rest-naming-convention-links.html │ ├── RFC │ ├── RFC-http.html │ └── RFC-overview.html │ ├── SEO.html │ ├── browsers │ ├── browsers-how-they-init-web-page.html │ ├── browsers-overview.html │ └── browsers-perfs.html │ ├── cookies │ └── cookies.html │ ├── debug-chrome-android.html │ ├── gestion-monetisation-web.html │ ├── http-cache.html │ ├── index.html │ ├── polyfills-shivs-shims.html │ ├── regex.html │ ├── shadow-dom.html │ ├── web-comparatifs-frameworks.html │ ├── web-components.html │ ├── web-forms-good-practices.html │ ├── web-generic-good-practices.html │ ├── web-login-forms-good-practices.html │ ├── web-scraping.html │ ├── web-semantic-web.html │ ├── web-test-selenium.html │ ├── web-tracking.html │ └── webassembly.html ├── package-lock.json └── package.json /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | indent_style = space 5 | indent_size = 4 6 | charset = utf-8 7 | trim_trailing_whitespace = true 8 | insert_final_newline = true 9 | -------------------------------------------------------------------------------- /.github/workflows/main.yml: -------------------------------------------------------------------------------- 1 | name: CI 2 | 3 | on: [pull_request] 4 | 5 | jobs: 6 | build: 7 | 8 | runs-on: ubuntu-latest 9 | 10 | strategy: 11 | matrix: 12 | node-version: [16.x] 13 | 14 | steps: 15 | - uses: actions/checkout@v3 16 | - name: Use Node.js ${{ matrix.node-version }} 17 | uses: actions/setup-node@v3 18 | with: 19 | node-version: ${{ matrix.node-version }} 20 | - name: npm install, and test 21 | run: | 22 | npm ci 23 | npm test 24 | env: 25 | CI: true 26 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | .idea/ 3 | npm-debug.log 4 | *.tgz 5 | .cache/ 6 | -------------------------------------------------------------------------------- /.husky/pre-commit: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | . "$(dirname -- "$0")/_/husky.sh" 3 | 4 | npm test 5 | -------------------------------------------------------------------------------- /.husky/pre-push: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | . "$(dirname -- "$0")/_/husky.sh" 3 | 4 | npm test 5 | -------------------------------------------------------------------------------- /.markdownlint.json: -------------------------------------------------------------------------------- 1 | { 2 | "default": true, 3 | "MD003": { "style": "atx" }, 4 | "MD004": { "style": "dash" }, 5 | "MD007": { "indent": 2 }, 6 | "MD013": false, 7 | "MD024": { "siblings_only": true }, 8 | "MD025": { "level": 1, "front_matter_title": "^\\s*doc-title:" }, 9 | "MD026": { "punctuation": ".,;:!" }, 10 | "MD033": false, 11 | "MD035": { "style": "---" }, 12 | "MD044": { 13 | "names": ["Git", "GitHub", "GitLab", "Gitblit", "JavaScript", "SHA1"], 14 | "code_blocks": false 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /.npmrc: -------------------------------------------------------------------------------- 1 | scripts-prepend-node-path=true 2 | -------------------------------------------------------------------------------- /LICENCE.md: -------------------------------------------------------------------------------- 1 | ISC License 2 | 3 | Copyright (c) 2018, Marc Loupias 4 | 5 | Permission to use, copy, modify, and/or distribute this software for any 6 | purpose with or without fee is hereby granted, provided that the above 7 | copyright notice and this permission notice appear in all copies. 8 | 9 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 10 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 11 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 12 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 13 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 14 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 15 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 16 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # memo-dev 2 | 3 | [memo-dev available here](http://memo-dev.marc-loupias.fr) 4 | 5 | This website is a personal reminder for work. Aka : memo, knowledge base, cheatsheets, til, ... 6 | 7 | Sometimes in english, et parfois en français ... 8 | 9 | Writing things to learn, and uses this book as a knowledge index. 10 | 11 | Any comments welcome ... 12 | 13 | > Others similar repo linked [there](https://github.com/RichardLitt/meta-knowledge). 14 | 15 | ## how it works 16 | 17 | ### markdown files 18 | 19 | The markdown files belongs in the `content/` folder. 20 | 21 | They are linted with [DavidAnson/markdownlint](https://github.com/DavidAnson/markdownlint). 22 | 23 | ### website generation 24 | 25 | With [VuePress](https://vuepress.vuejs.org/). 26 | 27 | The generated files belongs in the `docs/` folder to follow GitHub pages conventions. 28 | 29 | ### host 30 | 31 | [GitHub pages](https://help.github.com/en/categories/github-pages-basics) with the `docs/` folder configuration is used to deploy. 32 | -------------------------------------------------------------------------------- /content/.vuepress/config.js: -------------------------------------------------------------------------------- 1 | const sidebarConfig = require('./sidebar-config'); 2 | 3 | module.exports = { 4 | title: 'marlou knowledge base', 5 | description: 'knowledge db tool', 6 | dest: 'docs', 7 | head: [ 8 | ['meta', { name: 'robots', content: 'none' }] 9 | ], 10 | themeConfig: { 11 | nav: [ 12 | { text: 'Data', link: '/data/' }, 13 | { text: 'DevOps', link: '/devops/' }, 14 | { text: 'Divers', link: '/divers/' }, 15 | { text: 'Network', link: '/network/' }, 16 | { text: 'Languages', link: '/languages/' }, 17 | { text: 'Platforms, frameworks and libs', link: '/platforms-frameworks-libs/' }, 18 | { text: 'Security', link: '/security/' }, 19 | { text: 'Software Engineering', link: '/software-engineering/' }, 20 | { text: 'Systems', link: '/systems/' }, 21 | { text: 'Tools', link: '/tools/' }, 22 | { text: 'Web', link: '/web/' }, 23 | { text: 'GitHub', link: 'https://github.com/MarcLoupias/memo-dev' } 24 | ], 25 | sidebar: { 26 | '/data/': sidebarConfig.getData(), 27 | '/devops/': sidebarConfig.getDevOps(), 28 | '/divers/': sidebarConfig.getDivers(), 29 | '/network/': sidebarConfig.getNetwork(), 30 | '/languages/': sidebarConfig.getLanguages(), 31 | '/platforms-frameworks-libs/': sidebarConfig.getPlatformsFrameworksLibs(), 32 | '/security/': sidebarConfig.getSecurity(), 33 | '/software-engineering/': sidebarConfig.getSoftwareEngineering(), 34 | '/systems/': sidebarConfig.getSystems(), 35 | '/tools/': sidebarConfig.getTools(), 36 | '/web/': sidebarConfig.getWeb() 37 | } 38 | }, 39 | markdown: { 40 | lineNumbers: true 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /content/.vuepress/public/images/devops/devops-pipeline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MarcLoupias/memo-dev/a68f789297fface1284cd2e506557db85af5ff3b/content/.vuepress/public/images/devops/devops-pipeline.png -------------------------------------------------------------------------------- /content/.vuepress/public/images/devops/devops.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MarcLoupias/memo-dev/a68f789297fface1284cd2e506557db85af5ff3b/content/.vuepress/public/images/devops/devops.jpg -------------------------------------------------------------------------------- /content/.vuepress/public/images/js/ecmascript-history.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MarcLoupias/memo-dev/a68f789297fface1284cd2e506557db85af5ff3b/content/.vuepress/public/images/js/ecmascript-history.png -------------------------------------------------------------------------------- /content/.vuepress/public/images/js/js-ages.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MarcLoupias/memo-dev/a68f789297fface1284cd2e506557db85af5ff3b/content/.vuepress/public/images/js/js-ages.jpeg -------------------------------------------------------------------------------- /content/.vuepress/public/images/software-engineering/architecture/CleanArchitecture.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MarcLoupias/memo-dev/a68f789297fface1284cd2e506557db85af5ff3b/content/.vuepress/public/images/software-engineering/architecture/CleanArchitecture.jpg -------------------------------------------------------------------------------- /content/.vuepress/public/images/software-engineering/architecture/archi_hexa_00.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MarcLoupias/memo-dev/a68f789297fface1284cd2e506557db85af5ff3b/content/.vuepress/public/images/software-engineering/architecture/archi_hexa_00.png -------------------------------------------------------------------------------- /content/.vuepress/public/images/software-engineering/architecture/archi_hexa_01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MarcLoupias/memo-dev/a68f789297fface1284cd2e506557db85af5ff3b/content/.vuepress/public/images/software-engineering/architecture/archi_hexa_01.png -------------------------------------------------------------------------------- /content/.vuepress/public/images/software-engineering/architecture/archi_hexa_02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MarcLoupias/memo-dev/a68f789297fface1284cd2e506557db85af5ff3b/content/.vuepress/public/images/software-engineering/architecture/archi_hexa_02.png -------------------------------------------------------------------------------- /content/.vuepress/public/images/software-engineering/architecture/archi_hexa_04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MarcLoupias/memo-dev/a68f789297fface1284cd2e506557db85af5ff3b/content/.vuepress/public/images/software-engineering/architecture/archi_hexa_04.png -------------------------------------------------------------------------------- /content/.vuepress/public/images/software-engineering/architecture/archi_hexa_05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MarcLoupias/memo-dev/a68f789297fface1284cd2e506557db85af5ff3b/content/.vuepress/public/images/software-engineering/architecture/archi_hexa_05.png -------------------------------------------------------------------------------- /content/.vuepress/public/images/software-engineering/architecture/archi_hexa_06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MarcLoupias/memo-dev/a68f789297fface1284cd2e506557db85af5ff3b/content/.vuepress/public/images/software-engineering/architecture/archi_hexa_06.png -------------------------------------------------------------------------------- /content/.vuepress/public/images/software-engineering/architecture/archi_hexa_11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MarcLoupias/memo-dev/a68f789297fface1284cd2e506557db85af5ff3b/content/.vuepress/public/images/software-engineering/architecture/archi_hexa_11.png -------------------------------------------------------------------------------- /content/.vuepress/public/images/software-engineering/architecture/archi_hexa_12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MarcLoupias/memo-dev/a68f789297fface1284cd2e506557db85af5ff3b/content/.vuepress/public/images/software-engineering/architecture/archi_hexa_12.png -------------------------------------------------------------------------------- /content/.vuepress/public/images/software-engineering/architecture/ports-and-adapters.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MarcLoupias/memo-dev/a68f789297fface1284cd2e506557db85af5ff3b/content/.vuepress/public/images/software-engineering/architecture/ports-and-adapters.png -------------------------------------------------------------------------------- /content/.vuepress/public/images/software-engineering/architecture/real-life-clean-architecture.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MarcLoupias/memo-dev/a68f789297fface1284cd2e506557db85af5ff3b/content/.vuepress/public/images/software-engineering/architecture/real-life-clean-architecture.jpg -------------------------------------------------------------------------------- /content/.vuepress/public/images/ts-typescript-overview-compiletime-vs-runtime.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MarcLoupias/memo-dev/a68f789297fface1284cd2e506557db85af5ff3b/content/.vuepress/public/images/ts-typescript-overview-compiletime-vs-runtime.png -------------------------------------------------------------------------------- /content/.vuepress/sidebar-config/data.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | function getData() { 4 | return [ 5 | { 6 | title: 'Data basics', 7 | collapsable: false, 8 | sidebarDepth: 2, 9 | children: [ 10 | 'data-basics' 11 | ] 12 | }, 13 | { 14 | title: 'Files formats', 15 | collapsable: false, 16 | sidebarDepth: 2, 17 | children: [ 18 | 'files-formats/asciidoc-infos', 19 | 'files-formats/json', 20 | 'files-formats/markdown-from-gitlab', 21 | 'files-formats/markdown-infos', 22 | 'files-formats/xml', 23 | 'files-formats/yaml', 24 | ] 25 | } 26 | ]; 27 | } 28 | 29 | module.exports = getData; 30 | -------------------------------------------------------------------------------- /content/.vuepress/sidebar-config/devops.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | function getDevOps() { 4 | return [ 5 | { 6 | title: 'DevOps', 7 | collapsable: false, 8 | sidebarDepth: 2, 9 | children: [ 10 | 'devops-overview', 11 | 'devops-metrics', 12 | 'devops-accelerate', 13 | 'devops-observability', 14 | 'docker', 15 | 'github-actions', 16 | 'kubernetes' 17 | ] 18 | }, 19 | { 20 | title: 'PaaS - Heroku', 21 | collapsable: false, 22 | sidebarDepth: 2, 23 | children: [ 24 | 'paas/heroku/heroku-helper', 25 | 'paas/heroku/heroku-angularjs', 26 | 'paas/heroku/heroku-sendgrid-mailer' 27 | ] 28 | } 29 | ]; 30 | } 31 | 32 | module.exports = getDevOps; 33 | -------------------------------------------------------------------------------- /content/.vuepress/sidebar-config/divers.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | function getDivers() { 4 | return [ 5 | { 6 | title: 'Divers', 7 | collapsable: false, 8 | sidebarDepth: 2, 9 | children: [ 10 | 'divers-articles', 11 | 'divers-dev-ethics', 12 | 'divers-outil-veille-techno', 13 | 'divers-pdf', 14 | 'divers-videos' 15 | ] 16 | }, 17 | { 18 | title: 'Freebox', 19 | collapsable: false, 20 | sidebarDepth: 2, 21 | children: [ 22 | 'freebox/freebox-videos' 23 | ] 24 | }, 25 | { 26 | title: 'IA', 27 | collapsable: false, 28 | sidebarDepth: 2, 29 | children: [ 30 | 'ia/ia' 31 | ] 32 | }, 33 | { 34 | title: 'Licences', 35 | collapsable: false, 36 | sidebarDepth: 2, 37 | children: [ 38 | 'licences/licences-articles-opensource', 39 | 'licences/licences-choose-a-licence', 40 | 'licences/licences-WTFPL' 41 | ] 42 | }, 43 | { 44 | title: 'Raspberry', 45 | collapsable: false, 46 | sidebarDepth: 2, 47 | children: [ 48 | 'raspberry/raspberry-overview' 49 | ] 50 | } 51 | ]; 52 | } 53 | 54 | module.exports = getDivers; 55 | -------------------------------------------------------------------------------- /content/.vuepress/sidebar-config/index.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const getData = require('./data'); 4 | const getDevOps = require('./devops'); 5 | const getDivers = require('./divers'); 6 | const getNetwork = require('./network'); 7 | const getLanguages = require('./languages'); 8 | const getPlatformsFrameworksLibs = require('./platforms-frameworks-libs'); 9 | const getSecurity = require('./security'); 10 | const getSoftwareEngineering = require('./software-engineering'); 11 | const getSystems = require('./systems'); 12 | const getTools = require('./tools'); 13 | const getWeb = require('./web') 14 | 15 | module.exports = { 16 | getData, 17 | getDevOps, 18 | getDivers, 19 | getNetwork, 20 | getLanguages, 21 | getPlatformsFrameworksLibs, 22 | getSecurity, 23 | getSoftwareEngineering, 24 | getSystems, 25 | getTools, 26 | getWeb 27 | }; 28 | -------------------------------------------------------------------------------- /content/.vuepress/sidebar-config/network.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | function getNetwork() { 4 | return [ 5 | { 6 | title: 'Protocols', 7 | collapsable: false, 8 | sidebarDepth: 2, 9 | children: [ 10 | 'protocols/http', 11 | 'protocols/TCP' 12 | ] 13 | }, 14 | { 15 | title: 'Network', 16 | collapsable: false, 17 | sidebarDepth: 2, 18 | children: [ 19 | 'internet' 20 | ] 21 | } 22 | ]; 23 | } 24 | 25 | module.exports = getNetwork; 26 | -------------------------------------------------------------------------------- /content/.vuepress/sidebar-config/security.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | function getSecurity() { 4 | return [ 5 | { 6 | title: 'Security', 7 | collapsable: false, 8 | sidebarDepth: 2, 9 | children: [ 10 | 'security-basics', 11 | 'security-webapp', 12 | 'authentification', 13 | 'blockchains', 14 | 'chiffrement', 15 | 'PKI-X509' 16 | ] 17 | } 18 | ]; 19 | } 20 | 21 | module.exports = getSecurity; 22 | -------------------------------------------------------------------------------- /content/.vuepress/sidebar-config/software-engineering.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | function getSoftwareEngineering() { 4 | return [ 5 | { 6 | title: 'Software Engineering', 7 | collapsable: false, 8 | sidebarDepth: 2, 9 | children: [ 10 | 'genie-logiciel', 11 | 'architecture', 12 | 'archi-micro-services', 13 | 'brooks-no-silver-bullet-notes', 14 | 'code-complexity', 15 | 'code-reviews', 16 | 'compilateur', 17 | 'composition-over-inheritance', 18 | 'ddd', 19 | 'dette-technique-et-TTM', 20 | 'paradigms', 21 | 'reeves-what-is-software-design-notes', 22 | 'scrum-memo', 23 | 'semver', 24 | 'stamps', 25 | 'testing', 26 | 'typings' 27 | ] 28 | } 29 | ]; 30 | } 31 | 32 | module.exports = getSoftwareEngineering; 33 | -------------------------------------------------------------------------------- /content/.vuepress/sidebar-config/systems.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | function getSystems() { 4 | return [ 5 | { 6 | title: 'Systems', 7 | collapsable: false, 8 | sidebarDepth: 2, 9 | children: [ 10 | 'filesystem', 11 | 'process-signals' 12 | ] 13 | }, 14 | { 15 | title: 'Linux', 16 | collapsable: false, 17 | sidebarDepth: 2, 18 | children: [ 19 | 'linux/bash/bash-notes-whiptail', 20 | 'linux/apt-cheatsheet', 21 | 'linux/linux-fhs-description', 22 | 'linux/linux-fhs-droits', 23 | 'linux/linux-logs', 24 | 'linux/linux-manipulation-fichiers', 25 | 'linux/linux-manipulation-process', 26 | 'linux/ubuntu-cheatsheet', 27 | 'linux/ubuntu-create-usb-boot', 28 | 'linux/ubuntu-nvidia', 29 | 'linux/ubuntu-pdf' 30 | ] 31 | }, 32 | { 33 | title: 'Windows', 34 | collapsable: false, 35 | sidebarDepth: 2, 36 | children: [ 37 | 'windows/windows-checksum', 38 | 'windows/windows-ubuntu-on-windows10' 39 | ] 40 | } 41 | ]; 42 | } 43 | 44 | module.exports = getSystems; 45 | -------------------------------------------------------------------------------- /content/.vuepress/styles/index.styl: -------------------------------------------------------------------------------- 1 | .red { 2 | color #b29400; 3 | font-weight bold; 4 | } 5 | -------------------------------------------------------------------------------- /content/.vuepress/styles/palette.styl: -------------------------------------------------------------------------------- 1 | // colors 2 | $accentColor = #6100b3 3 | $textColor = #2c3e50 4 | $borderColor = #eaecef 5 | $codeBgColor = #282c34 6 | $arrowBgColor = #ccc 7 | $badgeTipColor = #42b983 8 | $badgeWarningColor = darken(#ffe564, 35%) 9 | $badgeErrorColor = #DA5961 10 | 11 | // layout 12 | $navbarHeight = 3.6rem 13 | $sidebarWidth = 20rem 14 | $contentWidth = 740px 15 | $homePageWidth = 960px 16 | 17 | // responsive breakpoints 18 | $MQNarrow = 959px 19 | $MQMobile = 719px 20 | $MQMobileNarrow = 419px 21 | -------------------------------------------------------------------------------- /content/data/README.md: -------------------------------------------------------------------------------- 1 | # Data 2 | -------------------------------------------------------------------------------- /content/data/files-formats/asciidoc-infos.md: -------------------------------------------------------------------------------- 1 | # asciidoc infos 2 | 3 | [Why You Shouldn’t Use “Markdown” for Documentation](http://ericholscher.com/blog/2016/mar/15/dont-use-markdown-for-technical-docs/) 4 | 5 | [What is AsciiDoc? Why do we need it?](http://asciidoctor.org/docs/what-is-asciidoc/) 6 | 7 | > AsciiDoc is two things: 8 | > 9 | > 1. A mature[1], plain-text writing format for authoring notes, articles, documentation, books, ebooks, web pages, 10 | > slide decks, blog posts, man pages and more. 11 | > 2. A text processor and toolchain for translating AsciiDoc documents into various formats (called backends), 12 | > including HTML, DocBook, PDF and ePub[2]. 13 | > 14 | > [1] AsciiDoc is over a decade old. It was first introduced in 2002. 15 | > 16 | > [2] There are two implementations of the AsciiDoc processor. The original processor, named AsciiDoc, is written in 17 | > Python. A more modern implementation, named Asciidoctor, is written in Ruby. 18 | 19 | [Asciidoctor : `github.com`](https://github.com/asciidoctor) 20 | 21 | ## videos 22 | 23 | [Comment Asciidoctor peut vous aider pour votre doc (Jérémie Bresson) : Devoxx2016](https://www.youtube.com/watch?v=Uyx7AVg2dQw&list=PLTbQvx84FrAS5clN9i8_LFUQxcMY7qXAO&index=139) 24 | -------------------------------------------------------------------------------- /content/data/files-formats/json.md: -------------------------------------------------------------------------------- 1 | # JSON 2 | 3 | JavaScript Object Notation 4 | 5 | Auteur : [Douglas Crockford](https://fr.wikipedia.org/wiki/Douglas_Crockford) 6 | 7 | [`json.org`](http://json.org/) 8 | 9 | [RFC 7159 : The JavaScript Object Notation (JSON) Data Interchange Format](https://tools.ietf.org/html/rfc7159) 10 | 11 | Exemple : 12 | 13 | ```json 14 | { 15 | "menu": { 16 | "id": "file", 17 | "value": "File", 18 | "popup": { 19 | "menuitem": [ 20 | { "value": "New", "onclick": "CreateNewDoc()" }, 21 | { "value": "Open", "onclick": "OpenDoc()" }, 22 | { "value": "Close", "onclick": "CloseDoc()" } 23 | ] 24 | } 25 | } 26 | } 27 | ``` 28 | -------------------------------------------------------------------------------- /content/data/files-formats/xml.md: -------------------------------------------------------------------------------- 1 | # XML 2 | 3 | Extensible Markup Language 4 | 5 | Exemple : 6 | 7 | ```xml 8 | 9 | 10 | 11 | 12 | 13 | 14 | Informatique sans bon sens n’est que ruine de l'âme et 15 | perte de temps. 16 | 17 | 18 | 19 | 20 | 21 | 22 | ``` 23 | -------------------------------------------------------------------------------- /content/data/files-formats/yaml.md: -------------------------------------------------------------------------------- 1 | # YAML 2 | 3 | ## descriptions 4 | 5 | Est un format de représentation de données par sérialisation Unicode 6 | 7 | Auteur : Clark Evans 8 | 9 | [`yaml.org`](http://www.yaml.org/) 10 | 11 | Exemple : 12 | 13 | ```yaml 14 | 15 | --- 16 | receipt: Oz-Ware Purchase Invoice 17 | date: 2012-08-06 18 | customer: 19 | given: Dorothy 20 | family: Gale 21 | 22 | items: 23 | - part_no: A4786 24 | descrip: Water Bucket (Filled) 25 | price: 1.47 26 | quantity: 4 27 | 28 | - part_no: E1628 29 | descrip: High Heeled "Ruby" Slippers 30 | size: 8 31 | price: 100.27 32 | quantity: 1 33 | 34 | bill-to: &id001 35 | street: | 36 | 123 Tornado Alley 37 | Suite 16 38 | city: East Centerville 39 | state: KS 40 | 41 | ship-to: *id001 42 | 43 | specialDelivery: > 44 | Follow the Yellow Brick 45 | Road to the Emerald City. 46 | Pay no attention to the 47 | man behind the curtain. 48 | ... 49 | 50 | ``` 51 | 52 | ## specs 53 | 54 | [specs at `yaml.org`](https://yaml.org/) : 55 | 56 | - [YAML 1.2](https://yaml.org/spec/1.2/spec.html) 57 | - [YAML 1.1](https://yaml.org/spec/1.1/) 58 | - [YAML 1.0](https://yaml.org/spec/1.0/) 59 | 60 | [The YAML Project - `github.com`](https://github.com/yaml) 61 | 62 | > repository list with [yaml/yaml - `github.com`](https://github.com/yaml/yaml) to discuss issues 63 | 64 | ## tools 65 | 66 | ### js-yaml (yaml to js litteral) 67 | 68 | [js-yaml - `github.com/nodeca`](https://github.com/nodeca/js-yaml) 69 | 70 | [js-yaml - online webtool](http://nodeca.github.io/js-yaml/) 71 | 72 | > to test yaml to js conversion 73 | -------------------------------------------------------------------------------- /content/devops/README.md: -------------------------------------------------------------------------------- 1 | # DevOps 2 | 3 | ![DevOps Pipeline](/images/devops/devops.jpg) 4 | -------------------------------------------------------------------------------- /content/devops/devops-metrics.md: -------------------------------------------------------------------------------- 1 | # devops - metrics 2 | 3 | The DevOps movment have defined several metrics to evaluate an organization DevOps capabilities. 4 | 5 | ## The Software delivery performance metrics 6 | 7 | ### deploy frequency 8 | 9 | Consider this metric has "batch size". The more frequently we deploy, the smaller the size of the batch. 10 | 11 | Deploy means goin into production or to an app store. 12 | 13 | ### delivery lead time 14 | 15 | The time it takes to go from code committed to code successfully running in production. 16 | 17 | Highers performers deploy in production in less than an hour. Lower performers deploy monthly or less. 18 | 19 | [Continuous Delivery - Jez Humble - 2012](https://www.youtube.com/watch?v=skLJuksCRTw) 20 | 21 | Jez Humble definition is : 22 | 23 | > "How long would it take your organization to deploy a change that involved just one single line of code ? 24 | > Do you do this on a repeatable, reliable basis ?" 25 | 26 | ### Mean Time To Recover 27 | 28 | Time needed to restore the service of the application when an incident occurs. 29 | 30 | ### Mean Time To Detection 31 | 32 | MTTD is a key performance indicator in incident management and indicates the average amount of time required for an organization to discover an incident. 33 | 34 | ### change fail rate 35 | 36 | The percentage of changes to production leading to a failure. 37 | 38 | ### Real User Monitoring 39 | 40 | Understand application performance from the perspective of an actual user. 41 | -------------------------------------------------------------------------------- /content/devops/kubernetes.md: -------------------------------------------------------------------------------- 1 | # devops - kubernetes 2 | 3 | Plateforme d'orchestration de containers. 4 | 5 | [`kubernetes.io`](https://kubernetes.io/) 6 | 7 | [`github.com/kubernetes`](https://github.com/kubernetes) 8 | 9 | > Kubernetes is an open-source system for automating deployment, scaling, and management of containerized applications. 10 | 11 | Abbreviated `K8s`. 12 | 13 | First [release v0.2](https://github.com/kubernetes/kubernetes/releases/tag/v0.2) september 2014. 14 | 15 | [Kubernetes - `fr.wikipedia.org`](https://fr.wikipedia.org/wiki/Kubernetes) 16 | 17 | [Kubernetes in 5 mins - VMware Cloud-Native](https://www.youtube.com/watch?v=PH-2FfFD2PU) 18 | -------------------------------------------------------------------------------- /content/devops/paas/heroku/heroku-sendgrid-mailer.md: -------------------------------------------------------------------------------- 1 | # heroku - sendgrid mailer 2 | 3 | to allow app to send mails 4 | 5 | [sendgrid#starter](https://addons.heroku.com/sendgrid#starter) 6 | 7 | [sendgrid#java](https://devcenter.heroku.com/articles/sendgrid#java) 8 | 9 | 6K emails/month for free add-on 10 | -------------------------------------------------------------------------------- /content/divers/README.md: -------------------------------------------------------------------------------- 1 | # Divers 2 | -------------------------------------------------------------------------------- /content/divers/divers-pdf.md: -------------------------------------------------------------------------------- 1 | # divers - pdf 2 | 3 | ## reduce pdf size 4 | 5 | [How can I reduce the file size of a scanned PDF file? - askubuntu.com](https://askubuntu.com/questions/113544/how-can-i-reduce-the-file-size-of-a-scanned-pdf-file) 6 | 7 | ```bash 8 | gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dNOPAUSE -dQUIET -dBATCH -sOutputFile=output.pdf input.pdf 9 | ``` 10 | 11 | with `-dPDFSETTINGS=/ebook` works well, a 15mo 300dpi file is reduced to a 3mo 150dpi file. 12 | 13 | ## merge several pdf in one 14 | 15 | [How to merge several PDF files? - askubuntu.com](https://askubuntu.com/questions/2799/how-to-merge-several-pdf-files) 16 | 17 | ```bash 18 | gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -dAutoRotatePages=/None -sOutputFile=finished.pdf file1.pdf file2.pdf 19 | ``` 20 | 21 | ```bash 22 | gs starts the Ghostscript program. 23 | -dBATCH once Ghostscript processes the PDF files, it should exit. 24 | If you don't include this option, Ghostscript will just keep running. 25 | -dNOPAUSE forces Ghostscript to process each page without pausing for user interaction. 26 | -q stops Ghostscript from displaying messages while it works 27 | -sDEVICE=pdfwrite 28 | tells Ghostscript to use its built-in PDF writer to process the files. 29 | -sOutputFile=finished.pdf 30 | tells Ghostscript to save the combined PDF file with the specified name. 31 | -dAutoRotatePages=/None 32 | Acrobat Distiller parameter AutoRotatePages controls the automatic orientation selection algorithm: For instance: -dAutoRotatePages=/None or /All or /PageByPage. 33 | ``` 34 | 35 | Your input files don't even need to be PDF files. You can also use PostScript or EPS files, or any mixture of the three. 36 | -------------------------------------------------------------------------------- /content/divers/divers-videos.md: -------------------------------------------------------------------------------- 1 | # divers - videos 2 | 3 | ## download videos from youtube 4 | 5 | [video cyborg](https://videocyborg.com/a) 6 | 7 | ## PiTiVi 8 | 9 | [www.pitivi.org](http://www.pitivi.org/) 10 | 11 | [PiTiVi manual](http://www.pitivi.org/manual/) 12 | 13 | [Ubuntu tutorial](https://doc.ubuntu-fr.org/pitivi) 14 | 15 | ## ffmpeg 16 | 17 | [https://ffmpeg.org/](https://ffmpeg.org/) 18 | 19 | ### convert `avi` to `mp4` 20 | 21 | ```bash 22 | ffmpeg -i input.avi -strict -2 output.mp4 23 | ``` 24 | -------------------------------------------------------------------------------- /content/divers/freebox/freebox-videos.md: -------------------------------------------------------------------------------- 1 | # freebox - videos 2 | 3 | - enregistrer via l'enregistreur normal 4 | - pour visionner avec VLC il faut avoir la vidéo en local 5 | - pour convertir en avi cf [lien forum ubuntu](http://forum.ubuntu-fr.org/viewtopic.php?id=406808) 6 | -------------------------------------------------------------------------------- /content/divers/licences/licences-WTFPL.md: -------------------------------------------------------------------------------- 1 | # licences - WTFPL (do What The Fuck you want to Public Licence) 2 | 3 | [www.wtfpl.net](http://www.wtfpl.net/) 4 | 5 | Pour une integration aux README.md de Git : 6 | 7 | [![WTFPL](http://www.wtfpl.net/wp-content/uploads/2012/12/wtfpl-badge-4.png)](http://wtfpl.net) 8 | -------------------------------------------------------------------------------- /content/divers/licences/licences-articles-opensource.md: -------------------------------------------------------------------------------- 1 | # licences - opensource 2 | 3 | - [open-source-everything : tom.preston-werner.com fondateur GitHub](http://tom.preston-werner.com/2011/11/22/open-source-everything.html) 4 | -------------------------------------------------------------------------------- /content/divers/licences/licences-choose-a-licence.md: -------------------------------------------------------------------------------- 1 | # licences - choose a licence 2 | 3 | [choosealicense.com](https://choosealicense.com/) 4 | 5 | [`github.com`](https://github.com/github/choosealicense.com) 6 | -------------------------------------------------------------------------------- /content/divers/raspberry/raspberry-overview.md: -------------------------------------------------------------------------------- 1 | # raspberry - overview 2 | 3 | ## links 4 | 5 | [www.raspberrypi.org](https://www.raspberrypi.org/) 6 | 7 | [FAQ - www.raspberrypi.org](https://www.raspberrypi.org/documentation/faqs/) 8 | 9 | ### models availables 10 | 11 | [www.raspberrypi.org](https://www.raspberrypi.org/products/) 12 | 13 | ## sellers 14 | 15 | [Starter Kit Officiel Pi 3 B+ - www.kubii.fr](https://www.kubii.fr/kits-raspberry-pi/2121-starter-kit-officiel-pi-3-b-kubii-3272496009998.html) 16 | 17 | ## raspbian 18 | 19 | [howtoraspberrypi.com](https://howtoraspberrypi.com/) 20 | 21 | [raspbian-france.fr](https://raspbian-france.fr/) 22 | 23 | [blogeclair.com](https://blogeclair.com/) 24 | 25 | ## usages 26 | 27 | ### GitLab 28 | 29 | [Transformer sa Raspberry Pi en serveur GitHub (like) avec GitLab - raspbian-france.fr - 20180903](https://raspbian-france.fr/raspberry-pi-serveur-github-gitlab/) 30 | 31 | ### Cozy Cloud 32 | 33 | [cozy.io](https://cozy.io/en/about/) 34 | 35 | > Cozy allow you to control your personal data (pictures, bank statements, bills, health reinbursements) in a secure and private space. 36 | > Welcome in your new digital home. 37 | 38 | [Installer Cozy sur Raspberry Pi 3 - forum.cozy.io](https://forum.cozy.io/t/installer-cozy-sur-raspberry-pi-3/3825/14) 39 | 40 | [Install Cozy on a Debian server](https://docs.cozy.io/en/tutorials/selfhost-debian/) 41 | -------------------------------------------------------------------------------- /content/languages/README.md: -------------------------------------------------------------------------------- 1 | # Programming Languages 2 | -------------------------------------------------------------------------------- /content/languages/SQL/ACID.md: -------------------------------------------------------------------------------- 1 | # ACID 2 | 3 | It is a set of properties for database transactions. 4 | 5 | ## **A**tomicity 6 | 7 | Atomicity requires that each transaction be "all or nothing": if one part of the transaction fails, then the entire transaction fails, and the database state is left unchanged. 8 | 9 | ## **C**onsistency 10 | 11 | The consistency property ensures that any transaction will bring the database from one valid state to another. 12 | 13 | ## **I**solation 14 | 15 | The isolation property ensures that the concurrent execution of transactions results in a system state that would be obtained if transactions were executed serially, i.e., one after the other. 16 | 17 | ## **D**urability 18 | 19 | The durability property ensures that once a transaction has been committed, it will remain so, even in the event of power loss, crashes, or errors. 20 | -------------------------------------------------------------------------------- /content/languages/SQL/postgre-setup.md: -------------------------------------------------------------------------------- 1 | # PostGre setup 2 | 3 | ## setup 4 | 5 | - [manuals](http://www.postgresql.org/docs/) 6 | - [the best one](https://help.ubuntu.com/community/PostgreSQL) 7 | 8 | ## Basic Server Setup 9 | 10 | To start off, we need to change the PostgreSQL postgres user password; we will not be able to access the server otherwise. As the “postgres” Linux user, we will execute the psql command. 11 | 12 | In a terminal, type: 13 | 14 | `sudo -u postgres psql postgres` 15 | 16 | Set a password for the "postgres" database role using the command: 17 | 18 | `\password postgres` 19 | 20 | and give your password when prompted. The password text will be hidden from the console for security purposes. 21 | 22 | Type Control+D to exit the posgreSQL prompt. 23 | 24 | ## misc 25 | 26 | using User for a class with JPA need specific config coz user is a reserved words for postgreSQL 27 | 28 | - [postgres-table-column-name-restrictions](http://stackoverflow.com/questions/10891368/postgres-table-column-name-restrictions) 29 | - [unable-to-use-table-named-user-in-postgresql-hibernate](http://stackoverflow.com/questions/4350874/unable-to-use-table-named-user-in-postgresql-hibernate) 30 | -------------------------------------------------------------------------------- /content/languages/css/css-block-element-modifier.md: -------------------------------------------------------------------------------- 1 | # css - BEM 2 | 3 | - [blog kaelig.fr : fifty shades of BEM](http://blog.kaelig.fr/post/48196348743/fifty-shades-of-bem) 4 | - [bouquin du même auteur](http://www.css-maintenables.fr/) 5 | -------------------------------------------------------------------------------- /content/languages/css/css-conventions.nommage.html.css.md: -------------------------------------------------------------------------------- 1 | # css - conventions 2 | 3 | - [Les conventions de nommage HTML/CSS de Google](https://google.github.io/styleguide/htmlcssguide.xml) 4 | -------------------------------------------------------------------------------- /content/languages/css/css-preprocessors.md: -------------------------------------------------------------------------------- 1 | # CSS Preprocessors 2 | 3 | ## Articles 4 | 5 | [Sass vs. Less](https://learn.onemonth.com/sass-vs-less-e9584c90d847) 6 | 7 | [Préprocesseurs CSS : LESS vs Sass](http://blog.soat.fr/2014/07/preprocesseurs-css-less-vs-sass/) 8 | 9 | ## LESS 10 | 11 | ## SASS 12 | -------------------------------------------------------------------------------- /content/languages/java/java-ant-tips.md: -------------------------------------------------------------------------------- 1 | # java - ant 2 | 3 | gestion des variables d'environnement : 4 | 5 | [stackoverflow - env-java-home-not-found-ant](http://stackoverflow.com/questions/17571595/env-java-home-not-found-ant) 6 | 7 | [running junit tests](https://today.java.net/pub/a/today/2003/09/12/individual-test-cases.html) 8 | -------------------------------------------------------------------------------- /content/languages/java/java-jackson-cyclic-relationship.md: -------------------------------------------------------------------------------- 1 | # java - jackson 2 | 3 | [wiki.fasterxml.com](http://wiki.fasterxml.com/JacksonFeatureBiDirReferences) 4 | 5 | [JACKSON-235](http://jira.codehaus.org/browse/JACKSON-235?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel) 6 | 7 | [stackoverflow - infinite-recursion-with-jackson-json-and-hibernate-jpa-issue](http://stackoverflow.com/questions/3325387/infinite-recursion-with-jackson-json-and-hibernate-jpa-issue) 8 | -------------------------------------------------------------------------------- /content/languages/java/java-jpa-infos.md: -------------------------------------------------------------------------------- 1 | # java - jpa 2 | 3 | - [Java_Persistence_API](http://fr.wikipedia.org/wiki/Java_Persistence_API) 4 | - [docs.oracle.com](http://docs.oracle.com/javaee/6/api/javax/persistence/package-summary.html) 5 | - [openjpa - apache](http://ci.apache.org/projects/openjpa/2.2.x/docbook/manual.html) 6 | - [Java_Persistence](http://en.wikibooks.org/wiki/Java_Persistence) 7 | - [www.objectdb.com](http://www.objectdb.com) 8 | 9 | ## JPQL 10 | 11 | - [Java_Persistence_Query_Language](http://fr.wikipedia.org/wiki/Java_Persistence_Query_Language) 12 | 13 | ## pagination 14 | 15 | - [criteria - www.objectdb.com](http://www.objectdb.com/java/jpa/query/criteria) 16 | - [Querying - en.wikibooks.org](http://en.wikibooks.org/wiki/Java_Persistence/Querying#Pagination.2C_Max.2FFirst_Results) 17 | - [stackoverflow - jpa-paging-with-numbers-and-next-previous](http://stackoverflow.com/questions/10144487/jpa-paging-with-numbers-and-next-previous) 18 | 19 | REST request args 20 | 21 | ```text 22 | GET http://api.example.com/resources?offset=0&limit=25 23 | OR 24 | GET /api/v1/tickets?per_page=15&page=2 25 | ``` 26 | 27 | JPA request 28 | 29 | ```java 30 | List results = 31 | query.setFirstResult(page * items-per-page) 32 | .setMaxResults(items-per-page) 33 | .getResultList(); 34 | ``` 35 | -------------------------------------------------------------------------------- /content/languages/java/java-security-links.md: -------------------------------------------------------------------------------- 1 | # java security links 2 | 3 | ## Password Based Encryption support 4 | 5 | Specifications : 6 | Defined in [RFC 2898](http://www.ietf.org/rfc/rfc2898.txt) from RSA Labs (PKCS#5) 7 | 8 | [See this example](http://stackoverflow.com/questions/992019/java-256-bit-aes-password-based-encryption) 9 | 10 | Password security management : 11 | 12 | NEVER save a clear password anyware. We save the password hash salted via PBE mechanism. 13 | 14 | Cf [this thread by an expert](http://www.developpez.net/forums/d925885/java/general-java/apis/securite/utiliser-lalgorithme-pbe-aes-sha/) 15 | 16 | [PBE explanation](http://en.wikipedia.org/wiki/PBKDF2) 17 | 18 | [Oracle Doc](http://docs.oracle.com/javase/6/docs/technotes/guides/security/crypto/CryptoSpec.html#PBEEx) 19 | 20 | Good practices : 21 | 22 | - [password-storage-best-practices](http://www.unidevtech.com/index.php/2011/08/password-storage-best-practices/) 23 | - [password-management-best-practices](http://hitachi-id.com/password-manager/docs/password-management-best-practices.html) 24 | 25 | ## Message digest (Hash) support 26 | 27 | [Check this](http://docs.oracle.com/javase/6/docs/technotes/guides/security/crypto/CryptoSpec.html#MessageDigest) 28 | 29 | ## JRE config on deployment 30 | 31 | Don't forget that key length usage is restricted by default on EVERY JDK by default 32 | 33 | - [http://www.oracle.com/technetwork/java/javase/downloads/jce-6-download-429243.html](jce-6-download) 34 | - [www.bouncycastle.org - FAQ](http://www.bouncycastle.org/wiki/display/JA1/Frequently+Asked+Questions) 35 | - [stackoverflow - how-do-i-generate-a-salt-in-java-for-salted-hash](http://stackoverflow.com/questions/18142745/how-do-i-generate-a-salt-in-java-for-salted-hash) 36 | 37 | [NIST recommendations](http://csrc.nist.gov/publications/nistpubs/800-132/nist-sp800-132.pdf) 38 | -------------------------------------------------------------------------------- /content/languages/js/ES6-overview.md: -------------------------------------------------------------------------------- 1 | # ES6 - overview 2 | 3 | [ES6 - New features overview & comparison](http://es6-features.org/#DefaultWildcard) 4 | 5 | [Exploring ES6 by Dr. Axel Rauschmayer](http://exploringjs.com/es6/index.html#toc_ch_modules) (**+++**) 6 | -------------------------------------------------------------------------------- /content/languages/js/ES6-promises.md: -------------------------------------------------------------------------------- 1 | # ES6 - Promises 2 | 3 | ## spec 4 | 5 | [Promises/A+ - promisesaplus.com](https://promisesaplus.com/) 6 | 7 | Releases [on GitHub repo](https://github.com/promises-aplus/promises-spec/releases) : 8 | 9 | - 20121207 : `1.0.0` 10 | - 20130929 : `1.1.0` 11 | - 20140506 : `1.2.0` 12 | 13 | ## impl 14 | 15 | [Promise on MDN](https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise) 16 | 17 | [bluebird](https://github.com/petkaantonov/bluebird) 18 | 19 | [AngularJS `$q` service](https://docs.angularjs.org/api/ng/service/$q) 20 | 21 | [implementation list on the promisesaplus.com website](https://promisesaplus.com/implementations) 22 | 23 | ## articles 24 | 25 | [es6 features](http://es6-features.org/#PromiseUsage) 26 | 27 | [Promises for asynchronous programming - exploringjs.com/es6](http://exploringjs.com/es6/ch_promises.html#sec_overview-promises) 28 | 29 | [Promises chaining - `javascript.info`](https://javascript.info/promise-chaining) 30 | 31 | [Promise error handling in-depth - 20170924](https://codeburst.io/promise-error-handling-in-depth-90b0965149c0) 32 | 33 | ## online tools 34 | 35 | [Promise visualization playground for the adventurous](https://bevacqua.github.io/promisees/#) 36 | 37 | ## questions 38 | 39 | [Do never resolved promises cause memory leak? - stackoverflow.com - 20160129](https://stackoverflow.com/questions/20068467/do-never-resolved-promises-cause-memory-leak?utm_medium=organic&utm_source=google_rich_qa&utm_campaign=google_rich_qa) 40 | 41 | [JavaScript's Promise Leaks Memory - alexn.org - 20171011](https://alexn.org/blog/2017/10/11/javascript-promise-leaks-memory.html) 42 | -------------------------------------------------------------------------------- /content/languages/js/ES6-proxies.md: -------------------------------------------------------------------------------- 1 | # ES6 proxies 2 | 3 | For errors when accessing an inexistant property : 4 | 5 | [creating-defensive-objects-with-es6-proxies : www.nczonline.net](http://www.nczonline.net/blog/2014/04/22/creating-defensive-objects-with-es6-proxies/) 6 | -------------------------------------------------------------------------------- /content/languages/js/js-browser-geolocalisation.md: -------------------------------------------------------------------------------- 1 | # browser geoloc 2 | 3 | [Tuto alsa creation](http://www.alsacreations.com/tuto/lire/926-geolocalisation-geolocation-html5.html) 4 | 5 | [MDN - API Geoloc](https://developer.mozilla.org/en-US/docs/Web/API/Geolocation) 6 | -------------------------------------------------------------------------------- /content/languages/js/js-database-memo.md: -------------------------------------------------------------------------------- 1 | # database 2 | 3 | ## divers 4 | 5 | - [sur le storage front en général](http://www.html5rocks.com/fr/features/storage) 6 | - [quota mobile storage](http://www.html5rocks.com/en/tutorials/offline/quota-research/#toc-introduction) 7 | - [WebSQL or IndexedDB](https://narangrajeev.wordpress.com/2012/01/03/websql-or-indexeddb/) 8 | 9 | ## normes 10 | 11 | - [WebSQL](https://fr.wikipedia.org/wiki/Web_SQL_Database) ([deprecated par le w3c](https://www.w3.org/TR/webdatabase/)) 12 | - [IndexedDB](https://fr.wikipedia.org/wiki/Indexed_Database_API) 13 | - [IndexedDB : developer.mozilla.org](https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API) 14 | - [IndexedDB : Basic concepts](https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API/Basic_Concepts_Behind_IndexedDB) 15 | - [IndexedDB : Can I Use it ?](http://caniuse.com/#feat=indexeddb) 16 | -------------------------------------------------------------------------------- /content/languages/js/js-date.md: -------------------------------------------------------------------------------- 1 | # dates in JavaScript 2 | 3 | ## specs 4 | 5 | [RFC2822 Internet Message Format : 3.3. Date and Time Specification](https://tools.ietf.org/html/rfc2822#page-14) 6 | 7 | [Date : developer.mozilla.org](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) 8 | 9 | [www.ecma-international.org : Date Time String Format](http://www.ecma-international.org/ecma-262/5.1/#sec-15.9.1.15) 10 | 11 | ## libs 12 | 13 | - [momentjs](http://momentjs.com/) 14 | - [dayjs](https://day.js.org/) 15 | 16 | ## common issues 17 | 18 | [A Bad Date With Internet Explorer 11: Trouble With New Unicode Characters in JavaScript Date Strings](https://www.csgpro.com/blog/2016/08/a-bad-date-with-internet-explorer-11-trouble-with-new-unicode-characters-in-javascript-date-strings) 19 | -------------------------------------------------------------------------------- /content/languages/js/js-doc.md: -------------------------------------------------------------------------------- 1 | # jsdoc 2 | 3 | - [JavaScript doc : developer.mozilla.org](https://developer.mozilla.org/fr/docs/Web/JavaScript) 4 | - [Tutorials : www.w3schools.com](http://www.w3schools.com/js/) 5 | - [API](https://developer.mozilla.org/en-US/docs/Web/API) 6 | -------------------------------------------------------------------------------- /content/languages/js/js-double-negation.md: -------------------------------------------------------------------------------- 1 | # double negation `!!` 2 | 3 | [Double negation in JavaScript what is the purpose : stackoverflow.com](http://stackoverflow.com/questions/10467475/double-negation-in-javascript-what-is-the-purpose) 4 | 5 | It casts to boolean. The first `!` negates it once, converting values like so: 6 | 7 | - `undefined` to `true` 8 | - `null` to `true` 9 | - `+0` to `true` 10 | - `-0` to `true` 11 | - `''` to `true` 12 | - `NaN` to `true` 13 | - `false` to `true` 14 | - All other expressions to `false` 15 | 16 | Then the other `!` negates it again. A concise cast to boolean, exactly equivalent to ToBoolean simply because `!` is defined as its negation. It’s unnecessary here, though, because it’s only used as the condition of the conditional operator, which will determine truthiness in the same way. 17 | -------------------------------------------------------------------------------- /content/languages/js/js-duck-typing.md: -------------------------------------------------------------------------------- 1 | # duck typing 2 | 3 | [Duck Typing in JavaScript](https://stackoverflow.com/questions/3379529/duck-typing-in-javascript) 4 | 5 | [Duck Typing - en.wikipedia.org](http://en.wikipedia.org/wiki/Duck_typing) 6 | 7 | > If it looks like a duck, swims like a duck, and quacks like a duck, then it probably is a duck. 8 | > 9 | > In a class-based object-oriented programming language (C++, for example) to make both objects look like a duck you must inherit their classes from a common "interface" class, so the compiler would let you call `duck` methods on them. That is called a strong typing. 10 | > 11 | > Now this is how it's done in JavaScript: 12 | 13 | ```javascript 14 | var duck = { 15 | appearance: "feathers", 16 | quack: function duck_quack(what) { 17 | print(what + " quack-quack!"); 18 | }, 19 | color: "black" 20 | }; 21 | 22 | var someAnimal = { 23 | appearance: "feathers", 24 | quack: function animal_quack(what) { 25 | print(what + " whoof-whoof!"); 26 | }, 27 | eyes: "yellow" 28 | }; 29 | 30 | function check(who) { 31 | if ((who.appearance == "feathers") && (typeof who.quack == "function")) { 32 | who.quack("I look like a duck!\n"); 33 | return true; 34 | } 35 | return false; 36 | } 37 | 38 | check(duck); // true 39 | check(someAnimal); // true 40 | ``` 41 | 42 | > See, the `check` function check whether the passed object looks like a duck (it checks appearance and its' ability to quack). We pass two different objects to it and it will return `true` on both. Besides the appearance and quacking these may be completely different things, but IN THIS PARTICULAR `check` function they behave the same way (have a common interface), they both look like a "duck". We can call the `quack` method on both objects (and who cares what they really are). 43 | -------------------------------------------------------------------------------- /content/languages/js/js-fetch-api.md: -------------------------------------------------------------------------------- 1 | # `fetch` API 2 | 3 | ## specs & doc 4 | 5 | [Fetch Living Standard — Last Updated 2 August 2017](https://fetch.spec.whatwg.org/) 6 | 7 | ## articles 8 | 9 | [fetch API : davidwalsh.name](https://davidwalsh.name/fetch) 10 | 11 | [Using Fetch API : developer.mozilla.org](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch) 12 | 13 | > The Fetch API provides a JavaScript interface for accessing and manipulating parts of the HTTP pipeline, 14 | > such as requests and responses. It also provides a global `fetch()` method that provides an easy, 15 | > logical way to fetch resources asynchronously across the network. 16 | 17 | ## polyfills 18 | 19 | [Fetch documentation](https://github.github.io/fetch/) 20 | 21 | [`github/fetch`](https://github.com/github/fetch) 22 | 23 | > A `window.fetch` JavaScript polyfill 24 | > 25 | > Browser support : 26 | > 27 | > - Chrome 28 | > - Firefox 29 | > - Safari 6.1+ 30 | > - Internet Explorer 10+ 31 | > 32 | 33 | ## `fetch` vs `XMLHttpRequest` 34 | 35 | [What is the difference between the Fetch API and XMLHttpRequest? : stackoverflow.com](https://stackoverflow.com/questions/35549547/what-is-the-difference-between-the-fetch-api-and-xmlhttprequest) 36 | 37 | [That's so fetch! : jakearchibald.com 20150324](https://jakearchibald.com/2015/thats-so-fetch/) 38 | -------------------------------------------------------------------------------- /content/languages/js/js-fonctions-anonymes-IIFE.md: -------------------------------------------------------------------------------- 1 | # fonctions anonymes 2 | 3 | [JavaScript : organiser son code en modules : alsacreations.com](http://www.alsacreations.com/article/lire/565-JavaScript-organiser-son-code-en-modules.html) 4 | 5 | [IIFE (Immediately Invoked Function Expression)](https://developer.mozilla.org/fr/docs/Glossaire/IIFE) 6 | 7 | ```javascript 8 | (function() { 9 | // code 10 | })(); 11 | ``` 12 | -------------------------------------------------------------------------------- /content/languages/js/js-iframe.md: -------------------------------------------------------------------------------- 1 | # `iframe` 2 | 3 | ## documentation 4 | 5 | [`iframe` : developer.mozilla.org](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe) 6 | 7 | ## questions 8 | 9 | ### `iframe` parent redirection 10 | 11 | [Why can a child redirect a parent frame? : stackoverflow.com](https://stackoverflow.com/questions/17967423/why-can-a-child-redirect-a-parent-frame) 12 | 13 | [How to prevent IFRAME from redirecting top-level window : stackoverflow.com](https://stackoverflow.com/questions/369498/how-to-prevent-iframe-from-redirecting-top-level-window) 14 | 15 | [Using JS how can I stop child Iframes from redirecting or at least prompt users about the redirect : stackoverflow.com](https://stackoverflow.com/questions/1794974/using-js-how-can-i-stop-child-iframes-from-redirecting-or-at-least-prompt-users) 16 | 17 | ### TLDR 18 | 19 | > With HTML5 the iframe sandbox attribute was added. 20 | > 21 | > ```html 22 | > 23 | > ``` 24 | > 25 | > If you want to *allow* top-level redirects specify `sandbox="allow-top-navigation"`. 26 | > 27 | -------------------------------------------------------------------------------- /content/languages/js/js-math.md: -------------------------------------------------------------------------------- 1 | # JavaScript Math 2 | 3 | ## float and money 4 | 5 | JavaScript Numbers are IEEE 754 64-bit floating point. The result is that we can't safely add money because the decimal will get skewered by floating point rounding errors. 6 | 7 | ```javascript 8 | .2 + .1 === .3; // false 9 | ``` 10 | 11 | ### the money problem 12 | 13 | [Floating Point Numbers & Currency Rounding Errors - Patrick Bacon - 20140814](https://spin.atomicobject.com/2014/08/14/currency-rounding-errors/) 14 | 15 | > 16 | > **Don’t use floating point numbers for money** 17 | > 18 | > Ways it Can Go Wrong : 19 | > 20 | > - During Calculations 21 | > - During Storage 22 | > - During Retrieval 23 | > - Before Display 24 | > 25 | 26 | [stackoverflow comment explaining the problem](https://stackoverflow.com/questions/3730019/why-not-use-double-or-float-to-represent-currency/3730040#3730040) 27 | 28 | ### quicks solutions 29 | 30 | #### toFixed() 31 | 32 | [using `Number.prototype.toFixed()` - stackoverflow.com](https://stackoverflow.com/a/12511102) / [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toFixed) 33 | 34 | Warning `toFixed` returns a string. This to prepare display in UI not to do maths. 35 | 36 | #### do calculation on cents 37 | 38 | [What is the best way to handle floating point problems with financial calculations in JavaScript? - quora.com - 2015](https://www.quora.com/What-is-the-best-way-to-handle-floating-point-problems-with-financial-calculations-in-JavaScript) 39 | 40 | > just represent all monetary values using an integer number of the smallest relevant units of the currency 41 | 42 | ### libs 43 | 44 | [ericelliott/moneysafe : `github.com`](https://github.com/ericelliott/moneysafe) 45 | -------------------------------------------------------------------------------- /content/languages/js/js-named-f-vs-expr-f.md: -------------------------------------------------------------------------------- 1 | # named function vs expression function 2 | 3 | ## articles 4 | 5 | - [Named function expressions demystified](http://kangax.github.io/nfe/) must read. 6 | - [discussion stackoverflow](http://stackoverflow.com/questions/336859/var-functionname-function-vs-function-functionname) 7 | 8 | ## hoisting 9 | 10 | [Hoisting : developer.mozilla.org](https://developer.mozilla.org/en-US/docs/Glossary/Hoisting) 11 | 12 | > variable and function declarations are put into memory during the compile phase 13 | 14 | Hoisting is not available with expression function where the declaration order impact function usage. 15 | 16 | ```javascript 17 | function catName(name) { 18 | console.log("My cat's name is " + name); 19 | } 20 | 21 | catName("Tigger"); 22 | /* 23 | The result of the code above is: "My cat's name is Tigger" 24 | */ 25 | ``` 26 | 27 | ```javascript 28 | catName("Chloe"); 29 | 30 | function catName(name) { 31 | console.log("My cat's name is " + name); 32 | } 33 | /* 34 | The result of the code above is: "My cat's name is Chloe" 35 | */ 36 | ``` 37 | -------------------------------------------------------------------------------- /content/languages/js/js-prototype.md: -------------------------------------------------------------------------------- 1 | # prototype 2 | 3 | [http://blog.xebia.fr/2013/06/10/javascript-retour-aux-bases-constructeur-prototype-et-heritage/](http://blog.xebia.fr/2013/06/10/javascript-retour-aux-bases-constructeur-prototype-et-heritage/) 4 | -------------------------------------------------------------------------------- /content/languages/js/js-web-storage.md: -------------------------------------------------------------------------------- 1 | # webstorage 2 | 3 | [localStorage et sessionStorage](http://www.alsacreations.com/article/lire/1402-web-storage-localstorage-sessionstorage.html) 4 | -------------------------------------------------------------------------------- /content/languages/rust/rust-overview.md: -------------------------------------------------------------------------------- 1 | # rust overview 2 | 3 | [www.rust-lang.org](https://www.rust-lang.org/en-US/) 4 | 5 | [`github.com/rust-lang`](https://github.com/rust-lang/rust) 6 | 7 | > Rust is a systems programming language that runs blazingly fast, prevents segfaults, and guarantees thread safety. 8 | > 9 | > Featuring 10 | > 11 | > - zero-cost abstractions 12 | > - move semantics 13 | > - guaranteed memory safety 14 | > - threads without data races 15 | > - trait-based generics 16 | > - pattern matching 17 | > - type inference 18 | > - minimal runtime 19 | > - efficient C bindings 20 | 21 | [Rust (programming language)](https://en.wikipedia.org/wiki/Rust_(programming_language)) 22 | 23 | ## tools 24 | 25 | [An Extensible, Concurrent Web Framework for Rust](https://github.com/iron/iron/) [ironframework.io](http://ironframework.io) 26 | 27 | [awesome-rust](https://github.com/rust-unofficial/awesome-rust) 28 | 29 | [clever-cloud rust support is beta](https://www.clever-cloud.com/doc/rust/rust/) 30 | 31 | ## majors projects in rust 32 | 33 | [servo](https://servo.org/) 34 | 35 | > Servo is a modern, high-performance browser engine designed for both application and embedded use. 36 | 37 | [deno](https://github.com/ry/deno) 38 | 39 | > the new JavaScript server plaform from Ryan Dahl 40 | -------------------------------------------------------------------------------- /content/network/README.md: -------------------------------------------------------------------------------- 1 | # Network 2 | -------------------------------------------------------------------------------- /content/network/internet.md: -------------------------------------------------------------------------------- 1 | # Internet 2 | 3 | ## Videos 4 | 5 | [Benjamin Bayart : Qu'est ce qu'Internet](https://www.youtube.com/watch?v=pwT2egqlke4&list=PLU39vuHuXlJeER75D1GNJiK8-2i0yhRLX) 6 | 7 | ## Emissions 8 | 9 | [Le village (3/5) Dans les zones blanches - www.franceculture.fr - 20170208](https://www.franceculture.fr/emissions/les-nouvelles-vagues/le-village-35-dans-les-zones-blanches) 10 | 11 | [Le Dessous des cartes 12 | Câbles sous-marins : la guerre invisible (jusqu'au 27/11/2018)](https://www.arte.tv/fr/videos/078191-009-A/le-dessous-des-cartes/) [boutique.arte.tv VOD](https://boutique.arte.tv/detail/le_dessous_des_cartes_cables_sous_marins_guerre_invisible) 13 | -------------------------------------------------------------------------------- /content/network/protocols/TCP.md: -------------------------------------------------------------------------------- 1 | # TCP 2 | 3 | [TCP / HTTP Listening On Ports: How Can Many Users Share the Same Port - stackoverflow.com - 20141128](https://stackoverflow.com/a/27182584) 4 | 5 | > Three things must be understood: 6 | > 7 | > 1.) On a server, a process is listening on a port. Once it gets a connection, it hands it off to another thread. The communication never hogs the listening port. 8 | > 9 | > 2.) Connections are uniquely identified by the OS by the following 5-tuple: (local-IP, local-port, remote-IP, remote-port, protocol). If any element in the tuple is different, then this is a completely independent connection. 10 | > 11 | > 3.) When a client connects to a server, it picks a random, unused high-order source port. This way, a single client can have up to ~64k connections to the server for the same destination port. 12 | -------------------------------------------------------------------------------- /content/network/protocols/http.md: -------------------------------------------------------------------------------- 1 | # http 2 | 3 | ## RFC HTTP 4 | 5 | - [RFC2616 - Hypertext Transfer Protocol -- HTTP/1.1](http://tools.ietf.org/html/rfc2616) 6 | - [RFC7230 – HTTP/1.1: Message Syntax and Routing](http://tools.ietf.org/html/rfc7230) 7 | - [RFC7231 – HTTP/1.1: Semantics and Content](http://tools.ietf.org/html/rfc7231) 8 | - [RFC7232 – HTTP/1.1: Conditional Requests](http://tools.ietf.org/html/rfc7232) 9 | - [RFC7233 – HTTP/1.1: Range Requests](http://tools.ietf.org/html/rfc7233) 10 | - [RFC7234 – HTTP/1.1: Caching](http://tools.ietf.org/html/rfc7234) 11 | - [RFC7235 – HTTP/1.1: Authentication](http://tools.ietf.org/html/rfc7235) 12 | 13 | ## long polling 14 | 15 | [What is HTTP Long Polling? - www.pubnub.com/blog - 20141201](https://www.pubnub.com/blog/2014-12-01-http-long-polling/) 16 | 17 | > - The client polls the server requesting new information. 18 | > - The server holds the request open until new data is available. 19 | > - Once available, the server responds and sends the new information. 20 | > - When the client receives the new information, it immediately sends another request, and the operation is repeated. 21 | > 22 | > This effectively emulates a server push feature. 23 | -------------------------------------------------------------------------------- /content/platforms-frameworks-libs/README.md: -------------------------------------------------------------------------------- 1 | # Platforms, frameworks and libs 2 | -------------------------------------------------------------------------------- /content/platforms-frameworks-libs/angular-js/angular-js-SEO.md: -------------------------------------------------------------------------------- 1 | # AngularJS - SEO 2 | 3 | [This is DEPRECATED ...](http://lawsonry.com/2014/05/diy-angularjs-seo-with-phantomjs-the-easy-way/?utm_source=ng-newsletter&utm_campaign=b7e0ffb362-AngularJS_Newsletter_5_6_145_5_2014&utm_medium=email&utm_term=0_fa61364f13-b7e0ffb362-96524929) 4 | 5 | ... because of Google SEO JavaScript crawling new feature : 6 | 7 | - [angularjs-seo-finally-a-piece-of-cake](https://weluse.de/blog/angularjs-seo-finally-a-piece-of-cake.html) 8 | - [SEO-Google-crawl-JavaScript](http://ng-learn.org/2014/05/SEO-Google-crawl-JavaScript/) 9 | - [ng-conf.ng-learn.org](http://ng-conf.ng-learn.org/) 10 | 11 | ## SEO services 12 | 13 | - [brombone.com](http://www.brombone.com/) 14 | 15 | ## Google Analytics 16 | 17 | - [ga with angular](http://stackoverflow.com/questions/10713708/tracking-google-analytics-page-views-with-angular-js) 18 | - [angulartics](https://github.com/luisfarzati/angulartics) 19 | 20 | ## Others 21 | 22 | - [precomposing a spa](http://www.analog-ni.co/precomposing-a-spa-may-become-the-holy-grail-to-seo) 23 | - [ajax-seo](https://github.com/liuwenchao/ajax-seo) 24 | - [Webmaster Central Help Forum : AngularJS SEO best practice: to prerender or not to? (2016/02)](https://productforums.google.com/forum/#!topic/webmasters/M8DKibaGLPI) 25 | 26 | ## Use case 27 | 28 | - [how-to-improve-seo-in-angularjs-applications : wijmo.com](http://wijmo.com/blog/how-to-improve-seo-in-angularjs-applications/) 29 | - [The Basics of JavaScript Framework SEO in AngularJS: builtvisible.com(2016/06)](https://builtvisible.com/javascript-framework-seo/) 30 | -------------------------------------------------------------------------------- /content/platforms-frameworks-libs/angular-js/angular-js-auth.md: -------------------------------------------------------------------------------- 1 | # AngularJS - auth 2 | 3 | ## angular modules to manage auth 4 | 5 | - [ng-token-auth](https://github.com/lynndylanhurley/ng-token-auth) email, OAuth2, account management, extensive events notification 6 | - [satellizer](https://github.com/sahat/satellizer) email, OAuth1, OAuth2 7 | - [angular-permission](https://github.com/Narzerus/angular-permission) 8 | - [ngPermission](https://github.com/tushariscoolster/ngPermission) 9 | 10 | ## articles on auth in angular 11 | 12 | - [Techniques for authentication in AngularJS applications](https://medium.com/opinionated-angularjs/techniques-for-authentication-in-angularjs-applications-7bbf0346acec#.c7cabdkly) 13 | 14 | ## articles securing SPA 15 | 16 | - [secure-single-page-app-problem : stormpath.com](https://stormpath.com/blog/secure-single-page-app-problem) 17 | 18 | ## JWT 19 | 20 | - [Easy Angular Authentication with JSON Web Tokens : angularjs.blogspot.fr](http://angularjs.blogspot.fr/2016/11/easy-angular-authentication-with-json.html) 21 | - [Introduction to JSON Web Tokens : jwt.io](https://jwt.io/introduction/) 22 | -------------------------------------------------------------------------------- /content/platforms-frameworks-libs/angular-js/angular-js-dep-inj.md: -------------------------------------------------------------------------------- 1 | # Dependency Injection 2 | 3 | ## article 4 | 5 | - [services-and-dependency-injection-in-angularjs](http://henriquat.re/basics-of-angular/services-dependency-injection/services-and-dependency-injection-in-angularjs.html) 6 | - [Understanding Dependency Injection - Wiki AngularJS officiel](https://github.com/angular/angular.js/wiki/Understanding-Dependency-Injection) 7 | - [source de l'article précédent sur stackoverflow](http://stackoverflow.com/questions/16828287/what-things-can-be-injected-into-others-in-angular-js/16829270#16829270) 8 | - [AngularJS Dependency Injection - Demystified 20140908](http://anandmanisankar.com/posts/angularjs-dependency-injection-demystified/) 9 | - [Injection réfléchie de dépendances - www.developpez.net - 20140804 - SylvainPV](https://www.developpez.net/forums/d1461652/webmasters-developpement-web/javascript-ajax-typescript-dart/javascript/injection-reflechie-dependances/) 10 | 11 | ## scope and namespace with the angular injector 12 | 13 | For services, angularJs injector is flat. 14 | 15 | For constants, angularJs injector is namespaced. 16 | 17 | Exemple, for a module structure like this : 18 | 19 | ```text 20 | app 21 | 22 | app.moduleA 23 | app.moduleA.aaaaService 24 | app.moduleA.aaaaConstants 25 | app.moduleA.subModuleA 26 | app.moduleA.subaaaaModuleA 27 | 28 | app.moduleB.bbbbService 29 | app.moduleB.bbbbConstants 30 | app.moduleB.subModuleB 31 | app.moduleB.subbbbbModuleB 32 | ``` 33 | 34 | If you call bbbbService in aaaaService without linking the depency in moduleA module declaration, it will **works**. AngularJs injector is flat in that case. 35 | 36 | If you call bbbbConstants in aaaaService without linking the dependency in moduleA module declaration, it will **fail**. AngularJs injector is **not** flat in that case. 37 | -------------------------------------------------------------------------------- /content/platforms-frameworks-libs/angular-js/angular-js-knowledge-overview.md: -------------------------------------------------------------------------------- 1 | # AngularJS - knowledge overview 2 | 3 | [Le programme](http://www.methotic.com/formation-angularjs) 4 | 5 | ## JavaScript avancé - journée optionnelle 6 | 7 | - Pièges de la syntaxe JavaScript 8 | - Types primitifs 9 | - Objets et tableaux 10 | - Fonctions : portée des déclarations, les fonctions internes, syntaxes de déclaration et d'invocation, closures, wrappers anonymes 11 | - Héritage par protoype 12 | - Boucles for et for ... in 13 | - Gestion des exceptions 14 | - Exercices 15 | 16 | ## AngularJS - journée 1 17 | 18 | - Les grandes lignes du framework, vues dynamiques et data binding, pattern MVVM 19 | - Vues et contrôleurs 20 | - Tests unitaires d'un contrôleur 21 | - Tests fonctionnels d'une application 22 | - Fonctionnement interne : digest et watches 23 | - Exercices 24 | 25 | ## AngularJS - journée 2 26 | 27 | - Application et modules, démarrage automatique ou manuel 28 | - Application mono-page, routage avec $route, modes de routage, service $location 29 | - Les filtres, utilisation et création 30 | - Services et injection de dépendances, fonctionnement des providers, configuration des services 31 | - Exercices 32 | 33 | ## AngularJS - journée 3 34 | 35 | - Echanges avec le serveur, $http et $resource 36 | - API de promises 37 | - Formulaires et validation 38 | - Gestion des exceptions 39 | - Evénements utilisateur 40 | - Exercices 41 | 42 | ## AngularJS - journée 4 43 | 44 | - Ecriture de directives : phases compile et link, scope enfant ou scope isolé, transclusion, etc. 45 | - Bonnes pratiques avec AngularJS 46 | - Place d'AngularJS dans une architecture web globale 47 | - Exercices 48 | -------------------------------------------------------------------------------- /content/platforms-frameworks-libs/angular-js/angular-js-lazy-downloading.md: -------------------------------------------------------------------------------- 1 | # AngularJS - lazy downloading 2 | 3 | ## webpack 4 | 5 | [Lazy loading avec WebPack & AngularJS](http://blog.xebia.fr/2016/03/08/lazy-loading-avec-webpack-angularjs/) 6 | 7 | ## requirejs 8 | 9 | Based on [blog article lazy downloading in angularjs](http://ify.io/lazy-loading-in-angularjs/) 10 | See also [ocLazyLoad](https://github.com/ocombe/ocLazyLoad) 11 | 12 | - [angularjs-lazy-loading-with-requirejs](https://github.com/ifyio/angularjs-lazy-loading-with-requirejs) 13 | 14 | grunt task used : [grunt-contrib-requirejs](https://github.com/gruntjs/grunt-contrib-requirejs) 15 | 16 | Others tuto : 17 | 18 | - [angularjs-requirejs](https://www.startersquad.com/blog/angularjs-requirejs/) 19 | - [single-page-apps-un-risque-de-boulimie-angularjs](http://blog.dareboost.com/2014/11/single-page-apps-un-risque-de-boulimie-angularjs/) 20 | 21 | **IMPORTANT** 22 | In fact, using requirejs with angular is not for lazy loading but for lazy downloading. 23 | Angular already lazy load modules. They are executed only when needed. 24 | Require is useful when the website source code is big with many dependencies. 25 | Downloading everything once can be a problem, especially for mobile websites. 26 | See [this discussion](http://stackoverflow.com/questions/12529083/does-it-make-sense-to-use-require-js-with-angular-js), or [this one](http://leog.me/log/making-sense-of-requirejs-with-angularjs) 27 | -------------------------------------------------------------------------------- /content/platforms-frameworks-libs/angular-js/angular-js-mobile.md: -------------------------------------------------------------------------------- 1 | # AngularJS - mobile 2 | 3 | [ng-newsletter : angular-on-mobile](http://www.ng-newsletter.com/posts/angular-on-mobile.html) 4 | 5 | ## mobile resize event detection in an angular context 6 | 7 | ```javascript 8 | // put this code in the angular.module('yourApp').run(AppInitFn); with other init stuff 9 | var _widthScreen = angular.element($window).width(); 10 | $(window).on('resize', function () { 11 | if (_widthScreen !== angular.element($window).width()) { 12 | _widthScreen = angular.element($window).width(); 13 | $rootScope.$broadcast(PJEvents.BODY_RESIZE); 14 | } 15 | }); 16 | ``` 17 | 18 | ## mobile size 19 | 20 | ```javascript 21 | SMALL_SCREEN_MAX_WIDTH: 768 22 | MIDDLE_SCREEN_MAX_WIDTH: 992 23 | 24 | // smallResolution === smartphone viewport. > is tablet viewport 25 | $rootScope.isSmallResolution = function () { 26 | return angular.element($window).width() < vars.SMALL_SCREEN_MAX_WIDTH; 27 | }; 28 | ``` 29 | -------------------------------------------------------------------------------- /content/platforms-frameworks-libs/angular-js/angular-js-module.md: -------------------------------------------------------------------------------- 1 | # AngularJs - modules 2 | 3 | ref [angular.module](https://docs.angularjs.org/api/ng/function/angular.module) 4 | 5 | recommandations : 6 | 7 | - [John Papa @ ng-module](https://github.com/johnpapa/angular-styleguide#modules) 8 | 9 | [module dep naming clash](http://stackoverflow.com/questions/30374934/angularjs-module-dependencies-naming-clash/30376123#30376123) 10 | 11 | ## angular.module === namespace ? 12 | 13 | ***NO*** 14 | 15 | - [This AngularJS modules/dependencies thing is a lie](http://michalostruszka.pl/blog/2015/05/21/angular-dependencies-naming-clash/) 16 | - [Hack for target a precise component in a precise module](http://stackoverflow.com/questions/30374934/angularjs-module-dependencies-naming-clash/30376123#30376123) 17 | (encapsulate the service u want with another service who call a new injector set to the right module only) 18 | - [angular repo issue discussion](https://github.com/angular/angular.js/issues/10805) 19 | 20 | ## so how it works ? 21 | 22 | - modules are ref to components for the injector. 23 | - the injector index is flat, it means that any component from any module registered in the injector is available to injection in everyone. 24 | - modules cannot avoid name collision. So components names **must** be uniques. 25 | - there is no error risen when 2 components with the same name are registered to the injector. The last one is kept. 26 | 27 | ## Others reading 28 | 29 | - [differents modules managements, very good reading](https://scott.mn/2014/03/03/javascript_modules/) 30 | -------------------------------------------------------------------------------- /content/platforms-frameworks-libs/angular-js/angular-js-promise.md: -------------------------------------------------------------------------------- 1 | # AngularJS - promise 2 | 3 | ## basic tuto 4 | 5 | - [angularjs-promises](http://www.thinkster.io/pick/SoeujAQBP3/angularjs-promises) 6 | - [a good one :](http://www.webdeveasy.com/javascript-promises-and-angularjs-q-service/) 7 | - [les promesses en AngularJS 1/3](http://blog.ippon.fr/2015/01/23/les-promesses-en-angularjs-13/) 8 | - [les promesses en AngularJS 2/3](http://blog.ippon.fr/2015/01/26/les-promesses-en-angularjs-23/) 9 | - [les promesses en AngularJS 3/3](http://blog.ippon.fr/2015/01/27/les-promesses-en-angularjs-33/) 10 | 11 | ## error management in async workflow 12 | 13 | - [Handling Top-Level Errors In A Promise Workflow](http://www.bennadel.com/blog/2773-handling-top-level-errors-in-a-promise-workflow-in-angularjs.htm) 14 | - [Exploring Asynchronous Promise-Based Workflows](http://www.bennadel.com/blog/2772-exploring-asynchronous-promise-based-workflows-in-angularjs.htm) 15 | - [You're Missing the Point of Promises](https://blog.domenic.me/youre-missing-the-point-of-promises/) 16 | - [Automatic error handling in AngularJS](https://technology.amis.nl/2014/10/06/automatic-error-handling-in-angularjs/) <- great to show how to catch everything 17 | - [Lessons learned from PayPal Checkout project](https://medium.com/@bluepnume/sane-scalable-angular-apps-are-tricky-but-not-impossible-lessons-learned-from-paypal-checkout-c5320558d4ef#.epy69vvcr) 18 | - [Error handling in promises](http://bahmutov.calepin.co/error-handling-in-promises.html) 19 | -------------------------------------------------------------------------------- /content/platforms-frameworks-libs/angular-js/angular-js-routing.md: -------------------------------------------------------------------------------- 1 | # AngularJS - ui routing 2 | 3 | ## ui-router 4 | 5 | - [ui-router](https://github.com/angular-ui/ui-router) 6 | - [ui-router wiki](https://github.com/angular-ui/ui-router/wiki) 7 | 8 | ## Tuto 9 | 10 | - [Using nested views in AngularJS with UI-Router](http://cacodaemon.de/index.php?id=57) 11 | - [Advanced routing and resolves](https://medium.com/opinionated-angularjs/a2fcbf874a1c) 12 | 13 | ## Examples 14 | 15 | - [ui-router sample](http://angular-ui.github.io/ui-router/sample/#/contacts) 16 | - [plunkr](http://plnkr.co/edit/gmtcE2?p=preview) 17 | 18 | ## url management 19 | 20 | - [add args in url](http://stackoverflow.com/questions/14174394/how-can-i-change-params-in-url-with-angularjs) 21 | 22 | ```javascript 23 | $location.search('year', $scope.year); 24 | ``` 25 | 26 | - get specific arg 27 | 28 | ```javascript 29 | $location.search().year; 30 | ``` 31 | 32 | - [clear args in url](http://stackoverflow.com/questions/17376416/angularjs-how-to-clear-query-parameters-in-the-url) 33 | 34 | - remove all args 35 | 36 | ```javascript 37 | $location.url($location.path()); 38 | ``` 39 | 40 | - remove a specific args 41 | 42 | ```javascript 43 | $location.search('coords', null); 44 | ``` 45 | 46 | ## issues 47 | 48 | ### Multiples parents views for a single child view 49 | 50 | [stackoverflow question](http://stackoverflow.com/questions/34386009/angular-ui-router-child-state-with-multiple-parent-states) 51 | 52 | [ui-router closed issue](https://github.com/angular-ui/ui-router/issues/1072) 53 | -------------------------------------------------------------------------------- /content/platforms-frameworks-libs/angular-js/angular-js-services.md: -------------------------------------------------------------------------------- 1 | # AngularJS - services 2 | 3 | - [value & constant](http://lostechies.com/gabrielschenker/2014/01/14/angularjspart-9-values-and-constants/) 4 | - [service, factory & provider](https://groups.google.com/forum/#!topic/angular/hVrkvaHGOfc) 5 | - [`gist.github.com` : Difference between Service, Factory and Provider in AngularJS](https://gist.github.com/Mithrandir0x/3639232) 6 | - [les-services-angularjs](http://www.angular-js.fr/les-services-angularjs/) 7 | - [astuce-angularjs-restreindre-resultats-ng-repeat](http://www.angular-js.fr/astuce-angularjs-restreindre-resultats-ng-repeat/) 8 | - [understanding-service-types](http://angular-tips.com/blog/2013/08/understanding-service-types/) 9 | -------------------------------------------------------------------------------- /content/platforms-frameworks-libs/angular-js/angular-js-template-cache.md: -------------------------------------------------------------------------------- 1 | # AngularJS - `$templateCache` 2 | 3 | ## [`$templateCache`](https://code.angularjs.org/1.4.8/docs/api/ng/service/$templateCache) 4 | 5 | Quand angular voit un templateUrl dans une route ou une directive, il va requêter le serveur pour retrouver le fichier html. 6 | Une fois qu'il l'a récupéré, il place ce template sous forme de string dans le service `$templateCache`. 7 | Chaque fois suivante ou angular aura besoin d'accéder à ce template, il va recharger le template depuis `$templateCache`. 8 | Ce qui évite de multiples connexions réseau inutiles. 9 | 10 | ## Bonne pratique 11 | 12 | Une bonne pratique consiste à populer $templateCache au build de l'application via un module gulp ([`gulp-angular-templatecache`](https://github.com/miickel/gulp-angular-templatecache)). 13 | Ainsi il n'y aura aucun accès réseau pour récupérer les templates. 14 | 15 | ## Implémentation 16 | 17 | Concrètement cette tâche gulp va générer un fichier js qui implémente un run du module principal de la webapp. 18 | Ce run injectera `$templateCache`. 19 | Pour chaque template trouvé dans le source de la webapp, un call à `$templateCache.put(, )` sera effectué. 20 | 21 | ## Lectures sur le sujet 22 | 23 | - [templatecache-tutorial : thinkster.io](https://thinkster.io/templatecache-tutorial) 24 | - [template-caching-in-angular-how-to-avoid-the-storm](https://blog.logentries.com/2015/03/template-caching-in-angular-how-to-avoid-the-storm/) 25 | -------------------------------------------------------------------------------- /content/platforms-frameworks-libs/htmx/htmx-overview.md: -------------------------------------------------------------------------------- 1 | # htmx overview 2 | 3 | ## official links 4 | 5 | [`htmx.org`](https://htmx.org/) 6 | 7 | [repo](https://github.com/bigskysoftware/htmx) 8 | 9 | ## articles 10 | 11 | [HTMX, pour un développement web simplifié - `www.sfeir.dev` - 20230726](https://www.sfeir.dev/front/htmx-pour-un-developpement-web-simplifie-vous-avez-peut-etre-la-chance-davoir-connu-lage-des-pages-web-statiques-sans-interactions-puis-lavenement-de-flash-et-jquery-pour-finir-aujourdh/) 12 | 13 | [A First Look at HTMX and How it Compares to React - `www.builder.io` - 20230915](https://www.builder.io/blog/htmx-vs-react) 14 | 15 | ## tools 16 | 17 | [gist `htmx + mock requests = SPA?`](https://gist.github.com/edofic/7c6fc369ef960315422914e946f4854b) [`mock-requests` pkg](https://www.npmjs.com/package/mock-requests) 18 | 19 | ```html 20 | 21 | 22 | 23 | 24 | Hello Page 25 | 26 | 27 | 38 | 39 | 40 | 41 |

Hello

42 | 43 | 44 | 45 | 46 | ``` 47 | -------------------------------------------------------------------------------- /content/platforms-frameworks-libs/node.js/nodejs-hello-world.md: -------------------------------------------------------------------------------- 1 | # nodejs - hello world 2 | 3 | [Node.JS Hello World : tutorials.kode-blog.com 20160802](https://tutorials.kode-blog.com/nodejs-hello-world) 4 | 5 | ## Create `package.json` using `npm` 6 | 7 | ```bash 8 | mkdir node 9 | cd node 10 | mkdir hello-world 11 | cd hello-world 12 | npm init 13 | ``` 14 | 15 | Fill in the answers to the utility questions. 16 | 17 | ## Node.JS Hello World Console Application 18 | 19 | Create a new file `app.js` 20 | 21 | Add the following code : 22 | 23 | ```javascript 24 | console.log('Hello World!'); 25 | ``` 26 | 27 | Console is a global module that provides simple debugging console that is similar to the one JavaScript console in web browsers. 28 | 29 | Run the following command : 30 | 31 | ```bash 32 | node app.js 33 | ``` 34 | 35 | `.js` extension is not mandatory, this works also : 36 | 37 | ```bash 38 | node app 39 | ``` 40 | 41 | ## Node.JS Hello World Web Application 42 | 43 | Create a new file `web.js` 44 | 45 | Add the following code : 46 | 47 | ```javascript 48 | var http = require("http"); 49 | 50 | var port = 3000; 51 | 52 | http.createServer(function(reqst, resp) { 53 | resp.writeHead(200, {'Content-Type': 'text/plain'}); 54 | resp.end('Hello World!'); 55 | }).listen(port); 56 | 57 | console.log('Load http://127.0.0.1:' + port + ' and watch the magic'); 58 | ``` 59 | 60 | Run the following command : 61 | 62 | ```bash 63 | node web 64 | ``` 65 | 66 | Load the following url in your browser : `http://127.0.0.1:3000/` 67 | -------------------------------------------------------------------------------- /content/platforms-frameworks-libs/play-framework/java-play-OAuth.md: -------------------------------------------------------------------------------- 1 | # java - play - oauth 2 | 3 | [http://stackoverflow.com/questions/11373843/securing-rest-api-on-play-framework-and-oauth2](http://stackoverflow.com/questions/11373843/securing-rest-api-on-play-framework-and-oauth2) 4 | 5 | [http://stackoverflow.com/questions/10018604/how-to-use-oauth-2-in-play-framework-2-0](http://stackoverflow.com/questions/10018604/how-to-use-oauth-2-in-play-framework-2-0) 6 | 7 | [http://stackoverflow.com/questions/12319385/angularjs-oauth-play-2-0](http://stackoverflow.com/questions/12319385/angularjs-oauth-play-2-0) 8 | 9 | [http://hueniverse.com/2007/10/beginners-guide-to-oauth-part-i-overview/](http://hueniverse.com/2007/10/beginners-guide-to-oauth-part-i-overview/) 10 | 11 | [http://oauth.net/](http://oauth.net/) 12 | 13 | [http://fr.wikipedia.org/wiki/OAuth](http://fr.wikipedia.org/wiki/OAuth) 14 | 15 | [http://developer.github.com/v3/oauth/](http://developer.github.com/v3/oauth/) 16 | -------------------------------------------------------------------------------- /content/platforms-frameworks-libs/play-framework/java-play-async.md: -------------------------------------------------------------------------------- 1 | # java - play - async 2 | 3 | [http://www.playframework.com/documentation/2.3-SNAPSHOT/JavaAsync](http://www.playframework.com/documentation/2.3-SNAPSHOT/JavaAsync) 4 | 5 | [https://github.com/playframework/playframework/pull/2284](https://github.com/playframework/playframework/pull/2284) 6 | -------------------------------------------------------------------------------- /content/platforms-frameworks-libs/play-framework/java-play-config-idea.md: -------------------------------------------------------------------------------- 1 | # java - play - config idea 2 | 3 | [utiliser le plugin sbt](https://github.com/mpeltonen/sbt-idea) 4 | 5 | il faut ajouter la ligne `addSbtPlugin("com.github.mpeltonen" %% "sbt-idea" % "1.5.2")` au fichier `plugins.sbt`. 6 | 7 | puis exec dans la console play la commande `gen-idea`. 8 | -------------------------------------------------------------------------------- /content/platforms-frameworks-libs/play-framework/java-play-gestion-fichier-config-dev-prod.md: -------------------------------------------------------------------------------- 1 | # java - play - gestion config 2 | 3 | [http://stackoverflow.com/questions/14673722/maintaining-seperate-dev-prod-config-files-on-heroku-doesnt-work](http://stackoverflow.com/questions/14673722/maintaining-seperate-dev-prod-config-files-on-heroku-doesnt-work) 4 | 5 | [logic in application.conf](http://stackoverflow.com/questions/6699955/playframework-route-file-separate-production-routes-from-dev-routes/6703337#6703337) 6 | 7 | [code source de l'api embarquée par Play pour gérer application.conf](https://github.com/typesafehub/config) 8 | -------------------------------------------------------------------------------- /content/security/CORS/infos-JSONP.md: -------------------------------------------------------------------------------- 1 | # JSONP 2 | 3 | JSONP nice explanation on [wikipedia.en](http://en.wikipedia.org/wiki/JSONP) 4 | -------------------------------------------------------------------------------- /content/security/PKI-X509.md: -------------------------------------------------------------------------------- 1 | # Infrastructures à Clefs Publiques 2 | 3 | (Public Key Infrastructures) 4 | -------------------------------------------------------------------------------- /content/security/README.md: -------------------------------------------------------------------------------- 1 | # Security 2 | -------------------------------------------------------------------------------- /content/software-engineering/README.md: -------------------------------------------------------------------------------- 1 | # Software-engineering 2 | -------------------------------------------------------------------------------- /content/software-engineering/archi-micro-services.md: -------------------------------------------------------------------------------- 1 | # archi micro-services 2 | 3 | ## articles 4 | 5 | - [what-cios-need-know-about-microservices-and-devops](https://enterprisersproject.com/article/2015/9/what-cios-need-know-about-microservices-and-devops) 6 | - [what-are-microservices](https://opensource.com/resources/what-are-microservices) 7 | - [what-docker](http://opensource.com/resources/what-docker) 8 | - [dev.com : refuter-le-mythe-du-mois-homme](http://www.developpez.com/actu/90825/DevOps-l-architecture-en-microservices-pourrait-permettre-de-refuter-le-mythe-du-mois-homme-selon-le-CTO-d-Electric-Cloud/) 9 | - [blog.xebia.fr : Microservices – Les concepts 1/3](http://blog.xebia.fr/2015/03/02/microservices-les-concepts/) 10 | - [blog.xebia.fr : Microservices – Des architectures 2/3](http://blog.xebia.fr/2015/03/09/microservices-des-architectures/) 11 | - [blog.xebia.fr : Microservices – Des pièges 3/3](http://blog.xebia.fr/2015/03/16/microservices-des-pieges/) 12 | - [Questions sur les micro services](https://www.developpez.net/forums/d1709727/general-developpement/alm/architecture/questions-micro-services/) 13 | 14 | ## interviews 15 | 16 | [Interview d'Antonio Goncalves à l'occasion de Voxxed Microservices - thierry-leriche-dessirier.developpez.com - 20180907](https://thierry-leriche-dessirier.developpez.com/articles/interview/antonio-goncalves-voxxed-microservices/) 17 | -------------------------------------------------------------------------------- /content/software-engineering/ddd.md: -------------------------------------------------------------------------------- 1 | # domain driven development 2 | 3 | ## books 4 | 5 | to read [Domain-Driven Design Distilled](https://www.amazon.fr/Domain-Driven-Design-Distilled-Vaughn-Vernon-ebook/dp/B01JJSGE5S/ref=as_li_ss_tl?_encoding=UTF8&pd_rd_i=B01JJSGE5S&pd_rd_r=81292d20-98e5-4fb5-a417-dcae25fcdd06&pd_rd_w=Nr0GQ&pd_rd_wg=nBZAp&pf_rd_p=953bccfd-b229-4f52-a28c-d31e70f60358&pf_rd_r=845XN0DXP58W1E9BPH30&psc=1&refRID=845XN0DXP58W1E9BPH30&linkCode=sl1&tag=lilobase-21&linkId=a05891558e63acff2ec9947c0ee42181&language=fr_FR) 6 | 7 | ## confs 8 | 9 | [Le Domain Driven Design sous l’angle stratégique, une introduction - Arnaud Lemaire - 20200525](https://www.lilobase.me/le-domain-driven-design-sous-langle-strategique-une-introduction/) 10 | 11 | [Le Domain Driven Design est-il adapté à tous vos projets ? - Arnaud Lemaire - 20201101](https://www.lilobase.me/le-domain-driven-design-est-il-adapte-a-tous-vos-projets/) 12 | -------------------------------------------------------------------------------- /content/software-engineering/scrum-memo.md: -------------------------------------------------------------------------------- 1 | # scrum 2 | 3 | ## specs 4 | 5 | [Scrum official spec](https://www.scrumguides.org/) 6 | 7 | Written by [Jeff Sutherland](https://www.scrumguides.org/jeff.html) and [Ken Schwaber](https://www.scrumguides.org/ken.html). 8 | 9 | ## articles 10 | 11 | - [Jeff Sutherland on Twitter about releases in a Scrum Sprint](https://twitter.com/jeffsutherland/status/1297894631154364416?s=19) 12 | - [scrum vs cycle en V](http://blog.dcube.fr/blog/2014/04/28/scrum-vs-cycle-en-v-2/) 13 | - [14 Signs you’re working in a Scrum Feature Factory - Maarten Dalmijn - 20200217](https://medium.com/serious-scrum/14-signs-youre-working-in-a-scrum-feature-factory-4a29cf0cca87) 14 | -------------------------------------------------------------------------------- /content/software-engineering/semver.md: -------------------------------------------------------------------------------- 1 | # semver 2 | 3 | Conventions pour le versionning : 4 | 5 | [http://semver.org/](http://semver.org/) 6 | 7 | Conventions sur certains mots (MUST, MAY, ...) : [RFC2119](http://tools.ietf.org/html/rfc2119) 8 | -------------------------------------------------------------------------------- /content/software-engineering/stamps.md: -------------------------------------------------------------------------------- 1 | # stamps 2 | 3 | [Fun with Stamps. Episode 1. Stamp basics](https://medium.com/@koresar/fun-with-stamps-episode-1-stamp-basics-e0627d81efe0) 4 | 5 | - Episode 1. Stamp basics (this article) 6 | - Episode 2. Dependency injection in FP 7 | - Episode 3. Comparing with the ES2015 classes 8 | - Episode 4. Implementing stamps yourself in 30 LOC 9 | - Episode 5. Composition design pattern 10 | - Episode 6. Statics — properties on stamps 11 | - Episode 7. Early and late dependency injection 12 | - Episode 8. Tracking and overriding composition 13 | - Episode 9. Detaching compose() 14 | - Episode 10. My stamp mental model 15 | - Episode 11. Interfering composition 16 | - Episode 12. New @stamp home 17 | - Episode 13. Method collision control 18 | - Episode 14. New @stamp/it as a replacement of Stampit 19 | - Episode 15. The @stamp/ modules ecosystem 20 | 21 | [stampit-org](https://github.com/stampit-org) 22 | 23 | > **Create objects from reusable, composable behaviors** 24 | > 25 | > Stamps are standardised composable factory functions. 26 | 27 | [rtype](https://github.com/ericelliott/rtype#rtype) 28 | 29 | > Intuitive structural type notation for JavaScript. 30 | > 31 | > Used to describe the API function signatures in specs 32 | 33 | [stamp-specification : `github.com`](https://github.com/stampit-org/stamp-specification) 34 | 35 | > define stamps format 36 | 37 | [stampit impl](https://github.com/stampit-org/stampit) 38 | 39 | > the current stampit-org impl (@3.2.1 the 20170916) 40 | 41 | [stampit API doc](https://github.com/stampit-org/stampit/blob/master/docs/API.md) 42 | -------------------------------------------------------------------------------- /content/systems/README.md: -------------------------------------------------------------------------------- 1 | # Systems 2 | -------------------------------------------------------------------------------- /content/systems/linux/apt-cheatsheet.md: -------------------------------------------------------------------------------- 1 | # apt cheatsheet 2 | 3 | ## how to get infos about an installed package ? 4 | 5 | `apt-cache policy ` 6 | 7 | Example : 8 | 9 | ```bash 10 | $ apt-cache policy nodejs 11 | nodejs: 12 | Installed: 5.12.0-1nodesource1~xenial1 13 | Candidate: 5.12.0-1nodesource1~xenial1 14 | Version table: 15 | *** 5.12.0-1nodesource1~xenial1 500 16 | 500 https://deb.nodesource.com/node_5.x xenial/main amd64 Packages 17 | 100 /var/lib/dpkg/status 18 | 4.2.6~dfsg-1ubuntu4.1 500 19 | 500 http://in.archive.ubuntu.com/ubuntu xenial-updates/universe amd64 Packages 20 | 4.2.6~dfsg-1ubuntu4 500 21 | 500 http://in.archive.ubuntu.com/ubuntu xenial/universe amd64 Packages 22 | ``` 23 | -------------------------------------------------------------------------------- /content/systems/linux/linux-logs.md: -------------------------------------------------------------------------------- 1 | # Linux - logs 2 | 3 | Situés dans `/var/log/` 4 | 5 | Le compte utilisateur de base ( `/home//` ) doit être ajouté au groupe `adm` pour avoir le droit de consulter les fichiers de logs. 6 | 7 | `auth.log` 8 | 9 | Contient toutes les traces de tentatives (réussies ou non) de logs de tous les utilisateurs (y compris root) ainsi que diverses infos associées comme la console utilisée. 10 | boot 11 | 12 | `daemon.log` 13 | 14 | Contient les traces relatives aux démons en exécution sur le système. 15 | 16 | `kern.log` 17 | 18 | Traces pour l'activité du Kernel. 19 | 20 | `messages` 21 | 22 | Divers messages systèmes. 23 | 24 | `syslog` 25 | 26 | Idem. 27 | 28 | `user.log` 29 | 30 | Messages relatifs aux utilisateurs. 31 | 32 | `dpkg.log` 33 | 34 | log du gestionnaire de paquet de Debian 35 | 36 | `Xorg..log` 37 | 38 | log de Gnome. 1 fichier par écran ? 39 | 40 | `/apt/term.log` 41 | 42 | fichier de log de APT le gestionnaire de paquet Debian qui encapsule DPKG. 43 | On peut y lire toutes les traces de manipulation de APT. 44 | -------------------------------------------------------------------------------- /content/systems/linux/ubuntu-create-usb-boot.md: -------------------------------------------------------------------------------- 1 | # create usb boot 2 | 3 | ## from windows 4 | 5 | [How to create a bootable USB stick on Windows : www.ubuntu.com](https://www.ubuntu.com/download/desktop/create-a-usb-stick-on-windows) 6 | 7 | [rufus : rufus.akeo.ie](http://rufus.akeo.ie/?locale=en_US/) 8 | 9 | > Create bootable USB drives the easy way 10 | -------------------------------------------------------------------------------- /content/systems/linux/ubuntu-nvidia.md: -------------------------------------------------------------------------------- 1 | # ubuntu - nvidia 2 | 3 | ## update drivers 4 | 5 | [Install driver for GTX 1070?](https://askubuntu.com/questions/1112814/install-driver-for-gtx-1070) 6 | 7 | First delete the currently installed drivers. 8 | 9 | ```bash 10 | sudo apt-get purge nvidia* 11 | ``` 12 | 13 | Add sources repo if necessary. 14 | 15 | ```bash 16 | sudo add-apt-repository ppa:graphics-drivers 17 | ``` 18 | 19 | Update sources. 20 | 21 | ```bash 22 | sudo apt-get update 23 | ``` 24 | 25 | List the availables drivers 26 | 27 | ```bash 28 | ubuntu-drivers devices 29 | 30 | == /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0 == 31 | modalias : pci:v000010DEd00001B81sv00001462sd00003302bc03sc00i00 32 | vendor : NVIDIA Corporation 33 | model : GP104 [GeForce GTX 1070] 34 | driver : nvidia-driver-410 - third-party free 35 | driver : nvidia-driver-396 - third-party free 36 | driver : nvidia-driver-415 - third-party free recommended 37 | driver : nvidia-driver-390 - third-party free 38 | driver : xserver-xorg-video-nouveau - distro free builtin 39 | ``` 40 | 41 | Install the recommended drivers. 42 | 43 | ```bash 44 | sudo apt-get install nvidia-driver-415 45 | ``` 46 | -------------------------------------------------------------------------------- /content/systems/linux/ubuntu-pdf.md: -------------------------------------------------------------------------------- 1 | # ubuntu - pdf 2 | 3 | ## réduire la taille d'un pdf 4 | 5 | [Source forum Ubuntu](https://forum.ubuntu-fr.org/viewtopic.php?pid=3336511#p3336511) 6 | 7 | ```bash 8 | gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -sOutputFile=out.pdf tonfichier.pdf 9 | ``` 10 | -------------------------------------------------------------------------------- /content/systems/windows/windows-checksum.md: -------------------------------------------------------------------------------- 1 | # check hash on windows 2 | 3 | [Is there built in checksum for win 10? answers.microsoft.com](https://answers.microsoft.com/en-us/insider/forum/insider_wintp-insider_update/is-there-built-in-checksum-for-win-10/8dba82be-f036-4460-b427-954e057b678a) 4 | 5 | > CMD as admin 6 | > 7 | > CertUtility can be used to verify md2,3,4,5 SHA1,256,384,512 8 | > 9 | > Example `C:\Windows\system32>CertUtil -hashfile C:\Users\other\Downloads\Zorin9\zorin-os-9.1-core-64.iso MD5` 10 | > 11 | 12 | Testé, fonctionne bien. 13 | -------------------------------------------------------------------------------- /content/systems/windows/windows-ubuntu-on-windows10.md: -------------------------------------------------------------------------------- 1 | # Windows - Ubuntu on windows10 2 | 3 | ## articles 4 | 5 | [Installer le shell Bash (Linux) sous Windows 10](https://korben.info/installer-shell-bash-linux-windows-10.html) 6 | 7 | ## documentation 8 | 9 | [Linux User Account and Permissions](https://msdn.microsoft.com/en-us/commandline/wsl/user_support) 10 | 11 | [Bash Ubuntu on Windows](https://msdn.microsoft.com/commandline/wsl/about) 12 | 13 | > **Important note**: Bash/WSL is deliberately branded as a "beta" feature: We know there are issues and incomplete 14 | > features. You should expect many things to work and for some things to fail. We appreciate any and all constructive 15 | > feedback you can share from your experiences in using Bash/WSL. Your bug reports help us diagnose issues we need to 16 | > fix in order to deliver a great experience. 17 | -------------------------------------------------------------------------------- /content/tools/README.md: -------------------------------------------------------------------------------- 1 | # Tools 2 | -------------------------------------------------------------------------------- /content/tools/cheat-sheets.md: -------------------------------------------------------------------------------- 1 | # cheat sheets 2 | 3 | ## rico's cheatsheets 4 | 5 | [Rico's cheatsheets](https://devhints.io/) 6 | 7 | > TL;DR for developer documentation - a ridiculous collection of cheatsheets 8 | 9 | [`github.com/rstacruz/cheatsheets`](https://github.com/rstacruz/cheatsheets) 10 | -------------------------------------------------------------------------------- /content/tools/diagrams.md: -------------------------------------------------------------------------------- 1 | # diagrams tools 2 | 3 | ## sequences diagrams 4 | 5 | - [websequencediagrams](https://www.websequencediagrams.com/) 6 | 7 | > Permet la construction rapide et facile de diagrammes de séquences 8 | 9 | - [JS Sequence Diagram Plugin : `github.com`](https://github.com/gmassanek/gitbook-plugin-js-sequence-diagram) 10 | 11 | [js-sequence-diagrams : `bramp.github.io`](https://bramp.github.io/js-sequence-diagrams/) 12 | 13 | > Intégration directe au markdown des diagrammes de séquence 14 | 15 | ## flowcharts 16 | 17 | [GitBook plugins "flowchart"](https://plugins.gitbook.com/browse?q=flowchart) 18 | 19 | ## charts 20 | 21 | [echarts](https://ecomfe.github.io/echarts-examples/public/index.html#chart-type-scatter) 22 | 23 | [echarts](https://github.com/ecomfe/echarts) 24 | 25 | [gitbook-plugin-echarts](https://github.com/vowstar/gitbook-plugin-echarts) 26 | 27 | ## mermaid (lots of charts & diagrams) 28 | 29 | [mermaid : `knsv.github.io`](http://knsv.github.io/mermaid/) 30 | 31 | [mermaid : `github.com`](https://github.com/knsv/mermaid) 32 | 33 | > Generation of diagram and flowchart from text in a similar manner as markdown 34 | 35 | [gitbook-plugin-mermaid](https://github.com/JozoVilcek/gitbook-plugin-mermaid) 36 | 37 | ## ascii art diagrams 38 | 39 | [asciiflow.com](http://asciiflow.com/) ([lewish/asciiflow2 - `github.com`](https://github.com/lewish/asciiflow2)) 40 | 41 | ## questions 42 | 43 | [How to integrate UML diagrams into GitLab or GitHub : stackoverflow.com](https://stackoverflow.com/questions/32203610/how-to-integrate-uml-diagrams-into-gitlab-or-github) 44 | 45 | [Diagrams For Documentation](https://gist.github.com/rodneyrehm/40e7946c0cff68a31cea) 46 | -------------------------------------------------------------------------------- /content/tools/fiddler.md: -------------------------------------------------------------------------------- 1 | # Fiddler 2 | 3 | > Fiddler, The free web debugging proxy for any browser, system or platform 4 | 5 | [http://www.telerik.com/fiddler](http://www.telerik.com/fiddler) 6 | -------------------------------------------------------------------------------- /content/tools/file-diff-online-tools.md: -------------------------------------------------------------------------------- 1 | # file diff online tools 2 | 3 | [diffchecker.com](https://www.diffchecker.com/diff) 4 | -------------------------------------------------------------------------------- /content/tools/git/git-articles-divers.md: -------------------------------------------------------------------------------- 1 | # Git - articles divers 2 | 3 | ## videos fr 4 | 5 | [explique convention commit angularjs pour avoir un historique Git propre](http://www.parleys.com/play/535a2846e4b03397a8eee892/chapter18/about) 6 | Correspond à [la doc de l'équipe Angular](https://github.com/MarcLoupias/github_memo_repo/blob/master/angular/angular.commit-msg-convention.git.txt) 7 | 8 | [France HTML5 - Git pro tips : Christophe Porteneuve - 20141226](https://www.youtube.com/watch?v=OMg7LfSuSUU) 9 | 10 | ## Git and SHA1 vulnerability 11 | 12 | [SHA1 broken in 2017](https://shattered.io/) 13 | 14 | [Linus Torvalds blog reaction](https://plus.google.com/+LinusTorvalds/posts/7tp2gYWQugL) about the collision attack PoC 15 | 16 | [stratégie de migration vers un algo de hash plus fort décrite dans le repo Git](https://github.com/git/git/blob/master/Documentation/technical/hash-function-transition.txt) 17 | 18 | ## bien utiliser `git merge` & `git rebase` 19 | 20 | [Bien utiliser `git merge` et `rebase`](http://www.git-attitude.fr/2014/05/04/bien-utiliser-git-merge-et-rebase/) 21 | 22 | [getting solid at `git rebase` vs `merge`](https://medium.com/@porteneuve/getting-solid-at-git-rebase-vs-merge-4fa1a48c53aa) 23 | 24 | ## différence entre un historique propre et un historique sale 25 | 26 | [cf A tidy, linear Git history](http://www.bitsnbites.eu/?p=221) 27 | -------------------------------------------------------------------------------- /content/tools/git/git-cheatsheet.md: -------------------------------------------------------------------------------- 1 | # Git - cheat sheet 2 | 3 | [http://ndpsoftware.com/git-cheatsheet.html](http://ndpsoftware.com/git-cheatsheet.html) (de ouf !) 4 | -------------------------------------------------------------------------------- /content/tools/git/git-cours.md: -------------------------------------------------------------------------------- 1 | # Git - cours 2 | 3 | - [cours Git CNRS](http://liris.cnrs.fr/~pchampin/enseignement/intro-git/) **très bon** 4 | - [cours Git Lille 1](http://www.cristal.univ-lille.fr/TPGIT/) **très bien aussi** 5 | -------------------------------------------------------------------------------- /content/tools/git/git-gitignore-example.md: -------------------------------------------------------------------------------- 1 | # Git - `.gitignore` 2 | 3 | ```text 4 | ###################### 5 | # Node 6 | ###################### 7 | /node/** 8 | /node_modules/** 9 | 10 | ###################### 11 | # SASS 12 | ###################### 13 | .sass-cache/** 14 | 15 | ###################### 16 | # Bower 17 | ###################### 18 | /bower_components/ 19 | 20 | ###################### 21 | # Eclipse 22 | ###################### 23 | *.pydevproject 24 | .project 25 | .metadata 26 | /bin/** 27 | /tmp/** 28 | /tmp/**/* 29 | *.tmp 30 | *.bak 31 | *.swp 32 | *~.nib 33 | local.properties 34 | .classpath 35 | .settings/** 36 | .loadpath 37 | /src/main/resources/rebel.xml 38 | 39 | # External tool builders 40 | .externalToolBuilders/** 41 | 42 | # Locally stored "Eclipse launch configurations" 43 | *.launch 44 | 45 | # CDT-specific 46 | .cproject 47 | 48 | # PDT-specific 49 | .buildpath 50 | 51 | ###################### 52 | # Intellij 53 | ###################### 54 | .idea/** 55 | *.iml 56 | *.iws 57 | *.ipr 58 | *.ids 59 | *.orig 60 | ###################### 61 | # Windows 62 | ###################### 63 | # Windows image file caches 64 | Thumbs.db 65 | 66 | # Folder config file 67 | Desktop.ini 68 | 69 | ###################### 70 | # Mac OSX 71 | ###################### 72 | .DS_Store 73 | .svn 74 | 75 | # Thumbnails 76 | ._* 77 | 78 | # Files that might appear on external disk 79 | .Spotlight-V100 80 | .Trashes 81 | 82 | ###################### 83 | # Directories 84 | ###################### 85 | /build/** 86 | /deploy/** 87 | /e2e/reports 88 | /unit.test 89 | 90 | ###################### 91 | # Logs 92 | ###################### 93 | *.log 94 | 95 | ###################### 96 | # Others 97 | ###################### 98 | *.*~ 99 | *~ 100 | .merge_file* 101 | ``` 102 | -------------------------------------------------------------------------------- /content/tools/git/git-reflog.md: -------------------------------------------------------------------------------- 1 | # Git - reflog 2 | 3 | [Refs & the reflog](https://www.atlassian.com/git/tutorials/refs-and-the-reflog/the-reflog) 4 | 5 | ## example usage 6 | 7 | ```bash 8 | $ git reflog 9 | 400e4b7 HEAD@{0}: checkout: moving from master to HEAD~2 10 | 0e25143 HEAD@{1}: commit (amend): Integrate some awesome feature into `master` 11 | 00f5425 HEAD@{2}: commit (merge): Merge branch ';feature'; 12 | ad8621a HEAD@{3}: commit: Finish the feature 13 | ``` 14 | 15 | If one of theses commit is not referenced in a branch or a tag, you can `cherry-pick` it anyway. That's why you can't lost anything with Git without destroying things explicitly. 16 | -------------------------------------------------------------------------------- /content/tools/git/git-tags-management.md: -------------------------------------------------------------------------------- 1 | # Git - tags management 2 | 3 | ## add a tag 4 | 5 | ```bash 6 | # create a tag on the current HEAD 7 | $ git tag -a v1.4 -m 'my version 1.4' 8 | 9 | # push it to the remote (push all the tags) 10 | $ git push --tags 11 | ``` 12 | 13 | ## list tags 14 | 15 | ```bash 16 | # list tags 17 | $ git tag 18 | ``` 19 | 20 | ## delete a tag 21 | 22 | ```bash 23 | # delete a tag locally 24 | git tag -d 0.0.1 25 | 26 | # sync the remote origin 27 | git push origin :refs/tags/0.0.1 28 | ``` 29 | 30 | ## find the last tag behind the commit 31 | 32 | ```bash 33 | $ git describe 08d029b 34 | # will output something like this : 35 | > 0.1.4-83-g08d029b 36 | # which means that the tag 08d029b is 83 commits after the last tag named 0.1.4 37 | ``` 38 | 39 | ## find the last tag containing the commit 40 | 41 | ```bash 42 | $ git describe --contains 08d029b 43 | # will output something like this : 44 | > 0.2.0~2 45 | # which means that the commit 08d029b is contained in the tag named 0.2.0 and it is 2 commits before the tag in the tree 46 | ``` 47 | -------------------------------------------------------------------------------- /content/tools/gitbook/gitbook-intro.md: -------------------------------------------------------------------------------- 1 | # gitbook intro 2 | 3 | [https://www.gitbook.com](https://www.gitbook.com) 4 | 5 | ## links 6 | 7 | [GitBook Toolchain Documentation](https://www.gitbook.com/book/gitbookio/docs-toolchain/details) 8 | 9 | [Learn Markdown](https://www.gitbook.com/book/gitbookio/markdown/details) 10 | 11 | [gitbook-cli local setup](https://github.com/GitbookIO/gitbook/blob/master/docs/setup.md) 12 | 13 | ## documentation 14 | 15 | - [GitBook Help Center](https://help.gitbook.com/?q=) 16 | 17 | > Global help about gitbook.com service 18 | 19 | - [GitBook FAQ](https://toolchain.gitbook.com/faq.html) 20 | 21 | > common questions and answers concerning the GitBook format and toolchain 22 | 23 | - [GitBook Plugins](https://plugins.gitbook.com/browse) 24 | 25 | > A GitBook plugin is a node package published on NPM that follow a defined convention. 26 | 27 | ## questions 28 | 29 | - [Can I use a custom domain for my book?](https://help.gitbook.com/books/can-i-use-custom-domain.html) 30 | 31 | - [How can I use Git to update my book?](https://help.gitbook.com/books/how-can-i-use-git.html) 32 | 33 | - [How can I allow comments on my book?](https://help.gitbook.com/books/how-can-i-allow-comments-on-my-book.html) 34 | 35 | - [Can I customize the design of my book?](https://help.gitbook.com/content/can-i-customize-design.html) 36 | 37 | - [How can I integrate dynamic content (such as video)?](https://help.gitbook.com/content/how-can-i-include-dynamic.html) 38 | 39 | - [Can I host my content on GitHub?](https://help.gitbook.com/github/can-i-host-on-github.html) 40 | 41 | ## search engine in books 42 | 43 | [Search content in your book](https://github.com/GitbookIO/plugin-search) 44 | 45 | [Power search using Algolia](https://github.com/GitbookIO/plugin-algolia) 46 | -------------------------------------------------------------------------------- /content/tools/jetbrains/jetbrains-overview.md: -------------------------------------------------------------------------------- 1 | # jetbrains - overview 2 | 3 | ## IntelliJ IDEA 4 | 5 | [ref card](http://www.jetbrains.com/idea/docs/IntelliJIDEA_ReferenceCard.pdf) 6 | 7 | ## WebStorm 8 | 9 | [WebStorm/PhpStorm double quotes in TypeScript auto import](https://stackoverflow.com/questions/39779272/webstorm-phpstorm-double-quotes-in-typescript-auto-import) 10 | 11 | **`import` : double quotes to single quote** 12 | 13 | To get `import { MyComponent } from './my.component';` instead of `import {MyComponent} from "./my.component";`. 14 | 15 | 1. Settings/Preferences 16 | 2. Editor | Code Style | TypeScript 17 | 3. "Punctuation" tab | Generated code -> Quote marks 18 | 19 | **`import` : curly brace spaces** 20 | 21 | To get `import { MyComponent } from './my.component';` instead of `import {MyComponent} from './my.component';`. 22 | 23 | Spaces | Whithin | ES6 import/export braces 24 | -------------------------------------------------------------------------------- /content/tools/json-web-token-tools.md: -------------------------------------------------------------------------------- 1 | # JWT tools 2 | 3 | [JWT Online debugger](https://jwt.io/) 4 | -------------------------------------------------------------------------------- /content/tools/npm/npm-on-windows.md: -------------------------------------------------------------------------------- 1 | # npm - windows 2 | 3 | - [npm3 on windows](https://catalystcode.github.io/case-studies/2015/09/30/npm3-windows.html) 4 | - [Tips & tricks for npm on windows](https://github.com/microsoft/nodejs-guidelines) 5 | - [nodejs-error-installing-with-npm](http://stackoverflow.com/questions/21365714/nodejs-error-installing-with-npm) 6 | -------------------------------------------------------------------------------- /content/tools/npm/npm-security.md: -------------------------------------------------------------------------------- 1 | # npm security 2 | 3 | ## two factor auth 4 | 5 | [Protect your npm account with two-factor authentication and read-only tokens - 20171004](https://blog.npmjs.org/post/166039777883/protect-your-npm-account-with-two-factor) 6 | 7 | > npm@5.5.1 or sup 8 | 9 | ## Node Security Platform 10 | 11 | [Node Security Platform](https://nodesecurity.io/) 12 | 13 | Called NSP. 14 | 15 | Analyze npm registry for vulnerabilities. 16 | 17 | [Vulnerabilities list here](https://nodesecurity.io/advisories). 18 | 19 | Powered by **Lift Security**. 20 | 21 | They do also code review on the npm CLI and on the registry source code and they conducts audits and penetration tests. 22 | 23 | They [have been acquired](https://medium.com/npm-inc/npm-acquires-lift-security-258e257ef639) by **npm inc** in april 2018. 24 | 25 | ## articles 26 | 27 | [Attitudes to security in the JavaScript community - 20180410](https://medium.com/npm-inc/security-in-the-js-community-4bac032e553b) 28 | 29 | > a survey of over 16,000 developers run by npm in collaboration with the Node.js Foundation and the JS Foundation 30 | > 31 | > Conclusions 32 | > 33 | > - Best practices like testing, linting, code reviews and security scans are a sign of an experienced developer. 34 | > - Strong majorities of JavaScript developers are concerned about the security both of the code they write and the open source code they use. 35 | > - But developers are more trusting of the security of open source code than their own. 36 | > - Developers are not happy with the options available to them for securing their code. 37 | -------------------------------------------------------------------------------- /content/tools/regex-online-tools.md: -------------------------------------------------------------------------------- 1 | # regex online tools 2 | 3 | [https://regex101.com/](https://regex101.com/) <--- top ! 4 | 5 | [https://www.regextester.com/](https://www.regextester.com/) 6 | -------------------------------------------------------------------------------- /content/tools/security-tools-online.md: -------------------------------------------------------------------------------- 1 | # security tools online 2 | 3 | [';--have i been pwned?](https://haveibeenpwned.com/) 4 | 5 | > Check if you have an account that has been compromised in a data breach 6 | 7 | Search based on email. Register the breaches and explain. 8 | -------------------------------------------------------------------------------- /content/tools/slides/fusuma/fusuma.md: -------------------------------------------------------------------------------- 1 | # fusuma 2 | 3 | [hiroppy/fusuma - `github.com`](https://github.com/hiroppy/fusuma) 4 | 5 | > Just write Markdown and create cool slides.sunglasses 6 | 7 | Demo at [`hiroppy.github.io/fusuma/intro`](https://hiroppy.github.io/fusuma/intro). 8 | 9 | The idea is to convert markdown files to a slides presentation. 10 | -------------------------------------------------------------------------------- /content/tools/slides/gitpitch/gitpitch-intro.md: -------------------------------------------------------------------------------- 1 | # gitpitch intro 2 | 3 | [https://gitpitch.com/](https://gitpitch.com/) 4 | 5 | > Markdown presentation for everyone on GitHub, GitLab, bitbucket 6 | > 7 | > How it works 8 | > 9 | > No more Keynote. 10 | > 11 | > No more PowerPoint. 12 | > 13 | > Just Markdown. 14 | > 15 | > Then Git-Commit. 16 | > 17 | > GitPitch is a service by developers for developers that generates beautiful, slideshow presentations directly from PITCHME.md markdown found in GitHub, GitLab and Bitbucket repos. 18 | -------------------------------------------------------------------------------- /content/tools/slides/slides.md: -------------------------------------------------------------------------------- 1 | # slides 2 | 3 | [gnab/remark - `github.com`](https://github.com/gnab/remark) [remarkjs.com](http://remarkjs.com/) 4 | 5 | > A simple, in-browser, markdown-driven slideshow tool. 6 | -------------------------------------------------------------------------------- /content/tools/slides/webslides/webslides.md: -------------------------------------------------------------------------------- 1 | # webslides 2 | 3 | [webslides/WebSlides - `github.com`](https://github.com/webslides/WebSlides) 4 | 5 | > Finally, everything you need to make HTML presentations, landings, and longforms in a beautiful way. Just a basic knowledge of HTML and CSS is required. 6 | -------------------------------------------------------------------------------- /content/tools/social/social-mastodon.md: -------------------------------------------------------------------------------- 1 | # Mastodon 2 | 3 | ## description 4 | 5 | > Mastodon is a **free, open-source** social network. A **decentralized** alternative to commercial platforms, it avoids the 6 | > risks of a single company monopolizing your communication. Pick a server that you trust — whichever you choose, you 7 | > can interact with everyone else. Anyone can run their own Mastodon instance and participate in the **social network** 8 | > seamlessly. 9 | 10 | ## liens 11 | 12 | [Mastodon (réseau social) : fr.wikipedia.org](https://fr.wikipedia.org/wiki/Mastodon_(r%C3%A9seau_social)) 13 | 14 | [Giving social networking back to you](https://joinmastodon.org/) 15 | 16 | [Finding an instance](https://instances.mastodon.xyz/) 17 | 18 | [mastodon.social](https://mastodon.social/about) 19 | 20 | [mastodon : `github.com`](https://github.com/tootsuite/mastodon) 21 | 22 | ## instances 23 | 24 | [La Quadrature du Net - Mastodon - Media Fédéré](https://mamot.fr/about) 25 | -------------------------------------------------------------------------------- /content/tools/testing/debug-js-in-webstorm.md: -------------------------------------------------------------------------------- 1 | # debug js in webstorm 2 | 3 | To debug JavaScript code in Webstorm via karma with Jasmine. 4 | 5 | ## prepare Karma 6 | 7 | [preparing-to-use-karma-test-runner](https://www.jetbrains.com/phpstorm/help/preparing-to-use-karma-test-runner.html) 8 | 9 | The [Karma website](http://karma-runner.github.io/0.12/index.html) 10 | 11 | ## config Karma 12 | 13 | A simple `karma.conf.js` file generated with the karma command line tool is ok. 14 | Like [this](http://karma-runner.github.io/0.12/intro/configuration.html) and [this](http://karma-runner.github.io/0.12/config/configuration-file.html) 15 | 16 | ## prepare Webstorm and a browser 17 | 18 | A browser is needed to execute js. Using Chrome we need a [JetBrains plugin](https://chrome.google.com/webstore/detail/jetbrains-ide-support/hmhgeddbohgjknpmjagkdomcpobmllji) 19 | 20 | Now create a Karma configuration in webstorm with the "Run/Debug Configurations" window. 21 | It is needed to tell Webstorm the `karma.conf.js` file to pick. 22 | 23 | ## running a test 24 | 25 | Select karma in the run/debug config combo box. 26 | Keep the unit test source code file selected in WS. 27 | Add some breakpoints. 28 | Clic on the debug button (or `MAJ + F9`) 29 | 30 | Enjoy 31 | 32 | [The Jasmine doc](http://jasmine.github.io/2.1/introduction.html) 33 | 34 | ## Video ressources 35 | 36 | [short vid (5mins) with basics](https://www.youtube.com/watch?v=oyWW_V4wALs) 37 | -------------------------------------------------------------------------------- /content/tools/testing/jasmine.md: -------------------------------------------------------------------------------- 1 | # jasmine 2 | 3 | [http://pivotal.github.io/jasmine/](http://pivotal.github.io/jasmine/) 4 | 5 | [http://en.wikipedia.org/wiki/Jasmine_%28JavaScript_framework%29](http://en.wikipedia.org/wiki/Jasmine_%28JavaScript_framework%29) 6 | -------------------------------------------------------------------------------- /content/tools/testing/qunit.md: -------------------------------------------------------------------------------- 1 | # QUnit 2 | 3 | Dev by JQuery team 4 | 5 | [http://qunitjs.com/](http://qunitjs.com/) 6 | 7 | [http://en.wikipedia.org/wiki/QUnit](http://en.wikipedia.org/wiki/QUnit) 8 | -------------------------------------------------------------------------------- /content/tools/testing/testing-tools-for-javascript.md: -------------------------------------------------------------------------------- 1 | # testing tools for JavaScript 2 | 3 | ## Testing Frameworks 4 | 5 | [Jasmine](https://jasmine.github.io/) 6 | 7 | [QUnit](https://qunitjs.com/) 8 | 9 | [Mocha](https://mochajs.org/) 10 | 11 | [AVA](https://github.com/avajs/ava) 12 | 13 | [baretest](https://github.com/volument/baretest) 14 | 15 | > An extremely fast and simple JavaScript test runner. 16 | 17 | [jestjs.io](https://jestjs.io/en/) 18 | 19 | ## articles 20 | 21 | [Jasmine vs. Mocha, Chai, and Sinon : thejsguy.com](http://thejsguy.com/2015/01/12/jasmine-vs-mocha-chai-and-sinon.html) 22 | 23 | [Mocha tutorial](http://unitjs.com/guide/mocha.html) 24 | -------------------------------------------------------------------------------- /content/tools/tools-auto-deps-update.md: -------------------------------------------------------------------------------- 1 | # automated dependencies updates 2 | 3 | Theses tools analyze your repository `package.json` (monorepo are supported) file(s) and open PR/MR to update deps. 4 | 5 | ## greenkeeper 6 | 7 | [greenkeeper.io](https://greenkeeper.io/) 8 | 9 | [greenkeeperio/greenkeeper](https://github.com/greenkeeperio/greenkeeper) 10 | 11 | GitHub and npm support only 12 | 13 | german company 14 | 15 | ## renovate 16 | 17 | [renovateapp.com](https://renovateapp.com/) 18 | 19 | [renovateapp/renovate](https://github.com/renovateapp/renovate) 20 | 21 | GitHub, GitLab (APIv4) and VSTS 22 | 23 | released in 2017 24 | 25 | > 26 | > Renovate is a project that started as a internal script, evolved to an open source project, and now is available as a GitHub App. 27 | > 28 | > The GitHub App and this website are hosted by Key Location, a company owned by Rhys Arkins, incorporated in Singapore since April 2014. 29 | > 30 | 31 | ## dependencies.io 32 | 33 | [dependencies.io](https://www.dependencies.io/) 34 | 35 | By [dropseed.io](https://www.dropseed.io/) 36 | 37 | > 38 | > Automated pull requests for all dependencies 39 | > 40 | > A single service for managing all of your dependencies. 41 | > 42 | > - Any language, any framework 43 | > - Built on open-source 44 | > - Version content discovery 45 | > - Docker containers 46 | > - A platform for developers 47 | > - One unified system 48 | > 49 | 50 | [Lowering prices for Dependencies.io - medium.com - 20171116](https://medium.com/dropseedlabs/lowering-prices-for-dependencies-io-a98ed919822c) 51 | -------------------------------------------------------------------------------- /content/tools/tools-bower.md: -------------------------------------------------------------------------------- 1 | # bower 2 | 3 | [http://bower.io/](http://bower.io/) 4 | 5 | ## what it is ? 6 | 7 | A package manager for the web 8 | 9 | ## project related files 10 | 11 | `.bowerrc` is the configuration file for bower 12 | `bower.json` define a bower package 13 | 14 | ## project related directories 15 | 16 | `bower_components` or `app/bower_components` depending on the app scaffold 17 | 18 | ## finding bower packages 19 | 20 | [http://sindresorhus.com/bower-components/](http://sindresorhus.com/bower-components/) 21 | 22 | ## commands 23 | 24 | `bower install` will install the dependencies defined in the current directory's `bower.json` 25 | 26 | `bower install ` will install the package 27 | 28 | `bower install #` will install the package at the specific version 29 | 30 | `bower uninstall ` will uninstall the package 31 | -------------------------------------------------------------------------------- /content/tools/tools-grunt.md: -------------------------------------------------------------------------------- 1 | # grunt 2 | 3 | [http://gruntjs.com/](http://gruntjs.com/) 4 | 5 | ## what it is ? 6 | 7 | A JavaScript task runner (like ant) used to build app 8 | 9 | ## getting started 10 | 11 | [http://gruntjs.com/getting-started](http://gruntjs.com/getting-started) 12 | 13 | ## project related files 14 | 15 | A typical setup will involve adding two files to your project: `package.json` and the `Gruntfile`. 16 | 17 | `package.json`: This file is used by `npm` to store metadata for projects published as `npm` modules. You will list grunt and the Grunt plugins your project needs as `devDependencies` in this file. 18 | 19 | `Gruntfile`: This file is named `Gruntfile.js` or `Gruntfile.coffee` and is used to configure or define tasks and load Grunt plugins. 20 | 21 | ## IntelliJ integration 22 | 23 | [http://javamind-fr.blogspot.fr/2013/06/lancer-les-commandes-grunt-dans.html](http://javamind-fr.blogspot.fr/2013/06/lancer-les-commandes-grunt-dans.html) 24 | 25 | ## grunt tasks list 26 | 27 | ### grunt-contrib-connect 28 | 29 | [https://github.com/gruntjs/grunt-contrib-connect](https://github.com/gruntjs/grunt-contrib-connect) 30 | 31 | This task launch a local webserver 32 | 33 | ### manage template in html 34 | 35 | [http://gruntjs.com/api/grunt.file](http://gruntjs.com/api/grunt.file) 36 | 37 | Exemple : 38 | 39 | ```javascript 40 | grunt.file.copy('src/' + filename + '.html', this.data.dir + '/index.html', { 41 | process: function (contents, path) { 42 | return grunt.template.process(contents, { 43 | data: { 44 | baseRef: base, 45 | scripts: jsFiles, 46 | styles: cssFiles, 47 | version: grunt.config('pkg.version'), 48 | date: grunt.template.today("yyyy-mm-dd HH:MM"), 49 | build: grunt.config('pkg.buildnumber') 50 | } 51 | }); 52 | } 53 | }); 54 | 55 | <%= baseRef %> inside html template 56 | ``` 57 | -------------------------------------------------------------------------------- /content/tools/tools-markdown-editor.md: -------------------------------------------------------------------------------- 1 | # markdown online editor 2 | 3 | [Online Markdown Showdown Editor](http://demos.anupshinde.com/markdown-editor/) - [usage](http://www.anupshinde.com/posts/online-markdown-showdown-editor/) 4 | -------------------------------------------------------------------------------- /content/tools/tools-yeoman.md: -------------------------------------------------------------------------------- 1 | # yeoman 2 | 3 | [http://yeoman.io/](http://yeoman.io/) 4 | 5 | ## what it is ? 6 | 7 | scaffolding tool (échaffaudage) (maven) 8 | use generators (generator-angular) to scaffold quickly a web app with all configured (grunt tasks, dependencies with bower, ...) 9 | 10 | ## Sources 11 | 12 | [https://github.com/yeoman/yeoman](https://github.com/yeoman/yeoman) 13 | 14 | ## Wiki 15 | 16 | [https://github.com/yeoman/yeoman/wiki/Generators](https://github.com/yeoman/yeoman/wiki/Generators) 17 | 18 | ## Generators 19 | 20 | [https://github.com/yeoman/generator-angular](https://github.com/yeoman/generator-angular) 21 | 22 | [https://www.npmjs.org/package/generator-angular](https://www.npmjs.org/package/generator-angular) 23 | 24 | ## installing a generator 25 | 26 | `npm install -g generator-_______` 27 | 28 | ## updating a generator 29 | 30 | `npm update -g generator-_______` 31 | 32 | ## uninstalling a generator 33 | 34 | `npm uninstall -g generator-_______` 35 | 36 | ## Good tutorial 37 | 38 | Linked from official yeoman website 39 | 40 | [http://net.tutsplus.com/tutorials/javascript-ajax/building-apps-with-the-yeoman-workflow/](http://net.tutsplus.com/tutorials/javascript-ajax/building-apps-with-the-yeoman-workflow/) 41 | 42 | [http://javamind-fr.blogspot.fr/2013/05/yeoman-ou-comment-etre-productif-quand.html](http://javamind-fr.blogspot.fr/2013/05/yeoman-ou-comment-etre-productif-quand.html) 43 | 44 | ## karma dependency error 45 | 46 | [http://stackoverflow.com/questions/22319397/running-yeoman-angular-generator-karma-dependency-error](http://stackoverflow.com/questions/22319397/running-yeoman-angular-generator-karma-dependency-error) 47 | -------------------------------------------------------------------------------- /content/tools/visual-studio-code.md: -------------------------------------------------------------------------------- 1 | # VSCode helper 2 | 3 | ## overview 4 | 5 | [vscode - `github.com/Microsoft`](https://github.com/Microsoft/vscode/) 6 | 7 | [downloads - `code.visualstudio.com`](https://code.visualstudio.com/download) 8 | 9 | [docs - `code.visualstudio.com`](https://code.visualstudio.com/docs) 10 | 11 | [vscode-tips-and-tricks - `github.com/Microsoft`](https://github.com/Microsoft/vscode-tips-and-tricks/blob/master/README.md) 12 | 13 | ## useful commands 14 | 15 | cmd+shift+p or F1 - display all commands available given the current context 16 | 17 | ctrl+p - quickly open files 18 | 19 | ctrl+maj+f - global search through the project files 20 | 21 | ## files tab management 22 | 23 | [How to Always Open Files in a New Tab - VSCode](https://vscode.one/new-tab-vscode/) 24 | 25 | - a file will stay open once it's been edited 26 | - Double-click your files instead of single-clicking. 27 | - Right click your tab and select "Keep Open" 28 | - Use the ctrl+K then Enter keyboard shortcut. 29 | - Double-click the tab you want to keep open 30 | - If it's an "ephemeral" tab, VS Code will show the file name in an *italicized text*. 31 | -------------------------------------------------------------------------------- /content/web/README.md: -------------------------------------------------------------------------------- 1 | # Web 2 | -------------------------------------------------------------------------------- /content/web/REST/open-api-initiative.md: -------------------------------------------------------------------------------- 1 | # Open Api Initiative 2 | 3 | [https://www.openapis.org/](https://www.openapis.org/) 4 | 5 | [https://github.com/OAI/OpenAPI-Specification](https://github.com/OAI/OpenAPI-Specification) 6 | 7 | > The Open API Initiative (OAI) was created by a consortium of forward-looking industry experts who recognize the immense value of standardizing on how REST APIs are described. As an open governance structure under the Linux Foundation, the OAI is focused on creating, evolving and promoting a vendor neutral description format. SmartBear Software is donating the Swagger Specification directly to the OAI as the basis of this Open Specification. 8 | > 9 | > APIs form the connecting glue between modern applications. Nearly every application uses APIs to connect with corporate data sources, third party data services or other applications. Creating an open description format for API services that is vendor neutral, portable and open is critical to accelerating the vision of a truly connected world. 10 | 11 | TLDR : Standardize a standard for describing RESTful API 12 | 13 | - [Initial creation announcement](https://www.openapis.org/announcement/2015/11/05/new-collaborative-project-to-extend-swagger-specification-for-building-connected-applications-and-services) 20151105 14 | - They are currently writing specification v3.0 on top of [swagger 2.0 specs](http://swagger.io/specification/) 15 | -------------------------------------------------------------------------------- /content/web/REST/rest-api-return-http-code.md: -------------------------------------------------------------------------------- 1 | # http code returned by API REST 2 | 3 | - **200 OK** - Response to a successful GET, PUT, PATCH or DELETE. Can also be used for a POST that doesn't result in a creation. 4 | - **201 Created** - Response to a POST that results in a creation. Should be combined with a Location header pointing to the location of the new resource 5 | - **204 No Content** - Response to a successful request that won't be returning a body (like a DELETE request) 6 | - **304 Not Modified** - Used when HTTP caching headers are in play 7 | - **400 Bad Request** - The request is malformed, such as if the body does not parse 8 | - **401 Unauthorized** - When no or invalid authentication details are provided. Also useful to trigger an auth popup if the API is used from a browser 9 | - **403 Forbidden** - When authentication succeeded but authenticated user doesn't have access to the resource 10 | - **404 Not Found** - When a non-existent resource is requested 11 | - **405 Method Not Allowed** - When an HTTP method is being requested that isn't allowed for the authenticated user 12 | - **410 Gone** - Indicates that the resource at this end point is no longer available. Useful as a blanket response for old API versions 13 | - **415 Unsupported Media Type** - If incorrect content type was provided as part of the request 14 | - **422 Unprocessable Entity** - Used for validation errors 15 | - **429 Too Many Requests** - When a request is rejected due to rate limiting 16 | 17 | - [choosing-an-http-status-code](http://racksburg.com/choosing-an-http-status-code/) 18 | 19 | ## Complete http status code list 20 | 21 | - [http-status-codes : www.iana.org](http://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml) 22 | -------------------------------------------------------------------------------- /content/web/REST/rest-design-tool-RAML.md: -------------------------------------------------------------------------------- 1 | # RAML 2 | 3 | [RAML une autre façon de concevoir vos APIs RESTful : Sébastien LECACHEUR Devoxx 2016](https://www.youtube.com/watch?v=4oLUXZXUZYc) 4 | 5 | [http://raml.org/](http://raml.org/) 6 | 7 | [La spec](https://github.com/raml-org/raml-spec) 8 | 9 | Permet de : 10 | 11 | - Design 12 | - Build 13 | - Test 14 | - Document 15 | - Share 16 | 17 | sur la base d'un simple fichier YAML descriptif de l'API 18 | 19 | En parallèle de Open API Initiative (non lié : cf [forums.raml.org](http://forums.raml.org/t/what-happens-with-raml-in-light-of-oai/1109/5)) 20 | -------------------------------------------------------------------------------- /content/web/REST/rest-design-tool-swagger-io.md: -------------------------------------------------------------------------------- 1 | # swagger.io 2 | 3 | ## links 4 | 5 | [main website](http://swagger.io/) 6 | 7 | [swagger specs 2.0](http://swagger.io/specification/) 8 | 9 | Backed by [Smartbear](https://smartbear.com/) 10 | 11 | [What is Swagger and Why it Matters](https://blog.readme.io/what-is-swagger-and-why-it-matters/) 20160710 12 | 13 | ## principles 14 | 15 | ### design 16 | 17 | `{ SWAGGER EDITOR }` 18 | 19 | > Design new APIs, or edit existing ones, in a powerful Editor which visually renders your Swagger definition with concise, real time feedback and error handling. 20 | 21 | ### build 22 | 23 | `{ SWAGGER CODEGEN }` 24 | 25 | > Quickly build APIs by turning your Swagger definition into code, generating server stubs and client libraries in over 40 different languages, allowing for faster deployment and better adoption. 26 | 27 | ### document 28 | 29 | `{ SWAGGER UI }` 30 | 31 | > Visualize your API's resources from its Swagger definition and generate beautiful, interactive documentation that can be hosted in any environment, allowing your end consumers to easily get started with your API. 32 | 33 | ## npm packages 34 | 35 | [https://www.npmjs.com/~swagger-api](https://www.npmjs.com/~swagger-api) 36 | 37 | [https://www.npmjs.com/package/swagger](https://www.npmjs.com/package/swagger) 38 | -------------------------------------------------------------------------------- /content/web/REST/rest-naming-convention-links.md: -------------------------------------------------------------------------------- 1 | # rest - conventions 2 | 3 | - [restfulresourcenaming](http://www.restapitutorial.com/lessons/restfulresourcenaming.html) 4 | - [naming-convention-guidelines-for-rest-apis](http://stackoverflow.com/questions/778203/are-there-any-naming-convention-guidelines-for-rest-apis) 5 | - [REST Webservices (post / put) : which type of parameter should I choose, and when?](http://programmers.stackexchange.com/questions/332637/rest-webservices-post-put-which-type-of-parameter-should-i-choose-and-whe) 6 | - [don't patch like an idiot](http://williamdurand.fr/2014/02/14/please-do-not-patch-like-an-idiot/) 7 | -------------------------------------------------------------------------------- /content/web/RFC/RFC-http.md: -------------------------------------------------------------------------------- 1 | # RFC HTTP 2 | 3 | - [RFC2616 - Hypertext Transfer Protocol -- HTTP/1.1](http://tools.ietf.org/html/rfc2616) 4 | - [RFC7230 – HTTP/1.1: Message Syntax and Routing](http://tools.ietf.org/html/rfc7230) 5 | - [RFC7231 – HTTP/1.1: Semantics and Content](http://tools.ietf.org/html/rfc7231) 6 | - [RFC7232 – HTTP/1.1: Conditional Requests](http://tools.ietf.org/html/rfc7232) 7 | - [RFC7233 – HTTP/1.1: Range Requests](http://tools.ietf.org/html/rfc7233) 8 | - [RFC7234 – HTTP/1.1: Caching](http://tools.ietf.org/html/rfc7234) 9 | - [RFC7235 – HTTP/1.1: Authentication](http://tools.ietf.org/html/rfc7235) 10 | -------------------------------------------------------------------------------- /content/web/RFC/RFC-overview.md: -------------------------------------------------------------------------------- 1 | # RFC overview 2 | 3 | ## Request for comments 4 | 5 | [RFC wikipedia fr](https://fr.wikipedia.org/wiki/Request_for_comments) 6 | 7 | > Les requests for comments (RFC), littéralement « demande de commentaires », sont une série numérotée de documents officiels décrivant les aspects techniques d'Internet, ou de différents matériels informatiques (routeurs, serveur DHCP). Peu de RFC sont des standards, mais tous les documents publiés par l'IETF sont des RFC. 8 | 9 | [RFC wikipedia en](https://en.wikipedia.org/wiki/Request_for_Comments) 10 | 11 | > A Request for Comments (RFC) is a type of publication from the Internet Engineering Task Force (IETF) and the Internet Society (ISOC), the principal technical development and standards-setting bodies for the Internet. 12 | 13 | ## Reading RFC 14 | 15 | Definitions about keyword for reading RFC : 16 | 17 | > key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" 18 | 19 | [Key words for use in RFCs to Indicate Requirement Levels](https://www.ietf.org/rfc/rfc2119.txt) 20 | 21 | ## RFC list 22 | 23 | [rfc-editor.org](http://www.rfc-editor.org/retrieve/) 24 | -------------------------------------------------------------------------------- /content/web/cookies/cookies.md: -------------------------------------------------------------------------------- 1 | # cookies 2 | 3 | Cookies are mainly used for these three purposes: 4 | 5 | - Session management (user logins, shopping carts) 6 | - Personalization (user preferences) 7 | - Tracking (analyzing user behavior) 8 | 9 | Cookies have also been used for general client-side storage. While this use could have been considered legitimate at a time when there was no other way to store data on the client side, it is no longer the case nowadays where web browsers are capable of using various storage APIs. Since cookies are sent along with every request, it can be an additional performance burden (especially for mobile web). 10 | 11 | ## Creating cookies 12 | 13 | When receiving an HTTP request, a server can send a `Set-Cookie` header with the response. The cookie is usually stored by the browser and, afterwards, the cookie value is sent along with every request made to the same server as the content of a Cookie HTTP header. Additionally, an expiration delay can be specified as well as restrictions to a specific domain and path, limiting how long and to which site the cookie is sent to. 14 | -------------------------------------------------------------------------------- /content/web/debug-chrome-android.md: -------------------------------------------------------------------------------- 1 | # debug chrome android 2 | 3 | [https://developer.chrome.com/devtools/docs/remote-debugging-legacy](https://developer.chrome.com/devtools/docs/remote-debugging-legacy) 4 | -------------------------------------------------------------------------------- /content/web/gestion-monetisation-web.md: -------------------------------------------------------------------------------- 1 | # gestion monétisation web 2 | 3 | ## déclarer ses revenus 4 | 5 | - [blogbuster.fr : Déclarer ses revenus Google AdSense aux impôts quand on est un particulier ou un auto-entrepreneur](http://blogbuster.fr/adsense/declarer-impots-google-adsense.htm) 6 | - [paypal & comptes ouverts à l'étranger](http://www.experts-comptables.fr/infos-dexperts/fiscal/la-declaration-des-comptes-ouverts-letranger-et-des-comptes-paypal---149) 7 | -------------------------------------------------------------------------------- /content/web/polyfills-shivs-shims.md: -------------------------------------------------------------------------------- 1 | # Polyfills, Shivs et Shims 2 | 3 | [HTML5 : Comprendre les Polyfills, Shivs et Shims](https://la-cascade.io/html5-comprendre-les-polyfills-shivs-et-shims/) 4 | 5 | Les shims sont un bout de code qui intercepte un appel API (en développement web, une requête pour une fonctionnalité HTML5, CSS ou JavaScript) et fournit un programme de remplacement. Les polyfills (le terme a été inventé par Remy Sharp) sont un shim simplifié, en ceci qu’ils sont du code ajouté dans la page pour donner au développeur la technologie dont il aurait besoin de manière native dans le navigateur. 6 | 7 | ## [modernizr](http://modernizr.com/docs/) 8 | 9 | lib js qui sert à : 10 | 11 | - détecter si les features HTML5 & CSS3 sont implémentées dans les browsers. 12 | - proposer une impl basique de certaines fonctionnalités. 13 | -------------------------------------------------------------------------------- /content/web/regex.md: -------------------------------------------------------------------------------- 1 | # regex 2 | 3 | ## ressources 4 | 5 | [regex101 online tester](https://regex101.com/) 6 | 7 | [Enfin maîtriser les Expressions Rationnelles - Christophe Porteneuve - `javascript.developpez.com` - 2014](https://javascript.developpez.com/tutoriels/maitriser-expressions-rationnelles/) 8 | 9 | ## exemples 10 | 11 | `/^[A-Za-z0-9]{18}[0-9]{2}$/` 12 | 13 | - `/` le premier slash indique le début de la regex 14 | - `^` indique le début de la string 15 | - `$` indique la fin de la string 16 | - `[A-Za-z0-9]` il s'agit d'une **classe** qui spécifie les caractères autorisés, en l'occurrence n'importe quel caractère alphabétique en majuscule ou minuscule ou n'importe quel chiffre 17 | - `{18}` il s'agit d'un **quantificateurs** qui permet d'indiquer le nombre de caractères (ou une plage par ex `{2.4}` signifie de 2 à 4 caractères) 18 | - `/` le dernier slash indique la fin de la regex 19 | 20 | Dans cet exemple on demande donc une chaine de caractères dont les 18 premiers sont alphanumériques et les 2 derniers numériques. 21 | -------------------------------------------------------------------------------- /content/web/shadow-dom.md: -------------------------------------------------------------------------------- 1 | # Shadow DOM 2 | 3 | Inclus dans les spécs des Web Components qui sont : 4 | 5 | - HTML Templates 6 | - Custom Elements 7 | - HTML Imports 8 | - Shadow DOM 9 | 10 | ## Buts 11 | 12 | Le but est de créer ses propres balises HTML (directives / components en angular) 13 | 14 | Buts du Shadow DOM : 15 | 16 | - Isoler le DOM (depuis l'extérieur, cacher l'arbre des composants du shadow DOM) 17 | - Contrôler la portée du CSS 18 | - le CSS de la page n'impacte pas le composant 19 | - le CSS du composant n'impacte pas la page 20 | 21 | ## Support navigateurs 22 | 23 | [http://caniuse.com/#feat=shadowdomv1](http://caniuse.com/#feat=shadowdomv1) 24 | 25 | Angular permet de supporter le shadow DOM du point de vue des composants. 26 | Option `ViewEncapsulation.Native` à ajouter à la définition du `@Component`. 27 | 28 | React et VuesJS ont du support via un module tiers. 29 | 30 | ## Avantages / inconvénients 31 | 32 | ### Avantages 33 | 34 | - Cloisonnement du CSS 35 | - Mécanisme de composition 36 | - Web Components 37 | - Standard W3C 38 | 39 | ### Inconvéninents 40 | 41 | - Support des navigateurs pas encore super top (2017) 42 | - Polyfills complexes 43 | - Partage de CSS commun compliqué (usage de CSS commun dans les composants) 44 | - Encapsulation du CSS (CSS modules + efficace) 45 | 46 | ## Ressources 47 | 48 | [Le ShadowDOM pour les nuls (Romain Linsolas) Devoxx2017](https://www.youtube.com/watch?v=IXBcboy4zaw) 49 | -------------------------------------------------------------------------------- /content/web/web-components.md: -------------------------------------------------------------------------------- 1 | # web components 2 | 3 | [www.webcomponents.org](https://www.webcomponents.org/) 4 | 5 | > Web components are a set of web platform APIs that allow you to create new custom, reusable, encapsulated HTML tags to use in web pages and web apps. Custom components and widgets build on the Web Component standards, will work across modern browsers, and can be used with any JavaScript library or framework that works with HTML. 6 | > 7 | > Web components are based on existing web standards. Features to support web components are currently being added to the HTML and DOM specs, letting web developers easily extend HTML with new elements with encapsulated styling and custom behavior. 8 | 9 | [caniuse.com (`web components`)](https://caniuse.com/#search=web%20components) 10 | 11 | ## articles 12 | 13 | [Web Components : l’adoption pourrait s’accélérer ! : blog.palo-it.com : 20171107](http://blog.palo-it.com/2017/11/07/web-components-ladoption-pourrait-saccelerer/) 14 | 15 | ## specs 16 | 17 | [w3c/webcomponents](https://github.com/w3c/webcomponents) 18 | 19 | ## polyfills 20 | 21 | [webcomponents.js (v1 spec polyfills)](https://github.com/webcomponents/webcomponentsjs) 22 | 23 | ## web components examples 24 | 25 | [GoogleWebComponents](https://github.com/GoogleWebComponents) 26 | 27 | > Official web components for Google's APIs and services 28 | -------------------------------------------------------------------------------- /content/web/web-scraping.md: -------------------------------------------------------------------------------- 1 | # web scraping 2 | 3 | ## what is it ? 4 | 5 | [Web scraping - fr.wikipedia.org/wiki/Web_scraping](https://fr.wikipedia.org/wiki/Web_scraping) 6 | 7 | > Le web scraping (parfois appelé harvesting) est une technique d'extraction du contenu de sites Web, via un script ou un programme, dans le but de le transformer pour permettre son utilisation dans un autre contexte, par exemple le référencement 8 | 9 | [Web scraping - en.wikipedia.org/wiki/Web_scraping](https://en.wikipedia.org/wiki/Web_scraping) 10 | 11 | > Web scraping, web harvesting, or web data extraction is data scraping used for extracting data from websites. 12 | 13 | ## legal 14 | 15 | [Microsoft ordered to let third parties scrape LinkedIn data - 20170815](https://www.theverge.com/2017/8/15/16148250/microsoft-linkedin-third-party-data-access-judge-ruling) 16 | 17 | Google don't like scraping but is doing it with Google News 18 | 19 | ## tools 20 | 21 | old one : PhantomJS 22 | 23 | new one : Headless browsers (ex : Chrome) 24 | 25 | [Web Scraping in 2017: Advanced Headless Chrome Tips & Tricks](https://blog.phantombuster.com/web-scraping-in-2017-headless-chrome-tips-tricks-4d6521d695e8) 26 | -------------------------------------------------------------------------------- /content/web/web-test-selenium.md: -------------------------------------------------------------------------------- 1 | # web test selenium 2 | 3 | [http://fr.wikipedia.org/wiki/Selenium_%28informatique%29](http://fr.wikipedia.org/wiki/Selenium_%28informatique%29) 4 | 5 | [http://fr.wikipedia.org/wiki/Selenium_IDE](http://fr.wikipedia.org/wiki/Selenium_IDE) 6 | 7 | [http://docs.seleniumhq.org/](http://docs.seleniumhq.org/) 8 | 9 | [Quick start](http://www.bryansgeekspeak.com/2014/03/automated-browser-testing-using-selenium.html) 10 | 11 | [Setting selenium speed](http://www.jnhasty.com/2013/02/15/using-the-setspeed-setting-in-selenium-standalone-htmlsuite-mode/) 12 | 13 | [Command line option](http://eswarg.blogspot.fr/2013/06/selenium-server-commandline-options.html) 14 | -------------------------------------------------------------------------------- /content/web/webassembly.md: -------------------------------------------------------------------------------- 1 | # WebAssembly 2 | 3 | [webassembly.org](http://webassembly.org/) 4 | 5 | [WebAssembly : `github.com`](https://github.com/WebAssembly) 6 | 7 | [WebAssembly : MDN : 201705xx](https://developer.mozilla.org/fr/docs/WebAssembly) 8 | 9 | > WebAssembly est un nouveau type de code qui peut être exécuté dans un navigateur web moderne. C'est un langage bas 10 | > niveau, semblable à l'assembleur permettant d'atteindre des performances proches des applications natives 11 | > (par exemple écrites en C/C++) tout en fonctionnant sur le Web. WebAssembly est conçu pour fonctionner en lien 12 | > avec JavaScript. 13 | 14 | [WebAssembly a-t-il pour vocation de remplacer à long terme JavaScript ?](https://www.developpez.com/actu/123097/WebAssembly-a-t-il-pour-vocation-de-remplacer-a-long-terme-JavaScript-Le-standard-est-au-centre-des-discussions-des-developpeurs-web/) 15 | -------------------------------------------------------------------------------- /docs/CNAME: -------------------------------------------------------------------------------- 1 | memo-dev.marc-loupias.fr 2 | -------------------------------------------------------------------------------- /docs/assets/img/search.83621669.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /docs/assets/js/102.791122c1.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[102],{270:function(r,e,t){"use strict";t.r(e);var n=t(0),a=Object(n.a)({},(function(){var r=this,e=r._self._c;return e("div",{staticClass:"content"},[r._m(0),r._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"http://lostechies.com/gabrielschenker/2014/01/14/angularjspart-9-values-and-constants/",target:"_blank",rel:"noopener noreferrer"}},[r._v("value & constant"),e("OutboundLink")],1)]),r._v(" "),e("li",[e("a",{attrs:{href:"https://groups.google.com/forum/#!topic/angular/hVrkvaHGOfc",target:"_blank",rel:"noopener noreferrer"}},[r._v("service, factory & provider"),e("OutboundLink")],1)]),r._v(" "),e("li",[e("a",{attrs:{href:"https://gist.github.com/Mithrandir0x/3639232",target:"_blank",rel:"noopener noreferrer"}},[e("code",[r._v("gist.github.com")]),r._v(" : Difference between Service, Factory and Provider in AngularJS"),e("OutboundLink")],1)]),r._v(" "),e("li",[e("a",{attrs:{href:"http://www.angular-js.fr/les-services-angularjs/",target:"_blank",rel:"noopener noreferrer"}},[r._v("les-services-angularjs"),e("OutboundLink")],1)]),r._v(" "),e("li",[e("a",{attrs:{href:"http://www.angular-js.fr/astuce-angularjs-restreindre-resultats-ng-repeat/",target:"_blank",rel:"noopener noreferrer"}},[r._v("astuce-angularjs-restreindre-resultats-ng-repeat"),e("OutboundLink")],1)]),r._v(" "),e("li",[e("a",{attrs:{href:"http://angular-tips.com/blog/2013/08/understanding-service-types/",target:"_blank",rel:"noopener noreferrer"}},[r._v("understanding-service-types"),e("OutboundLink")],1)])])])}),[function(){var r=this._self._c;return r("h1",{attrs:{id:"angularjs-services"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#angularjs-services"}},[this._v("#")]),this._v(" AngularJS - services")])}],!1,null,null,null);e.default=a.exports}}]); -------------------------------------------------------------------------------- /docs/assets/js/12.a801960e.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[12],{180:function(s,t,e){"use strict";e.r(t);var i=e(0),n=Object(i.a)({},(function(){this._self._c;return this._m(0)}),[function(){var s=this._self._c;return s("div",{staticClass:"content"},[s("h1",{attrs:{id:"devops"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#devops"}},[this._v("#")]),this._v(" DevOps")]),this._v(" "),s("p",[s("img",{attrs:{src:"/images/devops/devops.jpg",alt:"DevOps Pipeline"}})])])}],!1,null,null,null);t.default=n.exports}}]); -------------------------------------------------------------------------------- /docs/assets/js/120.15cc4ab9.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[120],{288:function(a,t,r){"use strict";r.r(t);var n=r(0),e=Object(n.a)({},(function(){var a=this._self._c;return a("div",{staticClass:"content"},[this._m(0),this._v(" "),a("p",[a("a",{attrs:{href:"http://www.playframework.com/documentation/2.3-SNAPSHOT/JavaAsync",target:"_blank",rel:"noopener noreferrer"}},[this._v("http://www.playframework.com/documentation/2.3-SNAPSHOT/JavaAsync"),a("OutboundLink")],1)]),this._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/playframework/playframework/pull/2284",target:"_blank",rel:"noopener noreferrer"}},[this._v("https://github.com/playframework/playframework/pull/2284"),a("OutboundLink")],1)])])}),[function(){var a=this._self._c;return a("h1",{attrs:{id:"java-play-async"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#java-play-async"}},[this._v("#")]),this._v(" java - play - async")])}],!1,null,null,null);t.default=e.exports}}]); -------------------------------------------------------------------------------- /docs/assets/js/121.8443ba67.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[121],{289:function(t,i,s){"use strict";s.r(i);var e=s(0),a=Object(e.a)({},(function(){var t=this._self._c;return t("div",{staticClass:"content"},[this._m(0),this._v(" "),t("p",[t("a",{attrs:{href:"https://github.com/mpeltonen/sbt-idea",target:"_blank",rel:"noopener noreferrer"}},[this._v("utiliser le plugin sbt"),t("OutboundLink")],1)]),this._v(" "),this._m(1),this._v(" "),this._m(2)])}),[function(){var t=this._self._c;return t("h1",{attrs:{id:"java-play-config-idea"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#java-play-config-idea"}},[this._v("#")]),this._v(" java - play - config idea")])},function(){var t=this._self._c;return t("p",[this._v("il faut ajouter la ligne "),t("code",[this._v('addSbtPlugin("com.github.mpeltonen" %% "sbt-idea" % "1.5.2")')]),this._v(" au fichier "),t("code",[this._v("plugins.sbt")]),this._v(".")])},function(){var t=this._self._c;return t("p",[this._v("puis exec dans la console play la commande "),t("code",[this._v("gen-idea")]),this._v(".")])}],!1,null,null,null);i.default=a.exports}}]); -------------------------------------------------------------------------------- /docs/assets/js/122.38632ecc.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[122],{290:function(t,e,o){"use strict";o.r(e);var r=o(0),n=Object(r.a)({},(function(){var t=this._self._c;return t("div",{staticClass:"content"},[this._m(0),this._v(" "),t("p",[t("a",{attrs:{href:"http://stackoverflow.com/questions/14673722/maintaining-seperate-dev-prod-config-files-on-heroku-doesnt-work",target:"_blank",rel:"noopener noreferrer"}},[this._v("http://stackoverflow.com/questions/14673722/maintaining-seperate-dev-prod-config-files-on-heroku-doesnt-work"),t("OutboundLink")],1)]),this._v(" "),t("p",[t("a",{attrs:{href:"http://stackoverflow.com/questions/6699955/playframework-route-file-separate-production-routes-from-dev-routes/6703337#6703337",target:"_blank",rel:"noopener noreferrer"}},[this._v("logic in application.conf"),t("OutboundLink")],1)]),this._v(" "),t("p",[t("a",{attrs:{href:"https://github.com/typesafehub/config",target:"_blank",rel:"noopener noreferrer"}},[this._v("code source de l'api embarquée par Play pour gérer application.conf"),t("OutboundLink")],1)])])}),[function(){var t=this._self._c;return t("h1",{attrs:{id:"java-play-gestion-config"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#java-play-gestion-config"}},[this._v("#")]),this._v(" java - play - gestion config")])}],!1,null,null,null);e.default=n.exports}}]); -------------------------------------------------------------------------------- /docs/assets/js/127.e913862e.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[127],{295:function(t,n,i){"use strict";i.r(n);var e=i(0),s=Object(e.a)({},(function(){var t=this._self._c;return t("div",{staticClass:"content"},[this._m(0),this._v(" "),t("p",[this._v("JSONP nice explanation on "),t("a",{attrs:{href:"http://en.wikipedia.org/wiki/JSONP",target:"_blank",rel:"noopener noreferrer"}},[this._v("wikipedia.en"),t("OutboundLink")],1)])])}),[function(){var t=this._self._c;return t("h1",{attrs:{id:"jsonp"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#jsonp"}},[this._v("#")]),this._v(" JSONP")])}],!1,null,null,null);n.default=s.exports}}]); -------------------------------------------------------------------------------- /docs/assets/js/128.7e5ddd4b.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[128],{296:function(s,t,r){"use strict";r.r(t);var u=r(0),e=Object(u.a)({},(function(){this._self._c;return this._m(0)}),[function(){var s=this._self._c;return s("div",{staticClass:"content"},[s("h1",{attrs:{id:"infrastructures-a-clefs-publiques"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#infrastructures-a-clefs-publiques"}},[this._v("#")]),this._v(" Infrastructures à Clefs Publiques")]),this._v(" "),s("p",[this._v("(Public Key Infrastructures)")])])}],!1,null,null,null);t.default=e.exports}}]); -------------------------------------------------------------------------------- /docs/assets/js/129.002c7aa1.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[129],{297:function(t,s,i){"use strict";i.r(s);var n=i(0),e=Object(n.a)({},(function(){this._self._c;return this._m(0)}),[function(){var t=this._self._c;return t("div",{staticClass:"content"},[t("h1",{attrs:{id:"security"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#security"}},[this._v("#")]),this._v(" Security")])])}],!1,null,null,null);s.default=e.exports}}]); -------------------------------------------------------------------------------- /docs/assets/js/135.66cbd4cc.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[135],{303:function(t,n,e){"use strict";e.r(n);var s=e(0),i=Object(s.a)({},(function(){this._self._c;return this._m(0)}),[function(){var t=this._self._c;return t("div",{staticClass:"content"},[t("h1",{attrs:{id:"software-engineering"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#software-engineering"}},[this._v("#")]),this._v(" Software-engineering")])])}],!1,null,null,null);n.default=i.exports}}]); -------------------------------------------------------------------------------- /docs/assets/js/149.8e621f2b.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[149],{317:function(t,e,r){"use strict";r.r(e);var s=r(0),n=Object(s.a)({},(function(){var t=this._self._c;return t("div",{staticClass:"content"},[this._m(0),this._v(" "),t("p",[this._v("Conventions pour le versionning :")]),this._v(" "),t("p",[t("a",{attrs:{href:"http://semver.org/",target:"_blank",rel:"noopener noreferrer"}},[this._v("http://semver.org/"),t("OutboundLink")],1)]),this._v(" "),t("p",[this._v("Conventions sur certains mots (MUST, MAY, ...) : "),t("a",{attrs:{href:"http://tools.ietf.org/html/rfc2119",target:"_blank",rel:"noopener noreferrer"}},[this._v("RFC2119"),t("OutboundLink")],1)])])}),[function(){var t=this._self._c;return t("h1",{attrs:{id:"semver"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#semver"}},[this._v("#")]),this._v(" semver")])}],!1,null,null,null);e.default=n.exports}}]); -------------------------------------------------------------------------------- /docs/assets/js/153.b722b4a5.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[153],{321:function(s,t,n){"use strict";n.r(t);var e=n(0),a=Object(e.a)({},(function(){this._self._c;return this._m(0)}),[function(){var s=this._self._c;return s("div",{staticClass:"content"},[s("h1",{attrs:{id:"systems"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#systems"}},[this._v("#")]),this._v(" Systems")])])}],!1,null,null,null);t.default=a.exports}}]); -------------------------------------------------------------------------------- /docs/assets/js/163.45da41a3.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[163],{331:function(t,e,r){"use strict";r.r(e);var o=r(0),s=Object(o.a)({},(function(){var t=this,e=t._self._c;return e("div",{staticClass:"content"},[t._m(0),t._v(" "),t._m(1),t._v(" "),e("p",[e("a",{attrs:{href:"https://www.ubuntu.com/download/desktop/create-a-usb-stick-on-windows",target:"_blank",rel:"noopener noreferrer"}},[t._v("How to create a bootable USB stick on Windows : www.ubuntu.com"),e("OutboundLink")],1)]),t._v(" "),e("p",[e("a",{attrs:{href:"http://rufus.akeo.ie/?locale=en_US/",target:"_blank",rel:"noopener noreferrer"}},[t._v("rufus : rufus.akeo.ie"),e("OutboundLink")],1)]),t._v(" "),t._m(2)])}),[function(){var t=this._self._c;return t("h1",{attrs:{id:"create-usb-boot"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#create-usb-boot"}},[this._v("#")]),this._v(" create usb boot")])},function(){var t=this._self._c;return t("h2",{attrs:{id:"from-windows"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#from-windows"}},[this._v("#")]),this._v(" from windows")])},function(){var t=this._self._c;return t("blockquote",[t("p",[this._v("Create bootable USB drives the easy way")])])}],!1,null,null,null);e.default=s.exports}}]); -------------------------------------------------------------------------------- /docs/assets/js/165.15fa4c5e.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[165],{333:function(t,a,r){"use strict";r.r(a);var s=r(0),e=Object(s.a)({},(function(){var t=this._self._c;return t("div",{staticClass:"content"},[this._m(0),this._v(" "),this._m(1),this._v(" "),t("p",[t("a",{attrs:{href:"https://forum.ubuntu-fr.org/viewtopic.php?pid=3336511#p3336511",target:"_blank",rel:"noopener noreferrer"}},[this._v("Source forum Ubuntu"),t("OutboundLink")],1)]),this._v(" "),this._m(2)])}),[function(){var t=this._self._c;return t("h1",{attrs:{id:"ubuntu-pdf"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ubuntu-pdf"}},[this._v("#")]),this._v(" ubuntu - pdf")])},function(){var t=this._self._c;return t("h2",{attrs:{id:"reduire-la-taille-d-un-pdf"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#reduire-la-taille-d-un-pdf"}},[this._v("#")]),this._v(" réduire la taille d'un pdf")])},function(){var t=this,a=t._self._c;return a("div",{staticClass:"language-bash line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[t._v("gs "),a("span",{pre:!0,attrs:{class:"token parameter variable"}},[t._v("-dBATCH")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token parameter variable"}},[t._v("-dNOPAUSE")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token parameter variable"}},[t._v("-q")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token parameter variable"}},[t._v("-sDEVICE")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("pdfwrite "),a("span",{pre:!0,attrs:{class:"token parameter variable"}},[t._v("-sOutputFile")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("out.pdf tonfichier.pdf\n")])]),t._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[t._v("1")]),a("br")])])}],!1,null,null,null);a.default=e.exports}}]); -------------------------------------------------------------------------------- /docs/assets/js/167.80bcf00c.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[167],{335:function(s,t,i){"use strict";i.r(t);var e=i(0),n=Object(e.a)({},(function(){var s=this._self._c;return s("div",{staticClass:"content"},[this._m(0),this._v(" "),s("p",[s("a",{attrs:{href:"https://answers.microsoft.com/en-us/insider/forum/insider_wintp-insider_update/is-there-built-in-checksum-for-win-10/8dba82be-f036-4460-b427-954e057b678a",target:"_blank",rel:"noopener noreferrer"}},[this._v("Is there built in checksum for win 10? answers.microsoft.com"),s("OutboundLink")],1)]),this._v(" "),this._m(1),this._v(" "),s("p",[this._v("Testé, fonctionne bien.")])])}),[function(){var s=this._self._c;return s("h1",{attrs:{id:"check-hash-on-windows"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#check-hash-on-windows"}},[this._v("#")]),this._v(" check hash on windows")])},function(){var s=this._self._c;return s("blockquote",[s("p",[this._v("CMD as admin")]),this._v(" "),s("p",[this._v("CertUtility can be used to verify md2,3,4,5 SHA1,256,384,512")]),this._v(" "),s("p",[this._v("Example "),s("code",[this._v("C:\\Windows\\system32>CertUtil -hashfile C:\\Users\\other\\Downloads\\Zorin9\\zorin-os-9.1-core-64.iso MD5")])])])}],!1,null,null,null);t.default=n.exports}}]); -------------------------------------------------------------------------------- /docs/assets/js/169.2969a64c.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[169],{337:function(t,s,n){"use strict";n.r(s);var o=n(0),a=Object(o.a)({},(function(){this._self._c;return this._m(0)}),[function(){var t=this._self._c;return t("div",{staticClass:"content"},[t("h1",{attrs:{id:"tools"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#tools"}},[this._v("#")]),this._v(" Tools")])])}],!1,null,null,null);s.default=a.exports}}]); -------------------------------------------------------------------------------- /docs/assets/js/170.cf0428dd.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[170],{338:function(t,e,s){"use strict";s.r(e);var r=s(0),a=Object(r.a)({},(function(){var t=this,e=t._self._c;return e("div",{staticClass:"content"},[t._m(0),t._v(" "),t._m(1),t._v(" "),e("p",[e("a",{attrs:{href:"https://devhints.io/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Rico's cheatsheets"),e("OutboundLink")],1)]),t._v(" "),t._m(2),t._v(" "),e("p",[e("a",{attrs:{href:"https://github.com/rstacruz/cheatsheets",target:"_blank",rel:"noopener noreferrer"}},[e("code",[t._v("github.com/rstacruz/cheatsheets")]),e("OutboundLink")],1)])])}),[function(){var t=this._self._c;return t("h1",{attrs:{id:"cheat-sheets"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#cheat-sheets"}},[this._v("#")]),this._v(" cheat sheets")])},function(){var t=this._self._c;return t("h2",{attrs:{id:"rico-s-cheatsheets"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#rico-s-cheatsheets"}},[this._v("#")]),this._v(" rico's cheatsheets")])},function(){var t=this._self._c;return t("blockquote",[t("p",[this._v("TL;DR for developer documentation - a ridiculous collection of cheatsheets")])])}],!1,null,null,null);e.default=a.exports}}]); -------------------------------------------------------------------------------- /docs/assets/js/174.138eae9f.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[174],{342:function(t,e,r){"use strict";r.r(e);var i=r(0),s=Object(i.a)({},(function(){var t=this._self._c;return t("div",{staticClass:"content"},[this._m(0),this._v(" "),this._m(1),this._v(" "),t("p",[t("a",{attrs:{href:"http://www.telerik.com/fiddler",target:"_blank",rel:"noopener noreferrer"}},[this._v("http://www.telerik.com/fiddler"),t("OutboundLink")],1)])])}),[function(){var t=this._self._c;return t("h1",{attrs:{id:"fiddler"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#fiddler"}},[this._v("#")]),this._v(" Fiddler")])},function(){var t=this._self._c;return t("blockquote",[t("p",[this._v("Fiddler, The free web debugging proxy for any browser, system or platform")])])}],!1,null,null,null);e.default=s.exports}}]); -------------------------------------------------------------------------------- /docs/assets/js/175.6f9f70a8.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[175],{343:function(t,e,i){"use strict";i.r(e);var n=i(0),s=Object(n.a)({},(function(){var t=this._self._c;return t("div",{staticClass:"content"},[this._m(0),this._v(" "),t("p",[t("a",{attrs:{href:"https://www.diffchecker.com/diff",target:"_blank",rel:"noopener noreferrer"}},[this._v("diffchecker.com"),t("OutboundLink")],1)])])}),[function(){var t=this._self._c;return t("h1",{attrs:{id:"file-diff-online-tools"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#file-diff-online-tools"}},[this._v("#")]),this._v(" file diff online tools")])}],!1,null,null,null);e.default=s.exports}}]); -------------------------------------------------------------------------------- /docs/assets/js/177.8aabc5b5.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[177],{345:function(t,e,s){"use strict";s.r(e);var h=s(0),a=Object(h.a)({},(function(){var t=this._self._c;return t("div",{staticClass:"content"},[this._m(0),this._v(" "),t("p",[t("a",{attrs:{href:"http://ndpsoftware.com/git-cheatsheet.html",target:"_blank",rel:"noopener noreferrer"}},[this._v("http://ndpsoftware.com/git-cheatsheet.html"),t("OutboundLink")],1),this._v(" (de ouf !)")])])}),[function(){var t=this._self._c;return t("h1",{attrs:{id:"git-cheat-sheet"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#git-cheat-sheet"}},[this._v("#")]),this._v(" Git - cheat sheet")])}],!1,null,null,null);e.default=a.exports}}]); -------------------------------------------------------------------------------- /docs/assets/js/179.40011da2.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[179],{347:function(t,r,n){"use strict";n.r(r);var e=n(0),s=Object(e.a)({},(function(){var t=this,r=t._self._c;return r("div",{staticClass:"content"},[t._m(0),t._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"http://liris.cnrs.fr/~pchampin/enseignement/intro-git/",target:"_blank",rel:"noopener noreferrer"}},[t._v("cours Git CNRS"),r("OutboundLink")],1),t._v(" "),r("strong",[t._v("très bon")])]),t._v(" "),r("li",[r("a",{attrs:{href:"http://www.cristal.univ-lille.fr/TPGIT/",target:"_blank",rel:"noopener noreferrer"}},[t._v("cours Git Lille 1"),r("OutboundLink")],1),t._v(" "),r("strong",[t._v("très bien aussi")])])])])}),[function(){var t=this._self._c;return t("h1",{attrs:{id:"git-cours"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#git-cours"}},[this._v("#")]),this._v(" Git - cours")])}],!1,null,null,null);r.default=s.exports}}]); -------------------------------------------------------------------------------- /docs/assets/js/19.2e99e9f2.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[19],{187:function(e,t,r){"use strict";r.r(t);var n=r(0),s=Object(n.a)({},(function(){var e=this,t=e._self._c;return t("div",{staticClass:"content"},[e._m(0),e._v(" "),t("p",[e._v("Plateforme d'orchestration de containers.")]),e._v(" "),t("p",[t("a",{attrs:{href:"https://kubernetes.io/",target:"_blank",rel:"noopener noreferrer"}},[t("code",[e._v("kubernetes.io")]),t("OutboundLink")],1)]),e._v(" "),t("p",[t("a",{attrs:{href:"https://github.com/kubernetes",target:"_blank",rel:"noopener noreferrer"}},[t("code",[e._v("github.com/kubernetes")]),t("OutboundLink")],1)]),e._v(" "),e._m(1),e._v(" "),e._m(2),e._v(" "),t("p",[e._v("First "),t("a",{attrs:{href:"https://github.com/kubernetes/kubernetes/releases/tag/v0.2",target:"_blank",rel:"noopener noreferrer"}},[e._v("release v0.2"),t("OutboundLink")],1),e._v(" september 2014.")]),e._v(" "),t("p",[t("a",{attrs:{href:"https://fr.wikipedia.org/wiki/Kubernetes",target:"_blank",rel:"noopener noreferrer"}},[e._v("Kubernetes - "),t("code",[e._v("fr.wikipedia.org")]),t("OutboundLink")],1)]),e._v(" "),t("p",[t("a",{attrs:{href:"https://www.youtube.com/watch?v=PH-2FfFD2PU",target:"_blank",rel:"noopener noreferrer"}},[e._v("Kubernetes in 5 mins - VMware Cloud-Native"),t("OutboundLink")],1)])])}),[function(){var e=this._self._c;return e("h1",{attrs:{id:"devops-kubernetes"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#devops-kubernetes"}},[this._v("#")]),this._v(" devops - kubernetes")])},function(){var e=this._self._c;return e("blockquote",[e("p",[this._v("Kubernetes is an open-source system for automating deployment, scaling, and management of containerized applications.")])])},function(){var e=this._self._c;return e("p",[this._v("Abbreviated "),e("code",[this._v("K8s")]),this._v(".")])}],!1,null,null,null);t.default=s.exports}}]); -------------------------------------------------------------------------------- /docs/assets/js/193.f855ee34.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[193],{361:function(t,s,n){"use strict";n.r(s);var e=n(0),r=Object(e.a)({},(function(){var t=this._self._c;return t("div",{staticClass:"content"},[this._m(0),this._v(" "),t("p",[t("a",{attrs:{href:"https://jwt.io/",target:"_blank",rel:"noopener noreferrer"}},[this._v("JWT Online debugger"),t("OutboundLink")],1)])])}),[function(){var t=this._self._c;return t("h1",{attrs:{id:"jwt-tools"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#jwt-tools"}},[this._v("#")]),this._v(" JWT tools")])}],!1,null,null,null);s.default=r.exports}}]); -------------------------------------------------------------------------------- /docs/assets/js/196.79e2e0e7.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[196],{364:function(t,n,s){"use strict";s.r(n);var r=s(0),e=Object(r.a)({},(function(){var t=this._self._c;return t("div",{staticClass:"content"},[this._m(0),this._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"https://catalystcode.github.io/case-studies/2015/09/30/npm3-windows.html",target:"_blank",rel:"noopener noreferrer"}},[this._v("npm3 on windows"),t("OutboundLink")],1)]),this._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/microsoft/nodejs-guidelines",target:"_blank",rel:"noopener noreferrer"}},[this._v("Tips & tricks for npm on windows"),t("OutboundLink")],1)]),this._v(" "),t("li",[t("a",{attrs:{href:"http://stackoverflow.com/questions/21365714/nodejs-error-installing-with-npm",target:"_blank",rel:"noopener noreferrer"}},[this._v("nodejs-error-installing-with-npm"),t("OutboundLink")],1)])])])}),[function(){var t=this._self._c;return t("h1",{attrs:{id:"npm-windows"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#npm-windows"}},[this._v("#")]),this._v(" npm - windows")])}],!1,null,null,null);n.default=e.exports}}]); -------------------------------------------------------------------------------- /docs/assets/js/2.b7b184ab.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[2],{167:function(t,e,n){},168:function(t,e,n){"use strict";n(167)},170:function(t,e,n){"use strict";n.r(e);var i={functional:!0,props:{type:{type:String,default:"tip"},text:String,vertical:{type:String,default:"top"}},render:function(t,e){var n=e.props,i=e.slots;return t("span",{class:["badge",n.type,n.vertical]},n.text||i().default)}},p=(n(168),n(0)),r=Object(p.a)(i,void 0,void 0,!1,null,"099ab69c",null);e.default=r.exports}}]); -------------------------------------------------------------------------------- /docs/assets/js/201.28642d7b.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[201],{369:function(t,e,r){"use strict";r.r(e);var s=r(0),n=Object(s.a)({},(function(){var t=this._self._c;return t("div",{staticClass:"content"},[this._m(0),this._v(" "),t("p",[t("a",{attrs:{href:"https://regex101.com/",target:"_blank",rel:"noopener noreferrer"}},[this._v("https://regex101.com/"),t("OutboundLink")],1),this._v(" <--- top !")]),this._v(" "),t("p",[t("a",{attrs:{href:"https://www.regextester.com/",target:"_blank",rel:"noopener noreferrer"}},[this._v("https://www.regextester.com/"),t("OutboundLink")],1)])])}),[function(){var t=this._self._c;return t("h1",{attrs:{id:"regex-online-tools"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#regex-online-tools"}},[this._v("#")]),this._v(" regex online tools")])}],!1,null,null,null);e.default=n.exports}}]); -------------------------------------------------------------------------------- /docs/assets/js/202.10c75ca3.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[202],{370:function(t,e,n){"use strict";n.r(e);var s=n(0),i=Object(s.a)({},(function(){var t=this._self._c;return t("div",{staticClass:"content"},[this._m(0),this._v(" "),t("p",[t("a",{attrs:{href:"https://haveibeenpwned.com/",target:"_blank",rel:"noopener noreferrer"}},[this._v("';--have i been pwned?"),t("OutboundLink")],1)]),this._v(" "),this._m(1),this._v(" "),t("p",[this._v("Search based on email. Register the breaches and explain.")])])}),[function(){var t=this._self._c;return t("h1",{attrs:{id:"security-tools-online"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#security-tools-online"}},[this._v("#")]),this._v(" security tools online")])},function(){var t=this._self._c;return t("blockquote",[t("p",[this._v("Check if you have an account that has been compromised in a data breach")])])}],!1,null,null,null);e.default=i.exports}}]); -------------------------------------------------------------------------------- /docs/assets/js/203.5bf8189c.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[203],{371:function(t,e,r){"use strict";r.r(e);var s=r(0),n=Object(s.a)({},(function(){var t=this,e=t._self._c;return e("div",{staticClass:"content"},[t._m(0),t._v(" "),e("p",[e("a",{attrs:{href:"https://github.com/hiroppy/fusuma",target:"_blank",rel:"noopener noreferrer"}},[t._v("hiroppy/fusuma - "),e("code",[t._v("github.com")]),e("OutboundLink")],1)]),t._v(" "),t._m(1),t._v(" "),e("p",[t._v("Demo at "),e("a",{attrs:{href:"https://hiroppy.github.io/fusuma/intro",target:"_blank",rel:"noopener noreferrer"}},[e("code",[t._v("hiroppy.github.io/fusuma/intro")]),e("OutboundLink")],1),t._v(".")]),t._v(" "),e("p",[t._v("The idea is to convert markdown files to a slides presentation.")])])}),[function(){var t=this._self._c;return t("h1",{attrs:{id:"fusuma"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#fusuma"}},[this._v("#")]),this._v(" fusuma")])},function(){var t=this._self._c;return t("blockquote",[t("p",[this._v("Just write Markdown and create cool slides.sunglasses")])])}],!1,null,null,null);e.default=n.exports}}]); -------------------------------------------------------------------------------- /docs/assets/js/204.d3c0a317.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[204],{372:function(t,e,i){"use strict";i.r(e);var r=i(0),o=Object(r.a)({},(function(){var t=this._self._c;return t("div",{staticClass:"content"},[this._m(0),this._v(" "),t("p",[t("a",{attrs:{href:"https://gitpitch.com/",target:"_blank",rel:"noopener noreferrer"}},[this._v("https://gitpitch.com/"),t("OutboundLink")],1)]),this._v(" "),this._m(1)])}),[function(){var t=this._self._c;return t("h1",{attrs:{id:"gitpitch-intro"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#gitpitch-intro"}},[this._v("#")]),this._v(" gitpitch intro")])},function(){var t=this,e=t._self._c;return e("blockquote",[e("p",[t._v("Markdown presentation for everyone on GitHub, GitLab, bitbucket")]),t._v(" "),e("p",[t._v("How it works")]),t._v(" "),e("p",[t._v("No more Keynote.")]),t._v(" "),e("p",[t._v("No more PowerPoint.")]),t._v(" "),e("p",[t._v("Just Markdown.")]),t._v(" "),e("p",[t._v("Then Git-Commit.")]),t._v(" "),e("p",[t._v("GitPitch is a service by developers for developers that generates beautiful, slideshow presentations directly from PITCHME.md markdown found in GitHub, GitLab and Bitbucket repos.")])])}],!1,null,null,null);e.default=o.exports}}]); -------------------------------------------------------------------------------- /docs/assets/js/205.985fa58e.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[205],{373:function(t,r,s){"use strict";s.r(r);var e=s(0),n=Object(e.a)({},(function(){var t=this._self._c;return t("div",{staticClass:"content"},[this._m(0),this._v(" "),t("p",[t("a",{attrs:{href:"https://github.com/gnab/remark",target:"_blank",rel:"noopener noreferrer"}},[this._v("gnab/remark - "),t("code",[this._v("github.com")]),t("OutboundLink")],1),this._v(" "),t("a",{attrs:{href:"http://remarkjs.com/",target:"_blank",rel:"noopener noreferrer"}},[this._v("remarkjs.com"),t("OutboundLink")],1)]),this._v(" "),this._m(1)])}),[function(){var t=this._self._c;return t("h1",{attrs:{id:"slides"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#slides"}},[this._v("#")]),this._v(" slides")])},function(){var t=this._self._c;return t("blockquote",[t("p",[this._v("A simple, in-browser, markdown-driven slideshow tool.")])])}],!1,null,null,null);r.default=n.exports}}]); -------------------------------------------------------------------------------- /docs/assets/js/206.00158d18.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[206],{374:function(e,s,t){"use strict";t.r(s);var i=t(0),n=Object(i.a)({},(function(){var e=this._self._c;return e("div",{staticClass:"content"},[this._m(0),this._v(" "),e("p",[e("a",{attrs:{href:"https://github.com/webslides/WebSlides",target:"_blank",rel:"noopener noreferrer"}},[this._v("webslides/WebSlides - "),e("code",[this._v("github.com")]),e("OutboundLink")],1)]),this._v(" "),this._m(1)])}),[function(){var e=this._self._c;return e("h1",{attrs:{id:"webslides"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#webslides"}},[this._v("#")]),this._v(" webslides")])},function(){var e=this._self._c;return e("blockquote",[e("p",[this._v("Finally, everything you need to make HTML presentations, landings, and longforms in a beautiful way. Just a basic knowledge of HTML and CSS is required.")])])}],!1,null,null,null);s.default=n.exports}}]); -------------------------------------------------------------------------------- /docs/assets/js/210.3c774bae.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[210],{378:function(t,i,e){"use strict";e.r(i);var a=e(0),r=Object(a.a)({},(function(){var t=this._self._c;return t("div",{staticClass:"content"},[this._m(0),this._v(" "),t("p",[t("a",{attrs:{href:"http://pivotal.github.io/jasmine/",target:"_blank",rel:"noopener noreferrer"}},[this._v("http://pivotal.github.io/jasmine/"),t("OutboundLink")],1)]),this._v(" "),t("p",[t("a",{attrs:{href:"http://en.wikipedia.org/wiki/Jasmine_%28JavaScript_framework%29",target:"_blank",rel:"noopener noreferrer"}},[this._v("http://en.wikipedia.org/wiki/Jasmine_%28JavaScript_framework%29"),t("OutboundLink")],1)])])}),[function(){var t=this._self._c;return t("h1",{attrs:{id:"jasmine"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#jasmine"}},[this._v("#")]),this._v(" jasmine")])}],!1,null,null,null);i.default=r.exports}}]); -------------------------------------------------------------------------------- /docs/assets/js/213.999b2b0f.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[213],{381:function(t,i,n){"use strict";n.r(i);var e=n(0),r=Object(e.a)({},(function(){var t=this._self._c;return t("div",{staticClass:"content"},[this._m(0),this._v(" "),t("p",[this._v("Dev by JQuery team")]),this._v(" "),t("p",[t("a",{attrs:{href:"http://qunitjs.com/",target:"_blank",rel:"noopener noreferrer"}},[this._v("http://qunitjs.com/"),t("OutboundLink")],1)]),this._v(" "),t("p",[t("a",{attrs:{href:"http://en.wikipedia.org/wiki/QUnit",target:"_blank",rel:"noopener noreferrer"}},[this._v("http://en.wikipedia.org/wiki/QUnit"),t("OutboundLink")],1)])])}),[function(){var t=this._self._c;return t("h1",{attrs:{id:"qunit"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#qunit"}},[this._v("#")]),this._v(" QUnit")])}],!1,null,null,null);i.default=r.exports}}]); -------------------------------------------------------------------------------- /docs/assets/js/22.0f854566.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[22],{190:function(r,e,t){"use strict";t.r(e);var n=t(0),a=Object(n.a)({},(function(){var r=this,e=r._self._c;return e("div",{staticClass:"content"},[r._m(0),r._v(" "),e("p",[r._v("to allow app to send mails")]),r._v(" "),e("p",[e("a",{attrs:{href:"https://addons.heroku.com/sendgrid#starter",target:"_blank",rel:"noopener noreferrer"}},[r._v("sendgrid#starter"),e("OutboundLink")],1)]),r._v(" "),e("p",[e("a",{attrs:{href:"https://devcenter.heroku.com/articles/sendgrid#java",target:"_blank",rel:"noopener noreferrer"}},[r._v("sendgrid#java"),e("OutboundLink")],1)]),r._v(" "),e("p",[r._v("6K emails/month for free add-on")])])}),[function(){var r=this._self._c;return r("h1",{attrs:{id:"heroku-sendgrid-mailer"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#heroku-sendgrid-mailer"}},[this._v("#")]),this._v(" heroku - sendgrid mailer")])}],!1,null,null,null);e.default=a.exports}}]); -------------------------------------------------------------------------------- /docs/assets/js/222.5c0a80de.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[222],{390:function(n,t,r){"use strict";r.r(t);var e=r(0),o=Object(e.a)({},(function(){var n=this._self._c;return n("div",{staticClass:"content"},[this._m(0),this._v(" "),n("p",[n("a",{attrs:{href:"http://demos.anupshinde.com/markdown-editor/",target:"_blank",rel:"noopener noreferrer"}},[this._v("Online Markdown Showdown Editor"),n("OutboundLink")],1),this._v(" - "),n("a",{attrs:{href:"http://www.anupshinde.com/posts/online-markdown-showdown-editor/",target:"_blank",rel:"noopener noreferrer"}},[this._v("usage"),n("OutboundLink")],1)])])}),[function(){var n=this._self._c;return n("h1",{attrs:{id:"markdown-online-editor"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#markdown-online-editor"}},[this._v("#")]),this._v(" markdown online editor")])}],!1,null,null,null);t.default=o.exports}}]); -------------------------------------------------------------------------------- /docs/assets/js/229.64dc2917.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[229],{397:function(t,s,n){"use strict";n.r(s);var e=n(0),a=Object(e.a)({},(function(){this._self._c;return this._m(0)}),[function(){var t=this._self._c;return t("div",{staticClass:"content"},[t("h1",{attrs:{id:"web"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#web"}},[this._v("#")]),this._v(" Web")])])}],!1,null,null,null);s.default=a.exports}}]); -------------------------------------------------------------------------------- /docs/assets/js/23.f30771a4.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[23],{191:function(t,s,i){"use strict";i.r(s);var n=i(0),e=Object(n.a)({},(function(){this._self._c;return this._m(0)}),[function(){var t=this._self._c;return t("div",{staticClass:"content"},[t("h1",{attrs:{id:"divers"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#divers"}},[this._v("#")]),this._v(" Divers")])])}],!1,null,null,null);s.default=e.exports}}]); -------------------------------------------------------------------------------- /docs/assets/js/233.b18bca5d.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[233],{401:function(r,e,t){"use strict";t.r(e);var n=t(0),a=Object(n.a)({},(function(){var r=this,e=r._self._c;return e("div",{staticClass:"content"},[r._m(0),r._v(" "),e("p",[e("a",{attrs:{href:"https://www.youtube.com/watch?v=4oLUXZXUZYc",target:"_blank",rel:"noopener noreferrer"}},[r._v("RAML une autre façon de concevoir vos APIs RESTful : Sébastien LECACHEUR Devoxx 2016"),e("OutboundLink")],1)]),r._v(" "),e("p",[e("a",{attrs:{href:"http://raml.org/",target:"_blank",rel:"noopener noreferrer"}},[r._v("http://raml.org/"),e("OutboundLink")],1)]),r._v(" "),e("p",[e("a",{attrs:{href:"https://github.com/raml-org/raml-spec",target:"_blank",rel:"noopener noreferrer"}},[r._v("La spec"),e("OutboundLink")],1)]),r._v(" "),e("p",[r._v("Permet de :")]),r._v(" "),r._m(1),r._v(" "),e("p",[r._v("sur la base d'un simple fichier YAML descriptif de l'API")]),r._v(" "),e("p",[r._v("En parallèle de Open API Initiative (non lié : cf "),e("a",{attrs:{href:"http://forums.raml.org/t/what-happens-with-raml-in-light-of-oai/1109/5",target:"_blank",rel:"noopener noreferrer"}},[r._v("forums.raml.org"),e("OutboundLink")],1),r._v(")")])])}),[function(){var r=this._self._c;return r("h1",{attrs:{id:"raml"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#raml"}},[this._v("#")]),this._v(" RAML")])},function(){var r=this,e=r._self._c;return e("ul",[e("li",[r._v("Design")]),r._v(" "),e("li",[r._v("Build")]),r._v(" "),e("li",[r._v("Test")]),r._v(" "),e("li",[r._v("Document")]),r._v(" "),e("li",[r._v("Share")])])}],!1,null,null,null);e.default=a.exports}}]); -------------------------------------------------------------------------------- /docs/assets/js/235.cb23a2f0.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[235],{403:function(e,t,r){"use strict";r.r(t);var n=r(0),o=Object(n.a)({},(function(){var e=this,t=e._self._c;return t("div",{staticClass:"content"},[e._m(0),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"http://www.restapitutorial.com/lessons/restfulresourcenaming.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("restfulresourcenaming"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"http://stackoverflow.com/questions/778203/are-there-any-naming-convention-guidelines-for-rest-apis",target:"_blank",rel:"noopener noreferrer"}},[e._v("naming-convention-guidelines-for-rest-apis"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"http://programmers.stackexchange.com/questions/332637/rest-webservices-post-put-which-type-of-parameter-should-i-choose-and-whe",target:"_blank",rel:"noopener noreferrer"}},[e._v("REST Webservices (post / put) : which type of parameter should I choose, and when?"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"http://williamdurand.fr/2014/02/14/please-do-not-patch-like-an-idiot/",target:"_blank",rel:"noopener noreferrer"}},[e._v("don't patch like an idiot"),t("OutboundLink")],1)])])])}),[function(){var e=this._self._c;return e("h1",{attrs:{id:"rest-conventions"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#rest-conventions"}},[this._v("#")]),this._v(" rest - conventions")])}],!1,null,null,null);t.default=o.exports}}]); -------------------------------------------------------------------------------- /docs/assets/js/236.0193ad8b.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[236],{404:function(t,r,e){"use strict";e.r(r);var n=e(0),o=Object(n.a)({},(function(){var t=this,r=t._self._c;return r("div",{staticClass:"content"},[t._m(0),t._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"http://tools.ietf.org/html/rfc2616",target:"_blank",rel:"noopener noreferrer"}},[t._v("RFC2616 - Hypertext Transfer Protocol -- HTTP/1.1"),r("OutboundLink")],1)]),t._v(" "),r("li",[r("a",{attrs:{href:"http://tools.ietf.org/html/rfc7230",target:"_blank",rel:"noopener noreferrer"}},[t._v("RFC7230 – HTTP/1.1: Message Syntax and Routing"),r("OutboundLink")],1)]),t._v(" "),r("li",[r("a",{attrs:{href:"http://tools.ietf.org/html/rfc7231",target:"_blank",rel:"noopener noreferrer"}},[t._v("RFC7231 – HTTP/1.1: Semantics and Content"),r("OutboundLink")],1)]),t._v(" "),r("li",[r("a",{attrs:{href:"http://tools.ietf.org/html/rfc7232",target:"_blank",rel:"noopener noreferrer"}},[t._v("RFC7232 – HTTP/1.1: Conditional Requests"),r("OutboundLink")],1)]),t._v(" "),r("li",[r("a",{attrs:{href:"http://tools.ietf.org/html/rfc7233",target:"_blank",rel:"noopener noreferrer"}},[t._v("RFC7233 – HTTP/1.1: Range Requests"),r("OutboundLink")],1)]),t._v(" "),r("li",[r("a",{attrs:{href:"http://tools.ietf.org/html/rfc7234",target:"_blank",rel:"noopener noreferrer"}},[t._v("RFC7234 – HTTP/1.1: Caching"),r("OutboundLink")],1)]),t._v(" "),r("li",[r("a",{attrs:{href:"http://tools.ietf.org/html/rfc7235",target:"_blank",rel:"noopener noreferrer"}},[t._v("RFC7235 – HTTP/1.1: Authentication"),r("OutboundLink")],1)])])])}),[function(){var t=this._self._c;return t("h1",{attrs:{id:"rfc-http"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#rfc-http"}},[this._v("#")]),this._v(" RFC HTTP")])}],!1,null,null,null);r.default=o.exports}}]); -------------------------------------------------------------------------------- /docs/assets/js/242.65b63ee2.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[242],{410:function(e,s,a){"use strict";a.r(s);var i=a(0),t=Object(i.a)({},(function(){this._self._c;return this._m(0)}),[function(){var e=this,s=e._self._c;return s("div",{staticClass:"content"},[s("h1",{attrs:{id:"cookies"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cookies"}},[e._v("#")]),e._v(" cookies")]),e._v(" "),s("p",[e._v("Cookies are mainly used for these three purposes:")]),e._v(" "),s("ul",[s("li",[e._v("Session management (user logins, shopping carts)")]),e._v(" "),s("li",[e._v("Personalization (user preferences)")]),e._v(" "),s("li",[e._v("Tracking (analyzing user behavior)")])]),e._v(" "),s("p",[e._v("Cookies have also been used for general client-side storage. While this use could have been considered legitimate at a time when there was no other way to store data on the client side, it is no longer the case nowadays where web browsers are capable of using various storage APIs. Since cookies are sent along with every request, it can be an additional performance burden (especially for mobile web).")]),e._v(" "),s("h2",{attrs:{id:"creating-cookies"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#creating-cookies"}},[e._v("#")]),e._v(" Creating cookies")]),e._v(" "),s("p",[e._v("When receiving an HTTP request, a server can send a "),s("code",[e._v("Set-Cookie")]),e._v(" header with the response. The cookie is usually stored by the browser and, afterwards, the cookie value is sent along with every request made to the same server as the content of a Cookie HTTP header. Additionally, an expiration delay can be specified as well as restrictions to a specific domain and path, limiting how long and to which site the cookie is sent to.")])])}],!1,null,null,null);s.default=t.exports}}]); -------------------------------------------------------------------------------- /docs/assets/js/243.4b0f80c2.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[243],{411:function(e,t,r){"use strict";r.r(t);var o=r(0),s=Object(o.a)({},(function(){var e=this._self._c;return e("div",{staticClass:"content"},[this._m(0),this._v(" "),e("p",[e("a",{attrs:{href:"https://developer.chrome.com/devtools/docs/remote-debugging-legacy",target:"_blank",rel:"noopener noreferrer"}},[this._v("https://developer.chrome.com/devtools/docs/remote-debugging-legacy"),e("OutboundLink")],1)])])}),[function(){var e=this._self._c;return e("h1",{attrs:{id:"debug-chrome-android"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#debug-chrome-android"}},[this._v("#")]),this._v(" debug chrome android")])}],!1,null,null,null);t.default=s.exports}}]); -------------------------------------------------------------------------------- /docs/assets/js/244.d0e17505.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[244],{412:function(e,t,s){"use strict";s.r(t);var r=s(0),n=Object(r.a)({},(function(){var e=this._self._c;return e("div",{staticClass:"content"},[this._m(0),this._v(" "),this._m(1),this._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"http://blogbuster.fr/adsense/declarer-impots-google-adsense.htm",target:"_blank",rel:"noopener noreferrer"}},[this._v("blogbuster.fr : Déclarer ses revenus Google AdSense aux impôts quand on est un particulier ou un auto-entrepreneur"),e("OutboundLink")],1)]),this._v(" "),e("li",[e("a",{attrs:{href:"http://www.experts-comptables.fr/infos-dexperts/fiscal/la-declaration-des-comptes-ouverts-letranger-et-des-comptes-paypal---149",target:"_blank",rel:"noopener noreferrer"}},[this._v("paypal & comptes ouverts à l'étranger"),e("OutboundLink")],1)])])])}),[function(){var e=this._self._c;return e("h1",{attrs:{id:"gestion-monetisation-web"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#gestion-monetisation-web"}},[this._v("#")]),this._v(" gestion monétisation web")])},function(){var e=this._self._c;return e("h2",{attrs:{id:"declarer-ses-revenus"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#declarer-ses-revenus"}},[this._v("#")]),this._v(" déclarer ses revenus")])}],!1,null,null,null);t.default=n.exports}}]); -------------------------------------------------------------------------------- /docs/assets/js/246.8d5d39b4.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[246],{414:function(e,t,s){"use strict";s.r(t);var n=s(0),r=Object(n.a)({},(function(){var e=this,t=e._self._c;return t("div",{staticClass:"content"},[e._m(0),e._v(" "),t("p",[t("a",{attrs:{href:"https://la-cascade.io/html5-comprendre-les-polyfills-shivs-et-shims/",target:"_blank",rel:"noopener noreferrer"}},[e._v("HTML5 : Comprendre les Polyfills, Shivs et Shims"),t("OutboundLink")],1)]),e._v(" "),t("p",[e._v("Les shims sont un bout de code qui intercepte un appel API (en développement web, une requête pour une fonctionnalité HTML5, CSS ou JavaScript) et fournit un programme de remplacement. Les polyfills (le terme a été inventé par Remy Sharp) sont un shim simplifié, en ceci qu’ils sont du code ajouté dans la page pour donner au développeur la technologie dont il aurait besoin de manière native dans le navigateur.")]),e._v(" "),t("h2",{attrs:{id:"modernizr"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#modernizr"}},[e._v("#")]),e._v(" "),t("a",{attrs:{href:"http://modernizr.com/docs/",target:"_blank",rel:"noopener noreferrer"}},[e._v("modernizr"),t("OutboundLink")],1)]),e._v(" "),t("p",[e._v("lib js qui sert à :")]),e._v(" "),e._m(1)])}),[function(){var e=this._self._c;return e("h1",{attrs:{id:"polyfills-shivs-et-shims"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#polyfills-shivs-et-shims"}},[this._v("#")]),this._v(" Polyfills, Shivs et Shims")])},function(){var e=this._self._c;return e("ul",[e("li",[this._v("détecter si les features HTML5 & CSS3 sont implémentées dans les browsers.")]),this._v(" "),e("li",[this._v("proposer une impl basique de certaines fonctionnalités.")])])}],!1,null,null,null);t.default=r.exports}}]); -------------------------------------------------------------------------------- /docs/assets/js/256.f373c57a.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[256],{424:function(e,t,r){"use strict";r.r(t);var n=r(0),i=Object(n.a)({},(function(){var e=this,t=e._self._c;return t("div",{staticClass:"content"},[e._m(0),e._v(" "),t("p",[t("a",{attrs:{href:"http://fr.wikipedia.org/wiki/Selenium_%28informatique%29",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://fr.wikipedia.org/wiki/Selenium_%28informatique%29"),t("OutboundLink")],1)]),e._v(" "),t("p",[t("a",{attrs:{href:"http://fr.wikipedia.org/wiki/Selenium_IDE",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://fr.wikipedia.org/wiki/Selenium_IDE"),t("OutboundLink")],1)]),e._v(" "),t("p",[t("a",{attrs:{href:"http://docs.seleniumhq.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://docs.seleniumhq.org/"),t("OutboundLink")],1)]),e._v(" "),t("p",[t("a",{attrs:{href:"http://www.bryansgeekspeak.com/2014/03/automated-browser-testing-using-selenium.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("Quick start"),t("OutboundLink")],1)]),e._v(" "),t("p",[t("a",{attrs:{href:"http://www.jnhasty.com/2013/02/15/using-the-setspeed-setting-in-selenium-standalone-htmlsuite-mode/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Setting selenium speed"),t("OutboundLink")],1)]),e._v(" "),t("p",[t("a",{attrs:{href:"http://eswarg.blogspot.fr/2013/06/selenium-server-commandline-options.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("Command line option"),t("OutboundLink")],1)])])}),[function(){var e=this._self._c;return e("h1",{attrs:{id:"web-test-selenium"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#web-test-selenium"}},[this._v("#")]),this._v(" web test selenium")])}],!1,null,null,null);t.default=i.exports}}]); -------------------------------------------------------------------------------- /docs/assets/js/258.9ca0e62d.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[258],{426:function(e,t,r){"use strict";r.r(t);var s=r(0),n=Object(s.a)({},(function(){var e=this,t=e._self._c;return t("div",{staticClass:"content"},[e._m(0),e._v(" "),t("p",[t("a",{attrs:{href:"http://webassembly.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("webassembly.org"),t("OutboundLink")],1)]),e._v(" "),t("p",[t("a",{attrs:{href:"https://github.com/WebAssembly",target:"_blank",rel:"noopener noreferrer"}},[e._v("WebAssembly : "),t("code",[e._v("github.com")]),t("OutboundLink")],1)]),e._v(" "),t("p",[t("a",{attrs:{href:"https://developer.mozilla.org/fr/docs/WebAssembly",target:"_blank",rel:"noopener noreferrer"}},[e._v("WebAssembly : MDN : 201705xx"),t("OutboundLink")],1)]),e._v(" "),e._m(1),e._v(" "),t("p",[t("a",{attrs:{href:"https://www.developpez.com/actu/123097/WebAssembly-a-t-il-pour-vocation-de-remplacer-a-long-terme-JavaScript-Le-standard-est-au-centre-des-discussions-des-developpeurs-web/",target:"_blank",rel:"noopener noreferrer"}},[e._v("WebAssembly a-t-il pour vocation de remplacer à long terme JavaScript ?"),t("OutboundLink")],1)])])}),[function(){var e=this._self._c;return e("h1",{attrs:{id:"webassembly"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#webassembly"}},[this._v("#")]),this._v(" WebAssembly")])},function(){var e=this._self._c;return e("blockquote",[e("p",[this._v("WebAssembly est un nouveau type de code qui peut être exécuté dans un navigateur web moderne. C'est un langage bas\nniveau, semblable à l'assembleur permettant d'atteindre des performances proches des applications natives\n(par exemple écrites en C/C++) tout en fonctionnant sur le Web. WebAssembly est conçu pour fonctionner en lien\navec JavaScript.")])])}],!1,null,null,null);t.default=n.exports}}]); -------------------------------------------------------------------------------- /docs/assets/js/259.9bb1035b.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[259],{169:function(n,w,o){}}]); -------------------------------------------------------------------------------- /docs/assets/js/29.e7aa9ad8.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[29],{197:function(t,e,r){"use strict";r.r(e);var i=r(0),n=Object(i.a)({},(function(){var t=this._self._c;return t("div",{staticClass:"content"},[this._m(0),this._v(" "),t("ul",[t("li",[this._v("enregistrer via l'enregistreur normal")]),this._v(" "),t("li",[this._v("pour visionner avec VLC il faut avoir la vidéo en local")]),this._v(" "),t("li",[this._v("pour convertir en avi cf "),t("a",{attrs:{href:"http://forum.ubuntu-fr.org/viewtopic.php?id=406808",target:"_blank",rel:"noopener noreferrer"}},[this._v("lien forum ubuntu"),t("OutboundLink")],1)])])])}),[function(){var t=this._self._c;return t("h1",{attrs:{id:"freebox-videos"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#freebox-videos"}},[this._v("#")]),this._v(" freebox - videos")])}],!1,null,null,null);e.default=n.exports}}]); -------------------------------------------------------------------------------- /docs/assets/js/3.6d95eb82.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[3],{171:function(e,t,r){"use strict";r.r(t);r(23);var a=r(0),s=Object(a.a)({},(function(){var e=this,t=e._self._c;return t("div",{staticClass:"content"},[e._m(0),e._v(" "),t("p",[t("a",{attrs:{href:"http://memo-dev.marc-loupias.fr",target:"_blank",rel:"noopener noreferrer"}},[e._v("memo-dev available here"),t("OutboundLink")],1)]),e._v(" "),t("p",[e._v("This website is a personal reminder for work. Aka : memo, knowledge base, cheatsheets, til, ...")]),e._v(" "),t("p",[e._v("Sometimes in english, et parfois en français ...")]),e._v(" "),t("p",[e._v("Writing things to learn, and uses this book as a knowledge index.")]),e._v(" "),t("p",[e._v("Any comments welcome ...")]),e._v(" "),t("blockquote",[t("p",[e._v("Others similar repo linked "),t("a",{attrs:{href:"https://github.com/RichardLitt/meta-knowledge",target:"_blank",rel:"noopener noreferrer"}},[e._v("there"),t("OutboundLink")],1)])]),e._v(" "),t("div",{staticClass:"features"},e._l(e.$page.frontmatter.xfeatures,(function(r){return t("div",{staticClass:"feature"},[t("h2",[t("a",{attrs:{href:r.link}},[e._v(e._s(r.title))])]),e._v(" "),t("p",[e._v(e._s(r.details))])])})),0)])}),[function(){var e=this._self._c;return e("h1",{attrs:{id:"memo-dev"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#memo-dev"}},[this._v("#")]),this._v(" memo-dev")])}],!1,null,null,null);t.default=s.exports}}]); -------------------------------------------------------------------------------- /docs/assets/js/31.e5abb763.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[31],{199:function(t,e,n){"use strict";n.r(e);var r=n(0),a=Object(r.a)({},(function(){var t=this._self._c;return t("div",{staticClass:"content"},[this._m(0),this._v(" "),t("p",[t("a",{attrs:{href:"http://www.wtfpl.net/",target:"_blank",rel:"noopener noreferrer"}},[this._v("www.wtfpl.net"),t("OutboundLink")],1)]),this._v(" "),t("p",[this._v("Pour une integration aux README.md de Git :")]),this._v(" "),t("p",[t("a",{attrs:{href:"http://wtfpl.net",target:"_blank",rel:"noopener noreferrer"}},[t("img",{attrs:{src:"http://www.wtfpl.net/wp-content/uploads/2012/12/wtfpl-badge-4.png",alt:"WTFPL"}}),t("OutboundLink")],1)])])}),[function(){var t=this._self._c;return t("h1",{attrs:{id:"licences-wtfpl-do-what-the-fuck-you-want-to-public-licence"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#licences-wtfpl-do-what-the-fuck-you-want-to-public-licence"}},[this._v("#")]),this._v(" licences - WTFPL (do What The Fuck you want to Public Licence)")])}],!1,null,null,null);e.default=a.exports}}]); -------------------------------------------------------------------------------- /docs/assets/js/32.0846ae8e.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[32],{200:function(e,t,n){"use strict";n.r(t);var r=n(0),s=Object(r.a)({},(function(){var e=this._self._c;return e("div",{staticClass:"content"},[this._m(0),this._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"http://tom.preston-werner.com/2011/11/22/open-source-everything.html",target:"_blank",rel:"noopener noreferrer"}},[this._v("open-source-everything : tom.preston-werner.com fondateur GitHub"),e("OutboundLink")],1)])])])}),[function(){var e=this._self._c;return e("h1",{attrs:{id:"licences-opensource"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#licences-opensource"}},[this._v("#")]),this._v(" licences - opensource")])}],!1,null,null,null);t.default=s.exports}}]); -------------------------------------------------------------------------------- /docs/assets/js/33.5fc787fc.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[33],{201:function(e,t,s){"use strict";s.r(t);var c=s(0),n=Object(c.a)({},(function(){var e=this._self._c;return e("div",{staticClass:"content"},[this._m(0),this._v(" "),e("p",[e("a",{attrs:{href:"https://choosealicense.com/",target:"_blank",rel:"noopener noreferrer"}},[this._v("choosealicense.com"),e("OutboundLink")],1)]),this._v(" "),e("p",[e("a",{attrs:{href:"https://github.com/github/choosealicense.com",target:"_blank",rel:"noopener noreferrer"}},[e("code",[this._v("github.com")]),e("OutboundLink")],1)])])}),[function(){var e=this._self._c;return e("h1",{attrs:{id:"licences-choose-a-licence"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#licences-choose-a-licence"}},[this._v("#")]),this._v(" licences - choose a licence")])}],!1,null,null,null);t.default=n.exports}}]); -------------------------------------------------------------------------------- /docs/assets/js/35.0ec9284c.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[35],{203:function(t,a,n){"use strict";n.r(a);var s=n(0),r=Object(s.a)({},(function(){this._self._c;return this._m(0)}),[function(){var t=this._self._c;return t("div",{staticClass:"content"},[t("h1",{attrs:{id:"programming-languages"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#programming-languages"}},[this._v("#")]),this._v(" Programming Languages")])])}],!1,null,null,null);a.default=r.exports}}]); -------------------------------------------------------------------------------- /docs/assets/js/38.f2e9ae30.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[38],{206:function(t,e,s){"use strict";s.r(e);var r=s(0),n=Object(r.a)({},(function(){var t=this._self._c;return t("div",{staticClass:"content"},[this._m(0),this._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"http://blog.kaelig.fr/post/48196348743/fifty-shades-of-bem",target:"_blank",rel:"noopener noreferrer"}},[this._v("blog kaelig.fr : fifty shades of BEM"),t("OutboundLink")],1)]),this._v(" "),t("li",[t("a",{attrs:{href:"http://www.css-maintenables.fr/",target:"_blank",rel:"noopener noreferrer"}},[this._v("bouquin du même auteur"),t("OutboundLink")],1)])])])}),[function(){var t=this._self._c;return t("h1",{attrs:{id:"css-bem"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#css-bem"}},[this._v("#")]),this._v(" css - BEM")])}],!1,null,null,null);e.default=n.exports}}]); -------------------------------------------------------------------------------- /docs/assets/js/39.db5e9fc3.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[39],{207:function(t,s,n){"use strict";n.r(s);var e=n(0),o=Object(e.a)({},(function(){var t=this._self._c;return t("div",{staticClass:"content"},[this._m(0),this._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"https://google.github.io/styleguide/htmlcssguide.xml",target:"_blank",rel:"noopener noreferrer"}},[this._v("Les conventions de nommage HTML/CSS de Google"),t("OutboundLink")],1)])])])}),[function(){var t=this._self._c;return t("h1",{attrs:{id:"css-conventions"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#css-conventions"}},[this._v("#")]),this._v(" css - conventions")])}],!1,null,null,null);s.default=o.exports}}]); -------------------------------------------------------------------------------- /docs/assets/js/4.6a1f048f.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[4],{172:function(t,a,s){"use strict";s.r(a);var n=s(0),i=Object(n.a)({},(function(){this._self._c;return this._m(0)}),[function(){var t=this._self._c;return t("div",{staticClass:"content"},[t("h1",{attrs:{id:"data"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#data"}},[this._v("#")]),this._v(" Data")])])}],!1,null,null,null);a.default=i.exports}}]); -------------------------------------------------------------------------------- /docs/assets/js/41.dd4ace95.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[41],{209:function(s,r,t){"use strict";t.r(r);var e=t(0),a=Object(e.a)({},(function(){var s=this,r=s._self._c;return r("div",{staticClass:"content"},[s._m(0),s._v(" "),s._m(1),s._v(" "),r("p",[r("a",{attrs:{href:"https://learn.onemonth.com/sass-vs-less-e9584c90d847",target:"_blank",rel:"noopener noreferrer"}},[s._v("Sass vs. Less"),r("OutboundLink")],1)]),s._v(" "),r("p",[r("a",{attrs:{href:"http://blog.soat.fr/2014/07/preprocesseurs-css-less-vs-sass/",target:"_blank",rel:"noopener noreferrer"}},[s._v("Préprocesseurs CSS : LESS vs Sass"),r("OutboundLink")],1)]),s._v(" "),s._m(2),s._v(" "),s._m(3)])}),[function(){var s=this._self._c;return s("h1",{attrs:{id:"css-preprocessors"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#css-preprocessors"}},[this._v("#")]),this._v(" CSS Preprocessors")])},function(){var s=this._self._c;return s("h2",{attrs:{id:"articles"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#articles"}},[this._v("#")]),this._v(" Articles")])},function(){var s=this._self._c;return s("h2",{attrs:{id:"less"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#less"}},[this._v("#")]),this._v(" LESS")])},function(){var s=this._self._c;return s("h2",{attrs:{id:"sass"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#sass"}},[this._v("#")]),this._v(" SASS")])}],!1,null,null,null);r.default=a.exports}}]); -------------------------------------------------------------------------------- /docs/assets/js/45.3b47a1da.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[45],{213:function(t,n,a){"use strict";a.r(n);var e=a(0),s=Object(e.a)({},(function(){var t=this._self._c;return t("div",{staticClass:"content"},[this._m(0),this._v(" "),t("p",[this._v("gestion des variables d'environnement :")]),this._v(" "),t("p",[t("a",{attrs:{href:"http://stackoverflow.com/questions/17571595/env-java-home-not-found-ant",target:"_blank",rel:"noopener noreferrer"}},[this._v("stackoverflow - env-java-home-not-found-ant"),t("OutboundLink")],1)]),this._v(" "),t("p",[t("a",{attrs:{href:"https://today.java.net/pub/a/today/2003/09/12/individual-test-cases.html",target:"_blank",rel:"noopener noreferrer"}},[this._v("running junit tests"),t("OutboundLink")],1)])])}),[function(){var t=this._self._c;return t("h1",{attrs:{id:"java-ant"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#java-ant"}},[this._v("#")]),this._v(" java - ant")])}],!1,null,null,null);n.default=s.exports}}]); -------------------------------------------------------------------------------- /docs/assets/js/46.ebf65810.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[46],{214:function(t,e,a){"use strict";a.r(e);var n=a(0),s=Object(n.a)({},(function(){var t=this._self._c;return t("div",{staticClass:"content"},[this._m(0),this._v(" "),t("p",[t("a",{attrs:{href:"http://wiki.fasterxml.com/JacksonFeatureBiDirReferences",target:"_blank",rel:"noopener noreferrer"}},[this._v("wiki.fasterxml.com"),t("OutboundLink")],1)]),this._v(" "),t("p",[t("a",{attrs:{href:"http://jira.codehaus.org/browse/JACKSON-235?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel",target:"_blank",rel:"noopener noreferrer"}},[this._v("JACKSON-235"),t("OutboundLink")],1)]),this._v(" "),t("p",[t("a",{attrs:{href:"http://stackoverflow.com/questions/3325387/infinite-recursion-with-jackson-json-and-hibernate-jpa-issue",target:"_blank",rel:"noopener noreferrer"}},[this._v("stackoverflow - infinite-recursion-with-jackson-json-and-hibernate-jpa-issue"),t("OutboundLink")],1)])])}),[function(){var t=this._self._c;return t("h1",{attrs:{id:"java-jackson"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#java-jackson"}},[this._v("#")]),this._v(" java - jackson")])}],!1,null,null,null);e.default=s.exports}}]); -------------------------------------------------------------------------------- /docs/assets/js/49.5484fb0e.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[49],{217:function(e,t,r){"use strict";r.r(t);var s=r(0),n=Object(s.a)({},(function(){var e=this._self._c;return e("div",{staticClass:"content"},[this._m(0),this._v(" "),e("p",[e("a",{attrs:{href:"http://es6-features.org/#DefaultWildcard",target:"_blank",rel:"noopener noreferrer"}},[this._v("ES6 - New features overview & comparison"),e("OutboundLink")],1)]),this._v(" "),e("p",[e("a",{attrs:{href:"http://exploringjs.com/es6/index.html#toc_ch_modules",target:"_blank",rel:"noopener noreferrer"}},[this._v("Exploring ES6 by Dr. Axel Rauschmayer"),e("OutboundLink")],1),this._v(" ("),e("strong",[this._v("+++")]),this._v(")")])])}),[function(){var e=this._self._c;return e("h1",{attrs:{id:"es6-overview"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#es6-overview"}},[this._v("#")]),this._v(" ES6 - overview")])}],!1,null,null,null);t.default=n.exports}}]); -------------------------------------------------------------------------------- /docs/assets/js/51.33f5d7e1.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[51],{219:function(e,t,s){"use strict";s.r(t);var n=s(0),r=Object(n.a)({},(function(){var e=this._self._c;return e("div",{staticClass:"content"},[this._m(0),this._v(" "),e("p",[this._v("For errors when accessing an inexistant property :")]),this._v(" "),e("p",[e("a",{attrs:{href:"http://www.nczonline.net/blog/2014/04/22/creating-defensive-objects-with-es6-proxies/",target:"_blank",rel:"noopener noreferrer"}},[this._v("creating-defensive-objects-with-es6-proxies : www.nczonline.net"),e("OutboundLink")],1)])])}),[function(){var e=this._self._c;return e("h1",{attrs:{id:"es6-proxies"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#es6-proxies"}},[this._v("#")]),this._v(" ES6 proxies")])}],!1,null,null,null);t.default=r.exports}}]); -------------------------------------------------------------------------------- /docs/assets/js/54.0f8534a3.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[54],{222:function(t,e,o){"use strict";o.r(e);var r=o(0),n=Object(r.a)({},(function(){var t=this._self._c;return t("div",{staticClass:"content"},[this._m(0),this._v(" "),t("p",[t("a",{attrs:{href:"http://www.alsacreations.com/tuto/lire/926-geolocalisation-geolocation-html5.html",target:"_blank",rel:"noopener noreferrer"}},[this._v("Tuto alsa creation"),t("OutboundLink")],1)]),this._v(" "),t("p",[t("a",{attrs:{href:"https://developer.mozilla.org/en-US/docs/Web/API/Geolocation",target:"_blank",rel:"noopener noreferrer"}},[this._v("MDN - API Geoloc"),t("OutboundLink")],1)])])}),[function(){var t=this._self._c;return t("h1",{attrs:{id:"browser-geoloc"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#browser-geoloc"}},[this._v("#")]),this._v(" browser geoloc")])}],!1,null,null,null);e.default=n.exports}}]); -------------------------------------------------------------------------------- /docs/assets/js/58.c652096f.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[58],{226:function(t,r,e){"use strict";e.r(r);var o=e(0),s=Object(o.a)({},(function(){var t=this._self._c;return t("div",{staticClass:"content"},[this._m(0),this._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"https://developer.mozilla.org/fr/docs/Web/JavaScript",target:"_blank",rel:"noopener noreferrer"}},[this._v("JavaScript doc : developer.mozilla.org"),t("OutboundLink")],1)]),this._v(" "),t("li",[t("a",{attrs:{href:"http://www.w3schools.com/js/",target:"_blank",rel:"noopener noreferrer"}},[this._v("Tutorials : www.w3schools.com"),t("OutboundLink")],1)]),this._v(" "),t("li",[t("a",{attrs:{href:"https://developer.mozilla.org/en-US/docs/Web/API",target:"_blank",rel:"noopener noreferrer"}},[this._v("API"),t("OutboundLink")],1)])])])}),[function(){var t=this._self._c;return t("h1",{attrs:{id:"jsdoc"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#jsdoc"}},[this._v("#")]),this._v(" jsdoc")])}],!1,null,null,null);r.default=s.exports}}]); -------------------------------------------------------------------------------- /docs/assets/js/69.dfb0d5ad.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[69],{237:function(t,r,e){"use strict";e.r(r);var a=e(0),s=Object(a.a)({},(function(){var t=this._self._c;return t("div",{staticClass:"content"},[this._m(0),this._v(" "),t("p",[t("a",{attrs:{href:"http://blog.xebia.fr/2013/06/10/javascript-retour-aux-bases-constructeur-prototype-et-heritage/",target:"_blank",rel:"noopener noreferrer"}},[this._v("http://blog.xebia.fr/2013/06/10/javascript-retour-aux-bases-constructeur-prototype-et-heritage/"),t("OutboundLink")],1)])])}),[function(){var t=this._self._c;return t("h1",{attrs:{id:"prototype"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#prototype"}},[this._v("#")]),this._v(" prototype")])}],!1,null,null,null);r.default=s.exports}}]); -------------------------------------------------------------------------------- /docs/assets/js/74.0ccddbe5.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[74],{242:function(t,e,s){"use strict";s.r(e);var r=s(0),a=Object(r.a)({},(function(){var t=this._self._c;return t("div",{staticClass:"content"},[this._m(0),this._v(" "),t("p",[t("a",{attrs:{href:"http://www.alsacreations.com/article/lire/1402-web-storage-localstorage-sessionstorage.html",target:"_blank",rel:"noopener noreferrer"}},[this._v("localStorage et sessionStorage"),t("OutboundLink")],1)])])}),[function(){var t=this._self._c;return t("h1",{attrs:{id:"webstorage"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#webstorage"}},[this._v("#")]),this._v(" webstorage")])}],!1,null,null,null);e.default=a.exports}}]); -------------------------------------------------------------------------------- /docs/assets/js/79.4a2ec47b.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[79],{247:function(t,s,n){"use strict";n.r(s);var e=n(0),r=Object(e.a)({},(function(){this._self._c;return this._m(0)}),[function(){var t=this._self._c;return t("div",{staticClass:"content"},[t("h1",{attrs:{id:"network"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#network"}},[this._v("#")]),this._v(" Network")])])}],!1,null,null,null);s.default=r.exports}}]); -------------------------------------------------------------------------------- /docs/assets/js/80.a46f516e.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[80],{248:function(e,s,t){"use strict";t.r(s);var r=t(0),n=Object(r.a)({},(function(){var e=this,s=e._self._c;return s("div",{staticClass:"content"},[e._m(0),e._v(" "),e._m(1),e._v(" "),s("p",[s("a",{attrs:{href:"https://www.youtube.com/watch?v=pwT2egqlke4&list=PLU39vuHuXlJeER75D1GNJiK8-2i0yhRLX",target:"_blank",rel:"noopener noreferrer"}},[e._v("Benjamin Bayart : Qu'est ce qu'Internet"),s("OutboundLink")],1)]),e._v(" "),e._m(2),e._v(" "),s("p",[s("a",{attrs:{href:"https://www.franceculture.fr/emissions/les-nouvelles-vagues/le-village-35-dans-les-zones-blanches",target:"_blank",rel:"noopener noreferrer"}},[e._v("Le village (3/5) Dans les zones blanches - www.franceculture.fr - 20170208"),s("OutboundLink")],1)]),e._v(" "),s("p",[s("a",{attrs:{href:"https://www.arte.tv/fr/videos/078191-009-A/le-dessous-des-cartes/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Le Dessous des cartes\nCâbles sous-marins : la guerre invisible (jusqu'au 27/11/2018)"),s("OutboundLink")],1),e._v(" "),s("a",{attrs:{href:"https://boutique.arte.tv/detail/le_dessous_des_cartes_cables_sous_marins_guerre_invisible",target:"_blank",rel:"noopener noreferrer"}},[e._v("boutique.arte.tv VOD"),s("OutboundLink")],1)])])}),[function(){var e=this._self._c;return e("h1",{attrs:{id:"internet"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#internet"}},[this._v("#")]),this._v(" Internet")])},function(){var e=this._self._c;return e("h2",{attrs:{id:"videos"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#videos"}},[this._v("#")]),this._v(" Videos")])},function(){var e=this._self._c;return e("h2",{attrs:{id:"emissions"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#emissions"}},[this._v("#")]),this._v(" Emissions")])}],!1,null,null,null);s.default=n.exports}}]); -------------------------------------------------------------------------------- /docs/assets/js/81.cfd22791.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[81],{249:function(t,e,n){"use strict";n.r(e);var o=n(0),s=Object(o.a)({},(function(){var t=this._self._c;return t("div",{staticClass:"content"},[this._m(0),this._v(" "),t("p",[t("a",{attrs:{href:"https://stackoverflow.com/a/27182584",target:"_blank",rel:"noopener noreferrer"}},[this._v("TCP / HTTP Listening On Ports: How Can Many Users Share the Same Port - stackoverflow.com - 20141128"),t("OutboundLink")],1)]),this._v(" "),this._m(1)])}),[function(){var t=this._self._c;return t("h1",{attrs:{id:"tcp"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#tcp"}},[this._v("#")]),this._v(" TCP")])},function(){var t=this._self._c;return t("blockquote",[t("p",[this._v("Three things must be understood:")]),this._v(" "),t("p",[this._v("1.) On a server, a process is listening on a port. Once it gets a connection, it hands it off to another thread. The communication never hogs the listening port.")]),this._v(" "),t("p",[this._v("2.) Connections are uniquely identified by the OS by the following 5-tuple: (local-IP, local-port, remote-IP, remote-port, protocol). If any element in the tuple is different, then this is a completely independent connection.")]),this._v(" "),t("p",[this._v("3.) When a client connects to a server, it picks a random, unused high-order source port. This way, a single client can have up to ~64k connections to the server for the same destination port.")])])}],!1,null,null,null);e.default=s.exports}}]); -------------------------------------------------------------------------------- /docs/assets/js/83.ce9ced53.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[83],{251:function(s,t,a){"use strict";a.r(t);var r=a(0),n=Object(r.a)({},(function(){this._self._c;return this._m(0)}),[function(){var s=this._self._c;return s("div",{staticClass:"content"},[s("h1",{attrs:{id:"platforms-frameworks-and-libs"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#platforms-frameworks-and-libs"}},[this._v("#")]),this._v(" Platforms, frameworks and libs")])])}],!1,null,null,null);t.default=n.exports}}]); -------------------------------------------------------------------------------- /docs/images/devops/devops-pipeline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MarcLoupias/memo-dev/a68f789297fface1284cd2e506557db85af5ff3b/docs/images/devops/devops-pipeline.png -------------------------------------------------------------------------------- /docs/images/devops/devops.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MarcLoupias/memo-dev/a68f789297fface1284cd2e506557db85af5ff3b/docs/images/devops/devops.jpg -------------------------------------------------------------------------------- /docs/images/js/ecmascript-history.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MarcLoupias/memo-dev/a68f789297fface1284cd2e506557db85af5ff3b/docs/images/js/ecmascript-history.png -------------------------------------------------------------------------------- /docs/images/js/js-ages.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MarcLoupias/memo-dev/a68f789297fface1284cd2e506557db85af5ff3b/docs/images/js/js-ages.jpeg -------------------------------------------------------------------------------- /docs/images/software-engineering/architecture/CleanArchitecture.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MarcLoupias/memo-dev/a68f789297fface1284cd2e506557db85af5ff3b/docs/images/software-engineering/architecture/CleanArchitecture.jpg -------------------------------------------------------------------------------- /docs/images/software-engineering/architecture/archi_hexa_00.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MarcLoupias/memo-dev/a68f789297fface1284cd2e506557db85af5ff3b/docs/images/software-engineering/architecture/archi_hexa_00.png -------------------------------------------------------------------------------- /docs/images/software-engineering/architecture/archi_hexa_01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MarcLoupias/memo-dev/a68f789297fface1284cd2e506557db85af5ff3b/docs/images/software-engineering/architecture/archi_hexa_01.png -------------------------------------------------------------------------------- /docs/images/software-engineering/architecture/archi_hexa_02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MarcLoupias/memo-dev/a68f789297fface1284cd2e506557db85af5ff3b/docs/images/software-engineering/architecture/archi_hexa_02.png -------------------------------------------------------------------------------- /docs/images/software-engineering/architecture/archi_hexa_04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MarcLoupias/memo-dev/a68f789297fface1284cd2e506557db85af5ff3b/docs/images/software-engineering/architecture/archi_hexa_04.png -------------------------------------------------------------------------------- /docs/images/software-engineering/architecture/archi_hexa_05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MarcLoupias/memo-dev/a68f789297fface1284cd2e506557db85af5ff3b/docs/images/software-engineering/architecture/archi_hexa_05.png -------------------------------------------------------------------------------- /docs/images/software-engineering/architecture/archi_hexa_06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MarcLoupias/memo-dev/a68f789297fface1284cd2e506557db85af5ff3b/docs/images/software-engineering/architecture/archi_hexa_06.png -------------------------------------------------------------------------------- /docs/images/software-engineering/architecture/archi_hexa_11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MarcLoupias/memo-dev/a68f789297fface1284cd2e506557db85af5ff3b/docs/images/software-engineering/architecture/archi_hexa_11.png -------------------------------------------------------------------------------- /docs/images/software-engineering/architecture/archi_hexa_12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MarcLoupias/memo-dev/a68f789297fface1284cd2e506557db85af5ff3b/docs/images/software-engineering/architecture/archi_hexa_12.png -------------------------------------------------------------------------------- /docs/images/software-engineering/architecture/ports-and-adapters.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MarcLoupias/memo-dev/a68f789297fface1284cd2e506557db85af5ff3b/docs/images/software-engineering/architecture/ports-and-adapters.png -------------------------------------------------------------------------------- /docs/images/software-engineering/architecture/real-life-clean-architecture.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MarcLoupias/memo-dev/a68f789297fface1284cd2e506557db85af5ff3b/docs/images/software-engineering/architecture/real-life-clean-architecture.jpg -------------------------------------------------------------------------------- /docs/images/ts-typescript-overview-compiletime-vs-runtime.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MarcLoupias/memo-dev/a68f789297fface1284cd2e506557db85af5ff3b/docs/images/ts-typescript-overview-compiletime-vs-runtime.png -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "memo-dev", 3 | "version": "3.0.0", 4 | "description": "knowledge db tool", 5 | "author": "marlou ", 6 | "contributors": [ 7 | { 8 | "name": "Marc Loupias", 9 | "email": "pro@marc-loupias.fr", 10 | "url": "https://github.com/MarcLoupias" 11 | } 12 | ], 13 | "repository": { 14 | "type": "git", 15 | "url": "https://github.com/MarcLoupias/memo-dev" 16 | }, 17 | "bugs": { 18 | "url": "https://github.com/MarcLoupias/memo-dev/issues" 19 | }, 20 | "homepage": "http://memo-dev.marc-loupias.fr", 21 | "engines": { 22 | "node": ">=16.20.1", 23 | "npm": ">=8.19.4" 24 | }, 25 | "scripts": { 26 | "test": "markdownlint 'content/**/*.md' --ignore content/data/files-formats/markdown-from-gitlab.md", 27 | "dev": "vuepress dev content", 28 | "build": "export NODE_OPTIONS=--openssl-legacy-provider && vuepress build content && echo memo-dev.marc-loupias.fr > docs/CNAME", 29 | "build::serve": "http-server -c-1 docs/", 30 | "prepare": "husky install" 31 | }, 32 | "license": "ISC", 33 | "devDependencies": { 34 | "http-server": "^14.1.1", 35 | "husky": "^8.0.3", 36 | "markdownlint-cli": "^0.35.0", 37 | "rimraf": "^5.0.1", 38 | "vuepress": "^0.14.11" 39 | } 40 | } 41 | --------------------------------------------------------------------------------