diff --git a/bin/update-sponsors.cjs b/bin/update-sponsors.cjs index 2919afbc8..bedadcc45 100644 --- a/bin/update-sponsors.cjs +++ b/bin/update-sponsors.cjs @@ -13,24 +13,49 @@ if (!apiKey || !sheetId) { const sheetRange = 'A3:I1001'; const sheetUrl = `https://sheets.googleapis.com/v4/spreadsheets/${sheetId}/values/${sheetRange}?key=${apiKey}`; -function populatePageAds({ +function removeAllSponsors(baseContentDir) { + console.log('------------------------'); + console.log('Removing sponsors from: ', baseContentDir); + console.log('------------------------'); + const dataDirPath = path.join(__dirname, '../src/data'); + const contentDirPath = path.join(dataDirPath, baseContentDir); + + const contentDir = fs.readdirSync(contentDirPath); + contentDir.forEach((content) => { + console.log('Removing sponsor from: ', content); + + const pageFilePath = path.join(contentDirPath, content, `${content}.md`); + const pageFileContent = fs.readFileSync(pageFilePath, 'utf8'); + + const frontMatterRegex = /---\n([\s\S]*?)\n---/; + + const existingFrontmatter = pageFileContent.match(frontMatterRegex)[1]; + const contentWithoutFrontmatter = pageFileContent + .replace(frontMatterRegex, ``) + .trim(); + + let frontmatterObj = yaml.load(existingFrontmatter); + delete frontmatterObj.sponsor; + + const newFrontmatter = yaml.dump(frontmatterObj, { + lineWidth: 10000, + forceQuotes: true, + quotingType: "'", + }); + const newContent = `---\n${newFrontmatter}---\n${contentWithoutFrontmatter}`; + + fs.writeFileSync(pageFilePath, newContent, 'utf8'); + }); +} + +function addPageSponsor({ pageUrl, company, redirectUrl, imageUrl, adTitle, adDescription, - startDate, - endDate, - isActive, }) { - const isConfiguredActive = isActive.toLowerCase() === 'yes'; - - const currentDate = new Date(); - const isDateInRange = - currentDate >= new Date(startDate) && currentDate <= new Date(endDate); - const shouldShowAd = isConfiguredActive && isDateInRange; - const urlPart = pageUrl .replace('https://roadmap.sh/', '') .replace(/\?.+?$/, ''); @@ -64,40 +89,45 @@ function populatePageAds({ let frontmatterObj = yaml.load(existingFrontmatter); delete frontmatterObj.sponsor; - if (shouldShowAd) { - const frontmatterValues = Object.entries(frontmatterObj); - const roadmapLabel = frontmatterObj.briefTitle; - - // Insert sponsor data at 10 index i.e. after - // roadmap dimensions in the frontmatter - frontmatterValues.splice(10, 0, [ - 'sponsor', - { - url: redirectUrl, - title: adTitle, - imageUrl, - description: adDescription, - event: { - category: 'SponsorClick', - action: `${company} Redirect`, - label: `${roadmapLabel} / ${company} Link`, - }, + const frontmatterValues = Object.entries(frontmatterObj); + const roadmapLabel = frontmatterObj.briefTitle; + + // Insert sponsor data at 10 index i.e. after + // roadmap dimensions in the frontmatter + frontmatterValues.splice(10, 0, [ + 'sponsor', + { + url: redirectUrl, + title: adTitle, + imageUrl, + description: adDescription, + event: { + category: 'SponsorClick', + action: `${company} Redirect`, + label: `${roadmapLabel} / ${company} Link`, }, - ]); + }, + ]); - frontmatterObj = Object.fromEntries(frontmatterValues); - } + frontmatterObj = Object.fromEntries(frontmatterValues); const newFrontmatter = yaml.dump(frontmatterObj, { lineWidth: 10000, forceQuotes: true, - quotingType: '"', + quotingType: "'", }); const newContent = `---\n${newFrontmatter}---\n\n${contentWithoutFrontmatter}`; fs.writeFileSync(pageFilePath, newContent, 'utf8'); } +// Remove sponsors from all roadmaps +removeAllSponsors('roadmaps'); +removeAllSponsors('best-practices'); + +console.log('------------------------'); +console.log('Adding sponsors'); +console.log('------------------------'); fetch(sheetUrl) .then((res) => res.json()) .then((rawData) => { @@ -117,7 +147,16 @@ fetch(sheetUrl) isActive, ] = row; - populatePageAds({ + const isConfiguredActive = isActive?.toLowerCase() === 'yes'; + const currentDate = new Date(); + const isDateInRange = + currentDate >= new Date(startDate) && currentDate <= new Date(endDate); + + if (!isConfiguredActive || !isDateInRange) { + return; + } + + addPageSponsor({ pageUrl, company, redirectUrl, diff --git a/package.json b/package.json index b3e40f9e3..645949940 100644 --- a/package.json +++ b/package.json @@ -23,16 +23,16 @@ "@astrojs/preact": "^2.1.0", "@astrojs/sitemap": "^1.2.1", "@astrojs/tailwind": "^3.1.1", - "astro": "^2.1.7", + "astro": "^2.1.9", "astro-compress": "^1.1.35", "jose": "^4.13.1", "js-cookie": "^3.0.1", "node-html-parser": "^6.1.5", - "npm-check-updates": "^16.8.0", "preact": "^10.6.5", + "npm-check-updates": "^16.9.0", "rehype-external-links": "^2.0.1", "roadmap-renderer": "^1.0.4", - "tailwindcss": "^3.2.7" + "tailwindcss": "^3.3.1" }, "devDependencies": { "@playwright/test": "^1.32.1", diff --git a/public/jsons/roadmaps/kubernetes.json b/public/jsons/roadmaps/kubernetes.json index ca46236d2..444184fa0 100644 --- a/public/jsons/roadmaps/kubernetes.json +++ b/public/jsons/roadmaps/kubernetes.json @@ -1 +1 @@ -{"mockup":{"controls":{"control":[{"ID":"16551","typeID":"Arrow","zOrder":"47","w":"258","h":"121","measuredW":"150","measuredH":"100","x":"565","y":"342","properties":{"color":"2848996","direction":"bottom","leftArrow":"false","rightArrow":"false","p0":{"x":257.9819203652737,"y":-0.2642105923081317},"p1":{"x":0.4727111875713408,"y":0.09128874696614088},"p2":{"x":-0.4191645594230522,"y":120.95268664194612}}},{"ID":"16555","typeID":"Arrow","zOrder":"48","w":"35","h":"111","measuredW":"150","measuredH":"100","x":"852","y":"170","properties":{"color":"2848996","direction":"bottom","leftArrow":"false","rightArrow":"false","p0":{"x":27.258693718900076,"y":-0.1665392487915085},"p1":{"x":0.461757659395342,"y":0.1574049386757521},"p2":{"x":-0.190722039362754,"y":111.06877318368441}}},{"ID":"16558","typeID":"Label","zOrder":"49","measuredW":"147","measuredH":"36","x":"792","y":"113","properties":{"size":"28","text":"Kubernetes"}},{"ID":"16559","typeID":"Canvas","zOrder":"50","w":"350","h":"141","measuredW":"100","measuredH":"70","x":"1116","y":"0"},{"ID":"16560","typeID":"Label","zOrder":"51","measuredW":"314","measuredH":"25","x":"1130","y":"17","properties":{"size":"17","text":"Find the detailed version of this roadmap"}},{"ID":"16561","typeID":"Label","zOrder":"52","measuredW":"319","measuredH":"25","x":"1130","y":"45","properties":{"size":"17","text":"along with resources and other roadmaps"}},{"ID":"16562","typeID":"__group__","zOrder":"53","measuredW":"320","measuredH":"45","w":"320","h":"45","x":"1131","y":"81","properties":{"controlName":"ext_link:roadmap.sh"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"320","h":"45","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"borderColor":"4273622","color":"4273622"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"105","measuredH":"28","x":"141","y":"8","properties":{"color":"16777215","size":"20","text":"roadmap.sh"}},{"ID":"2","typeID":"Label","zOrder":"2","measuredW":"45","measuredH":"28","x":"66","y":"8","properties":{"color":"16777215","size":"20","text":"https"}},{"ID":"3","typeID":"Label","zOrder":"3","measuredW":"5","measuredH":"28","x":"113","y":"8","properties":{"color":"16777215","size":"20","text":":"}},{"ID":"4","typeID":"Label","zOrder":"4","measuredW":"10","measuredH":"28","x":"120","y":"9","properties":{"color":"16777215","size":"20","text":"/"}},{"ID":"5","typeID":"Label","zOrder":"5","measuredW":"10","measuredH":"28","x":"128","y":"9","properties":{"color":"16777215","size":"20","text":"/"}}]}}},{"ID":"16563","typeID":"Arrow","zOrder":"54","w":"11","h":"65","measuredW":"150","measuredH":"100","x":"837","y":"37","properties":{"color":"2848996","direction":"bottom","leftArrow":"false","rightArrow":"false","stroke":"dotted","p0":{"x":5.81355254908226,"y":-0.3048709282632984},"p1":{"x":0.4747832595422888,"y":-0.12123341254486592},"p2":{"x":11,"y":65}}},{"ID":"16721","typeID":"Canvas","zOrder":"56","w":"398","h":"159","measuredW":"100","measuredH":"70","x":"262","y":"1"},{"ID":"16722","typeID":"__group__","zOrder":"57","measuredW":"183","measuredH":"27","w":"183","h":"27","x":"289","y":"73","properties":{"controlName":"ext_link:github.com/donnemartin/devops"},"children":{"controls":{"control":[{"ID":"0","typeID":"Label","zOrder":"0","measuredW":"150","measuredH":"26","x":"33","y":"0","properties":{"size":"18","text":"DevOps Roadmap"}},{"ID":"1","typeID":"__group__","zOrder":"1","measuredW":"24","measuredH":"24","w":"24","h":"24","x":"0","y":"3","children":{"controls":{"control":[{"ID":"0","typeID":"Icon","zOrder":"0","measuredW":"24","measuredH":"24","x":"0","y":"0","properties":{"color":"16777215","icon":{"ID":"circle","size":"small"}}},{"ID":"1","typeID":"Icon","zOrder":"1","measuredW":"24","measuredH":"24","x":"0","y":"0","properties":{"color":"10066329","icon":{"ID":"check-circle","size":"small"}}}]}}}]}}},{"ID":"16723","typeID":"__group__","zOrder":"58","measuredW":"238","measuredH":"27","w":"238","h":"27","x":"289","y":"109","properties":{"controlName":"ext_link:roadmap.sh/system-design"},"children":{"controls":{"control":[{"ID":"0","typeID":"Label","zOrder":"0","measuredW":"205","measuredH":"26","x":"33","y":"0","properties":{"size":"18","text":"System Design Roadmap"}},{"ID":"1","typeID":"__group__","zOrder":"1","measuredW":"24","measuredH":"24","w":"24","h":"24","x":"0","y":"3","children":{"controls":{"control":[{"ID":"0","typeID":"Icon","zOrder":"0","measuredW":"24","measuredH":"24","x":"0","y":"0","properties":{"color":"16777215","icon":{"ID":"circle","size":"small"}}},{"ID":"1","typeID":"Icon","zOrder":"1","measuredW":"24","measuredH":"24","x":"0","y":"0","properties":{"color":"10066329","icon":{"ID":"check-circle","size":"small"}}}]}}}]}}},{"ID":"16724","typeID":"Label","zOrder":"59","measuredW":"209","measuredH":"32","x":"289","y":"25","properties":{"size":"24","text":"Related Roadmaps"}},{"ID":"16848","typeID":"Arrow","zOrder":"46","w":"1","h":"95","measuredW":"150","measuredH":"100","x":"461","y":"365","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":0,"y":0},"p1":{"x":0.4999999999999999,"y":0},"p2":{"x":0,"y":94.66067010876486}}},{"ID":"16858","typeID":"Arrow","zOrder":"45","w":"119","h":"64","measuredW":"150","measuredH":"100","x":"973","y":"212","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":-0.33333333333337123,"y":64},"p1":{"x":0.4683294842186294,"y":-0.0843110084680532},"p2":{"x":119,"y":0}}},{"ID":"16859","typeID":"Arrow","zOrder":"44","w":"121","h":"23","measuredW":"150","measuredH":"100","x":"973","y":"260","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":0.33333333333337123,"y":22.666666666666686},"p1":{"x":0.49193894855850734,"y":-0.054087054833238946},"p2":{"x":121.66666666666674,"y":0}}},{"ID":"16860","typeID":"Arrow","zOrder":"43","w":"124","h":"69","measuredW":"150","measuredH":"100","x":"972","y":"305","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":0,"y":0.33333333333337123},"p1":{"x":0.4769230769230774,"y":0.10384615384615405},"p2":{"x":124,"y":69.66666666666663}}},{"ID":"16861","typeID":"Arrow","zOrder":"42","w":"128","h":"24","measuredW":"150","measuredH":"100","x":"968","y":"295","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":0,"y":1},"p1":{"x":0.4911471358380652,"y":0.061219806407955525},"p2":{"x":128,"y":24.66666666666663}}},{"ID":"16862","typeID":"Arrow","zOrder":"41","w":"180","h":"1","measuredW":"150","measuredH":"100","x":"956","y":"677","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","color":"10027263","p0":{"x":0.1332818971498,"y":0.20845130157692893},"p1":{"x":0.5,"y":0},"p2":{"x":179.84446444351192,"y":0.20845130157692893}}},{"ID":"16878","typeID":"Arrow","zOrder":"40","w":"166","h":"6","measuredW":"150","measuredH":"100","x":"608","y":"681","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":0,"y":0},"p1":{"x":0.4999999999999999,"y":0},"p2":{"x":166.44688943087885,"y":6.208451301576929}}},{"ID":"16903","typeID":"Arrow","zOrder":"39","w":"1","h":"164","measuredW":"150","measuredH":"100","x":"942","y":"837","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","color":"10027263","p0":{"x":0,"y":0},"p1":{"x":0.49999999999999994,"y":0},"p2":{"x":0,"y":163.75757575757575}}},{"ID":"16928","typeID":"Arrow","zOrder":"38","w":"156","h":"70","measuredW":"150","measuredH":"100","x":"969","y":"920","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":-0.3939393939394904,"y":69.69696969696963},"p1":{"x":0.5448827055428114,"y":-0.09657366979945234},"p2":{"x":155.66666666666652,"y":0}}},{"ID":"16929","typeID":"Arrow","zOrder":"37","w":"245","h":"1","measuredW":"150","measuredH":"100","x":"525","y":"1001","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","color":"10027263","p0":{"x":-0.33333333333337123,"y":0},"p1":{"x":0.49999999999999994,"y":0},"p2":{"x":244.62144119843106,"y":0}}},{"ID":"16941","typeID":"Arrow","zOrder":"36","w":"143","h":"143","measuredW":"150","measuredH":"100","x":"664","y":"1011","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","color":"10027263","p0":{"x":-0.36363636363637397,"y":-0.3939393939394904},"p1":{"x":0.5196359693211293,"y":-0.26840678708277743},"p2":{"x":142.81205500440456,"y":141.81332615639076}}},{"ID":"16952","typeID":"Arrow","zOrder":"35","w":"123","h":"21","measuredW":"150","measuredH":"100","x":"558","y":"1398","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":0.32023299525064886,"y":0.15968206416300745},"p1":{"x":0.4385315792311177,"y":-0.06877141855055666},"p2":{"x":122.99341094913677,"y":20.605211723144066}}},{"ID":"16954","typeID":"Arrow","zOrder":"10","w":"168","h":"102","measuredW":"150","measuredH":"100","x":"842","y":"1437","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","color":"10027263","p0":{"x":167.84008464490546,"y":101.13292357564842},"p1":{"x":0.6056070174484409,"y":0.22989853758295958},"p2":{"x":-0.32852763156256515,"y":-0.3625107469335944}}},{"ID":"16980","typeID":"Arrow","zOrder":"83","w":"170","h":"124","measuredW":"150","measuredH":"100","x":"855","y":"1551","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","color":"10027263","p0":{"x":169.63558252508687,"y":-0.2852120188247227},"p1":{"x":0.5162219080585068,"y":-0.19620864459280357},"p2":{"x":-0.2195869495246825,"y":123.96069898575206}}},{"ID":"17013","typeID":"Arrow","zOrder":"0","w":"1","h":"418","measuredW":"150","measuredH":"100","x":"860","y":"1685","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","color":"10027263","p0":{"x":-0.33333333333337123,"y":0.12208663536375752},"p1":{"x":0.4999999999999997,"y":0},"p2":{"x":-0.33333333333337123,"y":417.7440887736625}}},{"ID":"17028","typeID":"Arrow","zOrder":"89","w":"1","h":"81","measuredW":"150","measuredH":"100","x":"860","y":"2167","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":0,"y":0},"p1":{"x":0.49999999999999994,"y":0},"p2":{"x":0,"y":81.09090909090901}}},{"ID":"17029","typeID":"TextArea","zOrder":"90","w":"438","h":"118","measuredW":"200","measuredH":"140","x":"641","y":"2081"},{"ID":"17030","typeID":"Label","zOrder":"91","measuredW":"366","measuredH":"25","x":"678","y":"2100","properties":{"size":"17","text":"Continue Learning with following relevant tracks"}},{"ID":"17031","typeID":"__group__","zOrder":"92","measuredW":"198","measuredH":"44","w":"198","h":"44","x":"865","y":"2137","properties":{"controlName":"ext_link:roadmap.sh/backend"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"198","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"147","measuredH":"25","x":"25","y":"9","properties":{"size":"17","text":"Backend Roadmap"}}]}}},{"ID":"17032","typeID":"__group__","zOrder":"93","measuredW":"198","measuredH":"44","w":"198","h":"44","x":"657","y":"2137","properties":{"controlName":"ext_link:roadmap.sh/devops"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"198","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"141","measuredH":"25","x":"28","y":"9","properties":{"size":"17","text":"DevOps Roadmap"}}]}}},{"ID":"17121","typeID":"Arrow","zOrder":"34","w":"198","h":"1","measuredW":"150","measuredH":"100","x":"557","y":"475","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","color":"10027263","p0":{"x":0,"y":-0.43840128920419374},"p1":{"x":0.5,"y":0},"p2":{"x":198.14434435082512,"y":-0.43840128920419374}}},{"ID":"17125","typeID":"Arrow","zOrder":"33","w":"165","h":"5","measuredW":"150","measuredH":"100","x":"956","y":"463","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":-0.49220124415478494,"y":0.35132704525483405},"p1":{"x":0.49999999999999994,"y":0},"p2":{"x":164.9828304689379,"y":5.842332616103363}}},{"ID":"17137","typeID":"Arrow","zOrder":"32","w":"156","h":"99","measuredW":"150","measuredH":"100","x":"946","y":"477","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":0.45475328959696526,"y":0.342397311274965},"p1":{"x":0.5259405940594057,"y":0.10059405940594039},"p2":{"x":156.82553861570432,"y":99.10289330671117}}},{"ID":"17138","typeID":"Arrow","zOrder":"31","w":"145","h":"49","measuredW":"150","measuredH":"100","x":"968","y":"477","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":-0.14713924472528106,"y":0.342397311274965},"p1":{"x":0.5272470205369462,"y":0.08650430057480227},"p2":{"x":144.82553861570432,"y":49.10289330671117}}},{"ID":"17139","typeID":"Arrow","zOrder":"30","w":"1","h":"222","measuredW":"150","measuredH":"100","x":"856","y":"463","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","color":"10027263","p0":{"x":0,"y":0.20845130157692893},"p1":{"x":0.5,"y":0},"p2":{"x":0,"y":222.56244303498625}}},{"ID":"17146","typeID":"Arrow","zOrder":"29","w":"135","h":"102","measuredW":"150","measuredH":"100","x":"643","y":"572","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":-0.233771896369376,"y":-0.012127359765372603},"p1":{"x":0.5351388144847302,"y":-0.10718826031473189},"p2":{"x":134.7389059640601,"y":102.04038516885203}}},{"ID":"17147","typeID":"Arrow","zOrder":"28","w":"136","h":"47","measuredW":"150","measuredH":"100","x":"640","y":"626","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":0.297215703744655,"y":0.3061454377245809},"p1":{"x":0.5351388144847301,"y":-0.10718826031473183},"p2":{"x":136.09289769746954,"y":46.394376902261456}}},{"ID":"17148","typeID":"Arrow","zOrder":"27","w":"1","h":"94","measuredW":"150","measuredH":"100","x":"1229","y":"686","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":0,"y":0},"p1":{"x":0.4999999999999999,"y":0},"p2":{"x":0,"y":94.06017744432256}}},{"ID":"17149","typeID":"Arrow","zOrder":"26","w":"183","h":"140","measuredW":"150","measuredH":"100","x":"938","y":"689","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","color":"10027263","p0":{"x":-0.18679011000358514,"y":139.76516222836892},"p1":{"x":0.4793400286944046,"y":0.1728837876614063},"p2":{"x":183.0139299615305,"y":0.1836612214857496}}},{"ID":"17158","typeID":"Arrow","zOrder":"25","w":"169","h":"2","measuredW":"150","measuredH":"100","x":"616","y":"827","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":-0.49220124415478494,"y":0.35132704525483405},"p1":{"x":0.49999999999999994,"y":0},"p2":{"x":168.476171911061,"y":2.227004589800913}}},{"ID":"17159","typeID":"Arrow","zOrder":"24","w":"96","h":"50","measuredW":"150","measuredH":"100","x":"655","y":"769","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":-0.4545454545454959,"y":-0.06060606060611917},"p1":{"x":0.47044137876713277,"y":-0.1118348700046459},"p2":{"x":95.78251746856904,"y":49.90229710230267}}},{"ID":"17160","typeID":"Arrow","zOrder":"23","w":"104","h":"45","measuredW":"150","measuredH":"100","x":"651","y":"836","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":0.1664956385931191,"y":45.89478149478748},"p1":{"x":0.46195500502423575,"y":0.1006487687825863},"p2":{"x":104.17734196106801,"y":0.48159507229843257}}},{"ID":"17170","typeID":"Arrow","zOrder":"22","w":"152","h":"29","measuredW":"150","measuredH":"100","x":"981","y":"968","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":-0.27272727272736574,"y":29.272727272727252},"p1":{"x":0.5721230334099342,"y":-0.054534205409227196},"p2":{"x":151.24242424242425,"y":0.48484848484838494}}},{"ID":"17172","typeID":"Arrow","zOrder":"21","w":"158","h":"64","measuredW":"150","measuredH":"100","x":"972","y":"1014","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":-0.36363636363637397,"y":-0.06060606060611917},"p1":{"x":0.5542979262308053,"y":0.08682919107171085},"p2":{"x":157.21212121212125,"y":63.57575757575751}}},{"ID":"17173","typeID":"Arrow","zOrder":"20","w":"153","h":"22","measuredW":"150","measuredH":"100","x":"981","y":"1005","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":0.1515151515151274,"y":0.4545454545453822},"p1":{"x":0.6080704726263746,"y":0.03254397240215509},"p2":{"x":152.75757575757575,"y":22.575757575757507}}},{"ID":"17186","typeID":"Arrow","zOrder":"19","w":"61","h":"1","measuredW":"150","measuredH":"100","x":"381","y":"1001","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":0.06060606060606233,"y":0.35132704525483405},"p1":{"x":0.5,"y":0},"p2":{"x":60.66666666666663,"y":0.35132704525483405}}},{"ID":"17187","typeID":"Arrow","zOrder":"18","w":"67","h":"48","measuredW":"150","measuredH":"100","x":"384","y":"945","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":-0.39393939393943356,"y":0.4545454545453822},"p1":{"x":0.45331509544459303,"y":-0.17912915848695224},"p2":{"x":66.27272727272725,"y":48.93939393939388}}},{"ID":"17188","typeID":"Arrow","zOrder":"17","w":"61","h":"40","measuredW":"150","measuredH":"100","x":"381","y":"1013","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":0.06060606060606233,"y":40.030303030303},"p1":{"x":0.5606836476660072,"y":0.1649256789457753},"p2":{"x":60.66666666666663,"y":0.636363636363626}}},{"ID":"17189","typeID":"Arrow","zOrder":"16","w":"1","h":"85","measuredW":"150","measuredH":"100","x":"524","y":"1004","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","color":"10027263","p0":{"x":0,"y":0},"p1":{"x":0.4999999999999999,"y":0},"p2":{"x":0,"y":85.39393939393926},"stroke":"dotted"}},{"ID":"17203","typeID":"Arrow","zOrder":"14","w":"144","h":"42","measuredW":"150","measuredH":"100","x":"983","y":"1160","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":-0.14713924472528106,"y":0.342397311274965},"p1":{"x":0.5272470205369462,"y":0.08650430057480225},"p2":{"x":143.4848484848485,"y":42.36363636363626}}},{"ID":"17204","typeID":"Arrow","zOrder":"13","w":"167","h":"91","measuredW":"150","measuredH":"100","x":"961","y":"1160","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":0.45475328959696526,"y":0.342397311274965},"p1":{"x":0.5037940407354755,"y":0.07605199091692916},"p2":{"x":167,"y":90.84848484848476}}},{"ID":"17205","typeID":"Arrow","zOrder":"15","w":"165","h":"5","measuredW":"150","measuredH":"100","x":"971","y":"1146","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":-0.49220124415478494,"y":0.35132704525483405},"p1":{"x":0.49999999999999994,"y":0},"p2":{"x":164.9828304689379,"y":5.842332616103363}}},{"ID":"17218","typeID":"Arrow","zOrder":"12","w":"135","h":"5","measuredW":"150","measuredH":"100","x":"549","y":"1334","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":0.24242424242424931,"y":-0.06060606060623286},"p1":{"x":0.5,"y":0},"p2":{"x":135.090909090909,"y":4.484848484848499}}},{"ID":"17219","typeID":"Arrow","zOrder":"11","w":"121","h":"45","measuredW":"150","measuredH":"100","x":"563","y":"1282","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":-0.12121212121212466,"y":0.42424242424226577},"p1":{"x":0.4250100522718134,"y":-0.11419380780056407},"p2":{"x":121.09090909090901,"y":45.87878787878776}}},{"ID":"17236","typeID":"Arrow","zOrder":"9","w":"115","h":"90","measuredW":"150","measuredH":"100","x":"566","y":"1231","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":0.1838982487049634,"y":0.4499786909332215},"p1":{"x":0.4250100522718134,"y":-0.1141938078005641},"p2":{"x":114.99341094913677,"y":90.09576258031143}}},{"ID":"17239","typeID":"Arrow","zOrder":"8","w":"1","h":"252","measuredW":"150","measuredH":"100","x":"839","y":"1162","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","color":"10027263","p0":{"x":-0.33333333333337123,"y":251.8870125710714},"p1":{"x":0.49999999999999994,"y":0},"p2":{"x":-0.33333333333337123,"y":-0.4045552076850072}}},{"ID":"17240","typeID":"Arrow","zOrder":"7","w":"121","h":"27","measuredW":"150","measuredH":"100","x":"557","y":"1430","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":-0.2525000554401231,"y":26.350804939724412},"p1":{"x":0.394952236966551,"y":0.06714878484534648},"p2":{"x":120.84794484775512,"y":-0.3856569220199617}}},{"ID":"17255","typeID":"Arrow","zOrder":"6","w":"1","h":"203","measuredW":"150","measuredH":"100","x":"1217","y":"1437","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","color":"10027263","p0":{"x":0,"y":0},"p1":{"x":0.4999999999999999,"y":0},"p2":{"x":0,"y":202.57420534520793},"stroke":"dotted"}},{"ID":"17257","typeID":"Arrow","zOrder":"5","w":"136","h":"3","measuredW":"150","measuredH":"100","x":"585","y":"1689","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":-0.3705720923140916,"y":3.8334955940422333},"p1":{"x":0.5,"y":0},"p2":{"x":136.090909090909,"y":0.48484848484849863}}},{"ID":"17258","typeID":"Arrow","zOrder":"4","w":"170","h":"137","measuredW":"150","measuredH":"100","x":"591","y":"1533","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":0.34762705975845165,"y":0.41472442357576256},"p1":{"x":0.5021181197751972,"y":-0.10521150145753783},"p2":{"x":170.20279653437,"y":137.24249983367963}}},{"ID":"17259","typeID":"Arrow","zOrder":"3","w":"164","h":"87","measuredW":"150","measuredH":"100","x":"591","y":"1589","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":0.34762705975845165,"y":0.41472442357576256},"p1":{"x":0.4932542382256344,"y":-0.07759871627175148},"p2":{"x":163.91186433160658,"y":87.53343203644295}}},{"ID":"17260","typeID":"Arrow","zOrder":"2","w":"140","h":"46","measuredW":"150","measuredH":"100","x":"585","y":"1632","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":0.05669485699513643,"y":0.49690661709928463},"p1":{"x":0.49611960739557137,"y":-0.07429810545537503},"p2":{"x":140.02993636848043,"y":46.10616508713383}}},{"ID":"17261","typeID":"TextArea","zOrder":"128","w":"186","h":"262","measuredW":"200","measuredH":"140","x":"449","y":"1757"},{"ID":"17262","typeID":"Label","zOrder":"129","measuredW":"145","measuredH":"25","x":"475","y":"1770","properties":{"size":"17","text":"Cluster Operations"}},{"ID":"17271","typeID":"Arrow","zOrder":"1","w":"121","h":"64","measuredW":"150","measuredH":"100","x":"603","y":"1699","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":0.14312493993986664,"y":64.82011634978494},"p1":{"x":0.47607689119379515,"y":0.11589983704240213},"p2":{"x":121.2435698431351,"y":0.33806127146021936}}},{"ID":"17306","typeID":"__group__","zOrder":"60","measuredW":"243","measuredH":"47","w":"243","h":"47","x":"740","y":"266","properties":{"controlName":"100-kubernetes-introduction"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"243","h":"47","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16776960"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"93","measuredH":"25","x":"75","y":"11","properties":{"size":"17","text":"Introduction"}}]}}},{"ID":"17307","typeID":"__group__","zOrder":"55","measuredW":"244","measuredH":"47","w":"244","h":"47","x":"740","y":"319","properties":{"controlName":"101-containers"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"244","h":"47","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16776960"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"85","measuredH":"25","x":"79","y":"11","properties":{"size":"17","text":"Containers"}}]}}},{"ID":"17308","typeID":"__group__","zOrder":"94","measuredW":"267","measuredH":"47","w":"267","h":"47","x":"313","y":"444","properties":{"controlName":"102-setting-up-kubernetes"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"267","h":"47","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16776960"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"172","measuredH":"25","x":"48","y":"11","properties":{"size":"17","text":"Setting up Kubernetes"}}]}}},{"ID":"17309","typeID":"__group__","zOrder":"95","measuredW":"243","measuredH":"47","w":"243","h":"47","x":"747","y":"444","properties":{"controlName":"103-running-applications"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"243","h":"47","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16776960"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"163","measuredH":"25","x":"40","y":"11","properties":{"size":"17","text":"Running Applications"}}]}}},{"ID":"17310","typeID":"__group__","zOrder":"68","measuredW":"243","measuredH":"47","w":"243","h":"47","x":"740","y":"653","properties":{"controlName":"104-services-and-networking"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"243","h":"47","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16776960"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"192","measuredH":"25","x":"26","y":"11","properties":{"size":"17","text":"Services and Networking"}}]}}},{"ID":"17312","typeID":"__group__","zOrder":"72","measuredW":"272","measuredH":"47","w":"272","h":"47","x":"1094","y":"661","properties":{"controlName":"105-configuration-management"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"272","h":"47","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16776960"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"210","measuredH":"25","x":"31","y":"11","properties":{"size":"17","text":"Configuration Management"}}]}}},{"ID":"17313","typeID":"__group__","zOrder":"101","measuredW":"243","measuredH":"47","w":"243","h":"47","x":"740","y":"803","properties":{"controlName":"106-resource-management"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"243","h":"47","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16776960"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"182","measuredH":"25","x":"31","y":"11","properties":{"size":"17","text":"Resource Management"}}]}}},{"ID":"17314","typeID":"__group__","zOrder":"75","measuredW":"243","measuredH":"47","w":"243","h":"47","x":"748","y":"978","properties":{"controlName":"107-kubernetes-security"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"243","h":"47","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16776960"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"62","measuredH":"25","x":"91","y":"11","properties":{"size":"17","text":"Security"}}]}}},{"ID":"17315","typeID":"__group__","zOrder":"79","measuredW":"264","measuredH":"47","w":"264","h":"47","x":"426","y":"978","properties":{"controlName":"108-monitoring-and-logging"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"264","h":"47","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16776960"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"183","measuredH":"25","x":"40","y":"11","properties":{"size":"17","text":"Monitoring and Logging"}}]}}},{"ID":"17316","typeID":"__group__","zOrder":"110","measuredW":"206","measuredH":"47","w":"206","h":"47","x":"787","y":"1135","properties":{"controlName":"109-autoscaling"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"206","h":"47","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16776960"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"89","measuredH":"25","x":"58","y":"11","properties":{"size":"17","text":"Autoscaling"}}]}}},{"ID":"17317","typeID":"__group__","zOrder":"81","measuredW":"229","measuredH":"47","w":"229","h":"47","x":"661","y":"1312","properties":{"controlName":"110-scheduling"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"229","h":"47","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16776960"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"86","measuredH":"25","x":"72","y":"11","properties":{"text":"Scheduling","size":"17"}}]}}},{"ID":"17318","typeID":"__group__","zOrder":"119","measuredW":"229","measuredH":"47","w":"229","h":"47","x":"661","y":"1401","properties":{"controlName":"111-storage-and-volumes"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"229","h":"47","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16776960"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"163","measuredH":"25","x":"33","y":"11","properties":{"size":"17","text":"Storage and Volumes"}}]}}},{"ID":"17319","typeID":"__group__","zOrder":"121","measuredW":"253","measuredH":"47","w":"253","h":"47","x":"1003","y":"1521","properties":{"controlName":"112-deployment-patterns"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"253","h":"47","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16776960"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"161","measuredH":"25","x":"46","y":"11","properties":{"size":"17","text":"Deployment Patterns"}}]}}},{"ID":"17320","typeID":"__group__","zOrder":"84","measuredW":"243","measuredH":"47","w":"243","h":"47","x":"702","y":"1660","properties":{"controlName":"113-kubernetes-advanced-topics"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"243","h":"47","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16776960"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"130","measuredH":"25","x":"57","y":"11","properties":{"size":"17","text":"Advanced Topics"}}]}}},{"ID":"17321","typeID":"__group__","zOrder":"64","measuredW":"359","measuredH":"44","w":"359","h":"44","x":"1084","y":"196","properties":{"controlName":"100-kubernetes-introduction:kubernetes-overview"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"359","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"184","measuredH":"25","x":"88","y":"9","properties":{"size":"17","text":"Overview of Kubernetes"}}]}}},{"ID":"17322","typeID":"__group__","zOrder":"65","measuredW":"359","measuredH":"44","w":"359","h":"44","x":"1084","y":"245","properties":{"controlName":"101-kubernetes-introduction:why-kubernetes"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"359","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"134","measuredH":"25","x":"113","y":"9","properties":{"size":"17","text":"Why Kubernetes?"}}]}}},{"ID":"17323","typeID":"__group__","zOrder":"66","measuredW":"359","measuredH":"44","w":"359","h":"44","x":"1084","y":"294","properties":{"controlName":"102-kubernetes-introduction:key-concepts-terminologies"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"359","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"251","measuredH":"25","x":"54","y":"9","properties":{"size":"17","text":"Key Concepts and Terminologies"}}]}}},{"ID":"17324","typeID":"__group__","zOrder":"67","measuredW":"359","measuredH":"44","w":"359","h":"44","x":"1084","y":"343","properties":{"controlName":"103-kubernetes-introduction:kubernetes-alternatives"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"359","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"184","measuredH":"25","x":"88","y":"9","properties":{"size":"17","text":"Kubernetes Alternatives"}}]}}},{"ID":"17325","typeID":"__group__","zOrder":"61","measuredW":"301","measuredH":"44","w":"301","h":"44","x":"291","y":"362","properties":{"controlName":"100-setting-up-kubernetes:installing-a-local-cluster"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"301","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"189","measuredH":"25","x":"56","y":"9","properties":{"size":"17","text":"Installing a Local Cluster"}}]}}},{"ID":"17326","typeID":"__group__","zOrder":"62","measuredW":"301","measuredH":"44","w":"301","h":"44","x":"291","y":"313","properties":{"controlName":"101-setting-up-kubernetes:choosing-a-managed-provider"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"301","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"234","measuredH":"25","x":"34","y":"9","properties":{"size":"17","text":"Choosing a Managed Provider"}}]}}},{"ID":"17327","typeID":"__group__","zOrder":"63","measuredW":"301","measuredH":"44","w":"301","h":"44","x":"291","y":"263","properties":{"controlName":"102-setting-up-kubernetes:deploying-your-first-application"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"301","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"241","measuredH":"25","x":"30","y":"9","properties":{"size":"17","text":"Deploying your First Application"}}]}}},{"ID":"17328","typeID":"__group__","zOrder":"96","measuredW":"162","measuredH":"44","w":"162","h":"44","x":"1094","y":"446","properties":{"controlName":"100-running-applications:pods"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"162","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"38","measuredH":"25","x":"62","y":"9","properties":{"size":"17","text":"Pods"}}]}}},{"ID":"17329","typeID":"__group__","zOrder":"97","measuredW":"157","measuredH":"44","w":"157","h":"44","x":"1262","y":"446","properties":{"controlName":"101-running-applications:replicasets"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"157","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"93","measuredH":"25","x":"32","y":"9","properties":{"size":"17","text":"ReplicaSets"}}]}}},{"ID":"17330","typeID":"__group__","zOrder":"98","measuredW":"162","measuredH":"44","w":"162","h":"44","x":"1094","y":"496","properties":{"controlName":"102-running-applications:deployments"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"162","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"101","measuredH":"25","x":"32","y":"9","properties":{"size":"17","text":"Deployments"}}]}}},{"ID":"17331","typeID":"__group__","zOrder":"99","measuredW":"154","measuredH":"44","w":"154","h":"44","x":"1263","y":"496","properties":{"controlName":"103-running-applications:statefulsets"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"154","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"93","measuredH":"25","x":"30","y":"9","properties":{"size":"17","text":"StatefulSets"}}]}}},{"ID":"17332","typeID":"__group__","zOrder":"100","measuredW":"323","measuredH":"44","w":"323","h":"44","x":"1094","y":"546","properties":{"controlName":"104-running-applications:jobs"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"323","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"37","measuredH":"25","x":"143","y":"9","properties":{"size":"17","text":"Jobs"}}]}}},{"ID":"17333","typeID":"__group__","zOrder":"69","measuredW":"351","measuredH":"44","w":"351","h":"44","x":"298","y":"655","properties":{"controlName":"100-services-and-networking:networking-and-pod-to-pod-communication"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"351","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"318","measuredH":"25","x":"17","y":"9","properties":{"size":"17","text":"Networking & Pod-to-Pod Communication"}}]}}},{"ID":"17334","typeID":"__group__","zOrder":"70","measuredW":"353","measuredH":"44","w":"353","h":"44","x":"296","y":"606","properties":{"controlName":"101-services-and-networking:load-balancing"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"353","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"120","measuredH":"25","x":"117","y":"9","properties":{"size":"17","text":"Load Balancing"}}]}}},{"ID":"17335","typeID":"__group__","zOrder":"71","measuredW":"353","measuredH":"44","w":"353","h":"44","x":"296","y":"556","properties":{"controlName":"102-services-and-networking:external-access-to-services"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"353","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"213","measuredH":"25","x":"70","y":"9","properties":{"size":"17","text":"External Access to Services"}}]}}},{"ID":"17336","typeID":"__group__","zOrder":"73","measuredW":"325","measuredH":"44","w":"325","h":"44","x":"1096","y":"743","properties":{"controlName":"100-configuration-management:config-maps"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"325","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"290","measuredH":"25","x":"18","y":"10","properties":{"size":"17","text":"Injecting Pod Config. with ConfigMaps"}}]}}},{"ID":"17337","typeID":"__group__","zOrder":"74","measuredW":"327","measuredH":"44","w":"327","h":"44","x":"1096","y":"793","properties":{"controlName":"101-configuration-management:secrets"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"327","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"247","measuredH":"25","x":"40","y":"9","properties":{"size":"17","text":"Using Secrets for Sensitive Data"}}]}}},{"ID":"17338","typeID":"__group__","zOrder":"102","measuredW":"364","measuredH":"44","w":"364","h":"44","x":"297","y":"755","properties":{"controlName":"100-resource-management:setting-resource-requests-and-limits"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"364","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"296","measuredH":"25","x":"34","y":"9","properties":{"size":"17","text":"Setting Resource Requests and Limits"}}]}}},{"ID":"17339","typeID":"__group__","zOrder":"103","measuredW":"364","measuredH":"44","w":"364","h":"44","x":"297","y":"805","properties":{"controlName":"101-resource-management:assigning-quotas-to-namespaces"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"364","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"260","measuredH":"25","x":"52","y":"9","properties":{"size":"17","text":"Assigning Quotas to Namespaces"}}]}}},{"ID":"17340","typeID":"__group__","zOrder":"104","measuredW":"365","measuredH":"44","w":"365","h":"44","x":"296","y":"854","properties":{"controlName":"102-resource-management:monitoring-and-optimizing-resource-usage"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"365","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"336","measuredH":"25","x":"15","y":"9","properties":{"size":"17","text":"Monitoring and Optimizing Resource Usage"}}]}}},{"ID":"17341","typeID":"__group__","zOrder":"76","measuredW":"308","measuredH":"44","w":"308","h":"44","x":"1120","y":"901","properties":{"controlName":"100-kubernetes-security:role-based-acccess-control"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"308","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"269","measuredH":"25","x":"19","y":"9","properties":{"size":"17","text":"Role-based access control (RBAC)"}}]}}},{"ID":"17342","typeID":"__group__","zOrder":"77","measuredW":"308","measuredH":"44","w":"308","h":"44","x":"1120","y":"950","properties":{"controlName":"101-kubernetes-security:network-security"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"308","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"130","measuredH":"25","x":"89","y":"9","properties":{"size":"17","text":"Network Security"}}]}}},{"ID":"17343","typeID":"__group__","zOrder":"78","measuredW":"308","measuredH":"44","w":"308","h":"44","x":"1120","y":"999","properties":{"controlName":"102-kubernetes-security:container-and-pod-security"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"308","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"210","measuredH":"25","x":"49","y":"9","properties":{"size":"17","text":"Container and Pod Security"}}]}}},{"ID":"17344","typeID":"__group__","zOrder":"105","measuredW":"308","measuredH":"44","w":"308","h":"44","x":"1120","y":"1048","properties":{"controlName":"103-kubernetes-security:security-scanners"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"308","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"138","measuredH":"25","x":"85","y":"9","properties":{"size":"17","text":"Security Scanners"}}]}}},{"ID":"17345","typeID":"__group__","zOrder":"80","measuredW":"104","measuredH":"44","w":"104","h":"44","x":"282","y":"930","properties":{"controlName":"100-monitoring-and-logging:logs"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"104","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"38","measuredH":"25","x":"33","y":"10","properties":{"size":"17","text":"Logs"}}]}}},{"ID":"17346","typeID":"__group__","zOrder":"106","measuredW":"104","measuredH":"44","w":"104","h":"44","x":"282","y":"980","properties":{"controlName":"101-monitoring-and-logging:metrics"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"104","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"58","measuredH":"25","x":"23","y":"10","properties":{"size":"17","text":"Metrics"}}]}}},{"ID":"17347","typeID":"__group__","zOrder":"107","measuredW":"104","measuredH":"44","w":"104","h":"44","x":"282","y":"1029","properties":{"controlName":"102-monitoring-and-logging:traces"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"104","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"53","measuredH":"25","x":"25","y":"10","properties":{"size":"17","text":"Traces"}}]}}},{"ID":"17348","typeID":"__group__","zOrder":"108","measuredW":"198","measuredH":"44","w":"198","h":"44","x":"426","y":"1064","properties":{"controlName":"103-monitoring-and-logging:resource-health"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"198","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"130","measuredH":"25","x":"34","y":"10","properties":{"size":"17","text":"Resource Health"}}]}}},{"ID":"17349","typeID":"__group__","zOrder":"109","measuredW":"198","measuredH":"44","w":"198","h":"44","x":"426","y":"1112","properties":{"controlName":"104-monitoring-and-logging:observability-engines"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"198","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","w":"166","measuredW":"166","measuredH":"25","x":"16","y":"10","properties":{"text":"Observability Engines","size":"17"}}]}}},{"ID":"17350","typeID":"__group__","zOrder":"111","measuredW":"299","measuredH":"44","w":"299","h":"44","x":"1118","y":"1128","properties":{"controlName":"100-autoscaling:horizontal-pod-autoscaler"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"299","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"248","measuredH":"25","x":"26","y":"9","properties":{"size":"17","text":"Horizontal Pod Autoscaler (HPA)"}}]}}},{"ID":"17351","typeID":"__group__","zOrder":"112","measuredW":"299","measuredH":"44","w":"299","h":"44","x":"1118","y":"1177","properties":{"controlName":"101-autoscaling:vertical-pod-autoscaler"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"299","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"225","measuredH":"25","x":"37","y":"9","properties":{"size":"17","text":"Vertical Pod Autoscaler (VPA)"}}]}}},{"ID":"17352","typeID":"__group__","zOrder":"113","measuredW":"299","measuredH":"44","w":"299","h":"44","x":"1118","y":"1226","properties":{"controlName":"102-autoscaling:cluster-autoscaling"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"299","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"149","measuredH":"25","x":"75","y":"9","properties":{"size":"17","text":"Cluster Autoscaling"}}]}}},{"ID":"17353","typeID":"__group__","zOrder":"114","measuredW":"86","measuredH":"44","w":"86","h":"44","x":"284","y":"1212","properties":{"controlName":"100-scheduling:scheduling-basics"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"86","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"52","measuredH":"25","x":"17","y":"10","properties":{"size":"17","text":"Basics"}}]}}},{"ID":"17354","typeID":"__group__","zOrder":"115","measuredW":"191","measuredH":"44","w":"191","h":"44","x":"378","y":"1213","properties":{"controlName":"101-scheduling:taints-and-tolerations"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"191","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"165","measuredH":"25","x":"13","y":"10","properties":{"size":"17","text":"Taints and tolerations"}}]}}},{"ID":"17355","typeID":"__group__","zOrder":"116","measuredW":"287","measuredH":"44","w":"287","h":"44","x":"283","y":"1262","properties":{"controlName":"102-scheduling:topology-spread-constraints"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"287","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"218","measuredH":"25","x":"35","y":"10","properties":{"size":"17","text":"Topology spread Constraints"}}]}}},{"ID":"17356","typeID":"__group__","zOrder":"117","measuredW":"155","measuredH":"44","w":"155","h":"44","x":"283","y":"1310","properties":{"controlName":"103-scheduling:pod-priorities"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"155","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"102","measuredH":"25","x":"27","y":"9","properties":{"size":"17","text":"Pod priorities"}}]}}},{"ID":"17357","typeID":"__group__","zOrder":"118","measuredW":"128","measuredH":"44","w":"128","h":"44","x":"443","y":"1311","properties":{"controlName":"104-scheduling:evictions"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"128","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"70","measuredH":"25","x":"29","y":"9","properties":{"size":"17","text":"Evictions"}}]}}},{"ID":"17358","typeID":"__group__","zOrder":"120","measuredW":"209","measuredH":"44","w":"209","h":"44","x":"356","y":"1379","properties":{"controlName":"100-storage-and-volumes:csi-drivers"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"209","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"87","measuredH":"25","x":"66","y":"9","properties":{"size":"17","text":"CSI Drivers"}}]}}},{"ID":"17359","typeID":"__group__","zOrder":"82","measuredW":"209","measuredH":"44","w":"209","h":"44","x":"356","y":"1428","properties":{"controlName":"101-storage-and-volumes:stateful-applications"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"209","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"157","measuredH":"25","x":"26","y":"9","properties":{"size":"17","text":"Stateful Applications"}}]}}},{"ID":"17360","typeID":"__group__","zOrder":"124","measuredW":"261","measuredH":"44","w":"261","h":"44","x":"1156","y":"1340","properties":{"controlName":"100-deployment-patterns:ci-cd-integration"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"261","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"147","measuredH":"25","x":"57","y":"9","properties":{"size":"17","text":"CI / CD Integration"}}]}}},{"ID":"17361","typeID":"__group__","zOrder":"123","measuredW":"261","measuredH":"44","w":"261","h":"44","x":"1156","y":"1389","properties":{"controlName":"101-deployment-patterns:gitops"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"261","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"54","measuredH":"25","x":"104","y":"9","properties":{"size":"17","text":"GitOps"}}]}}},{"ID":"17362","typeID":"__group__","zOrder":"122","measuredW":"261","measuredH":"44","w":"261","h":"44","x":"1156","y":"1438","properties":{"controlName":"102-deployment-patterns:helm-charts"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"261","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"97","measuredH":"25","x":"82","y":"9","properties":{"size":"17","text":"Helm Charts"}}]}}},{"ID":"17363","typeID":"__group__","zOrder":"125","measuredW":"261","measuredH":"44","w":"261","h":"44","x":"1156","y":"1602","properties":{"controlName":"103-deployment-patterns:canary-deployments"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"261","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"159","measuredH":"25","x":"51","y":"9","properties":{"size":"17","text":"Canary Deployments"}}]}}},{"ID":"17364","typeID":"__group__","zOrder":"126","measuredW":"261","measuredH":"44","w":"261","h":"44","x":"1156","y":"1651","properties":{"controlName":"104-deployment-patterns:blue-green-deployments"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"261","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"195","measuredH":"25","x":"33","y":"9","properties":{"size":"17","text":"Blue-Green Deployments"}}]}}},{"ID":"17365","typeID":"__group__","zOrder":"127","measuredW":"261","measuredH":"44","w":"261","h":"44","x":"1156","y":"1700","properties":{"controlName":"105-deployment-patterns:rolling-updates-rollbacks"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"261","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"214","measuredH":"25","x":"24","y":"9","properties":{"size":"17","text":"Rolling Updates / Rollbacks"}}]}}},{"ID":"17366","typeID":"__group__","zOrder":"85","measuredW":"316","measuredH":"44","w":"316","h":"44","x":"283","y":"1517","properties":{"controlName":"100-kubernetes-advanced-topics:custom-controllers"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"316","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"219","measuredH":"25","x":"48","y":"10","properties":{"size":"17","text":"Creating Custom Controllers"}}]}}},{"ID":"17367","typeID":"__group__","zOrder":"86","measuredW":"316","measuredH":"44","w":"316","h":"44","x":"283","y":"1567","properties":{"controlName":"101-kubernetes-advanced-topics:custom-schedulers-extenders"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"316","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"263","measuredH":"25","x":"26","y":"10","properties":{"size":"17","text":"Custom schedulers and extenders"}}]}}},{"ID":"17368","typeID":"__group__","zOrder":"87","measuredW":"316","measuredH":"44","w":"316","h":"44","x":"283","y":"1617","properties":{"controlName":"102-kubernetes-advanced-topics:custom-resource-definitions"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"316","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"277","measuredH":"25","x":"19","y":"10","properties":{"size":"17","text":"Custom resource definitions (CRDs)"}}]}}},{"ID":"17369","typeID":"__group__","zOrder":"88","measuredW":"316","measuredH":"44","w":"316","h":"44","x":"283","y":"1667","properties":{"controlName":"103-kubernetes-advanced-topics:kubernetes-extensions-and-apis"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"316","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"250","measuredH":"25","x":"33","y":"10","properties":{"size":"17","text":"Kubernetes extensions and APIs"}}]}}},{"ID":"17370","typeID":"__group__","zOrder":"130","measuredW":"335","measuredH":"44","w":"335","h":"44","x":"283","y":"1811","properties":{"controlName":"104-kubernetes-advanced-topics:own-cluster"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"335","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"287","measuredH":"25","x":"28","y":"9","properties":{"size":"17","text":"Should you manage your own cluster?"}}]}}},{"ID":"17371","typeID":"__group__","zOrder":"131","measuredW":"335","measuredH":"44","w":"335","h":"44","x":"283","y":"1859","properties":{"controlName":"105-kubernetes-advanced-topics:control-plane-installation"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"335","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"203","measuredH":"25","x":"28","y":"9","properties":{"size":"17","text":"Installing the control plane"}}]}}},{"ID":"17372","typeID":"__group__","zOrder":"132","measuredW":"335","measuredH":"44","w":"335","h":"44","x":"283","y":"1909","properties":{"controlName":"106-kubernetes-advanced-topics:managing-worker-nodes"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"335","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"276","measuredH":"25","x":"28","y":"9","properties":{"size":"17","text":"Adding and managing worker nodes"}}]}}},{"ID":"17373","typeID":"__group__","zOrder":"133","measuredW":"335","measuredH":"44","w":"335","h":"44","x":"283","y":"1959","properties":{"controlName":"107-kubernetes-advanced-topics:multi-cluster-management"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"335","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"206","measuredH":"25","x":"65","y":"9","properties":{"size":"17","text":"Multi-Cluster Management"}}]}}}]},"attributes":{"name":"New Wireframe 1 copy 4","order":1000019.1097559511,"parentID":null,"notes":""},"branchID":"Master","resourceID":"E1CB7BE6-6915-47A7-A0F5-139EC887D1A8","mockupH":"2248","mockupW":"1204","measuredW":"1466","measuredH":"2248","version":"1.0"},"groupOffset":{"x":0,"y":0},"dependencies":[],"projectID":"file:///Users/kamranahmed/Desktop/devops%20roadmap%5C.bmpr"} \ No newline at end of file +{"mockup":{"controls":{"control":[{"ID":"16551","typeID":"Arrow","zOrder":"47","w":"258","h":"121","measuredW":"150","measuredH":"100","x":"565","y":"342","properties":{"color":"2848996","direction":"bottom","leftArrow":"false","rightArrow":"false","p0":{"x":257.9819203652737,"y":-0.2642105923081317},"p1":{"x":0.4727111875713408,"y":0.09128874696614088},"p2":{"x":-0.4191645594230522,"y":120.95268664194612}}},{"ID":"16555","typeID":"Arrow","zOrder":"48","w":"35","h":"111","measuredW":"150","measuredH":"100","x":"852","y":"170","properties":{"color":"2848996","direction":"bottom","leftArrow":"false","rightArrow":"false","p0":{"x":27.258693718900076,"y":-0.1665392487915085},"p1":{"x":0.461757659395342,"y":0.1574049386757521},"p2":{"x":-0.190722039362754,"y":111.06877318368441}}},{"ID":"16558","typeID":"Label","zOrder":"49","measuredW":"147","measuredH":"36","x":"792","y":"113","properties":{"size":"28","text":"Kubernetes"}},{"ID":"16559","typeID":"Canvas","zOrder":"50","w":"350","h":"141","measuredW":"100","measuredH":"70","x":"1116","y":"0"},{"ID":"16560","typeID":"Label","zOrder":"51","measuredW":"314","measuredH":"25","x":"1130","y":"17","properties":{"size":"17","text":"Find the detailed version of this roadmap"}},{"ID":"16561","typeID":"Label","zOrder":"52","measuredW":"319","measuredH":"25","x":"1130","y":"45","properties":{"size":"17","text":"along with resources and other roadmaps"}},{"ID":"16562","typeID":"__group__","zOrder":"53","measuredW":"320","measuredH":"45","w":"320","h":"45","x":"1131","y":"81","properties":{"controlName":"ext_link:roadmap.sh"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"320","h":"45","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"borderColor":"4273622","color":"4273622"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"105","measuredH":"28","x":"141","y":"8","properties":{"color":"16777215","size":"20","text":"roadmap.sh"}},{"ID":"2","typeID":"Label","zOrder":"2","measuredW":"45","measuredH":"28","x":"66","y":"8","properties":{"color":"16777215","size":"20","text":"https"}},{"ID":"3","typeID":"Label","zOrder":"3","measuredW":"5","measuredH":"28","x":"113","y":"8","properties":{"color":"16777215","size":"20","text":":"}},{"ID":"4","typeID":"Label","zOrder":"4","measuredW":"10","measuredH":"28","x":"120","y":"9","properties":{"color":"16777215","size":"20","text":"/"}},{"ID":"5","typeID":"Label","zOrder":"5","measuredW":"10","measuredH":"28","x":"128","y":"9","properties":{"color":"16777215","size":"20","text":"/"}}]}}},{"ID":"16563","typeID":"Arrow","zOrder":"54","w":"11","h":"65","measuredW":"150","measuredH":"100","x":"837","y":"37","properties":{"color":"2848996","direction":"bottom","leftArrow":"false","rightArrow":"false","stroke":"dotted","p0":{"x":5.81355254908226,"y":-0.3048709282632984},"p1":{"x":0.4747832595422888,"y":-0.12123341254486592},"p2":{"x":11,"y":65}}},{"ID":"16721","typeID":"Canvas","zOrder":"56","w":"398","h":"159","measuredW":"100","measuredH":"70","x":"262","y":"1"},{"ID":"16722","typeID":"__group__","zOrder":"57","measuredW":"183","measuredH":"27","w":"183","h":"27","x":"289","y":"73","properties":{"controlName":"ext_link:roadmap.sh/devops"},"children":{"controls":{"control":[{"ID":"0","typeID":"Label","zOrder":"0","measuredW":"150","measuredH":"26","x":"33","y":"0","properties":{"size":"18","text":"DevOps Roadmap"}},{"ID":"1","typeID":"__group__","zOrder":"1","measuredW":"24","measuredH":"24","w":"24","h":"24","x":"0","y":"3","children":{"controls":{"control":[{"ID":"0","typeID":"Icon","zOrder":"0","measuredW":"24","measuredH":"24","x":"0","y":"0","properties":{"color":"16777215","icon":{"ID":"circle","size":"small"}}},{"ID":"1","typeID":"Icon","zOrder":"1","measuredW":"24","measuredH":"24","x":"0","y":"0","properties":{"color":"10066329","icon":{"ID":"check-circle","size":"small"}}}]}}}]}}},{"ID":"16723","typeID":"__group__","zOrder":"58","measuredW":"238","measuredH":"27","w":"238","h":"27","x":"289","y":"109","properties":{"controlName":"ext_link:roadmap.sh/system-design"},"children":{"controls":{"control":[{"ID":"0","typeID":"Label","zOrder":"0","measuredW":"205","measuredH":"26","x":"33","y":"0","properties":{"size":"18","text":"System Design Roadmap"}},{"ID":"1","typeID":"__group__","zOrder":"1","measuredW":"24","measuredH":"24","w":"24","h":"24","x":"0","y":"3","children":{"controls":{"control":[{"ID":"0","typeID":"Icon","zOrder":"0","measuredW":"24","measuredH":"24","x":"0","y":"0","properties":{"color":"16777215","icon":{"ID":"circle","size":"small"}}},{"ID":"1","typeID":"Icon","zOrder":"1","measuredW":"24","measuredH":"24","x":"0","y":"0","properties":{"color":"10066329","icon":{"ID":"check-circle","size":"small"}}}]}}}]}}},{"ID":"16724","typeID":"Label","zOrder":"59","measuredW":"209","measuredH":"32","x":"289","y":"25","properties":{"size":"24","text":"Related Roadmaps"}},{"ID":"16848","typeID":"Arrow","zOrder":"46","w":"1","h":"95","measuredW":"150","measuredH":"100","x":"461","y":"365","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":0,"y":0},"p1":{"x":0.4999999999999999,"y":0},"p2":{"x":0,"y":94.66067010876486}}},{"ID":"16858","typeID":"Arrow","zOrder":"45","w":"119","h":"64","measuredW":"150","measuredH":"100","x":"973","y":"212","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":-0.33333333333337123,"y":64},"p1":{"x":0.4683294842186294,"y":-0.0843110084680532},"p2":{"x":119,"y":0}}},{"ID":"16859","typeID":"Arrow","zOrder":"44","w":"121","h":"23","measuredW":"150","measuredH":"100","x":"973","y":"260","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":0.33333333333337123,"y":22.666666666666686},"p1":{"x":0.49193894855850734,"y":-0.054087054833238946},"p2":{"x":121.66666666666674,"y":0}}},{"ID":"16860","typeID":"Arrow","zOrder":"43","w":"124","h":"69","measuredW":"150","measuredH":"100","x":"972","y":"305","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":0,"y":0.33333333333337123},"p1":{"x":0.4769230769230774,"y":0.10384615384615405},"p2":{"x":124,"y":69.66666666666663}}},{"ID":"16861","typeID":"Arrow","zOrder":"42","w":"128","h":"24","measuredW":"150","measuredH":"100","x":"968","y":"295","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":0,"y":1},"p1":{"x":0.4911471358380652,"y":0.061219806407955525},"p2":{"x":128,"y":24.66666666666663}}},{"ID":"16862","typeID":"Arrow","zOrder":"41","w":"180","h":"1","measuredW":"150","measuredH":"100","x":"956","y":"677","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","color":"10027263","p0":{"x":0.1332818971498,"y":0.20845130157692893},"p1":{"x":0.5,"y":0},"p2":{"x":179.84446444351192,"y":0.20845130157692893}}},{"ID":"16878","typeID":"Arrow","zOrder":"40","w":"166","h":"6","measuredW":"150","measuredH":"100","x":"608","y":"681","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":0,"y":0},"p1":{"x":0.4999999999999999,"y":0},"p2":{"x":166.44688943087885,"y":6.208451301576929}}},{"ID":"16903","typeID":"Arrow","zOrder":"39","w":"1","h":"164","measuredW":"150","measuredH":"100","x":"942","y":"837","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","color":"10027263","p0":{"x":0,"y":0},"p1":{"x":0.49999999999999994,"y":0},"p2":{"x":0,"y":163.75757575757575}}},{"ID":"16928","typeID":"Arrow","zOrder":"38","w":"156","h":"70","measuredW":"150","measuredH":"100","x":"969","y":"920","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":-0.3939393939394904,"y":69.69696969696963},"p1":{"x":0.5448827055428114,"y":-0.09657366979945234},"p2":{"x":155.66666666666652,"y":0}}},{"ID":"16929","typeID":"Arrow","zOrder":"37","w":"245","h":"1","measuredW":"150","measuredH":"100","x":"525","y":"1001","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","color":"10027263","p0":{"x":-0.33333333333337123,"y":0},"p1":{"x":0.49999999999999994,"y":0},"p2":{"x":244.62144119843106,"y":0}}},{"ID":"16941","typeID":"Arrow","zOrder":"36","w":"143","h":"143","measuredW":"150","measuredH":"100","x":"664","y":"1011","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","color":"10027263","p0":{"x":-0.36363636363637397,"y":-0.3939393939394904},"p1":{"x":0.5196359693211293,"y":-0.26840678708277743},"p2":{"x":142.81205500440456,"y":141.81332615639076}}},{"ID":"16952","typeID":"Arrow","zOrder":"35","w":"123","h":"21","measuredW":"150","measuredH":"100","x":"558","y":"1398","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":0.32023299525064886,"y":0.15968206416300745},"p1":{"x":0.4385315792311177,"y":-0.06877141855055666},"p2":{"x":122.99341094913677,"y":20.605211723144066}}},{"ID":"16954","typeID":"Arrow","zOrder":"10","w":"168","h":"102","measuredW":"150","measuredH":"100","x":"842","y":"1437","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","color":"10027263","p0":{"x":167.84008464490546,"y":101.13292357564842},"p1":{"x":0.6056070174484409,"y":0.22989853758295958},"p2":{"x":-0.32852763156256515,"y":-0.3625107469335944}}},{"ID":"16980","typeID":"Arrow","zOrder":"83","w":"170","h":"124","measuredW":"150","measuredH":"100","x":"855","y":"1551","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","color":"10027263","p0":{"x":169.63558252508687,"y":-0.2852120188247227},"p1":{"x":0.5162219080585068,"y":-0.19620864459280357},"p2":{"x":-0.2195869495246825,"y":123.96069898575206}}},{"ID":"17013","typeID":"Arrow","zOrder":"0","w":"1","h":"418","measuredW":"150","measuredH":"100","x":"860","y":"1685","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","color":"10027263","p0":{"x":-0.33333333333337123,"y":0.12208663536375752},"p1":{"x":0.4999999999999997,"y":0},"p2":{"x":-0.33333333333337123,"y":417.7440887736625}}},{"ID":"17028","typeID":"Arrow","zOrder":"89","w":"1","h":"81","measuredW":"150","measuredH":"100","x":"860","y":"2167","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":0,"y":0},"p1":{"x":0.49999999999999994,"y":0},"p2":{"x":0,"y":81.09090909090901}}},{"ID":"17029","typeID":"TextArea","zOrder":"90","w":"438","h":"118","measuredW":"200","measuredH":"140","x":"641","y":"2081"},{"ID":"17030","typeID":"Label","zOrder":"91","measuredW":"366","measuredH":"25","x":"678","y":"2100","properties":{"size":"17","text":"Continue Learning with following relevant tracks"}},{"ID":"17031","typeID":"__group__","zOrder":"92","measuredW":"198","measuredH":"44","w":"198","h":"44","x":"865","y":"2137","properties":{"controlName":"ext_link:roadmap.sh/backend"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"198","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"147","measuredH":"25","x":"25","y":"9","properties":{"size":"17","text":"Backend Roadmap"}}]}}},{"ID":"17032","typeID":"__group__","zOrder":"93","measuredW":"198","measuredH":"44","w":"198","h":"44","x":"657","y":"2137","properties":{"controlName":"ext_link:roadmap.sh/devops"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"198","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"141","measuredH":"25","x":"28","y":"9","properties":{"size":"17","text":"DevOps Roadmap"}}]}}},{"ID":"17121","typeID":"Arrow","zOrder":"34","w":"198","h":"1","measuredW":"150","measuredH":"100","x":"557","y":"475","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","color":"10027263","p0":{"x":0,"y":-0.43840128920419374},"p1":{"x":0.5,"y":0},"p2":{"x":198.14434435082512,"y":-0.43840128920419374}}},{"ID":"17125","typeID":"Arrow","zOrder":"33","w":"165","h":"5","measuredW":"150","measuredH":"100","x":"956","y":"463","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":-0.49220124415478494,"y":0.35132704525483405},"p1":{"x":0.49999999999999994,"y":0},"p2":{"x":164.9828304689379,"y":5.842332616103363}}},{"ID":"17137","typeID":"Arrow","zOrder":"32","w":"156","h":"99","measuredW":"150","measuredH":"100","x":"946","y":"477","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":0.45475328959696526,"y":0.342397311274965},"p1":{"x":0.5259405940594057,"y":0.10059405940594039},"p2":{"x":156.82553861570432,"y":99.10289330671117}}},{"ID":"17138","typeID":"Arrow","zOrder":"31","w":"145","h":"49","measuredW":"150","measuredH":"100","x":"968","y":"477","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":-0.14713924472528106,"y":0.342397311274965},"p1":{"x":0.5272470205369462,"y":0.08650430057480227},"p2":{"x":144.82553861570432,"y":49.10289330671117}}},{"ID":"17139","typeID":"Arrow","zOrder":"30","w":"1","h":"222","measuredW":"150","measuredH":"100","x":"856","y":"463","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","color":"10027263","p0":{"x":0,"y":0.20845130157692893},"p1":{"x":0.5,"y":0},"p2":{"x":0,"y":222.56244303498625}}},{"ID":"17146","typeID":"Arrow","zOrder":"29","w":"135","h":"102","measuredW":"150","measuredH":"100","x":"643","y":"572","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":-0.233771896369376,"y":-0.012127359765372603},"p1":{"x":0.5351388144847302,"y":-0.10718826031473189},"p2":{"x":134.7389059640601,"y":102.04038516885203}}},{"ID":"17147","typeID":"Arrow","zOrder":"28","w":"136","h":"47","measuredW":"150","measuredH":"100","x":"640","y":"626","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":0.297215703744655,"y":0.3061454377245809},"p1":{"x":0.5351388144847301,"y":-0.10718826031473183},"p2":{"x":136.09289769746954,"y":46.394376902261456}}},{"ID":"17148","typeID":"Arrow","zOrder":"27","w":"1","h":"94","measuredW":"150","measuredH":"100","x":"1229","y":"686","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":0,"y":0},"p1":{"x":0.4999999999999999,"y":0},"p2":{"x":0,"y":94.06017744432256}}},{"ID":"17149","typeID":"Arrow","zOrder":"26","w":"183","h":"140","measuredW":"150","measuredH":"100","x":"938","y":"689","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","color":"10027263","p0":{"x":-0.18679011000358514,"y":139.76516222836892},"p1":{"x":0.4793400286944046,"y":0.1728837876614063},"p2":{"x":183.0139299615305,"y":0.1836612214857496}}},{"ID":"17158","typeID":"Arrow","zOrder":"25","w":"169","h":"2","measuredW":"150","measuredH":"100","x":"616","y":"827","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":-0.49220124415478494,"y":0.35132704525483405},"p1":{"x":0.49999999999999994,"y":0},"p2":{"x":168.476171911061,"y":2.227004589800913}}},{"ID":"17159","typeID":"Arrow","zOrder":"24","w":"96","h":"50","measuredW":"150","measuredH":"100","x":"655","y":"769","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":-0.4545454545454959,"y":-0.06060606060611917},"p1":{"x":0.47044137876713277,"y":-0.1118348700046459},"p2":{"x":95.78251746856904,"y":49.90229710230267}}},{"ID":"17160","typeID":"Arrow","zOrder":"23","w":"104","h":"45","measuredW":"150","measuredH":"100","x":"651","y":"836","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":0.1664956385931191,"y":45.89478149478748},"p1":{"x":0.46195500502423575,"y":0.1006487687825863},"p2":{"x":104.17734196106801,"y":0.48159507229843257}}},{"ID":"17170","typeID":"Arrow","zOrder":"22","w":"152","h":"29","measuredW":"150","measuredH":"100","x":"981","y":"968","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":-0.27272727272736574,"y":29.272727272727252},"p1":{"x":0.5721230334099342,"y":-0.054534205409227196},"p2":{"x":151.24242424242425,"y":0.48484848484838494}}},{"ID":"17172","typeID":"Arrow","zOrder":"21","w":"158","h":"64","measuredW":"150","measuredH":"100","x":"972","y":"1014","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":-0.36363636363637397,"y":-0.06060606060611917},"p1":{"x":0.5542979262308053,"y":0.08682919107171085},"p2":{"x":157.21212121212125,"y":63.57575757575751}}},{"ID":"17173","typeID":"Arrow","zOrder":"20","w":"153","h":"22","measuredW":"150","measuredH":"100","x":"981","y":"1005","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":0.1515151515151274,"y":0.4545454545453822},"p1":{"x":0.6080704726263746,"y":0.03254397240215509},"p2":{"x":152.75757575757575,"y":22.575757575757507}}},{"ID":"17186","typeID":"Arrow","zOrder":"19","w":"61","h":"1","measuredW":"150","measuredH":"100","x":"381","y":"1001","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":0.06060606060606233,"y":0.35132704525483405},"p1":{"x":0.5,"y":0},"p2":{"x":60.66666666666663,"y":0.35132704525483405}}},{"ID":"17187","typeID":"Arrow","zOrder":"18","w":"67","h":"48","measuredW":"150","measuredH":"100","x":"384","y":"945","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":-0.39393939393943356,"y":0.4545454545453822},"p1":{"x":0.45331509544459303,"y":-0.17912915848695224},"p2":{"x":66.27272727272725,"y":48.93939393939388}}},{"ID":"17188","typeID":"Arrow","zOrder":"17","w":"61","h":"40","measuredW":"150","measuredH":"100","x":"381","y":"1013","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":0.06060606060606233,"y":40.030303030303},"p1":{"x":0.5606836476660072,"y":0.1649256789457753},"p2":{"x":60.66666666666663,"y":0.636363636363626}}},{"ID":"17189","typeID":"Arrow","zOrder":"16","w":"1","h":"85","measuredW":"150","measuredH":"100","x":"524","y":"1004","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","color":"10027263","p0":{"x":0,"y":0},"p1":{"x":0.4999999999999999,"y":0},"p2":{"x":0,"y":85.39393939393926},"stroke":"dotted"}},{"ID":"17203","typeID":"Arrow","zOrder":"14","w":"144","h":"42","measuredW":"150","measuredH":"100","x":"983","y":"1160","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":-0.14713924472528106,"y":0.342397311274965},"p1":{"x":0.5272470205369462,"y":0.08650430057480225},"p2":{"x":143.4848484848485,"y":42.36363636363626}}},{"ID":"17204","typeID":"Arrow","zOrder":"13","w":"167","h":"91","measuredW":"150","measuredH":"100","x":"961","y":"1160","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":0.45475328959696526,"y":0.342397311274965},"p1":{"x":0.5037940407354755,"y":0.07605199091692916},"p2":{"x":167,"y":90.84848484848476}}},{"ID":"17205","typeID":"Arrow","zOrder":"15","w":"165","h":"5","measuredW":"150","measuredH":"100","x":"971","y":"1146","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":-0.49220124415478494,"y":0.35132704525483405},"p1":{"x":0.49999999999999994,"y":0},"p2":{"x":164.9828304689379,"y":5.842332616103363}}},{"ID":"17218","typeID":"Arrow","zOrder":"12","w":"135","h":"5","measuredW":"150","measuredH":"100","x":"549","y":"1334","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":0.24242424242424931,"y":-0.06060606060623286},"p1":{"x":0.5,"y":0},"p2":{"x":135.090909090909,"y":4.484848484848499}}},{"ID":"17219","typeID":"Arrow","zOrder":"11","w":"121","h":"45","measuredW":"150","measuredH":"100","x":"563","y":"1282","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":-0.12121212121212466,"y":0.42424242424226577},"p1":{"x":0.4250100522718134,"y":-0.11419380780056407},"p2":{"x":121.09090909090901,"y":45.87878787878776}}},{"ID":"17236","typeID":"Arrow","zOrder":"9","w":"115","h":"90","measuredW":"150","measuredH":"100","x":"566","y":"1231","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":0.1838982487049634,"y":0.4499786909332215},"p1":{"x":0.4250100522718134,"y":-0.1141938078005641},"p2":{"x":114.99341094913677,"y":90.09576258031143}}},{"ID":"17239","typeID":"Arrow","zOrder":"8","w":"1","h":"252","measuredW":"150","measuredH":"100","x":"839","y":"1162","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","color":"10027263","p0":{"x":-0.33333333333337123,"y":251.8870125710714},"p1":{"x":0.49999999999999994,"y":0},"p2":{"x":-0.33333333333337123,"y":-0.4045552076850072}}},{"ID":"17240","typeID":"Arrow","zOrder":"7","w":"121","h":"27","measuredW":"150","measuredH":"100","x":"557","y":"1430","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":-0.2525000554401231,"y":26.350804939724412},"p1":{"x":0.394952236966551,"y":0.06714878484534648},"p2":{"x":120.84794484775512,"y":-0.3856569220199617}}},{"ID":"17255","typeID":"Arrow","zOrder":"6","w":"1","h":"203","measuredW":"150","measuredH":"100","x":"1217","y":"1437","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","color":"10027263","p0":{"x":0,"y":0},"p1":{"x":0.4999999999999999,"y":0},"p2":{"x":0,"y":202.57420534520793},"stroke":"dotted"}},{"ID":"17257","typeID":"Arrow","zOrder":"5","w":"136","h":"3","measuredW":"150","measuredH":"100","x":"585","y":"1689","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":-0.3705720923140916,"y":3.8334955940422333},"p1":{"x":0.5,"y":0},"p2":{"x":136.090909090909,"y":0.48484848484849863}}},{"ID":"17258","typeID":"Arrow","zOrder":"4","w":"170","h":"137","measuredW":"150","measuredH":"100","x":"591","y":"1533","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":0.34762705975845165,"y":0.41472442357576256},"p1":{"x":0.5021181197751972,"y":-0.10521150145753783},"p2":{"x":170.20279653437,"y":137.24249983367963}}},{"ID":"17259","typeID":"Arrow","zOrder":"3","w":"164","h":"87","measuredW":"150","measuredH":"100","x":"591","y":"1589","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":0.34762705975845165,"y":0.41472442357576256},"p1":{"x":0.4932542382256344,"y":-0.07759871627175148},"p2":{"x":163.91186433160658,"y":87.53343203644295}}},{"ID":"17260","typeID":"Arrow","zOrder":"2","w":"140","h":"46","measuredW":"150","measuredH":"100","x":"585","y":"1632","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":0.05669485699513643,"y":0.49690661709928463},"p1":{"x":0.49611960739557137,"y":-0.07429810545537503},"p2":{"x":140.02993636848043,"y":46.10616508713383}}},{"ID":"17261","typeID":"TextArea","zOrder":"128","w":"186","h":"262","measuredW":"200","measuredH":"140","x":"449","y":"1757"},{"ID":"17262","typeID":"Label","zOrder":"129","measuredW":"145","measuredH":"25","x":"475","y":"1770","properties":{"size":"17","text":"Cluster Operations"}},{"ID":"17271","typeID":"Arrow","zOrder":"1","w":"121","h":"64","measuredW":"150","measuredH":"100","x":"603","y":"1699","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":0.14312493993986664,"y":64.82011634978494},"p1":{"x":0.47607689119379515,"y":0.11589983704240213},"p2":{"x":121.2435698431351,"y":0.33806127146021936}}},{"ID":"17306","typeID":"__group__","zOrder":"60","measuredW":"243","measuredH":"47","w":"243","h":"47","x":"740","y":"266","properties":{"controlName":"100-kubernetes-introduction"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"243","h":"47","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16776960"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"93","measuredH":"25","x":"75","y":"11","properties":{"size":"17","text":"Introduction"}}]}}},{"ID":"17307","typeID":"__group__","zOrder":"55","measuredW":"244","measuredH":"47","w":"244","h":"47","x":"740","y":"319","properties":{"controlName":"101-containers"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"244","h":"47","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16776960"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"85","measuredH":"25","x":"79","y":"11","properties":{"size":"17","text":"Containers"}}]}}},{"ID":"17308","typeID":"__group__","zOrder":"94","measuredW":"267","measuredH":"47","w":"267","h":"47","x":"313","y":"444","properties":{"controlName":"102-setting-up-kubernetes"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"267","h":"47","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16776960"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"172","measuredH":"25","x":"48","y":"11","properties":{"size":"17","text":"Setting up Kubernetes"}}]}}},{"ID":"17309","typeID":"__group__","zOrder":"95","measuredW":"243","measuredH":"47","w":"243","h":"47","x":"747","y":"444","properties":{"controlName":"103-running-applications"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"243","h":"47","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16776960"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"163","measuredH":"25","x":"40","y":"11","properties":{"size":"17","text":"Running Applications"}}]}}},{"ID":"17310","typeID":"__group__","zOrder":"68","measuredW":"243","measuredH":"47","w":"243","h":"47","x":"740","y":"653","properties":{"controlName":"104-services-and-networking"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"243","h":"47","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16776960"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"192","measuredH":"25","x":"26","y":"11","properties":{"size":"17","text":"Services and Networking"}}]}}},{"ID":"17312","typeID":"__group__","zOrder":"72","measuredW":"272","measuredH":"47","w":"272","h":"47","x":"1094","y":"661","properties":{"controlName":"105-configuration-management"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"272","h":"47","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16776960"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"210","measuredH":"25","x":"31","y":"11","properties":{"size":"17","text":"Configuration Management"}}]}}},{"ID":"17313","typeID":"__group__","zOrder":"101","measuredW":"243","measuredH":"47","w":"243","h":"47","x":"740","y":"803","properties":{"controlName":"106-resource-management"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"243","h":"47","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16776960"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"182","measuredH":"25","x":"31","y":"11","properties":{"size":"17","text":"Resource Management"}}]}}},{"ID":"17314","typeID":"__group__","zOrder":"75","measuredW":"243","measuredH":"47","w":"243","h":"47","x":"748","y":"978","properties":{"controlName":"107-kubernetes-security"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"243","h":"47","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16776960"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"62","measuredH":"25","x":"91","y":"11","properties":{"size":"17","text":"Security"}}]}}},{"ID":"17315","typeID":"__group__","zOrder":"79","measuredW":"264","measuredH":"47","w":"264","h":"47","x":"426","y":"978","properties":{"controlName":"108-monitoring-and-logging"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"264","h":"47","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16776960"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"183","measuredH":"25","x":"40","y":"11","properties":{"size":"17","text":"Monitoring and Logging"}}]}}},{"ID":"17316","typeID":"__group__","zOrder":"110","measuredW":"206","measuredH":"47","w":"206","h":"47","x":"787","y":"1135","properties":{"controlName":"109-autoscaling"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"206","h":"47","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16776960"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"89","measuredH":"25","x":"58","y":"11","properties":{"size":"17","text":"Autoscaling"}}]}}},{"ID":"17317","typeID":"__group__","zOrder":"81","measuredW":"229","measuredH":"47","w":"229","h":"47","x":"661","y":"1312","properties":{"controlName":"110-scheduling"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"229","h":"47","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16776960"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"86","measuredH":"25","x":"72","y":"11","properties":{"text":"Scheduling","size":"17"}}]}}},{"ID":"17318","typeID":"__group__","zOrder":"119","measuredW":"229","measuredH":"47","w":"229","h":"47","x":"661","y":"1401","properties":{"controlName":"111-storage-and-volumes"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"229","h":"47","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16776960"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"163","measuredH":"25","x":"33","y":"11","properties":{"size":"17","text":"Storage and Volumes"}}]}}},{"ID":"17319","typeID":"__group__","zOrder":"121","measuredW":"253","measuredH":"47","w":"253","h":"47","x":"1003","y":"1521","properties":{"controlName":"112-deployment-patterns"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"253","h":"47","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16776960"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"161","measuredH":"25","x":"46","y":"11","properties":{"size":"17","text":"Deployment Patterns"}}]}}},{"ID":"17320","typeID":"__group__","zOrder":"84","measuredW":"243","measuredH":"47","w":"243","h":"47","x":"702","y":"1660","properties":{"controlName":"113-kubernetes-advanced-topics"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"243","h":"47","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16776960"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"130","measuredH":"25","x":"57","y":"11","properties":{"size":"17","text":"Advanced Topics"}}]}}},{"ID":"17321","typeID":"__group__","zOrder":"64","measuredW":"359","measuredH":"44","w":"359","h":"44","x":"1084","y":"196","properties":{"controlName":"100-kubernetes-introduction:kubernetes-overview"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"359","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"184","measuredH":"25","x":"88","y":"9","properties":{"size":"17","text":"Overview of Kubernetes"}}]}}},{"ID":"17322","typeID":"__group__","zOrder":"65","measuredW":"359","measuredH":"44","w":"359","h":"44","x":"1084","y":"245","properties":{"controlName":"101-kubernetes-introduction:why-kubernetes"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"359","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"134","measuredH":"25","x":"113","y":"9","properties":{"size":"17","text":"Why Kubernetes?"}}]}}},{"ID":"17323","typeID":"__group__","zOrder":"66","measuredW":"359","measuredH":"44","w":"359","h":"44","x":"1084","y":"294","properties":{"controlName":"102-kubernetes-introduction:key-concepts-terminologies"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"359","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"251","measuredH":"25","x":"54","y":"9","properties":{"size":"17","text":"Key Concepts and Terminologies"}}]}}},{"ID":"17324","typeID":"__group__","zOrder":"67","measuredW":"359","measuredH":"44","w":"359","h":"44","x":"1084","y":"343","properties":{"controlName":"103-kubernetes-introduction:kubernetes-alternatives"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"359","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"184","measuredH":"25","x":"88","y":"9","properties":{"size":"17","text":"Kubernetes Alternatives"}}]}}},{"ID":"17325","typeID":"__group__","zOrder":"61","measuredW":"301","measuredH":"44","w":"301","h":"44","x":"291","y":"362","properties":{"controlName":"100-setting-up-kubernetes:installing-a-local-cluster"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"301","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"189","measuredH":"25","x":"56","y":"9","properties":{"size":"17","text":"Installing a Local Cluster"}}]}}},{"ID":"17326","typeID":"__group__","zOrder":"62","measuredW":"301","measuredH":"44","w":"301","h":"44","x":"291","y":"313","properties":{"controlName":"101-setting-up-kubernetes:choosing-a-managed-provider"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"301","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"234","measuredH":"25","x":"34","y":"9","properties":{"size":"17","text":"Choosing a Managed Provider"}}]}}},{"ID":"17327","typeID":"__group__","zOrder":"63","measuredW":"301","measuredH":"44","w":"301","h":"44","x":"291","y":"263","properties":{"controlName":"102-setting-up-kubernetes:deploying-your-first-application"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"301","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"241","measuredH":"25","x":"30","y":"9","properties":{"size":"17","text":"Deploying your First Application"}}]}}},{"ID":"17328","typeID":"__group__","zOrder":"96","measuredW":"162","measuredH":"44","w":"162","h":"44","x":"1094","y":"446","properties":{"controlName":"100-running-applications:pods"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"162","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"38","measuredH":"25","x":"62","y":"9","properties":{"size":"17","text":"Pods"}}]}}},{"ID":"17329","typeID":"__group__","zOrder":"97","measuredW":"157","measuredH":"44","w":"157","h":"44","x":"1262","y":"446","properties":{"controlName":"101-running-applications:replicasets"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"157","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"93","measuredH":"25","x":"32","y":"9","properties":{"size":"17","text":"ReplicaSets"}}]}}},{"ID":"17330","typeID":"__group__","zOrder":"98","measuredW":"162","measuredH":"44","w":"162","h":"44","x":"1094","y":"496","properties":{"controlName":"102-running-applications:deployments"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"162","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"101","measuredH":"25","x":"32","y":"9","properties":{"size":"17","text":"Deployments"}}]}}},{"ID":"17331","typeID":"__group__","zOrder":"99","measuredW":"154","measuredH":"44","w":"154","h":"44","x":"1263","y":"496","properties":{"controlName":"103-running-applications:statefulsets"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"154","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"93","measuredH":"25","x":"30","y":"9","properties":{"size":"17","text":"StatefulSets"}}]}}},{"ID":"17332","typeID":"__group__","zOrder":"100","measuredW":"323","measuredH":"44","w":"323","h":"44","x":"1094","y":"546","properties":{"controlName":"104-running-applications:jobs"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"323","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"37","measuredH":"25","x":"143","y":"9","properties":{"size":"17","text":"Jobs"}}]}}},{"ID":"17333","typeID":"__group__","zOrder":"69","measuredW":"351","measuredH":"44","w":"351","h":"44","x":"298","y":"655","properties":{"controlName":"100-services-and-networking:networking-and-pod-to-pod-communication"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"351","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"318","measuredH":"25","x":"17","y":"9","properties":{"size":"17","text":"Networking & Pod-to-Pod Communication"}}]}}},{"ID":"17334","typeID":"__group__","zOrder":"70","measuredW":"353","measuredH":"44","w":"353","h":"44","x":"296","y":"606","properties":{"controlName":"101-services-and-networking:load-balancing"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"353","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"120","measuredH":"25","x":"117","y":"9","properties":{"size":"17","text":"Load Balancing"}}]}}},{"ID":"17335","typeID":"__group__","zOrder":"71","measuredW":"353","measuredH":"44","w":"353","h":"44","x":"296","y":"556","properties":{"controlName":"102-services-and-networking:external-access-to-services"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"353","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"213","measuredH":"25","x":"70","y":"9","properties":{"size":"17","text":"External Access to Services"}}]}}},{"ID":"17336","typeID":"__group__","zOrder":"73","measuredW":"325","measuredH":"44","w":"325","h":"44","x":"1096","y":"743","properties":{"controlName":"100-configuration-management:config-maps"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"325","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"290","measuredH":"25","x":"18","y":"10","properties":{"size":"17","text":"Injecting Pod Config. with ConfigMaps"}}]}}},{"ID":"17337","typeID":"__group__","zOrder":"74","measuredW":"327","measuredH":"44","w":"327","h":"44","x":"1096","y":"793","properties":{"controlName":"101-configuration-management:secrets"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"327","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"247","measuredH":"25","x":"40","y":"9","properties":{"size":"17","text":"Using Secrets for Sensitive Data"}}]}}},{"ID":"17338","typeID":"__group__","zOrder":"102","measuredW":"364","measuredH":"44","w":"364","h":"44","x":"297","y":"755","properties":{"controlName":"100-resource-management:setting-resource-requests-and-limits"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"364","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"296","measuredH":"25","x":"34","y":"9","properties":{"size":"17","text":"Setting Resource Requests and Limits"}}]}}},{"ID":"17339","typeID":"__group__","zOrder":"103","measuredW":"364","measuredH":"44","w":"364","h":"44","x":"297","y":"805","properties":{"controlName":"101-resource-management:assigning-quotas-to-namespaces"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"364","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"260","measuredH":"25","x":"52","y":"9","properties":{"size":"17","text":"Assigning Quotas to Namespaces"}}]}}},{"ID":"17340","typeID":"__group__","zOrder":"104","measuredW":"365","measuredH":"44","w":"365","h":"44","x":"296","y":"854","properties":{"controlName":"102-resource-management:monitoring-and-optimizing-resource-usage"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"365","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"336","measuredH":"25","x":"15","y":"9","properties":{"size":"17","text":"Monitoring and Optimizing Resource Usage"}}]}}},{"ID":"17341","typeID":"__group__","zOrder":"76","measuredW":"308","measuredH":"44","w":"308","h":"44","x":"1120","y":"901","properties":{"controlName":"100-kubernetes-security:role-based-acccess-control"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"308","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"269","measuredH":"25","x":"19","y":"9","properties":{"size":"17","text":"Role-based access control (RBAC)"}}]}}},{"ID":"17342","typeID":"__group__","zOrder":"77","measuredW":"308","measuredH":"44","w":"308","h":"44","x":"1120","y":"950","properties":{"controlName":"101-kubernetes-security:network-security"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"308","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"130","measuredH":"25","x":"89","y":"9","properties":{"size":"17","text":"Network Security"}}]}}},{"ID":"17343","typeID":"__group__","zOrder":"78","measuredW":"308","measuredH":"44","w":"308","h":"44","x":"1120","y":"999","properties":{"controlName":"102-kubernetes-security:container-and-pod-security"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"308","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"210","measuredH":"25","x":"49","y":"9","properties":{"size":"17","text":"Container and Pod Security"}}]}}},{"ID":"17344","typeID":"__group__","zOrder":"105","measuredW":"308","measuredH":"44","w":"308","h":"44","x":"1120","y":"1048","properties":{"controlName":"103-kubernetes-security:security-scanners"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"308","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"138","measuredH":"25","x":"85","y":"9","properties":{"size":"17","text":"Security Scanners"}}]}}},{"ID":"17345","typeID":"__group__","zOrder":"80","measuredW":"104","measuredH":"44","w":"104","h":"44","x":"282","y":"930","properties":{"controlName":"100-monitoring-and-logging:logs"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"104","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"38","measuredH":"25","x":"33","y":"10","properties":{"size":"17","text":"Logs"}}]}}},{"ID":"17346","typeID":"__group__","zOrder":"106","measuredW":"104","measuredH":"44","w":"104","h":"44","x":"282","y":"980","properties":{"controlName":"101-monitoring-and-logging:metrics"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"104","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"58","measuredH":"25","x":"23","y":"10","properties":{"size":"17","text":"Metrics"}}]}}},{"ID":"17347","typeID":"__group__","zOrder":"107","measuredW":"104","measuredH":"44","w":"104","h":"44","x":"282","y":"1029","properties":{"controlName":"102-monitoring-and-logging:traces"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"104","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"53","measuredH":"25","x":"25","y":"10","properties":{"size":"17","text":"Traces"}}]}}},{"ID":"17348","typeID":"__group__","zOrder":"108","measuredW":"198","measuredH":"44","w":"198","h":"44","x":"426","y":"1064","properties":{"controlName":"103-monitoring-and-logging:resource-health"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"198","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"130","measuredH":"25","x":"34","y":"10","properties":{"size":"17","text":"Resource Health"}}]}}},{"ID":"17349","typeID":"__group__","zOrder":"109","measuredW":"198","measuredH":"44","w":"198","h":"44","x":"426","y":"1112","properties":{"controlName":"104-monitoring-and-logging:observability-engines"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"198","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","w":"166","measuredW":"166","measuredH":"25","x":"16","y":"10","properties":{"text":"Observability Engines","size":"17"}}]}}},{"ID":"17350","typeID":"__group__","zOrder":"111","measuredW":"299","measuredH":"44","w":"299","h":"44","x":"1118","y":"1128","properties":{"controlName":"100-autoscaling:horizontal-pod-autoscaler"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"299","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"248","measuredH":"25","x":"26","y":"9","properties":{"size":"17","text":"Horizontal Pod Autoscaler (HPA)"}}]}}},{"ID":"17351","typeID":"__group__","zOrder":"112","measuredW":"299","measuredH":"44","w":"299","h":"44","x":"1118","y":"1177","properties":{"controlName":"101-autoscaling:vertical-pod-autoscaler"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"299","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"225","measuredH":"25","x":"37","y":"9","properties":{"size":"17","text":"Vertical Pod Autoscaler (VPA)"}}]}}},{"ID":"17352","typeID":"__group__","zOrder":"113","measuredW":"299","measuredH":"44","w":"299","h":"44","x":"1118","y":"1226","properties":{"controlName":"102-autoscaling:cluster-autoscaling"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"299","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"149","measuredH":"25","x":"75","y":"9","properties":{"size":"17","text":"Cluster Autoscaling"}}]}}},{"ID":"17353","typeID":"__group__","zOrder":"114","measuredW":"86","measuredH":"44","w":"86","h":"44","x":"284","y":"1212","properties":{"controlName":"100-scheduling:scheduling-basics"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"86","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"52","measuredH":"25","x":"17","y":"10","properties":{"size":"17","text":"Basics"}}]}}},{"ID":"17354","typeID":"__group__","zOrder":"115","measuredW":"191","measuredH":"44","w":"191","h":"44","x":"378","y":"1213","properties":{"controlName":"101-scheduling:taints-and-tolerations"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"191","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"165","measuredH":"25","x":"13","y":"10","properties":{"size":"17","text":"Taints and tolerations"}}]}}},{"ID":"17355","typeID":"__group__","zOrder":"116","measuredW":"287","measuredH":"44","w":"287","h":"44","x":"283","y":"1262","properties":{"controlName":"102-scheduling:topology-spread-constraints"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"287","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"218","measuredH":"25","x":"35","y":"10","properties":{"size":"17","text":"Topology spread Constraints"}}]}}},{"ID":"17356","typeID":"__group__","zOrder":"117","measuredW":"155","measuredH":"44","w":"155","h":"44","x":"283","y":"1310","properties":{"controlName":"103-scheduling:pod-priorities"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"155","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"102","measuredH":"25","x":"27","y":"9","properties":{"size":"17","text":"Pod priorities"}}]}}},{"ID":"17357","typeID":"__group__","zOrder":"118","measuredW":"128","measuredH":"44","w":"128","h":"44","x":"443","y":"1311","properties":{"controlName":"104-scheduling:evictions"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"128","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"70","measuredH":"25","x":"29","y":"9","properties":{"size":"17","text":"Evictions"}}]}}},{"ID":"17358","typeID":"__group__","zOrder":"120","measuredW":"209","measuredH":"44","w":"209","h":"44","x":"356","y":"1379","properties":{"controlName":"100-storage-and-volumes:csi-drivers"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"209","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"87","measuredH":"25","x":"66","y":"9","properties":{"size":"17","text":"CSI Drivers"}}]}}},{"ID":"17359","typeID":"__group__","zOrder":"82","measuredW":"209","measuredH":"44","w":"209","h":"44","x":"356","y":"1428","properties":{"controlName":"101-storage-and-volumes:stateful-applications"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"209","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"157","measuredH":"25","x":"26","y":"9","properties":{"size":"17","text":"Stateful Applications"}}]}}},{"ID":"17360","typeID":"__group__","zOrder":"124","measuredW":"261","measuredH":"44","w":"261","h":"44","x":"1156","y":"1340","properties":{"controlName":"100-deployment-patterns:ci-cd-integration"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"261","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"147","measuredH":"25","x":"57","y":"9","properties":{"size":"17","text":"CI / CD Integration"}}]}}},{"ID":"17361","typeID":"__group__","zOrder":"123","measuredW":"261","measuredH":"44","w":"261","h":"44","x":"1156","y":"1389","properties":{"controlName":"101-deployment-patterns:gitops"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"261","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"54","measuredH":"25","x":"104","y":"9","properties":{"size":"17","text":"GitOps"}}]}}},{"ID":"17362","typeID":"__group__","zOrder":"122","measuredW":"261","measuredH":"44","w":"261","h":"44","x":"1156","y":"1438","properties":{"controlName":"102-deployment-patterns:helm-charts"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"261","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"97","measuredH":"25","x":"82","y":"9","properties":{"size":"17","text":"Helm Charts"}}]}}},{"ID":"17363","typeID":"__group__","zOrder":"125","measuredW":"261","measuredH":"44","w":"261","h":"44","x":"1156","y":"1602","properties":{"controlName":"103-deployment-patterns:canary-deployments"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"261","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"159","measuredH":"25","x":"51","y":"9","properties":{"size":"17","text":"Canary Deployments"}}]}}},{"ID":"17364","typeID":"__group__","zOrder":"126","measuredW":"261","measuredH":"44","w":"261","h":"44","x":"1156","y":"1651","properties":{"controlName":"104-deployment-patterns:blue-green-deployments"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"261","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"195","measuredH":"25","x":"33","y":"9","properties":{"size":"17","text":"Blue-Green Deployments"}}]}}},{"ID":"17365","typeID":"__group__","zOrder":"127","measuredW":"261","measuredH":"44","w":"261","h":"44","x":"1156","y":"1700","properties":{"controlName":"105-deployment-patterns:rolling-updates-rollbacks"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"261","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"214","measuredH":"25","x":"24","y":"9","properties":{"size":"17","text":"Rolling Updates / Rollbacks"}}]}}},{"ID":"17366","typeID":"__group__","zOrder":"85","measuredW":"316","measuredH":"44","w":"316","h":"44","x":"283","y":"1517","properties":{"controlName":"100-kubernetes-advanced-topics:custom-controllers"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"316","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"219","measuredH":"25","x":"48","y":"10","properties":{"size":"17","text":"Creating Custom Controllers"}}]}}},{"ID":"17367","typeID":"__group__","zOrder":"86","measuredW":"316","measuredH":"44","w":"316","h":"44","x":"283","y":"1567","properties":{"controlName":"101-kubernetes-advanced-topics:custom-schedulers-extenders"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"316","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"263","measuredH":"25","x":"26","y":"10","properties":{"size":"17","text":"Custom schedulers and extenders"}}]}}},{"ID":"17368","typeID":"__group__","zOrder":"87","measuredW":"316","measuredH":"44","w":"316","h":"44","x":"283","y":"1617","properties":{"controlName":"102-kubernetes-advanced-topics:custom-resource-definitions"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"316","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"277","measuredH":"25","x":"19","y":"10","properties":{"size":"17","text":"Custom resource definitions (CRDs)"}}]}}},{"ID":"17369","typeID":"__group__","zOrder":"88","measuredW":"316","measuredH":"44","w":"316","h":"44","x":"283","y":"1667","properties":{"controlName":"103-kubernetes-advanced-topics:kubernetes-extensions-and-apis"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"316","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"250","measuredH":"25","x":"33","y":"10","properties":{"size":"17","text":"Kubernetes extensions and APIs"}}]}}},{"ID":"17370","typeID":"__group__","zOrder":"130","measuredW":"335","measuredH":"44","w":"335","h":"44","x":"283","y":"1811","properties":{"controlName":"104-kubernetes-advanced-topics:own-cluster"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"335","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"287","measuredH":"25","x":"28","y":"9","properties":{"size":"17","text":"Should you manage your own cluster?"}}]}}},{"ID":"17371","typeID":"__group__","zOrder":"131","measuredW":"335","measuredH":"44","w":"335","h":"44","x":"283","y":"1859","properties":{"controlName":"105-kubernetes-advanced-topics:control-plane-installation"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"335","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"203","measuredH":"25","x":"28","y":"9","properties":{"size":"17","text":"Installing the control plane"}}]}}},{"ID":"17372","typeID":"__group__","zOrder":"132","measuredW":"335","measuredH":"44","w":"335","h":"44","x":"283","y":"1909","properties":{"controlName":"106-kubernetes-advanced-topics:managing-worker-nodes"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"335","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"276","measuredH":"25","x":"28","y":"9","properties":{"size":"17","text":"Adding and managing worker nodes"}}]}}},{"ID":"17373","typeID":"__group__","zOrder":"133","measuredW":"335","measuredH":"44","w":"335","h":"44","x":"283","y":"1959","properties":{"controlName":"107-kubernetes-advanced-topics:multi-cluster-management"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"335","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"206","measuredH":"25","x":"65","y":"9","properties":{"size":"17","text":"Multi-Cluster Management"}}]}}}]},"attributes":{"name":"New Wireframe 1 copy 4","order":1000019.1097559511,"parentID":null,"notes":""},"branchID":"Master","resourceID":"E1CB7BE6-6915-47A7-A0F5-139EC887D1A8","mockupH":"2248","mockupW":"1204","measuredW":"1466","measuredH":"2248","version":"1.0"},"groupOffset":{"x":0,"y":0},"dependencies":[],"projectID":"file:///Users/kamranahmed/Desktop/devops%20roadmap%5C.bmpr"} \ No newline at end of file diff --git a/src/data/best-practices/api-security/api-security.md b/src/data/best-practices/api-security/api-security.md index 8de036744..66c1eb653 100644 --- a/src/data/best-practices/api-security/api-security.md +++ b/src/data/best-practices/api-security/api-security.md @@ -12,14 +12,14 @@ dimensions: width: 968 height: 1543.39 sponsor: - url: 'https://www.getambassador.io/products/edge-stack-api-gateway?utm_source=roadmap-sh&utm_medium=edge-stack-page&utm_campaign=new-account' - title: 'Featured Product' - imageUrl: 'https://i.imgur.com/e5fdI0q.png' - description: 'Get your Kubernetes API Gateway up and running in 5 minutes with Ambassador Edge Stack!' + url: 'https://liblab.com/blog/a-big-look-at-security-in-openapi?utm_source=roadmap_apisecruity&utm_medium=edge_stack&utm_campaign=april23' + title: 'Secure APIs in OpenAPI' + imageUrl: 'https://i.imgur.com/ZmuZUmS.png' + description: 'Explore OpenAPI security options, industry best practices, and steps to secure your own API.' event: category: 'SponsorClick' - action: 'Ambassador Redirect' - label: 'API Security / Ambassador Link' + action: 'Liblab Redirect' + label: 'API Security / Liblab Link' schema: headline: 'API Security Best Practices' description: 'Detailed list of best practices to make your APIs secure. Each best practice carries further details and how to implement that best practice.' @@ -34,3 +34,4 @@ seo: - 'API Security Best Practices' - 'API Security Checklist' --- + diff --git a/src/data/best-practices/frontend-performance/frontend-performance.md b/src/data/best-practices/frontend-performance/frontend-performance.md index dfe17ccfc..71d0bd638 100644 --- a/src/data/best-practices/frontend-performance/frontend-performance.md +++ b/src/data/best-practices/frontend-performance/frontend-performance.md @@ -11,6 +11,15 @@ description: 'Detailed list of best practices to improve your frontend performan dimensions: width: 968 height: 1270.89 +sponsor: + url: 'https://info.honeycomb.io/observability-engineering-oreilly-book-2022?utm_medium=paid-sponsorship&utm_source=insight-partners&utm_campaign=plg_insightpartners_paidsponsorship' + title: 'Free eBook' + imageUrl: 'https://i.imgur.com/zS1FMNo.jpg' + description: 'Get this ebook to start your observability journey for quicker debugging & more time to innovate.' + event: + category: 'SponsorClick' + action: 'Honeycomb Redirect' + label: 'Frontend Performance / Honeycomb Link' schema: headline: 'Frontend Performance Best Practices' description: 'Detailed list of best practices to improve the frontend performance of your website. Each best practice carries further details and how to implement that best practice.' @@ -27,3 +36,4 @@ seo: - 'frontend checklist' - 'make performant frontends' --- + diff --git a/src/data/guides/how-to-setup-a-jump-server.md b/src/data/guides/how-to-setup-a-jump-server.md index e8cfe988f..cab314e46 100644 --- a/src/data/guides/how-to-setup-a-jump-server.md +++ b/src/data/guides/how-to-setup-a-jump-server.md @@ -9,7 +9,7 @@ seo: title: 'Jump Servers: What, Why and How - roadmap.sh' description: 'Learn what is a Jump Server and how to set it up for SSH access.' isNew: true -type: 'visual' +type: 'textual' date: 2023-03-20 sitemap: priority: 0.7 diff --git a/src/data/roadmaps/android/android.md b/src/data/roadmaps/android/android.md index b08ff4b85..a4b2e4ae3 100644 --- a/src/data/roadmaps/android/android.md +++ b/src/data/roadmaps/android/android.md @@ -1,5 +1,4 @@ --- -# jsonUrl: "/jsons/roadmaps/android.json" pdfUrl: '/pdfs/roadmaps/android.pdf' order: 4 briefTitle: 'Android' @@ -41,7 +40,6 @@ tags: - 'main-sitemap' - 'role-roadmap' --- - The intent of this guide is to give you an idea about the Android development landscape and to help guide your learning if you are confused. Before we start, please note that the roadmap is opinionated, and you might have different opinions than those of the author. Having said that, [we would love to hear your opinions](https://github.com/kamranahmedse/developer-roadmap/issues/new) and incorporate them in the roadmap if suitable. There are multiple ways to develop applications for Android; you can go down the path of hybrid application development where [Flutter](https://flutter.dev/), [React-Native](https://reactnative.dev/), or [NativeScript](https://www.nativescript.org/) are the most common contenders. Flutter uses Dart, whereas React Native and Native Script rely on JavaScript. Answering the question of hybrid vs native is out of the scope of this roadmap. This roadmap is focused on native Android app development, but if you are interested in learning any hybrid framework, my personal preference is [React-Native](https://reactnative.dev) and I would recommend you check out the [Frontend Developer Roadmap](/frontend). @@ -142,4 +140,4 @@ For any suggestions, improvements and feedback, feel free to [submit an issue](h -


+


\ No newline at end of file diff --git a/src/data/roadmaps/angular/content/100-typescript-basics/103-type-inference.md b/src/data/roadmaps/angular/content/100-typescript-basics/103-type-inference.md index 05d1d7642..ca7ad1826 100644 --- a/src/data/roadmaps/angular/content/100-typescript-basics/103-type-inference.md +++ b/src/data/roadmaps/angular/content/100-typescript-basics/103-type-inference.md @@ -4,5 +4,5 @@ In TypeScript, several places where `type inference` is used to provide type inf Visit the following resources to learn more: -- [Type Interface - typescriptlang](https://www.typescriptlang.org/docs/handbook/type-inference.html) +- [Type Inference - typescriptlang](https://www.typescriptlang.org/docs/handbook/type-inference.html) - [Type Inference video for Beginners](https://www.youtube.com/watch?v=3ui_st7rtfA) diff --git a/src/data/roadmaps/angular/content/107-routing/103-router-events.md b/src/data/roadmaps/angular/content/107-routing/103-router-events.md index e20ed6a8e..0a6f05dea 100644 --- a/src/data/roadmaps/angular/content/107-routing/103-router-events.md +++ b/src/data/roadmaps/angular/content/107-routing/103-router-events.md @@ -1 +1,5 @@ -# Router events +# Router Events + +The Angular Router raises events when it navigates from one route to another route. It raises several events such as `NavigationStart`, `NavigationEnd`, `NavigationCancel`, `NavigationError`, `ResolveStart`, etc. You can listen to these events and find out when the state of the route changes. Some of the useful events are route change start (NavigationStart) and route change end (NavigationEnd). + +- [Angular Official Website](https://angular.io/api/router/RouterEvent) diff --git a/src/data/roadmaps/angular/content/107-routing/104-guards.md b/src/data/roadmaps/angular/content/107-routing/104-guards.md index cf8337882..9f68250ef 100644 --- a/src/data/roadmaps/angular/content/107-routing/104-guards.md +++ b/src/data/roadmaps/angular/content/107-routing/104-guards.md @@ -12,3 +12,4 @@ Visit the following resources to learn more: - [Can Deactivate](https://angular.io/api/router/CanDeactivate) - [Angular Can Load](https://angular.io/api/router/CanLoad) - [Can Match](https://angular.io/api/router/CanMatch) +- [Resolve](https://angular.io/api/router/Resolve) diff --git a/src/data/roadmaps/aspnet-core/aspnet-core.md b/src/data/roadmaps/aspnet-core/aspnet-core.md index b79375fef..4f4a2fac6 100644 --- a/src/data/roadmaps/aspnet-core/aspnet-core.md +++ b/src/data/roadmaps/aspnet-core/aspnet-core.md @@ -11,6 +11,15 @@ hasTopics: true dimensions: width: 968 height: 2773.45 +sponsor: + url: 'https://www.honeycomb.io/resources/intercom-accelerates-developer-productivity?utm_medium=paid-sponsorship&utm_source=insight-partners&utm_campaign=plg_insightpartners_paidsponsorship' + title: 'Observability Boosts Dev' + imageUrl: 'https://i.imgur.com/cEt0VAH.jpg' + description: 'Learn how Intercom leveraged observability for developer productivity, delivering better outcomes.' + event: + category: 'SponsorClick' + action: 'Honeycomb Redirect' + label: 'ASP.NET Core / Honeycomb Link' schema: headline: 'ASP.NET Core Developer Roadmap' description: 'Learn how to become a ASP.NET Core Developer with this interactive step by step guide in 2023. We also have resources and short descriptions attached to the roadmap items so you can get everything you want to learn in one place.' @@ -59,3 +68,4 @@ tags: - 'main-sitemap' - 'role-roadmap' --- + diff --git a/src/data/roadmaps/backend/backend.md b/src/data/roadmaps/backend/backend.md index 1db4f8aa1..12f278d23 100644 --- a/src/data/roadmaps/backend/backend.md +++ b/src/data/roadmaps/backend/backend.md @@ -12,14 +12,14 @@ dimensions: width: 968 height: 2840.4 sponsor: - url: 'https://www.fermyon.com/spin?utm_source=backend&utm_medium=banner&utm_campaign=roadmap-sh' - title: 'Serverless Backend Apps' - imageUrl: 'https://i.imgur.com/2ONZopb.jpg' - description: 'Go from blinking cursor to deployed serverless Backend apps in 66 seconds with Fermyon Cloud.' + url: 'https://liblab.com/blog/why-do-i-need-to-build-an-sdk?utm_source=roadmap_devops&utm_medium=edge_stack&utm_campaign=april23' + title: 'Why do I need an SDK?' + imageUrl: 'https://i.imgur.com/ZmuZUmS.png' + description: 'Enhance API adoption, developer experience, and security by providing SDKs for your APIs.' event: category: 'SponsorClick' - action: 'Fermyon Redirect' - label: 'Backend / Fermyon Link' + action: 'Liblab Redirect' + label: 'Backend / Liblab Link' schema: headline: 'Backend Developer Roadmap' description: 'Learn how to become a Backend Developer with this interactive step by step guide in 2023. We also have resources and short descriptions attached to the roadmap items so you can get everything you want to learn in one place.' @@ -71,3 +71,4 @@ tags: - 'main-sitemap' - 'role-roadmap' --- + diff --git a/src/data/roadmaps/blockchain/content/101-blockchain-general-knowledge/107-consensus-protocols.md b/src/data/roadmaps/blockchain/content/101-blockchain-general-knowledge/107-consensus-protocols.md index f57e74f55..e437768f7 100644 --- a/src/data/roadmaps/blockchain/content/101-blockchain-general-knowledge/107-consensus-protocols.md +++ b/src/data/roadmaps/blockchain/content/101-blockchain-general-knowledge/107-consensus-protocols.md @@ -4,6 +4,6 @@ Consensus for blockchain is a procedure in which the peers of a Blockchain netwo Visit the following resources to learn more: -- [Consensus Mechanisms in Blockchain: A Beginner’s Guide](https://crypto.com/university/consensus-mechanisms-in-blockchain) +- [Consensus Mechanisms in Blockchain: A Beginner’s Guide](https://crypto.com/university/consensus-mechanisms-explained) - [Consensus Mechanisms](https://ethereum.org/en/developers/docs/consensus-mechanisms/) - [What Is a Consensus Mechanism?](https://www.coindesk.com/learn/what-is-a-consensus-mechanism/) diff --git a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/understand-these/100-man.md b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/understand-these/100-man.md index 784081d6d..bfb68ffa6 100644 --- a/src/data/roadmaps/cyber-security/content/102-networking-knowledge/understand-these/100-man.md +++ b/src/data/roadmaps/cyber-security/content/102-networking-knowledge/understand-these/100-man.md @@ -1,50 +1,32 @@ # MAN -The **man** pages, short for "manual pages," is a reference/documentation system available in Unix-based operating systems. Man pages provide detailed information about various commands, utilities, and configuration files, aimed at helping users understand and properly use these tools and features. +A Metropolitan Area Network **(MAN)** is a type of computer network that spans across a metropolitan area or a large geographical area, typically covering a city or a region. It is designed to interconnect various local area networks **(LANs)** and wide area networks **(WANs)** to enable communication and data exchange between different locations within the metropolitan area. -## Man Command +## Examples of MAN -The `man` command is used to access the contents of man pages. To look up the manual page for a particular command or utility, simply type `man` followed by the command or utility you want to learn about. +Some examples of Metropolitan Area Networks **(MANs)** include: -Here's an example: +1. **Cable TV Networks:** Many cable TV networks also offer internet services to their subscribers, creating a MAN that covers a specific metropolitan area. +2. **Educational Institutions:** Universities, colleges, and research institutions often have their own MANs to interconnect their campuses and facilities spread across a metropolitan area. +3. **City-Wide Wi-Fi Networks:** Some cities have established their own Wi-Fi networks to provide internet access to residents and businesses, creating a MAN that covers the entire city. +4. **Public Transportation Networks:** Some metropolitan areas have implemented MANs to provide internet connectivity on public transportation networks such as buses and trains. -```bash -man ls -``` +## Advantages of MAN -This example will display the man page for the `ls` command, which is used to list the contents of a directory. +- **Improved Connectivity:** MANs provide a high-speed and reliable means of communication between different locations within a metropolitan area, facilitating efficient data exchange and collaboration among organizations, businesses, and individuals. -## Man Page Sections +- **Cost-Effective:** Compared to establishing multiple separate networks for each location, implementing a MAN can be more cost-effective as it allows for shared infrastructure and resources, reducing overall costs of networking equipment and maintenance. -Man pages are divided into sections, which cover different topics such as general commands, system calls, library functions, device drivers, and more. Each section is numbered, and you may see the same command or utility listed in different sections. +- **Scalability:** MANs are highly scalable and can be expanded to accommodate new locations or increased network traffic as the metropolitan area grows, making it a flexible solution for evolving connectivity needs. -The section numbers are as follows: +- **Centralized Management:** A MAN allows for centralized management of the network, making it easier to monitor and control network operations, troubleshoot issues, and implement security measures. -- **General commands**: User-level commands and utilities -- **System calls**: Functions provided by the kernel -- **Library functions**: Functions within program libraries -- **Special files**: File-system nodes like device files -- **File formats**: Various file formats and conventions -- **Games and screensavers** -- **Miscellaneous**: Miscellaneous topics -- **System administration commands**: Commands for system administration tasks +## Disadvantages of MAN -To access a specific section of a man page, include the section number before the command name. For example, to access section 4 of the `tty` man page, type: +- **Complexity:** MANs can be complex to design, implement, and maintain due to their large scale and geographical spread. They require skilled network administrators and engineers to manage and troubleshoot the network effectively. -```bash -man 4 tty -``` +- **Cost of Implementation:** Establishing a MAN requires significant upfront investment in networking infrastructure and equipment, which can be a barrier to entry for smaller organizations or municipalities. -## Navigation and Search +- **Limited Coverage:** MANs are typically limited to metropolitan areas, and their coverage may not extend to remote or rural areas outside the metropolitan region, which can pose connectivity challenges for organizations located in those areas. -Once you're inside a man page, you can navigate and search using the following key bindings: - -- `Up` and `Down` arrow keys or `j` and `k` to scroll line by line -- `Enter` to scroll one line at a time -- `Space` to scroll one screen/page at a time -- `/` followed by a search query to search within the man page -- `n` to jump to the next instance of the search term -- `N` to jump to the previous instance of the search term -- `q` to quit the man page and return to the command prompt - -The man pages are an invaluable resource for understanding how and when to use specific commands and utilities on Unix-based systems. Make it a habit to refer to them whenever you encounter an unfamiliar command or need a reference for using a specific utility. +- **Vulnerability to Single Point of Failure:** Since MANs are centralized networks, they are susceptible to a single point of failure, such as a failure in the main network node, which can disrupt the entire network and impact communication and data exchange among connected locations. diff --git a/src/data/roadmaps/devops/devops.md b/src/data/roadmaps/devops/devops.md index c5aca02f4..c180dbfbb 100644 --- a/src/data/roadmaps/devops/devops.md +++ b/src/data/roadmaps/devops/devops.md @@ -12,14 +12,14 @@ dimensions: width: 968 height: 2527.46 sponsor: - url: 'https://www.getambassador.io/products/edge-stack-api-gateway?utm_source=roadmap-sh&utm_medium=edge-stack-page&utm_campaign=new-account' - title: 'Featured Product' - imageUrl: 'https://i.imgur.com/e5fdI0q.png' - description: 'Get your Kubernetes API Gateway up and running in 5 minutes with Ambassador Edge Stack!' + url: 'https://liblab.com/blog/why-do-i-need-to-build-an-sdk?utm_source=roadmap_devops&utm_medium=edge_stack&utm_campaign=april23' + title: 'Why do I need an SDK?' + imageUrl: 'https://i.imgur.com/ZmuZUmS.png' + description: 'Enhance API adoption, developer experience, and security by providing SDKs for your APIs.' event: category: 'SponsorClick' - action: 'Ambassador Redirect' - label: 'DevOps / Ambassador Link' + action: 'Liblab Redirect' + label: 'DevOps / Liblab Link' schema: headline: 'DevOps Roadmap' description: 'Learn to become a DevOps, SRE or get any other operations role with this interactive step by step guide in 2023. We also have resources and short descriptions attached to the roadmap items so you can get everything you want to learn in one place.' @@ -63,3 +63,4 @@ tags: - 'main-sitemap' - 'role-roadmap' --- + diff --git a/src/data/roadmaps/flutter/content/101-setup-development-environment/102-fvm.md b/src/data/roadmaps/flutter/content/101-setup-development-environment/102-fvm.md index a5251b1e3..0dd5e9011 100644 --- a/src/data/roadmaps/flutter/content/101-setup-development-environment/102-fvm.md +++ b/src/data/roadmaps/flutter/content/101-setup-development-environment/102-fvm.md @@ -1 +1,13 @@ # FVM (Flutter Version Manager) + +Flutter version manager is a tool used to manage different versions of Flutter SDK on a developer's machine. Flutter is a popular open-source mobile application development framework, and its SDK is updated frequently with new features, bug fixes, and improvements. However, sometimes developers need to work with older versions of Flutter due to various reasons like compatibility issues or project requirements. + +Flutter version manager allows developers to easily switch between different versions of the Flutter SDK on their machine without having to uninstall or manually install each version. It provides a command-line interface (CLI) that enables developers to install, list, and switch between different Flutter SDK versions. + +Flutter version manager also allows developers to easily manage their Flutter channel, which determines the frequency of SDK updates they receive. For example, developers can switch between the stable, beta, or dev channel based on their preferences. + +Using Flutter version manager can help developers ensure that their project works with the desired version of Flutter SDK and minimize the time and effort required to manage multiple Flutter SDK versions. + +Here are some of the links + +- [Flutter Version Manager - Official Website](https://fvm.app/) diff --git a/src/data/roadmaps/frontend/frontend.md b/src/data/roadmaps/frontend/frontend.md index 4ac8194d9..37f0ff26e 100644 --- a/src/data/roadmaps/frontend/frontend.md +++ b/src/data/roadmaps/frontend/frontend.md @@ -12,14 +12,14 @@ dimensions: width: 968 height: 2822.1 sponsor: - url: 'https://bit.ly/3YYcqdt' + url: 'https://info.honeycomb.io/observability-engineering-oreilly-book-2022?utm_medium=paid-sponsorship&utm_source=insight-partners&utm_campaign=plg_insightpartners_paidsponsorship' title: 'Free eBook' - imageUrl: 'https://i.imgur.com/RCbFXOY.png' - description: 'Learn how to find a GraphQL architecture that scales with this free eBook from Apollo' + imageUrl: 'https://i.imgur.com/zS1FMNo.jpg' + description: 'Get this ebook to start your observability journey for quicker debugging & more time to innovate.' event: category: 'SponsorClick' - action: 'Apollo Redirect' - label: 'Frontend / Apollo Link' + action: 'Honeycomb Redirect' + label: 'Frontend / Honeycomb Link' schema: headline: 'Frontend Developer Roadmap' description: 'Learn how to become a Frontend Developer with this interactive step by step guide in 2023. We also have resources and short descriptions attached to the roadmap items so you can get everything you want to learn in one place.' @@ -70,3 +70,4 @@ tags: - 'main-sitemap' - 'role-roadmap' --- + diff --git a/src/data/roadmaps/golang/golang.md b/src/data/roadmaps/golang/golang.md index 5048248b4..581af3fb3 100644 --- a/src/data/roadmaps/golang/golang.md +++ b/src/data/roadmaps/golang/golang.md @@ -16,6 +16,15 @@ schema: imageUrl: 'https://roadmap.sh/roadmaps/golang.png' datePublished: '2023-01-05' dateModified: '2023-01-20' +sponsor: + url: 'https://www.honeycomb.io/blog/how-we-define-sre-work-as-team?utm_medium=paid-sponsorship&utm_source=insight-partners&utm_campaign=plg_insightpartners_paidsponsorship' + title: 'Day in the Life of an SRE' + imageUrl: 'https://i.imgur.com/xANWBZQ.jpg' + description: 'Dive into the world of SRE work to better understand an SRE’s role in driving incident response.' + event: + category: 'SponsorClick' + action: 'Honeycomb Redirect' + label: 'Go / Honeycomb Link' seo: title: 'Learn to become a Go developer' description: 'Community driven, articles, resources, guides, interview questions, quizzes for Go development. Learn to become a modern Go developer by following the steps, skills, resources and guides listed in this roadmap.' @@ -56,3 +65,4 @@ tags: - 'main-sitemap' - 'skill-roadmap' --- + diff --git a/src/data/roadmaps/graphql/graphql.md b/src/data/roadmaps/graphql/graphql.md index 09bf168e2..40f86391e 100644 --- a/src/data/roadmaps/graphql/graphql.md +++ b/src/data/roadmaps/graphql/graphql.md @@ -12,14 +12,14 @@ dimensions: width: 968 height: 1669.8 sponsor: - url: 'https://bit.ly/3YYcqdt' - title: 'Free eBook' - imageUrl: 'https://i.imgur.com/RCbFXOY.png' - description: 'Learn how to find a GraphQL architecture that scales with this free eBook from Apollo' + url: 'https://liblab.com/blog/using-github-graphql-api-with-github-actions?utm_source=roadmap_graphql&utm_medium=edge_stack&utm_campaign=april23' + title: 'Automate your Workflows' + imageUrl: 'https://i.imgur.com/ZmuZUmS.png' + description: 'Harness the power of GitHub Actions & GraphQL API for efficient project automation and management.' event: category: 'SponsorClick' - action: 'Apollo Redirect' - label: 'GraphQL / Apollo Link' + action: 'Liblab Redirect' + label: 'GraphQL / Liblab Link' schema: headline: 'GraphQL Roadmap' description: 'Learn how to use GraphQL with this interactive step by step guide in 2023. We also have resources and short descriptions attached to the roadmap items so you can get everything you want to learn in one place.' @@ -55,3 +55,4 @@ tags: - 'main-sitemap' - 'skill-roadmap' --- + diff --git a/src/data/roadmaps/java/java.md b/src/data/roadmaps/java/java.md index cfa55afd5..a907733f9 100644 --- a/src/data/roadmaps/java/java.md +++ b/src/data/roadmaps/java/java.md @@ -16,6 +16,15 @@ schema: imageUrl: 'https://roadmap.sh/roadmaps/java.png' datePublished: '2023-01-05' dateModified: '2023-01-20' +sponsor: + url: 'https://www.honeycomb.io/resources/platform-engineering-is-the-future-of-ops-thanks?utm_medium=paid-sponsorship&utm_source=insight-partners&utm_campaign=plg_insightpartners_paidsponsorship' + title: 'DevOps vs. Platform Ops' + imageUrl: 'https://i.imgur.com/kI8YCAA.jpg' + description: 'Explore the role of DevOps as platform engineering rises in the software development field.' + event: + category: 'SponsorClick' + action: 'Honeycomb Redirect' + label: 'Java / Honeycomb Link' seo: title: 'Learn to become a modern Java developer' description: 'Community driven, articles, resources, guides, interview questions, quizzes for java development. Learn to become a modern Java developer by following the steps, skills, resources and guides listed in this roadmap.' @@ -56,3 +65,4 @@ tags: - 'main-sitemap' - 'skill-roadmap' --- + diff --git a/src/data/roadmaps/javascript/content/100-javascript-introduction/102-javascript-versions.md b/src/data/roadmaps/javascript/content/100-javascript-introduction/102-javascript-versions.md index 0faddf423..932f8a6e3 100644 --- a/src/data/roadmaps/javascript/content/100-javascript-introduction/102-javascript-versions.md +++ b/src/data/roadmaps/javascript/content/100-javascript-introduction/102-javascript-versions.md @@ -1,6 +1,6 @@ # Javascript Versions -JavaScript was invented by Brendan Eich, and in 1997 and became an ECMA standard. ECMAScript is the official language name. ECMAScript versions include ES1, ES2, ES3, ES5, and ES6 +JavaScript was invented by Brendan Eich, and in 1997 it became an ECMA standard. ECMAScript is the official language name. ECMAScript versions include ES1, ES2, ES3, ES5, and ES6 Visit the following resources to learn more: diff --git a/src/data/roadmaps/javascript/javascript.md b/src/data/roadmaps/javascript/javascript.md index e40eb65fd..010c42e34 100644 --- a/src/data/roadmaps/javascript/javascript.md +++ b/src/data/roadmaps/javascript/javascript.md @@ -11,15 +11,6 @@ hasTopics: true dimensions: width: 968 height: 2438.9 -sponsor: - url: 'https://developer.fermyon.com/spin/javascript-components?utm_source=javascript&utm_medium=banner&utm_campaign=roadmap-sh' - title: 'Serverless JavaScript Apps' - imageUrl: 'https://i.imgur.com/2ONZopb.jpg' - description: 'Go from blinking cursor to deployed serverless JavaScript apps in 66 seconds with Fermyon Cloud' - event: - category: 'SponsorClick' - action: 'Fermyon Redirect' - label: 'JavaScript / Fermyon Link' schema: headline: 'JavaScript Roadmap' description: 'Learn JavaScript with this interactive step by step guide in 2023. We also have resources and short descriptions attached to the roadmap items so you can get everything you want to learn in one place.' diff --git a/src/data/roadmaps/kubernetes/kubernetes.md b/src/data/roadmaps/kubernetes/kubernetes.md index 4a36f42fe..26330530a 100644 --- a/src/data/roadmaps/kubernetes/kubernetes.md +++ b/src/data/roadmaps/kubernetes/kubernetes.md @@ -9,15 +9,6 @@ description: 'Step by step guide to learning Kubernetes in 2023' isNew: true hasTopics: true tnsBannerLink: 'https://thenewstack.io/kubernetes?utm_source=roadmap.sh&utm_medium=Referral&utm_campaign=Alert' -sponsor: - url: 'https://www.getambassador.io/products/edge-stack-api-gateway?utm_source=roadmap-sh&utm_medium=edge-stack-page&utm_campaign=new-account' - title: 'Featured Product' - imageUrl: 'https://i.imgur.com/e5fdI0q.png' - description: 'Get your Kubernetes API Gateway up and running in 5 minutes with Ambassador Edge Stack!' - event: - category: 'SponsorClick' - action: 'Ambassador Redirect' - label: 'Kubernetes / Ambassador Link' dimensions: width: 968 height: 1785.73 diff --git a/src/data/roadmaps/nodejs/nodejs.md b/src/data/roadmaps/nodejs/nodejs.md index ed68ffc9a..f8e45aa79 100644 --- a/src/data/roadmaps/nodejs/nodejs.md +++ b/src/data/roadmaps/nodejs/nodejs.md @@ -12,14 +12,14 @@ dimensions: width: 968 height: 2474.06 sponsor: - url: 'https://bit.ly/3YYcqdt' - title: 'Free eBook' - imageUrl: 'https://i.imgur.com/RCbFXOY.png' - description: 'Learn how to find a GraphQL architecture that scales with this free eBook from Apollo' + url: 'https://www.honeycomb.io/blog/building-platform-team?utm_medium=paid-sponsorship&utm_source=insight-partners&utm_campaign=plg_insightpartners_paidsponsorship' + title: 'How to Lead a Platform Team' + imageUrl: 'https://i.imgur.com/XG7MEWs.jpg' + description: 'Master building & executing a top-performing platform engineering team with this guide.' event: category: 'SponsorClick' - action: 'Apollo Redirect' - label: 'Node.js / Apollo Link' + action: 'Honeycomb Redirect' + label: 'Node.js / Honeycomb Link' schema: headline: 'Node.js Roadmap' description: 'Learn Node.js with this interactive step by step guide in 2023. We also have resources and short descriptions attached to the roadmap items so you can get everything you want to learn in one place.' @@ -91,3 +91,4 @@ tags: - 'main-sitemap' - 'skill-roadmap' --- + diff --git a/src/data/roadmaps/postgresql-dba/postgresql-dba.md b/src/data/roadmaps/postgresql-dba/postgresql-dba.md index 157590b4f..dc7719516 100644 --- a/src/data/roadmaps/postgresql-dba/postgresql-dba.md +++ b/src/data/roadmaps/postgresql-dba/postgresql-dba.md @@ -34,6 +34,15 @@ relatedRoadmaps: sitemap: priority: 1 changefreq: 'monthly' +sponsor: + url: 'https://www.singlestore.com/resources/ebook-oreilly-chapters-sql-for-data-analysis-2021-11/?utm_source=roadmap&utm_medium=referral&utm_campaign=april2023' + title: 'SQL for Data Analysis' + imageUrl: 'https://i.imgur.com/WR9fpRj.png' + description: 'Learn Advanced Techniques for Transforming Data into Insights using SQL with this free eBook.' + event: + category: 'SponsorClick' + action: 'SingleStore Redirect' + label: 'DBA / SingleStore Link' tags: - 'roadmap' - 'main-sitemap' @@ -238,4 +247,4 @@ Get involved to Postgres community and contribute to Postgres; be a useful membe - pgsql-hackers - pgsql-bugs - Reviewing patches -- Writing patches, attending in [Commitfests](https://commitfest.postgresql.org/) +- Writing patches, attending in [Commitfests](https://commitfest.postgresql.org/) \ No newline at end of file diff --git a/src/data/roadmaps/python/python.md b/src/data/roadmaps/python/python.md index 63a6f3058..4d00240c2 100644 --- a/src/data/roadmaps/python/python.md +++ b/src/data/roadmaps/python/python.md @@ -17,14 +17,14 @@ schema: datePublished: '2023-01-05' dateModified: '2023-01-20' sponsor: - url: 'https://developer.fermyon.com/spin/python-components?utm_source=python&utm_medium=banner&utm_campaign=roadmap-sh' - title: 'Serverless Python Apps' - imageUrl: 'https://i.imgur.com/2ONZopb.jpg' - description: 'Go from blinking cursor to deployed serverless Python apps in 66 seconds with Fermyon Cloud.' + url: 'https://www.honeycomb.io/blog/how-we-define-sre-work-as-team?utm_medium=paid-sponsorship&utm_source=insight-partners&utm_campaign=plg_insightpartners_paidsponsorship' + title: 'Day in the Life of an SRE' + imageUrl: 'https://i.imgur.com/xANWBZQ.jpg' + description: 'Dive into the world of SRE work to better understand an SRE’s role in driving incident response.' event: category: 'SponsorClick' - action: 'Fermyon Redirect' - label: 'Python / Fermyon Link' + action: 'Honeycomb Redirect' + label: 'Python / Honeycomb Link' seo: title: 'Learn to become a modern Python developer' description: 'Community driven, articles, resources, guides, interview questions, quizzes for python development. Learn to become a modern Python developer by following the steps, skills, resources and guides listed in this roadmap.' @@ -55,3 +55,4 @@ tags: - 'main-sitemap' - 'skill-roadmap' --- + diff --git a/src/data/roadmaps/qa/qa.md b/src/data/roadmaps/qa/qa.md index a35ebfc3c..c289398fb 100644 --- a/src/data/roadmaps/qa/qa.md +++ b/src/data/roadmaps/qa/qa.md @@ -11,6 +11,15 @@ hasTopics: true dimensions: width: 968 height: 2107.75 +sponsor: + url: 'https://info.honeycomb.io/observability-engineering-oreilly-book-2022?utm_medium=paid-sponsorship&utm_source=insight-partners&utm_campaign=plg_insightpartners_paidsponsorship' + title: 'Free eBook' + imageUrl: 'https://i.imgur.com/zS1FMNo.jpg' + description: 'Get this ebook to start your observability journey for quicker debugging & more time to innovate.' + event: + category: 'SponsorClick' + action: 'Honeycomb Redirect' + label: 'QA / Honeycomb Link' schema: headline: 'QA Engineer Roadmap' description: 'Learn to become a QA Engineer with this interactive step by step guide in 2023. We also have resources and short descriptions attached to the roadmap items so you can get everything you want to learn in one place.' @@ -47,3 +56,4 @@ tags: - 'main-sitemap' - 'role-roadmap' --- + diff --git a/src/data/roadmaps/react/content/102-components/100-class-components.md b/src/data/roadmaps/react/content/102-components/100-class-components.md index dd7f632f6..22991bcf6 100644 --- a/src/data/roadmaps/react/content/102-components/100-class-components.md +++ b/src/data/roadmaps/react/content/102-components/100-class-components.md @@ -6,7 +6,7 @@ Although the class components are supported in React, it is encouraged to write Visit the following resources to learn more: -- [Components and Props](https://reactjs.org/docs/components-and-props.html#function-and-class-components) +- [Components and Props](https://react.dev/learn/thinking-in-react#props-vs-state) - [Is There Any Reason to Still Use React Class Components?](https://medium.com/geekculture/is-there-any-reason-to-still-use-react-class-components-9b6a1e6aa9ef) - [Functional Components vs Class Components in React](https://www.freecodecamp.org/news/functional-components-vs-class-components-in-react) - [Migrate Class Components to Functional Components with Hooks in React](https://www.robinwieruch.de/react-hooks-migration/) diff --git a/src/data/roadmaps/react/react.md b/src/data/roadmaps/react/react.md index 67130db5c..9e21919af 100644 --- a/src/data/roadmaps/react/react.md +++ b/src/data/roadmaps/react/react.md @@ -16,15 +16,6 @@ schema: imageUrl: 'https://roadmap.sh/roadmaps/react.png' datePublished: '2023-01-05' dateModified: '2023-01-20' -sponsor: - url: 'https://bit.ly/3YYcqdt' - title: 'Free eBook' - imageUrl: 'https://i.imgur.com/RCbFXOY.png' - description: 'Learn how to find a GraphQL architecture that scales with this free eBook from Apollo' - event: - category: 'SponsorClick' - action: 'Apollo Redirect' - label: 'React / Apollo Link' seo: title: 'React Developer Roadmap: Learn to become a React developer' description: 'Community driven, articles, resources, guides, interview questions, quizzes for react development. Learn to become a modern React developer by following the steps, skills, resources and guides listed in this roadmap.' diff --git a/src/data/roadmaps/software-design-architecture/software-design-architecture.md b/src/data/roadmaps/software-design-architecture/software-design-architecture.md index 0bec5dc0c..9caa5ad13 100644 --- a/src/data/roadmaps/software-design-architecture/software-design-architecture.md +++ b/src/data/roadmaps/software-design-architecture/software-design-architecture.md @@ -11,15 +11,6 @@ hasTopics: true dimensions: width: 968 height: 1764.66 -sponsor: - url: 'https://bit.ly/3YYcqdt' - title: 'Free eBook' - imageUrl: 'https://i.imgur.com/RCbFXOY.png' - description: 'Learn how to find a GraphQL architecture that scales with this free eBook from Apollo' - event: - category: 'SponsorClick' - action: 'Apollo Redirect' - label: 'Design and Architecture / Apollo Link' schema: headline: 'Software Design and Architecture Roadmap' description: 'Learn Software Design and Architecture with this interactive step by step guide in 2023. We also have resources and short descriptions attached to the roadmap items so you can get everything you want to learn in one place.' diff --git a/src/data/roadmaps/spring-boot/spring-boot.md b/src/data/roadmaps/spring-boot/spring-boot.md index f8b64084d..17021935d 100644 --- a/src/data/roadmaps/spring-boot/spring-boot.md +++ b/src/data/roadmaps/spring-boot/spring-boot.md @@ -11,6 +11,15 @@ isNew: true dimensions: width: 968 height: 1245.52 +sponsor: + url: 'https://www.honeycomb.io/blog/an-engineering-managers-bill-of-rights-and-responsibilities?utm_medium=paid-sponsorship&utm_source=insight-partners&utm_campaign=plg_insightpartners_paidsponsorship' + title: 'Lead High-Impact Teams' + imageUrl: 'https://i.imgur.com/EBscW4C.jpg' + description: 'Learn what it takes to be a manager of a high-performance engineering team.' + event: + category: 'SponsorClick' + action: 'Honeycomb Redirect' + label: 'Spring Boot / Honeycomb Link' schema: headline: 'Spring Boot Roadmap' description: 'Learn Spring Boot with this interactive step by step guide in 2023. We also have resources and short descriptions attached to the roadmap items so you can get everything you want to learn in one place.' @@ -56,3 +65,4 @@ tags: - 'main-sitemap' - 'skill-roadmap' --- + diff --git a/src/data/roadmaps/system-design/system-design.md b/src/data/roadmaps/system-design/system-design.md index 122b6dfd1..5f824f435 100644 --- a/src/data/roadmaps/system-design/system-design.md +++ b/src/data/roadmaps/system-design/system-design.md @@ -11,6 +11,15 @@ hasTopics: true dimensions: width: 968 height: 2848.5 +sponsor: + url: 'https://www.singlestore.com/resources/ebook-oreilly-chapters-sql-for-data-analysis-2021-11/?utm_source=roadmap&utm_medium=referral&utm_campaign=april2023' + title: 'SQL for Data Analysis' + imageUrl: 'https://i.imgur.com/WR9fpRj.png' + description: 'Learn Advanced Techniques for Transforming Data into Insights using SQL with this free eBook.' + event: + category: 'SponsorClick' + action: 'SingleStore Redirect' + label: 'System Design / SingleStore Link' schema: headline: 'System Design Roadmap' description: 'Learn System Design with this interactive step by step guide in 2023. We also have resources and short descriptions attached to the roadmap items so you can get everything you want to learn in one place.' @@ -47,3 +56,4 @@ tags: - 'main-sitemap' - 'skill-roadmap' --- + diff --git a/src/data/roadmaps/typescript/typescript.md b/src/data/roadmaps/typescript/typescript.md index 8408c67dc..2e5a5ae13 100644 --- a/src/data/roadmaps/typescript/typescript.md +++ b/src/data/roadmaps/typescript/typescript.md @@ -11,6 +11,15 @@ isNew: true dimensions: width: 968 height: 1884.38 +sponsor: + url: 'https://liblab.com/blog/writing-files-to-github-with-octokit-and-typescript?utm_source=roadmap_typescript&utm_medium=edge_stack&utm_campaign=april23' + title: 'Automation with Octokit' + imageUrl: 'https://i.imgur.com/ZmuZUmS.png' + description: 'Automate file commits and repo management on GitHub with the Octokit SDK.' + event: + category: 'SponsorClick' + action: 'Liblab Redirect' + label: 'TypeScript / Liblab Link' schema: headline: 'TypeScript Roadmap' description: 'Learn everything about TypeScript with this interactive step by step guide in 2023. We also have resources and short descriptions attached to the roadmap items so you can get everything you want to learn in one place.' @@ -48,3 +57,4 @@ tags: - 'main-sitemap' - 'skill-roadmap' --- + diff --git a/src/layouts/BaseLayout.astro b/src/layouts/BaseLayout.astro index 06fd3adbc..2a03067c9 100644 --- a/src/layouts/BaseLayout.astro +++ b/src/layouts/BaseLayout.astro @@ -97,7 +97,6 @@ const commitUrl = `https://github.com/kamranahmedse/developer-roadmap/commit/${i -