Resolve merge conflcits

pull/3813/head
Kamran Ahmed 2 years ago
commit f71613eec0
  1. 107
      bin/update-sponsors.cjs
  2. 6
      package.json
  3. 2
      public/jsons/roadmaps/kubernetes.json
  4. 13
      src/data/best-practices/api-security/api-security.md
  5. 10
      src/data/best-practices/frontend-performance/frontend-performance.md
  6. 2
      src/data/guides/how-to-setup-a-jump-server.md
  7. 2
      src/data/roadmaps/android/android.md
  8. 2
      src/data/roadmaps/angular/content/100-typescript-basics/103-type-inference.md
  9. 6
      src/data/roadmaps/angular/content/107-routing/103-router-events.md
  10. 1
      src/data/roadmaps/angular/content/107-routing/104-guards.md
  11. 10
      src/data/roadmaps/aspnet-core/aspnet-core.md
  12. 13
      src/data/roadmaps/backend/backend.md
  13. 2
      src/data/roadmaps/blockchain/content/101-blockchain-general-knowledge/107-consensus-protocols.md
  14. 52
      src/data/roadmaps/cyber-security/content/102-networking-knowledge/understand-these/100-man.md
  15. 13
      src/data/roadmaps/devops/devops.md
  16. 12
      src/data/roadmaps/flutter/content/101-setup-development-environment/102-fvm.md
  17. 11
      src/data/roadmaps/frontend/frontend.md
  18. 10
      src/data/roadmaps/golang/golang.md
  19. 13
      src/data/roadmaps/graphql/graphql.md
  20. 10
      src/data/roadmaps/java/java.md
  21. 2
      src/data/roadmaps/javascript/content/100-javascript-introduction/102-javascript-versions.md
  22. 9
      src/data/roadmaps/javascript/javascript.md
  23. 9
      src/data/roadmaps/kubernetes/kubernetes.md
  24. 13
      src/data/roadmaps/nodejs/nodejs.md
  25. 9
      src/data/roadmaps/postgresql-dba/postgresql-dba.md
  26. 13
      src/data/roadmaps/python/python.md
  27. 10
      src/data/roadmaps/qa/qa.md
  28. 2
      src/data/roadmaps/react/content/102-components/100-class-components.md
  29. 9
      src/data/roadmaps/react/react.md
  30. 9
      src/data/roadmaps/software-design-architecture/software-design-architecture.md
  31. 10
      src/data/roadmaps/spring-boot/spring-boot.md
  32. 10
      src/data/roadmaps/system-design/system-design.md
  33. 10
      src/data/roadmaps/typescript/typescript.md
  34. 1
      src/layouts/BaseLayout.astro

