{
    "componentChunkName": "component---src-templates-module-js",
    "path": "/courses/devops/prerequisites/",
    "result": {"data":{"module":{"frontmatter":{"duration":"1-3 hours","slug":"/courses/devops/prerequisites/","title":"Prerequisites for DevOps course"},"course":{"frontmatter":{"title":"DevOps","slug":"/courses/devops/"}},"slides":[{"frontmatter":{"slug":"/courses/devops/prerequisites/slides/0/","title":"Software presets"}},{"frontmatter":{"slug":"/courses/devops/prerequisites/slides/1/","title":"Terminal"}},{"frontmatter":{"slug":"/courses/devops/prerequisites/slides/2/","title":"Bash"}},{"frontmatter":{"slug":"/courses/devops/prerequisites/slides/3/","title":"Vi(m)"}},{"frontmatter":{"slug":"/courses/devops/prerequisites/slides/4/","title":"Client VS Server"}},{"frontmatter":{"slug":"/courses/devops/prerequisites/slides/5/","title":"The IP protocol"}},{"frontmatter":{"slug":"/courses/devops/prerequisites/slides/6/","title":"The HTTP protocol"}},{"frontmatter":{"slug":"/courses/devops/prerequisites/slides/7/","title":"API and REST API"}},{"frontmatter":{"slug":"/courses/devops/prerequisites/slides/8/","title":"SSL/TLS & HTTPS"}},{"frontmatter":{"slug":"/courses/devops/prerequisites/slides/9/","title":"SSH - Secure shell"}},{"frontmatter":{"slug":"/courses/devops/prerequisites/slides/10/","title":"The SFTP protocol"}},{"frontmatter":{"slug":"/courses/devops/prerequisites/slides/11/","title":"Security"}},{"frontmatter":{"slug":"/courses/devops/prerequisites/slides/12/","title":"Editors, IDE"}},{"frontmatter":{"slug":"/courses/devops/prerequisites/slides/13/","title":"Programmation paradigms"}},{"frontmatter":{"slug":"/courses/devops/prerequisites/slides/14/","title":"StackOverflow"}},{"frontmatter":{"slug":"/courses/devops/prerequisites/slides/15/","title":"JSON format"}},{"frontmatter":{"slug":"/courses/devops/prerequisites/slides/16/","title":"YAML format"}}],"parent":{"body":"var _excluded = [\"components\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/* @jsxRuntime classic */\n\n/* @jsx mdx */\nvar _frontmatter = {\n  \"duration\": \"1-3 hours\"\n};\nvar layoutProps = {\n  _frontmatter: _frontmatter\n};\nvar MDXLayout = \"wrapper\";\nreturn function MDXContent(_ref) {\n  var components = _ref.components,\n      props = _objectWithoutProperties(_ref, _excluded);\n\n  return mdx(MDXLayout, _extends({}, layoutProps, props, {\n    components: components,\n    mdxType: \"MDXLayout\"\n  }), mdx(\"h2\", null, \"Software presets\"), mdx(\"p\", null, \"Install the following software on your computer:\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://git-scm.com/book/en/v2/Getting-Started-Installing-Git\"\n  }, \"Git\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://nodejs.org/en/download/\"\n  }, \"Node.js\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://www.virtualbox.org/wiki/Downloads\"\n  }, \"VirtualBox\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://docs.docker.com/get-docker/\"\n  }, \"Docker\"))), mdx(\"h2\", null, \"Terminal\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Most useful developer tool\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Any number of customizations\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"On Windows: Linux Bash Shell, Powershell, Git Bash (don't use default CMD!)\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"On macOS / Linux: native Terminal\")), mdx(\"h2\", null, \"Bash\"), mdx(\"p\", null, \"Learn Bash base commands:\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://www.educative.io/blog/bash-shell-command-cheat-sheet\"\n  }, \"Bash base commands\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://github.com/phyver/GameShell\"\n  }, \"GameShell: a \\\"game\\\" to teach the Unix shell\"))), mdx(\"h2\", null, \"Vi(m)\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Bash text editor\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Use \", mdx(\"code\", {\n    parentName: \"li\",\n    \"className\": \"language-text\"\n  }, \":\"), \" to enter command mode\", mdx(\"ul\", {\n    parentName: \"li\"\n  }, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"code\", {\n    parentName: \"li\",\n    \"className\": \"language-text\"\n  }, \"w\"), \" to write file\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"code\", {\n    parentName: \"li\",\n    \"className\": \"language-text\"\n  }, \"q\"), \" to quit\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"code\", {\n    parentName: \"li\",\n    \"className\": \"language-text\"\n  }, \"q!\"), \" to quit without saving\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"'x' to write & quit\"))), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Use \", mdx(\"code\", {\n    parentName: \"li\",\n    \"className\": \"language-text\"\n  }, \"/\"), \" to search for text\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Use \", mdx(\"code\", {\n    parentName: \"li\",\n    \"className\": \"language-text\"\n  }, \"i\"), \" to enter edit mode and \", mdx(\"code\", {\n    parentName: \"li\",\n    \"className\": \"language-text\"\n  }, \"ESC\"), \" to exit it\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"code\", {\n    parentName: \"li\",\n    \"className\": \"language-text\"\n  }, \"vimtutor\"), \" is the best tutorial to learn\")), mdx(\"h2\", null, \"Client VS Server\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Two parts of a distributed computing model:\", mdx(\"ul\", {\n    parentName: \"li\"\n  }, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Client requests the info and displays it\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Server processes the request and services the result\"))), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"We will do server work + a bit of client-side\")), mdx(\"h2\", null, \"The IP protocol\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Send data from one computer to another over a network (ex: client/server)\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Use of IPV4 addresses (ex: 172.16.254.1), IPV6 also available but not much used\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Data packaged in IP packets with 2 sections\", mdx(\"ul\", {\n    parentName: \"li\"\n  }, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Header: IP version, addresses, TTL, ...\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Data: the packet's content\")))), mdx(\"h2\", null, \"The HTTP protocol\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Application protocol for transmitting hypermedia documents (HTML)\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Two types of messages: \", mdx(\"em\", {\n    parentName: \"li\"\n  }, \"requests\"), \" & \", mdx(\"em\", {\n    parentName: \"li\"\n  }, \"responses\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"HTTP message split between \", mdx(\"em\", {\n    parentName: \"li\"\n  }, \"headers\"), \" & \", mdx(\"em\", {\n    parentName: \"li\"\n  }, \"body\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"HTTP response always contains\", mdx(\"ul\", {\n    parentName: \"li\"\n  }, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"the \", mdx(\"em\", {\n    parentName: \"li\"\n  }, \"protocol\"), \" (HTTP/1.1)\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"a \", mdx(\"em\", {\n    parentName: \"li\"\n  }, \"status code\"), \" (200, 404, ...)\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"a \", mdx(\"em\", {\n    parentName: \"li\"\n  }, \"status text\"), \" (page not found)\")))), mdx(\"h2\", null, \"API and REST API\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Application Programming Interface (API)\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"In web: REST API\", mdx(\"ul\", {\n    parentName: \"li\"\n  }, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Expose a set of HTTP routes\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Use HTTP verbs (GET / POST / PUT / DELETE)\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Client connects to communicate\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Usually communicating in JSON\")))), mdx(\"p\", null, \"REST API example: \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://petstore.swagger.io/\"\n  }, \"https://petstore.swagger.io/\")), mdx(\"h2\", null, \"SSL/TLS & HTTPS\"), mdx(\"p\", null, \"(Secure Sockets Layer / Transport Layer Security)\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Establish an encrypted link over a network\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Exchange of public & private keys to secure the exchange\", mdx(\"ul\", {\n    parentName: \"li\"\n  }, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Server sends SSL certificate + public key\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Client checks the certificate & answers with an encrypted session key\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Client & server exchange messages encrypted with the keys to authenticate\"))), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"SSL certificate has been certified by a renowned authority\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"HTTPS: HTTP secured with SSL/TLS\")), mdx(\"h2\", null, \"SSH - Secure shell\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Cryptographic network protocol to operate network services securely over an unsecured network\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Exchange of public & private keys to secure the exchange\", mdx(\"ul\", {\n    parentName: \"li\"\n  }, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Client has the private key\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Server needs to have the associated public key\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Client & server exchange messages encrypted with the keys to authenticate\")))), mdx(\"h2\", null, \"The SFTP protocol\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Send files over SSH\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"ex: deploy a website to a server\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"SFTP apps: FileZilla, Cyberduck, WinSCP, ...\")), mdx(\"h1\", null, \"Databases\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"RDBMS (basis for SQL): MySQL, PostgreSQL, Hive, Oracle\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"NoSQL:\", mdx(\"ul\", {\n    parentName: \"li\"\n  }, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Filesystems: posix and object storage\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Documents store: MongoDB, ElasticSearch\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Key/value and sorted key/value stores: Redis, LevelDB\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Column families: HBase, Cassandra\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Graph DBs: JanusGraph (ex-TitanDB), Neo4J\")))), mdx(\"h2\", null, \"Security\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Use a password manager\", mdx(\"ul\", {\n    parentName: \"li\"\n  }, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://buttercup.pw/\"\n  }, \"Buttercup\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://bitwarden.com/\"\n  }, \"Bitwarden\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://keepass.info/\"\n  }, \"KeePass\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://www.passwordstore.org/\"\n  }, \"pass\"))))), mdx(\"h2\", null, \"Editors, IDE\"), mdx(\"p\", null, \"As a developer, the terminal being your partner and the editor is your best friend: \"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://www.vim.org/\"\n  }, \"Vim\"), \" (Linux, macOS, Windows)\", mdx(\"br\", {\n    parentName: \"li\"\n  }), \"Free, one of the most powerful, many will say the most powerful, single file or project-oriented.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://atom.io/\"\n  }, \"Atom\"), \" (Linux, macOS, Windows)\", mdx(\"br\", {\n    parentName: \"li\"\n  }), \"Free project-oriented, minimalist, and productive UI (my day to day favorite editor), slow and memory hungry\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://code.visualstudio.com/\"\n  }, \"VS Code\"), \" (Linux, macOS, Windows)\", mdx(\"br\", {\n    parentName: \"li\"\n  }), \"Free most popular editor, most active community, and plugins development\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://www.sublimetext.com/\"\n  }, \"Sublime Text\"), \" (Linux, macOS, Windows)\", mdx(\"br\", {\n    parentName: \"li\"\n  }), \"Free, very fast, single file or project-oriented\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://www.barebones.com/products/bbedit/\"\n  }, \"BBedit\"), \" (macOS)\", mdx(\"br\", {\n    parentName: \"li\"\n  }), \"Free version very powerful, very fast\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://notepad-plus-plus.org/\"\n  }, \"Notepad++\"), \" Windows)\", mdx(\"br\", {\n    parentName: \"li\"\n  }), \"Free, almost a Windows standard, powerful and fast\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://www.jetbrains.com/webstorm/\"\n  }, \"WebStorm\"), \" (Linux, macOS, Windows)\\nLicensed, 30 days trial\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"...\")), mdx(\"h2\", null, \"Programmation paradigms\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"\\\"A way of programming\\\"\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Common paradigms:\", mdx(\"ul\", {\n    parentName: \"li\"\n  }, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Declarative: the program describes its desired results without explicitly listing commands or steps.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Imperative: the control flow is an explicit sequence of commands.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Functional: the computation proceeds by function calls, no global state\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Object-oriented: everything is an object, functions are methods and are executed with the object's context\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Event-driven: the control flow is triggered and determined by async actions\")))), mdx(\"h2\", null, \"StackOverflow\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Huge data source\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Reactive community\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Any subject\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Lots of answered questions (> 1M !)\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Don\\u2019t forget the source code!\")), mdx(\"h2\", null, \"JSON format\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"JSON is a subset of JavaScript, JavaScript is built upon JSON\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Data format\")), mdx(\"p\", null, \"Valid JavaScript:\"), mdx(\"div\", {\n    \"className\": \"gatsby-highlight\",\n    \"data-language\": \"js\"\n  }, mdx(\"pre\", {\n    parentName: \"div\",\n    \"className\": \"language-js\"\n  }, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-js\"\n  }, mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token keyword\"\n  }, \"const\"), \" user \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"=\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"{\"), \"\\n  \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token literal-property property\"\n  }, \"firstname\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \":\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token string\"\n  }, \"'Lucky'\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \",\"), \"\\n  \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token literal-property property\"\n  }, \"lastname\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \":\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token template-string\"\n  }, mdx(\"span\", {\n    parentName: \"span\",\n    \"className\": \"token template-punctuation string\"\n  }, \"`\"), mdx(\"span\", {\n    parentName: \"span\",\n    \"className\": \"token string\"\n  }, \"Luke\"), mdx(\"span\", {\n    parentName: \"span\",\n    \"className\": \"token template-punctuation string\"\n  }, \"`\")), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \",\"), \"\\n  \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token string-property property\"\n  }, \"\\\"password\\\"\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \":\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token string\"\n  }, \"\\\"secret\\\"\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \",\"), \"\\n  \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token literal-property property\"\n  }, \"age\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \":\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token number\"\n  }, \"42\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \",\"), \"\\n  \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token literal-property property\"\n  }, \"mood\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \":\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token number\"\n  }, \"0.9\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \",\"), \"\\n  \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token literal-property property\"\n  }, \"languages\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \":\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"[\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token string\"\n  }, \"'en'\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \",\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"[\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token string\"\n  }, \"'fr_FR'\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \",\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token string\"\n  }, \"'fr_CA'\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"]\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \",\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \",\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"]\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \",\"), \"\\n  \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token literal-property property\"\n  }, \"level\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \":\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token keyword\"\n  }, \"null\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \",\"), \"\\n  \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token literal-property property\"\n  }, \"friends\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \":\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token keyword\"\n  }, \"undefined\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \",\"), \"\\n\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"}\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \";\")))), mdx(\"p\", null, \"Valid JSON:\"), mdx(\"div\", {\n    \"className\": \"gatsby-highlight\",\n    \"data-language\": \"json\"\n  }, mdx(\"pre\", {\n    parentName: \"div\",\n    \"className\": \"language-json\"\n  }, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-json\"\n  }, mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"{\"), \"\\n  \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token property\"\n  }, \"\\\"firstname\\\"\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \":\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token string\"\n  }, \"\\\"Lucky\\\"\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \",\"), \"\\n  \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token property\"\n  }, \"\\\"lastname\\\"\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \":\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token string\"\n  }, \"\\\"Luke\\\"\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \",\"), \"\\n  \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token property\"\n  }, \"\\\"password\\\"\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \":\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token string\"\n  }, \"\\\"secret\\\"\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \",\"), \"\\n  \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token property\"\n  }, \"\\\"age\\\"\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \":\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token number\"\n  }, \"42\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \",\"), \"\\n  \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token property\"\n  }, \"\\\"mood\\\"\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \":\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token number\"\n  }, \"0.9\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \",\"), \"\\n  \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token property\"\n  }, \"\\\"languages\\\"\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \":\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"[\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token string\"\n  }, \"\\\"en\\\"\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \",\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"[\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token string\"\n  }, \"\\\"fr_FR\\\"\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \",\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token string\"\n  }, \"\\\"fr_CA\\\"\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"]\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"]\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \",\"), \"\\n  \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token property\"\n  }, \"\\\"level\\\"\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \":\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token null keyword\"\n  }, \"null\"), \"\\n\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"}\")))), mdx(\"h2\", null, \"YAML format\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Human-readable data-serialization format\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Indentations are important!\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"em\", {\n    parentName: \"li\"\n  }, \"\\\"Yet Another Markup Language\\\"\"))), mdx(\"p\", null, \"The same as above JSON, but YAML:\"), mdx(\"div\", {\n    \"className\": \"gatsby-highlight\",\n    \"data-language\": \"yml\"\n  }, mdx(\"pre\", {\n    parentName: \"div\",\n    \"className\": \"language-yml\"\n  }, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-yml\"\n  }, mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token key atrule\"\n  }, \"firstname\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \":\"), \" Lucky\\n\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token key atrule\"\n  }, \"lastname\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \":\"), \" Luke\\n\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token key atrule\"\n  }, \"password\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \":\"), \" secret\\n\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token key atrule\"\n  }, \"age\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \":\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token number\"\n  }, \"42\"), \"\\n\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token key atrule\"\n  }, \"mood\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \":\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token number\"\n  }, \"0.9\"), \"\\n\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token key atrule\"\n  }, \"languages\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \":\"), \"\\n  \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"-\"), \" en\\n  \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"-\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"-\"), \" fr_FR\\n    \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"-\"), \" fr_CA\\nlevel\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \":\")))));\n}\n;\nMDXContent.isMDXComponent = true;"}}},"pageContext":{}},
    "staticQueryHashes": []}