├── .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 | 
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 | [](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 |
--------------------------------------------------------------------------------