From 1bdc3ebd142537eb4a621e74a4c163b15ad026ab Mon Sep 17 00:00:00 2001 From: qrav <32140063+Qraven@users.noreply.github.com> Date: Fri, 28 Jan 2022 11:25:30 +0100 Subject: [PATCH 01/37] Update 102-java.md (#1071) --- .../content/103-learn-a-language/102-java.md | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/content/roadmaps/101-backend/content/103-learn-a-language/102-java.md b/content/roadmaps/101-backend/content/103-learn-a-language/102-java.md index 526e9b119..ab4f8f785 100644 --- a/content/roadmaps/101-backend/content/103-learn-a-language/102-java.md +++ b/content/roadmaps/101-backend/content/103-learn-a-language/102-java.md @@ -1 +1,10 @@ -# Java \ No newline at end of file +# Java + +Java is general-purpose language, primarily used for Internet-based applications. +It was created in 1995 by James Gosling at Sun Microsystems and is one of the most popular options for backend developers. + +Free Content +Java Website +Codeacademy - Free Course +W3 Schools Tutorials +Java Crash Course From 684d3d9c4afabd6cbf1876271165dd4d8a1bdce7 Mon Sep 17 00:00:00 2001 From: Paul Marsicovetere <71470776+paulmarsicloud@users.noreply.github.com> Date: Fri, 28 Jan 2022 05:26:19 -0500 Subject: [PATCH 02/37] Update readme.md (#1070) --- .../101-backend/content/107-nosql-databases/readme.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/content/roadmaps/101-backend/content/107-nosql-databases/readme.md b/content/roadmaps/101-backend/content/107-nosql-databases/readme.md index 827dc6040..02ad6fd9b 100644 --- a/content/roadmaps/101-backend/content/107-nosql-databases/readme.md +++ b/content/roadmaps/101-backend/content/107-nosql-databases/readme.md @@ -1 +1,9 @@ -# Nosql databases \ No newline at end of file +# NoSQL databases + +NoSQL databases offer data storage and retrieval that is modelled differently to "traditional" relational databases. NoSQL databases typically focus more on horizontal scaling, eventual consistency, speed and flexibility and is used commonly for big data and real-time streaming applications. +NoSQL is often described as a BASE system (**B**asically **A**vailable, **S**oft state, **E**ventual consistency) as opposed to SQL/relational which typically focus on ACID (Atomicity, Consistency, Isolation, Durability). Common NoSQL data structures include key-value pair, wide column, graph and document. + +Free Content +NoSQL Explained +How do NoSQL Databases work +SQL vs NoSQL Explained From bb0788e3576ab8dad4a0868f60c47bdab8f0621a Mon Sep 17 00:00:00 2001 From: qrav <32140063+Qraven@users.noreply.github.com> Date: Fri, 28 Jan 2022 11:41:40 +0100 Subject: [PATCH 03/37] Update-100-md5.md (#1072) * Update-100-md5.md * Minor typo change * Update content/roadmaps/101-backend/content/111-web-security-knowledge/100-md5.md Co-authored-by: Kamran Ahmed --- .../content/111-web-security-knowledge/100-md5.md | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/content/roadmaps/101-backend/content/111-web-security-knowledge/100-md5.md b/content/roadmaps/101-backend/content/111-web-security-knowledge/100-md5.md index 30a6ef237..0cce1f539 100644 --- a/content/roadmaps/101-backend/content/111-web-security-knowledge/100-md5.md +++ b/content/roadmaps/101-backend/content/111-web-security-knowledge/100-md5.md @@ -1 +1,8 @@ -# Md5 \ No newline at end of file +# MD5 + +MD5 (Message-Digest Algorithm 5) is a hash function that is currently advised not to be used due to it's extensive vulnerabilities. It is still used as a checksum to verify data integrity. + +Free Content +Wikipedia - MD5 +What is MD5? +Why is MD5 not safe? From b26dbc2a62882159d0dcd49aa28076c284e992a5 Mon Sep 17 00:00:00 2001 From: Paul Marsicovetere <71470776+paulmarsicloud@users.noreply.github.com> Date: Fri, 28 Jan 2022 16:08:48 -0500 Subject: [PATCH 04/37] Update 103-mssql.md (#1069) --- .../content/106-relational-databases/103-mssql.md | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/content/roadmaps/101-backend/content/106-relational-databases/103-mssql.md b/content/roadmaps/101-backend/content/106-relational-databases/103-mssql.md index 036266741..a983174f4 100644 --- a/content/roadmaps/101-backend/content/106-relational-databases/103-mssql.md +++ b/content/roadmaps/101-backend/content/106-relational-databases/103-mssql.md @@ -1 +1,8 @@ -# Mssql \ No newline at end of file +# MS SQL + +MS SQL (or Microsoft SQL Server) is the Microsoft developed relational database management system (RDBMS). MS SQL uses the T-SQL (Transact-SQL) query language to interact with the relational databases. There are many different versions and editions available of MS SQL + +Free Content +MS SQL website +Tutorials for SQL Server +SQL Server tutorial for beginners From 883c28cf399fcd394eb887cc26a7021a6d8d9108 Mon Sep 17 00:00:00 2001 From: Paul Marsicovetere <71470776+paulmarsicloud@users.noreply.github.com> Date: Fri, 28 Jan 2022 16:09:23 -0500 Subject: [PATCH 05/37] Add MySQL Resources --- .../content/106-relational-databases/101-mysql.md | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/content/roadmaps/101-backend/content/106-relational-databases/101-mysql.md b/content/roadmaps/101-backend/content/106-relational-databases/101-mysql.md index 39b7062b3..51a250472 100644 --- a/content/roadmaps/101-backend/content/106-relational-databases/101-mysql.md +++ b/content/roadmaps/101-backend/content/106-relational-databases/101-mysql.md @@ -1 +1,8 @@ -# Mysql \ No newline at end of file +# MySQL + +MySQL is an incredibly popular open source relational database management system (RDBMS). MySQL can be used as a stand-alone client or in conjunction with other services to provide database connectivity. The **M** in LAMP stack stands for MySQL; that alone should provide an idea of its prevalence. + +Free Content +MySQL website +W3Schools - MySQL tutorial +MySQL tutorial for beginners From a5093ef4e0ef7b914d6e4a9470f4aae6386cff63 Mon Sep 17 00:00:00 2001 From: Paul Marsicovetere <71470776+paulmarsicloud@users.noreply.github.com> Date: Fri, 28 Jan 2022 16:09:45 -0500 Subject: [PATCH 06/37] Add Ruby resources --- .../101-backend/content/103-learn-a-language/107-ruby.md | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/content/roadmaps/101-backend/content/103-learn-a-language/107-ruby.md b/content/roadmaps/101-backend/content/103-learn-a-language/107-ruby.md index cf37b2083..651bc592e 100644 --- a/content/roadmaps/101-backend/content/103-learn-a-language/107-ruby.md +++ b/content/roadmaps/101-backend/content/103-learn-a-language/107-ruby.md @@ -1 +1,8 @@ -# Ruby \ No newline at end of file +# Ruby + +Ruby is a high-level, interpreted programming language that blends Perl, Smalltalk, Eiffel, Ada, and Lisp. Ruby focuses on simplicity and productivity along with a syntax that reads and writes naturally. Ruby supports procedural, object-oriented and functional programming and is dynamically typed. + +Free Content +Ruby Website +Learn Ruby in 20 minutes +Learn Ruby | Codecademy From b8c8dfcab1341a5902369d4555c2a97c9aedea1e Mon Sep 17 00:00:00 2001 From: Paul Marsicovetere <71470776+paulmarsicloud@users.noreply.github.com> Date: Fri, 28 Jan 2022 16:10:07 -0500 Subject: [PATCH 07/37] Update 100-go.md (#1066) --- .../roadmaps/101-backend/content/103-learn-a-language/100-go.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/content/roadmaps/101-backend/content/103-learn-a-language/100-go.md b/content/roadmaps/101-backend/content/103-learn-a-language/100-go.md index 2f0bb1e2d..abfa64445 100644 --- a/content/roadmaps/101-backend/content/103-learn-a-language/100-go.md +++ b/content/roadmaps/101-backend/content/103-learn-a-language/100-go.md @@ -6,3 +6,5 @@ Go is an open source programming language supported by Google. Go can be used to A Tour of Go – Go Basics Go Reference Documentation Go by Example - annotated example programs +Learn Go | Codecademy +W3Schools Go Tutorial From 50f078a8846f0b4d188e24517c293ec054b9fa29 Mon Sep 17 00:00:00 2001 From: Kyle Zamora <58868153+kjzamora@users.noreply.github.com> Date: Fri, 28 Jan 2022 16:13:45 -0500 Subject: [PATCH 08/37] Update 113-ci-cd.md (#1064) * Update 113-ci-cd.md * Update 113-ci-cd.md Co-authored-by: Kamran Ahmed --- .vs/slnx.sqlite | Bin 0 -> 163840 bytes .../roadmaps/101-backend/content/113-ci-cd.md | 8 +++++++- 2 files changed, 7 insertions(+), 1 deletion(-) create mode 100644 .vs/slnx.sqlite diff --git a/.vs/slnx.sqlite b/.vs/slnx.sqlite new file mode 100644 index 0000000000000000000000000000000000000000..ee5230ef82c13b6d7c74eb8a8b274e426356b981 GIT binary patch literal 163840 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 literal 0 HcmV?d00001 diff --git a/content/roadmaps/101-backend/content/113-ci-cd.md b/content/roadmaps/101-backend/content/113-ci-cd.md index edee7d737..5248a5956 100644 --- a/content/roadmaps/101-backend/content/113-ci-cd.md +++ b/content/roadmaps/101-backend/content/113-ci-cd.md @@ -1 +1,7 @@ -# Ci cd \ No newline at end of file +# CI/CD + +CI/CD (Continuous Integration/Continuous Deployment) is the practice of automating building, testing, and deployment of applications with the main goal of detecting issues early, and provide quicker releases to the production environment. + +Free Content +DevOps CI/CD Explained in 100 Seconds by Fireship +Automate your Workflows with GitHub Actions From ba211922b21196af5c3caa08676a078ff40cbffe Mon Sep 17 00:00:00 2001 From: Kamran Ahmed Date: Sat, 29 Jan 2022 01:14:06 +0400 Subject: [PATCH 09/37] Delete slnx.sqlite --- .vs/slnx.sqlite | Bin 163840 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 .vs/slnx.sqlite diff --git a/.vs/slnx.sqlite b/.vs/slnx.sqlite deleted file mode 100644 index ee5230ef82c13b6d7c74eb8a8b274e426356b981..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 163840 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 From 11e8cf463008c6b27fa17fb048e9732f210490a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?T=C3=B3th=20Bence?= Date: Fri, 28 Jan 2022 22:17:34 +0100 Subject: [PATCH 10/37] Add ESLint resources * Update 101-eslint.md * Update 101-eslint.md Co-authored-by: Kamran Ahmed --- .../110-build-tools/102-linters-formatters/101-eslint.md | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/content/roadmaps/100-frontend/content/110-build-tools/102-linters-formatters/101-eslint.md b/content/roadmaps/100-frontend/content/110-build-tools/102-linters-formatters/101-eslint.md index b1722fb4e..d86321d1b 100644 --- a/content/roadmaps/100-frontend/content/110-build-tools/102-linters-formatters/101-eslint.md +++ b/content/roadmaps/100-frontend/content/110-build-tools/102-linters-formatters/101-eslint.md @@ -1 +1,8 @@ -# Eslint \ No newline at end of file +# ESLint + +With ESLint you can impose the coding standard using a certain set of standalone rules. + +Free Content +ESLint Official Website +Introduction to ESLint +ESLint Quickstart - find errors automatically From ba889de406f9d5f5fab94dfc60bbda384c7260ec Mon Sep 17 00:00:00 2001 From: Madukoma Blessed Date: Fri, 28 Jan 2022 22:20:19 +0100 Subject: [PATCH 11/37] Add PostgreSQL resources * Update 100-postgresql.md * Update 100-postgresql.md Co-authored-by: Kamran Ahmed --- .../content/106-relational-databases/100-postgresql.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/content/roadmaps/101-backend/content/106-relational-databases/100-postgresql.md b/content/roadmaps/101-backend/content/106-relational-databases/100-postgresql.md index a6798acec..cbafee876 100644 --- a/content/roadmaps/101-backend/content/106-relational-databases/100-postgresql.md +++ b/content/roadmaps/101-backend/content/106-relational-databases/100-postgresql.md @@ -1 +1,9 @@ -# Postgresql \ No newline at end of file +# PostgreSQL + +PostgreSQL, also known as Postgres, is a free and open-source relational database management system emphasizing extensibility and SQL compliance. + +Free Content +Official Website +What is PostgreSQL +Learn PostgreSQL Tutorial - Full Course for Beginners +Postgres tutorial for Beginners From f876d2f60406d2c1623fa814746c0081ebd10ccb Mon Sep 17 00:00:00 2001 From: Paul Marsicovetere <71470776+paulmarsicloud@users.noreply.github.com> Date: Fri, 28 Jan 2022 16:20:59 -0500 Subject: [PATCH 12/37] Add Git resource --- .../104-version-control-systems/100-basic-usage-of-git.md | 1 + 1 file changed, 1 insertion(+) diff --git a/content/roadmaps/101-backend/content/104-version-control-systems/100-basic-usage-of-git.md b/content/roadmaps/101-backend/content/104-version-control-systems/100-basic-usage-of-git.md index dca611bbf..e6ec03032 100644 --- a/content/roadmaps/101-backend/content/104-version-control-systems/100-basic-usage-of-git.md +++ b/content/roadmaps/101-backend/content/104-version-control-systems/100-basic-usage-of-git.md @@ -6,3 +6,4 @@ Version Control System Introduction Git & GitHub Crash Course For Beginners Learn Git in 20 Minutes +Learn Git on the command line From 432c6d5ac34fa9c84d80380bf75325e4d2bcb713 Mon Sep 17 00:00:00 2001 From: Paul Marsicovetere <71470776+paulmarsicloud@users.noreply.github.com> Date: Fri, 28 Jan 2022 16:21:25 -0500 Subject: [PATCH 13/37] Add CSS resource --- content/roadmaps/100-frontend/content/102-css/readme.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/content/roadmaps/100-frontend/content/102-css/readme.md b/content/roadmaps/100-frontend/content/102-css/readme.md index 6cc746a03..57cc064f2 100644 --- a/content/roadmaps/100-frontend/content/102-css/readme.md +++ b/content/roadmaps/100-frontend/content/102-css/readme.md @@ -10,3 +10,5 @@ CSS or Cascading Style Sheets is the language used to style the frontend of any HTML and CSS Tutorial CSS Masterclass - Tutorial & Course for Beginners What The Flexbox! +Learn CSS | Codecademy +Learn Intermediate CSS | Codecademy From 85186c7fe68390ad387e2232fe5767aedb0b972c Mon Sep 17 00:00:00 2001 From: Paul Marsicovetere <71470776+paulmarsicloud@users.noreply.github.com> Date: Fri, 28 Jan 2022 16:21:48 -0500 Subject: [PATCH 14/37] Add HTML resource --- .../roadmaps/101-backend/content/101-basic-frontend/100-html.md | 1 + 1 file changed, 1 insertion(+) diff --git a/content/roadmaps/101-backend/content/101-basic-frontend/100-html.md b/content/roadmaps/101-backend/content/101-basic-frontend/100-html.md index 3d7023ef2..4f2980e2f 100644 --- a/content/roadmaps/101-backend/content/101-basic-frontend/100-html.md +++ b/content/roadmaps/101-backend/content/101-basic-frontend/100-html.md @@ -7,3 +7,4 @@ HTML stands for Hyper Text Markup Language. It is used on the frontend and gives HTML Full Course - Build a Website Tutorial HTML Tutorial for Beginners: HTML Crash Course Codecademy - Learn HTML +Interactive HTML Course From 3dc11ae7268f35d6f128b8b10e8edf448bcd347d Mon Sep 17 00:00:00 2001 From: Paul Marsicovetere <71470776+paulmarsicloud@users.noreply.github.com> Date: Fri, 28 Jan 2022 16:22:05 -0500 Subject: [PATCH 15/37] Update readme.md (#1054) --- content/roadmaps/100-frontend/content/101-html/readme.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/content/roadmaps/100-frontend/content/101-html/readme.md b/content/roadmaps/100-frontend/content/101-html/readme.md index 1d42b1287..4f2980e2f 100644 --- a/content/roadmaps/100-frontend/content/101-html/readme.md +++ b/content/roadmaps/100-frontend/content/101-html/readme.md @@ -6,3 +6,5 @@ HTML stands for Hyper Text Markup Language. It is used on the frontend and gives W3Schools: Learn HTML HTML Full Course - Build a Website Tutorial HTML Tutorial for Beginners: HTML Crash Course +Codecademy - Learn HTML +Interactive HTML Course From c6d35aa63c3650fe4f31457697b21b6e5cbec6b9 Mon Sep 17 00:00:00 2001 From: Paul Marsicovetere <71470776+paulmarsicloud@users.noreply.github.com> Date: Fri, 28 Jan 2022 16:22:28 -0500 Subject: [PATCH 16/37] Update readme.md (#1053) --- content/roadmaps/100-frontend/content/103-javascript/readme.md | 1 + 1 file changed, 1 insertion(+) diff --git a/content/roadmaps/100-frontend/content/103-javascript/readme.md b/content/roadmaps/100-frontend/content/103-javascript/readme.md index f8708aa41..59a321c68 100644 --- a/content/roadmaps/100-frontend/content/103-javascript/readme.md +++ b/content/roadmaps/100-frontend/content/103-javascript/readme.md @@ -7,3 +7,4 @@ JavaScript allows you to add interactivity to your pages. Common examples that y The Modern JavaScript Tutorial JavaScript Crash Course for Beginners Build a Netflix Landing Page Clone with HTML, CSS & JS +Learn the basics of JavaScript From 7c9159b5b4faf7223017dd5faa9efbfe9e9283e6 Mon Sep 17 00:00:00 2001 From: Paul Marsicovetere <71470776+paulmarsicloud@users.noreply.github.com> Date: Fri, 28 Jan 2022 16:22:56 -0500 Subject: [PATCH 17/37] Update 100-npm.md (#1052) --- .../100-frontend/content/107-package-managers/100-npm.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/roadmaps/100-frontend/content/107-package-managers/100-npm.md b/content/roadmaps/100-frontend/content/107-package-managers/100-npm.md index 285673a9e..a658a5280 100644 --- a/content/roadmaps/100-frontend/content/107-package-managers/100-npm.md +++ b/content/roadmaps/100-frontend/content/107-package-managers/100-npm.md @@ -7,4 +7,4 @@ npm is a package manager for the JavaScript programming language maintained by n An Absolute Beginner's Guide to Using npm NPM tutorial for Beginners NPM Crash Course - +How to NPM From 6db1e89628b69d9effc5eaaefdb924d8361cf04e Mon Sep 17 00:00:00 2001 From: Archit Sharma <74408634+iArchitSharma@users.noreply.github.com> Date: Sat, 29 Jan 2022 04:23:12 +0700 Subject: [PATCH 18/37] Resources added for Flow (#1049) --- .../100-frontend/content/116-type-checkers/101-flow.md | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/content/roadmaps/100-frontend/content/116-type-checkers/101-flow.md b/content/roadmaps/100-frontend/content/116-type-checkers/101-flow.md index bff898fa4..f1dc2d67b 100644 --- a/content/roadmaps/100-frontend/content/116-type-checkers/101-flow.md +++ b/content/roadmaps/100-frontend/content/116-type-checkers/101-flow.md @@ -1 +1,8 @@ -# Flow \ No newline at end of file +# Flow + +Flow is a static type checker, designed to find type errors in JavaScript programs. + +Free Resources +Official Website +Official Documentation +Flow for Beginners From a41ee929310d77f58801f1e0f0de112a5df232a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nomar=20G=C3=B3mez=20Cabreja?= <69205208+NomarGomez@users.noreply.github.com> Date: Fri, 28 Jan 2022 17:24:45 -0400 Subject: [PATCH 19/37] Add content to Css modules (#1048) * Add content to Css modules Also I think you guys should change CSS Modules to Alternative Option as is not used much anymore. * Update 101-css-modules.md Co-authored-by: Kamran Ahmed --- .../content/112-modern-css/101-css-modules.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/content/roadmaps/100-frontend/content/112-modern-css/101-css-modules.md b/content/roadmaps/100-frontend/content/112-modern-css/101-css-modules.md index 5451adc82..d46d4d1cd 100644 --- a/content/roadmaps/100-frontend/content/112-modern-css/101-css-modules.md +++ b/content/roadmaps/100-frontend/content/112-modern-css/101-css-modules.md @@ -1 +1,9 @@ -# Css modules \ No newline at end of file +# CSS Modules + +CSS files in which all class names and animation names are scoped locally by default. + +Free Content +Project GitHub Repository +Using CSS Modules In React App +CSS Modules: Why are they great? + From a3b7b45ef3da503c3d3c7d977d7961ed9bda9baf Mon Sep 17 00:00:00 2001 From: LJS <64693316+larsingerlars@users.noreply.github.com> Date: Fri, 28 Jan 2022 23:25:19 +0200 Subject: [PATCH 20/37] Update 107-eleventy.md (#1047) * added resource Not sure if badge text "read" is fitting. 11ty.rocks is more like a resource treasure chest for 11ty starters. --- .../content/120-static-site-generators/107-eleventy.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/content/roadmaps/100-frontend/content/120-static-site-generators/107-eleventy.md b/content/roadmaps/100-frontend/content/120-static-site-generators/107-eleventy.md index 50c465887..fff7df488 100644 --- a/content/roadmaps/100-frontend/content/120-static-site-generators/107-eleventy.md +++ b/content/roadmaps/100-frontend/content/120-static-site-generators/107-eleventy.md @@ -5,3 +5,5 @@ Eleventy (11ty) is a simple to use, easy to customize, highly performant and pow Free Content Official Website Introduction to Eleventy +A collection of 11ty starters, projects, plugins, and resources + From c054a3f56ccdf9a2c4676b7961e5ae242a7385e7 Mon Sep 17 00:00:00 2001 From: Archit Sharma <74408634+iArchitSharma@users.noreply.github.com> Date: Sat, 29 Jan 2022 04:25:55 +0700 Subject: [PATCH 21/37] Resources added for NgRx (#1045) * Resources added for NgRx * Update content/roadmaps/100-frontend/content/111-pick-a-framework/101-angular/101-ngrx.md Co-authored-by: Kamran Ahmed --- .../111-pick-a-framework/101-angular/101-ngrx.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/content/roadmaps/100-frontend/content/111-pick-a-framework/101-angular/101-ngrx.md b/content/roadmaps/100-frontend/content/111-pick-a-framework/101-angular/101-ngrx.md index 30c9ae709..d426fb030 100644 --- a/content/roadmaps/100-frontend/content/111-pick-a-framework/101-angular/101-ngrx.md +++ b/content/roadmaps/100-frontend/content/111-pick-a-framework/101-angular/101-ngrx.md @@ -1 +1,9 @@ -# Ngrx \ No newline at end of file +# NgRx + +NgRx is an open source library that provides reactive state management for your Angular applications + +Free Content + +Official Documentation +Angular NgRx Redux Quick Start Tutorial +NgRx Course From d55b6927b82a7b01a16edcdea5dccb4611ffd791 Mon Sep 17 00:00:00 2001 From: Archit Sharma <74408634+iArchitSharma@users.noreply.github.com> Date: Sat, 29 Jan 2022 04:27:27 +0700 Subject: [PATCH 22/37] Resources added for RxJS (#1044) * Resources added for RxJS * Update content/roadmaps/100-frontend/content/111-pick-a-framework/101-angular/100-rxjs.md Co-authored-by: Kamran Ahmed --- .../111-pick-a-framework/101-angular/100-rxjs.md | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/content/roadmaps/100-frontend/content/111-pick-a-framework/101-angular/100-rxjs.md b/content/roadmaps/100-frontend/content/111-pick-a-framework/101-angular/100-rxjs.md index 58ecfd644..1feb9e390 100644 --- a/content/roadmaps/100-frontend/content/111-pick-a-framework/101-angular/100-rxjs.md +++ b/content/roadmaps/100-frontend/content/111-pick-a-framework/101-angular/100-rxjs.md @@ -1 +1,10 @@ -# Rxjs \ No newline at end of file +# RxJS + +RxJS (Reactive Extensions for JavaScript) is a library for reactive programming using observables that makes it easier to compose asynchronous or callback-based code. + +Free Content + +RxJS Official Website +RxJS Angular Docs +RxJS Quick Start +RxJS Crash Course From 7cb36ca7ff504df0e7d4f623c928d76adb0f9a50 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Anax=C3=ADmeno=20Brito?= Date: Fri, 28 Jan 2022 20:28:02 -0100 Subject: [PATCH 23/37] Update 101-rust.md (#1043) Added content for the Rust programming language. Contents: link to the official online book and the rust by example official web page. --- .../101-backend/content/103-learn-a-language/101-rust.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/content/roadmaps/101-backend/content/103-learn-a-language/101-rust.md b/content/roadmaps/101-backend/content/103-learn-a-language/101-rust.md index 8fc1f9db2..7a5822c98 100644 --- a/content/roadmaps/101-backend/content/103-learn-a-language/101-rust.md +++ b/content/roadmaps/101-backend/content/103-learn-a-language/101-rust.md @@ -1 +1,7 @@ -# Rust \ No newline at end of file +# Rust + +Rust is a modern systems programming language focusing on safety, speed, and concurrency. It accomplishes these goals by being memory safe without using garbage collection. + +Free Content +The Rust Programming Language - online book +Rust by Example - collection of runnable examples From 272d871d474575351b6614dd2b78c93f28937dc6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?T=C3=B3th=20Bence?= Date: Sat, 29 Jan 2022 10:24:31 +0100 Subject: [PATCH 24/37] Fix badge text for ESLint --- .../110-build-tools/102-linters-formatters/101-eslint.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/roadmaps/100-frontend/content/110-build-tools/102-linters-formatters/101-eslint.md b/content/roadmaps/100-frontend/content/110-build-tools/102-linters-formatters/101-eslint.md index d86321d1b..1d6d6a686 100644 --- a/content/roadmaps/100-frontend/content/110-build-tools/102-linters-formatters/101-eslint.md +++ b/content/roadmaps/100-frontend/content/110-build-tools/102-linters-formatters/101-eslint.md @@ -5,4 +5,4 @@ With ESLint you can impose the coding standard using a certain set of standalone Free Content ESLint Official Website Introduction to ESLint -ESLint Quickstart - find errors automatically +ESLint Quickstart - find errors automatically From 45a66feac9de144c9ade1441ef4866aac1d3ac41 Mon Sep 17 00:00:00 2001 From: Surya Vamsi Date: Sat, 29 Jan 2022 18:18:23 +0530 Subject: [PATCH 25/37] Remove redundant link (#1077) The link to the Official Relay Modern website is displayed thrice. --- .../100-frontend/content/119-graphql/101-relay-modern.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/content/roadmaps/100-frontend/content/119-graphql/101-relay-modern.md b/content/roadmaps/100-frontend/content/119-graphql/101-relay-modern.md index 85558f71f..55722ec2e 100644 --- a/content/roadmaps/100-frontend/content/119-graphql/101-relay-modern.md +++ b/content/roadmaps/100-frontend/content/119-graphql/101-relay-modern.md @@ -4,6 +4,4 @@ Relay is a JavaScript client used in the browser to fetch GraphQL data. It's a J Free Content Official Website -Official Website -Official Website Introduction to Relay modern From 24559a32eeecbb16f5bd0ca3f8ea83efd4fc5817 Mon Sep 17 00:00:00 2001 From: Leandro Morais Azevedo <33522617+lerockit@users.noreply.github.com> Date: Sat, 29 Jan 2022 17:26:11 -0300 Subject: [PATCH 26/37] Added Resources for Interprocess Communication (#1082) * Added Resources for Interprocess Communication * Update 106-interprocess-communication.md Co-authored-by: Kamran Ahmed --- .../106-interprocess-communication.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/content/roadmaps/101-backend/content/102-os-general-knowledge/106-interprocess-communication.md b/content/roadmaps/101-backend/content/102-os-general-knowledge/106-interprocess-communication.md index 5f3e76338..145f6e3ff 100644 --- a/content/roadmaps/101-backend/content/102-os-general-knowledge/106-interprocess-communication.md +++ b/content/roadmaps/101-backend/content/102-os-general-knowledge/106-interprocess-communication.md @@ -1 +1,6 @@ -# Interprocess communication \ No newline at end of file +# Interprocess Communication + +Interprocess communication (IPC) refers specifically to the mechanisms an operating system provides to allow the processes to manage shared data + +Interprocess Communication +Interprocess Communication - Neso Academy From c791dbb70c152ba340c665f23ddd1bf911337ba5 Mon Sep 17 00:00:00 2001 From: Archit Sharma <74408634+iArchitSharma@users.noreply.github.com> Date: Sun, 30 Jan 2022 03:26:49 +0700 Subject: [PATCH 27/37] Added Resources for Ionic Framework (#1081) --- .../content/121-mobile-applications/103-ionic.md | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/content/roadmaps/100-frontend/content/121-mobile-applications/103-ionic.md b/content/roadmaps/100-frontend/content/121-mobile-applications/103-ionic.md index 4f4a557cb..5a4ef9e5f 100644 --- a/content/roadmaps/100-frontend/content/121-mobile-applications/103-ionic.md +++ b/content/roadmaps/100-frontend/content/121-mobile-applications/103-ionic.md @@ -1 +1,8 @@ -# Ionic \ No newline at end of file +# Ionic + +Ionic framework is an open-source UI toolkit for building performant, high-quality mobile apps, desktop apps, and progressive web apps using web technologies such as HTML, CSS, and JavaScript. + +Free Content +Official Website +Official Getting Started to Ionic framework +Ionic Framework 4 - Full Tutorial From 82af3e28801cabe7e399581f8f71ef738aee6bde Mon Sep 17 00:00:00 2001 From: Archit Sharma <74408634+iArchitSharma@users.noreply.github.com> Date: Mon, 31 Jan 2022 16:36:10 +0700 Subject: [PATCH 28/37] Resources added for static site generators (#1087) * Resources added for static site generators * Update readme.md Co-authored-by: Kamran Ahmed --- .../content/120-static-site-generators/readme.md | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/content/roadmaps/100-frontend/content/120-static-site-generators/readme.md b/content/roadmaps/100-frontend/content/120-static-site-generators/readme.md index 1c80dedcb..1e5a6dc02 100644 --- a/content/roadmaps/100-frontend/content/120-static-site-generators/readme.md +++ b/content/roadmaps/100-frontend/content/120-static-site-generators/readme.md @@ -1 +1,10 @@ -# Static site generators \ No newline at end of file +# Static Site Generators + +A static site generator is a tool that generates a full static HTML website based on raw data and a set of templates. Essentially, a static site generator automates the task of coding individual HTML pages and gets those pages ready to serve to users ahead of time. Because these HTML pages are pre-built, they can load very quickly in users' browsers. + +Free Content +What is a static site generator? +Next.js SSG +Gatsby SSG +SSG — An 11ty, Vite And JAM Sandwich + From 3b8144aafcbdceeabb5d48542baa46a057c30ffd Mon Sep 17 00:00:00 2001 From: Kamran Ahmed Date: Mon, 31 Jan 2022 19:51:08 +0400 Subject: [PATCH 29/37] Add linked list data structure video --- content/videos.json | 11 +++++++++++ content/videos/linked-list-data-structure.md | 1 + 2 files changed, 12 insertions(+) create mode 100644 content/videos/linked-list-data-structure.md diff --git a/content/videos.json b/content/videos.json index 1f1cafd48..497ebbed4 100644 --- a/content/videos.json +++ b/content/videos.json @@ -1,4 +1,15 @@ [ + { + "id": "linked-list-data-structure", + "title": "Linked List Data Structure", + "description": "Learn everything you need to know about linked list data structure", + "isPro": false, + "youtubeLink": "https://www.youtube.com/watch?v=odW9FU8jPRQ", + "authorUsername": "kamranahmedse", + "duration": "11 minutes", + "updatedAt": "2022-01-31T19:59:14.191Z", + "createdAt": "2022-01-31T19:59:14.191Z" + }, { "id": "array-structure", "title": "All about Array Data Structure", diff --git a/content/videos/linked-list-data-structure.md b/content/videos/linked-list-data-structure.md new file mode 100644 index 000000000..04fd2a6d5 --- /dev/null +++ b/content/videos/linked-list-data-structure.md @@ -0,0 +1 @@ +