tanszek:oktatas:techcomm:yaml
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| tanszek:oktatas:techcomm:yaml [2025/11/17 20:23] – [5. Aliases and Anchors] knehez | tanszek:oktatas:techcomm:yaml [2025/11/17 20:35] (current) – [Summary] knehez | ||
|---|---|---|---|
| Line 192: | Line 192: | ||
| </ | </ | ||
| - | ===== Educational Demo Idea ===== | + | |
| - | Show the same configuration both in JSON and YAML, and ask: | + | |
| - | * Which one is easier to read? | + | |
| - | * What are the risks of using indentation as syntax? | + | |
| - | * How does the structure represent a **syntax tree**? | + | |
| ===== Summary ===== | ===== Summary ===== | ||
| Line 202: | Line 198: | ||
| * It was created to bridge the gap between human readability and machine processing. | * It was created to bridge the gap between human readability and machine processing. | ||
| * It plays a central role in modern **DevOps**, **configuration management**, | * It plays a central role in modern **DevOps**, **configuration management**, | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== JSON & YAML Exercises ===== | ||
| + | |||
| + | ==== 1. Identify the format & fix errors ==== | ||
| + | |||
| + | **Task: | ||
| + | Determine whether the snippet is in JSON or YAML format. If invalid, fix it. | ||
| + | |||
| + | < | ||
| + | name: ChatGPT | ||
| + | skills: [" | ||
| + | version: " | ||
| + | </ | ||
| + | |||
| + | **Solution: | ||
| + | This is valid YAML. | ||
| + | |||
| + | |||
| + | ==== 2. Convert JSON → YAML ==== | ||
| + | |||
| + | **Task:** | ||
| + | |||
| + | <code json> | ||
| + | { | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | **Solution (YAML):** | ||
| + | |||
| + | <code yaml> | ||
| + | user: John | ||
| + | role: student | ||
| + | active: true | ||
| + | points: 128 | ||
| + | </ | ||
| + | |||
| + | |||
| + | ==== 3. Convert YAML → JSON ==== | ||
| + | |||
| + | **Task:** | ||
| + | |||
| + | <code yaml> | ||
| + | server: | ||
| + | host: localhost | ||
| + | port: 8080 | ||
| + | logging: true | ||
| + | </ | ||
| + | |||
| + | **Solution (JSON):** | ||
| + | |||
| + | <code json> | ||
| + | { | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | |||
| + | ==== 4. Extend the YAML configuration ==== | ||
| + | |||
| + | **Task: | ||
| + | Add an ' | ||
| + | |||
| + | <code yaml> | ||
| + | webserver: | ||
| + | host: 192.168.1.20 | ||
| + | port: 3000 | ||
| + | </ | ||
| + | |||
| + | **Solution: | ||
| + | |||
| + | <code yaml> | ||
| + | webserver: | ||
| + | host: 192.168.1.20 | ||
| + | port: 3000 | ||
| + | ssl: true | ||
| + | admins: | ||
| + | - alice | ||
| + | - bob | ||
| + | </ | ||
| + | |||
| + | |||
| + | ==== 5. Valid or invalid JSON? Fix it. ==== | ||
| + | |||
| + | **Task:** | ||
| + | |||
| + | <code json> | ||
| + | { | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | **Solution: | ||
| + | Errors: misplaced colon, trailing comma. | ||
| + | |||
| + | Correct version: | ||
| + | |||
| + | <code json> | ||
| + | { | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | |||
| + | ==== 6. Fix the indentation errors (YAML) ==== | ||
| + | |||
| + | **Task:** | ||
| + | |||
| + | <code yaml> | ||
| + | database: | ||
| + | name: testdb | ||
| + | port: 5432 | ||
| + | host: localhost | ||
| + | </ | ||
| + | |||
| + | **Solution: | ||
| + | |||
| + | <code yaml> | ||
| + | database: | ||
| + | name: testdb | ||
| + | port: 5432 | ||
| + | host: localhost | ||
| + | </ | ||
| + | |||
| + | |||
| + | ==== 7. Create the JSON structure ==== | ||
| + | |||
| + | **Task: | ||
| + | Create this structure in JSON: | ||
| + | |||
| + | * application | ||
| + | * name: " | ||
| + | * database: | ||
| + | * host: " | ||
| + | * port: 3306 | ||
| + | * users: [" | ||
| + | |||
| + | **Solution: | ||
| + | |||
| + | <code json> | ||
| + | { | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | } | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | |||
| + | ==== 8. Rewrite " | ||
| + | |||
| + | **Task:** | ||
| + | |||
| + | <code yaml> | ||
| + | product: | ||
| + | name: hoodie | ||
| + | sizes: "S, M, L, XL" | ||
| + | </ | ||
| + | |||
| + | **Solution: | ||
| + | |||
| + | <code yaml> | ||
| + | product: | ||
| + | name: hoodie | ||
| + | sizes: | ||
| + | - S | ||
| + | - M | ||
| + | - L | ||
| + | - XL | ||
| + | </ | ||
| + | |||
| + | |||
| + | ==== 9. Create your own configuration ==== | ||
| + | |||
| + | **Task: | ||
| + | Create a configuration (YAML or JSON) including: | ||
| + | |||
| + | * server settings | ||
| + | * 3 users | ||
| + | * roles | ||
| + | * features list (3 items) | ||
| + | |||
| + | **Solution (YAML example):** | ||
| + | |||
| + | <code yaml> | ||
| + | app: | ||
| + | server: | ||
| + | host: 0.0.0.0 | ||
| + | port: 5000 | ||
| + | |||
| + | users: | ||
| + | - name: anna | ||
| + | role: admin | ||
| + | - name: bela | ||
| + | role: editor | ||
| + | - name: koris | ||
| + | role: read-only | ||
| + | |||
| + | features: | ||
| + | - analytics | ||
| + | - backup | ||
| + | - notifications | ||
| + | </ | ||
| + | |||
| + | |||
| + | ==== 10. List differences between JSON and YAML ==== | ||
| + | |||
| + | **Task: | ||
| + | List 5 differences. | ||
| + | |||
| + | **Solution: | ||
| + | |||
| + | * YAML uses indentation instead of curly braces. | ||
| + | * YAML supports comments (#), JSON does not. | ||
| + | * JSON has stricter syntax; YAML is more flexible. | ||
| + | * YAML supports advanced features (anchors, aliases). | ||
| + | * JSON keys must be strings; YAML keys do not require quotes. | ||
| + | |||
| + | |||
| + | ==== 11. Industrial config conversion ==== | ||
| + | |||
| + | **Task:** Convert to YAML and add `backup: true`. | ||
| + | |||
| + | <code json> | ||
| + | { | ||
| + | " | ||
| + | " | ||
| + | {" | ||
| + | {" | ||
| + | ], | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | **Solution: | ||
| + | |||
| + | <code yaml> | ||
| + | plant: Factory_A | ||
| + | machines: | ||
| + | - id: 1 | ||
| + | type: CNC | ||
| + | status: online | ||
| + | - id: 2 | ||
| + | type: Laser | ||
| + | status: offline | ||
| + | schedule: | ||
| + | shift: night | ||
| + | workers: 12 | ||
| + | backup: true | ||
| + | </ | ||
| + | |||
| + | |||
| + | ==== 12. Convert string booleans to real booleans ==== | ||
| + | |||
| + | **Task:** | ||
| + | |||
| + | <code yaml> | ||
| + | config: | ||
| + | verbose: " | ||
| + | auto_restart: | ||
| + | safe_mode: " | ||
| + | </ | ||
| + | |||
| + | **Solution: | ||
| + | |||
| + | <code yaml> | ||
| + | config: | ||
| + | verbose: true | ||
| + | auto_restart: | ||
| + | safe_mode: false | ||
| + | </ | ||
| + | |||
tanszek/oktatas/techcomm/yaml.1763410985.txt.gz · Last modified: 2025/11/17 20:23 by knehez