@ -13,24 +13,49 @@ if (!apiKey || !sheetId) {
const sheetRange = 'A3:I1001'; const sheetRange = 'A3:I1001';
const sheetUrl = `https://sheets.googleapis.com/v4/spreadsheets/${sheetId}/values/${sheetRange}?key=${apiKey}`; 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, pageUrl,
company, company,
redirectUrl, redirectUrl,
imageUrl, imageUrl,
adTitle, adTitle,
adDescription, 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 const urlPart = pageUrl
.replace('https://roadmap.sh/', '') .replace('https://roadmap.sh/', '')
.replace(/\?.+?$/, ''); .replace(/\?.+?$/, '');
@ -64,40 +89,45 @@ function populatePageAds({
let frontmatterObj = yaml.load(existingFrontmatter); let frontmatterObj = yaml.load(existingFrontmatter);
delete frontmatterObj.sponsor; delete frontmatterObj.sponsor;
if (shouldShowAd) { const frontmatterValues = Object.entries(frontmatterObj);
const frontmatterValues = Object.entries(frontmatterObj); const roadmapLabel = frontmatterObj.briefTitle;
const roadmapLabel = frontmatterObj.briefTitle;
// Insert sponsor data at 10 index i.e. after
// Insert sponsor data at 10 index i.e. after // roadmap dimensions in the frontmatter
// roadmap dimensions in the frontmatter frontmatterValues.splice(10, 0, [
frontmatterValues.splice(10, 0, [ 'sponsor',
'sponsor', {
{ url: redirectUrl,
url: redirectUrl, title: adTitle,
title: adTitle, imageUrl,
imageUrl, description: adDescription,
description: adDescription, event: {
event: { category: 'SponsorClick',
category: 'SponsorClick', action: `${company} Redirect`,
action: `${company} Redirect`, label: `${roadmapLabel} / ${company} Link`,
label: `${roadmapLabel} / ${company} Link`,
},
}, },
]); },
]);
frontmatterObj = Object.fromEntries(frontmatterValues); frontmatterObj = Object.fromEntries(frontmatterValues);
}
const newFrontmatter = yaml.dump(frontmatterObj, { const newFrontmatter = yaml.dump(frontmatterObj, {
lineWidth: 10000, lineWidth: 10000,
forceQuotes: true, forceQuotes: true,
quotingType: '"', quotingType: "'",
}); });
const newContent = `---\n${newFrontmatter}---\n\n${contentWithoutFrontmatter}`; const newContent = `---\n${newFrontmatter}---\n\n${contentWithoutFrontmatter}`;
fs.writeFileSync(pageFilePath, newContent, 'utf8'); 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) fetch(sheetUrl)
.then((res) => res.json()) .then((res) => res.json())
.then((rawData) => { .then((rawData) => {
@ -117,7 +147,16 @@ fetch(sheetUrl)
isActive, isActive,
] = row; ] = 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, pageUrl,
company, company,
redirectUrl, redirectUrl,

@ -23,16 +23,16 @@
"@astrojs/preact": "^2.1.0", "@astrojs/preact": "^2.1.0",
"@astrojs/sitemap": "^1.2.1", "@astrojs/sitemap": "^1.2.1",
"@astrojs/tailwind": "^3.1.1", "@astrojs/tailwind": "^3.1.1",
"astro": "^2.1.7", "astro": "^2.1.9",
"astro-compress": "^1.1.35", "astro-compress": "^1.1.35",
"jose": "^4.13.1", "jose": "^4.13.1",
"js-cookie": "^3.0.1", "js-cookie": "^3.0.1",
"node-html-parser": "^6.1.5", "node-html-parser": "^6.1.5",
"npm-check-updates": "^16.8.0",
"preact": "^10.6.5", "preact": "^10.6.5",
"npm-check-updates": "^16.9.0",
"rehype-external-links": "^2.0.1", "rehype-external-links": "^2.0.1",
"roadmap-renderer": "^1.0.4", "roadmap-renderer": "^1.0.4",
"tailwindcss": "^3.2.7" "tailwindcss": "^3.3.1"
}, },
"devDependencies": { "devDependencies": {
"@playwright/test": "^1.32.1", "@playwright/test": "^1.32.1",

File diff suppressed because one or more lines are too long

@ -12,14 +12,14 @@ dimensions:
width: 968 width: 968
height: 1543.39 height: 1543.39
sponsor: sponsor:
url: 'https://www.getambassador.io/products/edge-stack-api-gateway?utm_source=roadmap-sh&utm_medium=edge-stack-page&utm_campaign=new-account' url: 'https://liblab.com/blog/a-big-look-at-security-in-openapi?utm_source=roadmap_apisecruity&utm_medium=edge_stack&utm_campaign=april23'
title: 'Featured Product' title: 'Secure APIs in OpenAPI'
imageUrl: 'https://i.imgur.com/e5fdI0q.png' imageUrl: 'https://i.imgur.com/ZmuZUmS.png'
description: 'Get your Kubernetes API Gateway up and running in 5 minutes with Ambassador Edge Stack!' description: 'Explore OpenAPI security options, industry best practices, and steps to secure your own API.'
event: event:
category: 'SponsorClick' category: 'SponsorClick'
action: 'Ambassador Redirect' action: 'Liblab Redirect'
label: 'API Security / Ambassador Link' label: 'API Security / Liblab Link'
schema: schema:
headline: 'API Security Best Practices' 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.' 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 Best Practices'
- 'API Security Checklist' - 'API Security Checklist'
--- ---

@ -11,6 +11,15 @@ description: 'Detailed list of best practices to improve your frontend performan
dimensions: dimensions:
width: 968 width: 968
height: 1270.89 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: schema:
headline: 'Frontend Performance Best Practices' 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.' 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' - 'frontend checklist'
- 'make performant frontends' - 'make performant frontends'
--- ---

@ -9,7 +9,7 @@ seo:
title: 'Jump Servers: What, Why and How - roadmap.sh' 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.' description: 'Learn what is a Jump Server and how to set it up for SSH access.'
isNew: true isNew: true
type: 'visual' type: 'textual'
date: 2023-03-20 date: 2023-03-20
sitemap: sitemap:
priority: 0.7 priority: 0.7

@ -1,5 +1,4 @@
--- ---
# jsonUrl: "/jsons/roadmaps/android.json"
pdfUrl: '/pdfs/roadmaps/android.pdf' pdfUrl: '/pdfs/roadmaps/android.pdf'
order: 4 order: 4
briefTitle: 'Android' briefTitle: 'Android'
@ -41,7 +40,6 @@ tags:
- 'main-sitemap' - 'main-sitemap'
- 'role-roadmap' - '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. 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). 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).

@ -4,5 +4,5 @@ In TypeScript, several places where `type inference` is used to provide type inf
Visit the following resources to learn more: 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) - [Type Inference video for Beginners](https://www.youtube.com/watch?v=3ui_st7rtfA)

@ -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)

@ -12,3 +12,4 @@ Visit the following resources to learn more:
- [Can Deactivate](https://angular.io/api/router/CanDeactivate) - [Can Deactivate](https://angular.io/api/router/CanDeactivate)
- [Angular Can Load](https://angular.io/api/router/CanLoad) - [Angular Can Load](https://angular.io/api/router/CanLoad)
- [Can Match](https://angular.io/api/router/CanMatch) - [Can Match](https://angular.io/api/router/CanMatch)
- [Resolve](https://angular.io/api/router/Resolve)

@ -11,6 +11,15 @@ hasTopics: true
dimensions: dimensions:
width: 968 width: 968
height: 2773.45 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: schema:
headline: 'ASP.NET Core Developer Roadmap' 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.' 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' - 'main-sitemap'
- 'role-roadmap' - 'role-roadmap'
--- ---

@ -12,14 +12,14 @@ dimensions:
width: 968 width: 968
height: 2840.4 height: 2840.4
sponsor: sponsor:
url: 'https://www.fermyon.com/spin?utm_source=backend&utm_medium=banner&utm_campaign=roadmap-sh' 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: 'Serverless Backend Apps' title: 'Why do I need an SDK?'
imageUrl: 'https://i.imgur.com/2ONZopb.jpg' imageUrl: 'https://i.imgur.com/ZmuZUmS.png'
description: 'Go from blinking cursor to deployed serverless Backend apps in 66 seconds with Fermyon Cloud.' description: 'Enhance API adoption, developer experience, and security by providing SDKs for your APIs.'
event: event:
category: 'SponsorClick' category: 'SponsorClick'
action: 'Fermyon Redirect' action: 'Liblab Redirect'
label: 'Backend / Fermyon Link' label: 'Backend / Liblab Link'
schema: schema:
headline: 'Backend Developer Roadmap' 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.' 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' - 'main-sitemap'
- 'role-roadmap' - 'role-roadmap'
--- ---

@ -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: 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/) - [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/) - [What Is a Consensus Mechanism?](https://www.coindesk.com/learn/what-is-a-consensus-mechanism/)

@ -1,50 +1,32 @@
# MAN # 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 ## Advantages of MAN
man ls
```
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 ## Disadvantages of MAN
- **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
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 - **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.
man 4 tty
```
## 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: - **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.
- `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.

@ -12,14 +12,14 @@ dimensions:
width: 968 width: 968
height: 2527.46 height: 2527.46
sponsor: sponsor:
url: 'https://www.getambassador.io/products/edge-stack-api-gateway?utm_source=roadmap-sh&utm_medium=edge-stack-page&utm_campaign=new-account' 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: 'Featured Product' title: 'Why do I need an SDK?'
imageUrl: 'https://i.imgur.com/e5fdI0q.png' imageUrl: 'https://i.imgur.com/ZmuZUmS.png'
description: 'Get your Kubernetes API Gateway up and running in 5 minutes with Ambassador Edge Stack!' description: 'Enhance API adoption, developer experience, and security by providing SDKs for your APIs.'
event: event:
category: 'SponsorClick' category: 'SponsorClick'
action: 'Ambassador Redirect' action: 'Liblab Redirect'
label: 'DevOps / Ambassador Link' label: 'DevOps / Liblab Link'
schema: schema:
headline: 'DevOps Roadmap' 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.' 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' - 'main-sitemap'
- 'role-roadmap' - 'role-roadmap'
--- ---

@ -1 +1,13 @@
# FVM (Flutter Version Manager) # 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/)

@ -12,14 +12,14 @@ dimensions:
width: 968 width: 968
height: 2822.1 height: 2822.1
sponsor: 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' title: 'Free eBook'
imageUrl: 'https://i.imgur.com/RCbFXOY.png' imageUrl: 'https://i.imgur.com/zS1FMNo.jpg'
description: 'Learn how to find a GraphQL architecture that scales with this free eBook from Apollo' description: 'Get this ebook to start your observability journey for quicker debugging & more time to innovate.'
event: event:
category: 'SponsorClick' category: 'SponsorClick'
action: 'Apollo Redirect' action: 'Honeycomb Redirect'
label: 'Frontend / Apollo Link' label: 'Frontend / Honeycomb Link'
schema: schema:
headline: 'Frontend Developer Roadmap' 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.' 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' - 'main-sitemap'
- 'role-roadmap' - 'role-roadmap'
--- ---

@ -16,6 +16,15 @@ schema:
imageUrl: 'https://roadmap.sh/roadmaps/golang.png' imageUrl: 'https://roadmap.sh/roadmaps/golang.png'
datePublished: '2023-01-05' datePublished: '2023-01-05'
dateModified: '2023-01-20' 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: seo:
title: 'Learn to become a Go developer' 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.' 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' - 'main-sitemap'
- 'skill-roadmap' - 'skill-roadmap'
--- ---

@ -12,14 +12,14 @@ dimensions:
width: 968 width: 968
height: 1669.8 height: 1669.8
sponsor: sponsor:
url: 'https://bit.ly/3YYcqdt' url: 'https://liblab.com/blog/using-github-graphql-api-with-github-actions?utm_source=roadmap_graphql&utm_medium=edge_stack&utm_campaign=april23'
title: 'Free eBook' title: 'Automate your Workflows'
imageUrl: 'https://i.imgur.com/RCbFXOY.png' imageUrl: 'https://i.imgur.com/ZmuZUmS.png'
description: 'Learn how to find a GraphQL architecture that scales with this free eBook from Apollo' description: 'Harness the power of GitHub Actions & GraphQL API for efficient project automation and management.'
event: event:
category: 'SponsorClick' category: 'SponsorClick'
action: 'Apollo Redirect' action: 'Liblab Redirect'
label: 'GraphQL / Apollo Link' label: 'GraphQL / Liblab Link'
schema: schema:
headline: 'GraphQL Roadmap' 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.' 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' - 'main-sitemap'
- 'skill-roadmap' - 'skill-roadmap'
--- ---

@ -16,6 +16,15 @@ schema:
imageUrl: 'https://roadmap.sh/roadmaps/java.png' imageUrl: 'https://roadmap.sh/roadmaps/java.png'
datePublished: '2023-01-05' datePublished: '2023-01-05'
dateModified: '2023-01-20' 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: seo:
title: 'Learn to become a modern Java developer' 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.' 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' - 'main-sitemap'
- 'skill-roadmap' - 'skill-roadmap'
--- ---

@ -1,6 +1,6 @@
# Javascript Versions # 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: Visit the following resources to learn more:

@ -11,15 +11,6 @@ hasTopics: true
dimensions: dimensions:
width: 968 width: 968
height: 2438.9 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: schema:
headline: 'JavaScript Roadmap' 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.' 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.'

@ -9,15 +9,6 @@ description: 'Step by step guide to learning Kubernetes in 2023'
isNew: true isNew: true
hasTopics: true hasTopics: true
tnsBannerLink: 'https://thenewstack.io/kubernetes?utm_source=roadmap.sh&utm_medium=Referral&utm_campaign=Alert' 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: dimensions:
width: 968 width: 968
height: 1785.73 height: 1785.73

@ -12,14 +12,14 @@ dimensions:
width: 968 width: 968
height: 2474.06 height: 2474.06
sponsor: sponsor:
url: 'https://bit.ly/3YYcqdt' url: 'https://www.honeycomb.io/blog/building-platform-team?utm_medium=paid-sponsorship&utm_source=insight-partners&utm_campaign=plg_insightpartners_paidsponsorship'
title: 'Free eBook' title: 'How to Lead a Platform Team'
imageUrl: 'https://i.imgur.com/RCbFXOY.png' imageUrl: 'https://i.imgur.com/XG7MEWs.jpg'
description: 'Learn how to find a GraphQL architecture that scales with this free eBook from Apollo' description: 'Master building & executing a top-performing platform engineering team with this guide.'
event: event:
category: 'SponsorClick' category: 'SponsorClick'
action: 'Apollo Redirect' action: 'Honeycomb Redirect'
label: 'Node.js / Apollo Link' label: 'Node.js / Honeycomb Link'
schema: schema:
headline: 'Node.js Roadmap' 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.' 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' - 'main-sitemap'
- 'skill-roadmap' - 'skill-roadmap'
--- ---

@ -34,6 +34,15 @@ relatedRoadmaps:
sitemap: sitemap:
priority: 1 priority: 1
changefreq: 'monthly' 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: tags:
- 'roadmap' - 'roadmap'
- 'main-sitemap' - 'main-sitemap'

@ -17,14 +17,14 @@ schema:
datePublished: '2023-01-05' datePublished: '2023-01-05'
dateModified: '2023-01-20' dateModified: '2023-01-20'
sponsor: sponsor:
url: 'https://developer.fermyon.com/spin/python-components?utm_source=python&utm_medium=banner&utm_campaign=roadmap-sh' 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: 'Serverless Python Apps' title: 'Day in the Life of an SRE'
imageUrl: 'https://i.imgur.com/2ONZopb.jpg' imageUrl: 'https://i.imgur.com/xANWBZQ.jpg'
description: 'Go from blinking cursor to deployed serverless Python apps in 66 seconds with Fermyon Cloud.' description: 'Dive into the world of SRE work to better understand an SRE’s role in driving incident response.'
event: event:
category: 'SponsorClick' category: 'SponsorClick'
action: 'Fermyon Redirect' action: 'Honeycomb Redirect'
label: 'Python / Fermyon Link' label: 'Python / Honeycomb Link'
seo: seo:
title: 'Learn to become a modern Python developer' 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.' 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' - 'main-sitemap'
- 'skill-roadmap' - 'skill-roadmap'
--- ---

@ -11,6 +11,15 @@ hasTopics: true
dimensions: dimensions:
width: 968 width: 968
height: 2107.75 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: schema:
headline: 'QA Engineer Roadmap' 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.' 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' - 'main-sitemap'
- 'role-roadmap' - 'role-roadmap'
--- ---

@ -6,7 +6,7 @@ Although the class components are supported in React, it is encouraged to write
Visit the following resources to learn more: 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) - [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) - [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/) - [Migrate Class Components to Functional Components with Hooks in React](https://www.robinwieruch.de/react-hooks-migration/)

@ -16,15 +16,6 @@ schema:
imageUrl: 'https://roadmap.sh/roadmaps/react.png' imageUrl: 'https://roadmap.sh/roadmaps/react.png'
datePublished: '2023-01-05' datePublished: '2023-01-05'
dateModified: '2023-01-20' 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: seo:
title: 'React Developer Roadmap: Learn to become a React developer' 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.' 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.'

@ -11,15 +11,6 @@ hasTopics: true
dimensions: dimensions:
width: 968 width: 968
height: 1764.66 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: schema:
headline: 'Software Design and Architecture Roadmap' 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.' 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.'

@ -11,6 +11,15 @@ isNew: true
dimensions: dimensions:
width: 968 width: 968
height: 1245.52 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: schema:
headline: 'Spring Boot Roadmap' 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.' 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' - 'main-sitemap'
- 'skill-roadmap' - 'skill-roadmap'
--- ---

@ -11,6 +11,15 @@ hasTopics: true
dimensions: dimensions:
width: 968 width: 968
height: 2848.5 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: schema:
headline: 'System Design Roadmap' 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.' 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' - 'main-sitemap'
- 'skill-roadmap' - 'skill-roadmap'
--- ---

@ -11,6 +11,15 @@ isNew: true
dimensions: dimensions:
width: 968 width: 968
height: 1884.38 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: schema:
headline: 'TypeScript Roadmap' 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.' 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' - 'main-sitemap'
- 'skill-roadmap' - 'skill-roadmap'
--- ---

@ -97,7 +97,6 @@ const commitUrl = `https://github.com/kamranahmedse/developer-roadmap/commit/${i
</head> </head>
<body> <body>
<slot name='page-header'> <slot name='page-header'>
<YouTubeBanner />
<Navigation /> <Navigation />
</slot> </slot>

Loading…
Cancel
Save