Compare commits

...

1454 Commits

Author SHA1 Message Date
Kamran Ahmed
b7ef1b4cd9 Remove outdated resource 2025-08-05 16:15:47 +01:00
Aboody_01
7112987e54 chore: add explanation for design principles (#8988)
* Update design-principles@p96fNXv0Z4rEEXJR9hAYX.md

add design principles description

* Update src/data/roadmaps/software-design-architecture/content/design-principles@p96fNXv0Z4rEEXJR9hAYX.md

* Update src/data/roadmaps/software-design-architecture/content/design-principles@p96fNXv0Z4rEEXJR9hAYX.md

* Update src/data/roadmaps/software-design-architecture/content/design-principles@p96fNXv0Z4rEEXJR9hAYX.md

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2025-08-04 17:41:57 +01:00
FedorT22
b6aa554e1d fix: broken link in mutation (#8990)
Seems like the current link is stale
2025-08-04 16:29:59 +01:00
Chijioke Ugwuanyi
b3a8da98f2 chore: add backend performance resources (#8991) 2025-08-04 16:29:32 +01:00
Ahmad Beigi
9e952fe22b fix: resource typo (#8987) 2025-08-04 19:58:40 +06:00
Fakhry
85ec75eff4 fix: typo cnofig should be config (#8992) 2025-08-04 11:13:43 +02:00
Dmitry
47123f575b fix: rename AccounSidebar to AccountSidebar (#8983) 2025-08-02 09:30:15 +06:00
github-actions[bot]
bd2719749d chore: update roadmap content json (#8984)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2025-08-02 09:28:36 +06:00
Renato Francia Castillo
bc4e29521b Update code example in PHP roadmap (#8973) 2025-08-01 16:34:31 +01:00
Keiler Guardo Herrera
4037e3bb31 fix typo in the github content (#8980) 2025-08-01 16:31:58 +01:00
Arik Chakma
267d2b54f2 fix: migrated team urls (#8982) 2025-08-01 20:43:04 +06:00
github-actions[bot]
d5e75fb39f chore: update roadmap content json (#8914)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2025-07-31 15:36:05 +06:00
Arik Chakma
26f46eb8ce feat: personalized roadmap (#8886)
* wip

* wip

* wip

* wip

* wip

* Roadmap personalization

* Fix personalization not working

* UI changes for personalize modal

* Add upgrade and limits checks

* Update placeholder

* Update picture

* Improve personalize

* Improve personalize popup

* Update image on quote message

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2025-07-30 13:17:53 +01:00
Kamran Ahmed
1ec4c94680 Remove invalid link 2025-07-29 16:38:49 +01:00
Kamran Ahmed
53be600df4 Improve AI Tutor landing page, and Sidebar (#8969)
* Add tree to AI tutor sidebar

* Update featured card design

* Featured card changes

* Improve feature cards

* Active item bug in ai tutor sidebar

* Add demo button on premium page
2025-07-28 21:34:09 +01:00
Kamran Ahmed
870a8c409c Add clarity unmasking on AI tutor 2025-07-28 18:47:31 +01:00
Kamran Ahmed
cf078e515f Add linkedin pixel 2025-07-28 17:29:57 +01:00
Miguel David
b32cb60f8e Fix mistake in content (#8951)
ChatGPT is not a language model.
2025-07-28 15:28:09 +01:00
Chethan Kodenkiri
8d81cc6789 fix: label issue on frontend roadmap 2025-07-28 15:27:27 +01:00
Kamran Ahmed
cdf2ce6b11 Remove unused comments 2025-07-28 15:23:22 +01:00
Kamran Ahmed
b739deba99 Move images to img (#8953) 2025-07-25 16:38:36 +01:00
Kamran Ahmed
763dfe4cbd Add new changelog entry 2025-07-23 18:43:47 +01:00
Arik Chakma
798ae0a994 feat: add limits to ai courses and guides (#8900)
* wip

* wip

* wip

* wip

* feat: add show upgrade modal

* chore: show upgrade on generate

* chore: upgrade modal

* Update limits messgaes

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2025-07-23 17:42:21 +01:00
Kamran Ahmed
e426b8bda8 Hide upgrade button for paid users. 2025-07-23 16:50:43 +01:00
Kamran Ahmed
f289a74af8 Update learner count 2025-07-23 15:33:14 +01:00
Kamran Ahmed
b298dbacb0 Add backend even tracking (#8946)
* Add backend even tracking

* Update src/lib/browser.ts

Co-authored-by: Arik Chakma <arikchangma@gmail.com>

---------

Co-authored-by: Arik Chakma <arikchangma@gmail.com>
2025-07-23 15:23:43 +01:00
Kamran Ahmed
32d25b32d1 Add seo tags 2025-07-23 14:30:47 +01:00
Kamran Ahmed
e0fc5c2464 Update JSON ld 2025-07-23 14:08:27 +01:00
Kamran Ahmed
c177a42afe Improve navigation design 2025-07-22 20:46:46 +01:00
Kamran Ahmed
f5bbc55eb7 Add plan switching functionality 2025-07-22 20:25:05 +01:00
Kamran Ahmed
eff2e26fe4 Add purchase button events 2025-07-22 20:01:13 +01:00
Kamran Ahmed
baceeb37cf Add og image for sql 2025-07-22 19:29:23 +01:00
Kamran Ahmed
c9d602f044 Refactor premium page 2025-07-22 19:24:13 +01:00
Kamran Ahmed
642653f281 Add credibility stats 2025-07-22 18:45:53 +01:00
Kamran Ahmed
eb511f7edd Premium page UI 2025-07-22 18:40:23 +01:00
Kamran Ahmed
e17bc250ec Update premium page designgst 2025-07-22 18:19:26 +01:00
Kamran Ahmed
21f2c9384d Add video link for editor 2025-07-22 18:09:08 +01:00
Kamran Ahmed
8adf1866e7 Improve feature cards 2025-07-22 01:35:22 +01:00
Kamran Ahmed
ea27fb9bdd Improve design for cards 2025-07-22 01:13:23 +01:00
Kamran Ahmed
049079690a Update video cards 2025-07-22 01:02:49 +01:00
Kamran Ahmed
124362af1f Premium page UI 2025-07-21 23:38:52 +01:00
Kamran Ahmed
5fb84ea00d Update prompt for the explanation 2025-07-17 16:26:21 +01:00
Arik Chakma
b4b581b1f4 feat: implement quiz ai feedback (#8897)
* wip

* wip

* wip

* wip

* wip

* Add AI summary at the end

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2025-07-16 13:02:02 +01:00
Abhijeet Jha
20506756d6 Fix broken link (#8919) 2025-07-16 12:12:16 +01:00
Kamran Ahmed
aba52447e2 Add label to help us add resources 2025-07-15 20:38:53 +01:00
Kamran Ahmed
822467ab16 Add go roadmap content 2025-07-15 20:29:52 +01:00
Kamran Ahmed
bfb348141c Add go roadmap content 2025-07-15 20:17:16 +01:00
Kamran Ahmed
0bcda11f85 Add golang roadmap content 2025-07-15 17:37:37 +01:00
Kamran Ahmed
290de3c419 Add golang roadmap content 2025-07-15 17:37:04 +01:00
Kamran Ahmed
76a9a62afb Make golang roadmap 2025-07-15 17:33:06 +01:00
Islam Madian
588a2d0061 feat: add http resource (#8909)
Add awsome article about HTTTP
2025-07-14 19:22:18 +06:00
Eryk
79a51a5562 fix: resource formatting (#8908) 2025-07-14 19:20:48 +06:00
github-actions[bot]
02e2aba320 chore: update roadmap content json (#8892)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2025-07-14 19:13:22 +06:00
Kamran Ahmed
911f34cba4 Refactor and add upgrade button on dashboard 2025-07-14 13:58:57 +01:00
Kamran Ahmed
fe1a869a66 Replace software design 2025-07-14 12:51:30 +01:00
Kamran Ahmed
76dd708f1f Add terms and conditions link 2025-07-11 16:20:44 +01:00
Arik Chakma
bc71395f64 feat: limit roadmap creation (#8889)
* feat: limit roadmap creation

* wip

* Remove new from billing

* Add upgrade message on roadmap

* Update upgrade account modal UI

* Make profile noindex if no roadmaps

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2025-07-11 16:10:55 +01:00
Kamran Ahmed
9accbd7067 Update placeholder 2025-07-10 12:03:06 +01:00
Arik Chakma
2b05f72a80 fix: ai quizzes skipping (#8895)
* wip

* wip

* wip
2025-07-09 17:34:58 +01:00
Arik Chakma
ef48708a94 feat: show limit in account sidebar (#8891)
* feat: show limit in account sidebar

* Add sidebar message

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2025-07-09 12:43:05 +01:00
Kamran Ahmed
9a39de1fad Rename MCQ to multi-choice 2025-07-09 12:32:23 +01:00
Arik Chakma
229c552255 feat: implement ai quiz (#8874)
* wip

* wip

* wip: questions parser

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* fix: open ended question

* fix: responsiveness

* wip

* feat: implement ai quizzes listing

* wip

* wip

* Update tutor sidebar

* fix: wait for to finish quiz

* Update MCQs design

* Refactor quiz navigation

* Improve navigation design

* Improve UI for the explanation

* Improve multi-choice questions

* Improve results UI

* Improve results UI

* Improve results UI

* Refactor circular progress

* Let user retry skipped answers

* Improve quiz UI

* Show progress when streaming

* Update quiz UI

* Add ai quiz generator in top navigation

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2025-07-09 11:52:41 +01:00
Akasaru074
de0181681c fix: update community version
CLion has free community version now
2025-07-08 20:19:39 +06:00
github-actions[bot]
91c34ec5ea chore: update roadmap content json (#8888)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2025-07-08 20:18:23 +06:00
Kamran Ahmed
b46f01d590 Fix brief content in design system 2025-07-07 16:16:56 +01:00
Kamran Ahmed
882b01a165 Fix long names of topic ai 2025-07-07 15:52:41 +01:00
Kamran Ahmed
7e4cce86a6 Add missing content for design system 2025-07-07 15:45:04 +01:00
Kamran Ahmed
d300e97a04 Add system design 2025-07-07 15:19:35 +01:00
Kamran Ahmed
51b960420b Migrate design system roadmap 2025-07-07 13:54:21 +01:00
Kamran Ahmed
06aa93a46d Remove subscribe from best practices 2025-07-04 13:19:06 +01:00
Kamran Ahmed
c45c872de6 Fix duplicate download buttons 2025-07-04 13:17:06 +01:00
Kamran Ahmed
2142409fb4 Add roadmap chat in top nav 2025-07-04 01:33:13 +01:00
Kamran Ahmed
7c9cd39002 Add chat with roadmap page 2025-07-03 15:34:04 +01:00
github-actions[bot]
5b16390245 chore: update roadmap content json (#8877)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2025-07-03 14:08:32 +06:00
github-actions[bot]
73a3b00b0f chore: update roadmap content json (#8869)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2025-07-02 20:26:59 +06:00
Vedansh
8e7abe933a refactor(mongodb): cleanup roadmap content (#8866)
* audit first 58 topics

* audit next 20 topics

* audit next 32 topics
2025-07-02 11:03:51 +01:00
Kamran Ahmed
aabaaec699 Banner should be visible on top 2025-07-01 16:57:15 +01:00
Kamran Ahmed
d02248e0b4 Update course landing page banner 2025-07-01 13:55:01 +01:00
Kamran Ahmed
a54e2add53 Add a/b test (#8868) 2025-07-01 13:32:49 +01:00
github-actions[bot]
fec7be3d6d chore: update roadmap content json (#8867)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2025-07-01 12:08:31 +01:00
Jawher Kl
1e880bbba9 Create advanced-topics@t8SJbGVXsUDECxePLDk_w.md (#8865)
* Create advanced-topics@t8SJbGVXsUDECxePLDk_w.md

* Update advanced-topics@t8SJbGVXsUDECxePLDk_w.md
2025-07-01 12:05:57 +01:00
Arik Chakma
19b480402c feat: course landing page redesign (#8864)
* Add alt course page

* wip

* wi

* wip

* wip

* wip

* wip

* wip

* feat: review carousel

* wip: update meet instructor ui

* wip

* wip

* wip

* wip

* wip

* Improve upper banner from course page

* Improve upper banner from course page

* Fix height issue of image

* Improve testimonial design

* Improve review carousel

* Update

* Improve meet your instructor

* Improve overall page design

* Reuse lessons list

* Improve variant page

* Responsive banner

* Purchase banner

* Add new page

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2025-07-01 12:05:23 +01:00
Kamran Ahmed
50c4d41fde Add missing guide file 2025-06-30 16:31:52 +01:00
Kamran Ahmed
9927fd1b3e Fix broken build 2025-06-30 16:25:25 +01:00
Kamran Ahmed
5b66040031 Fix remove dead gradle link 2025-06-30 16:22:13 +01:00
Anish Kumar Neupane
ab7488092a fix: update c# site to resolve missing images (#8827) 2025-06-30 16:14:08 +01:00
github-actions[bot]
14425bb18a chore: update roadmap content json (#8829)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2025-06-30 16:13:48 +01:00
Vedansh
90ccd44e22 seo: cleanup and optimize roadmap(s) metadata (#8828)
* audit first 11 roadmaps

* audit next 10 roadmaps

* audit next 15 roadmaps

* audit last 22 roadmaps

* Update src/data/roadmaps/ai-data-scientist/ai-data-scientist.md

* Update src/data/roadmaps/aspnet-core/aspnet-core.md

* apply suggestions from code review

* fix seo title

* Update src/data/roadmaps/frontend/frontend.md

* Update src/data/roadmaps/backend/backend.md

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2025-06-30 16:11:20 +01:00
isaacjones99
eba754f40a Fix grammatical mistake (#8831)
Remove the word "to" in a sentence that was making it not make sense.
2025-06-30 16:07:17 +01:00
AJ
5fc6ac79f7 fix: update qa roadmap article link (#8839) 2025-06-30 16:04:49 +01:00
Aman Pal
462ff16ddb Remove redundant close button from LeavingRoadmapWarningModal (#8858)
* Remove redundant close button from `LeavingRoadmapWarningModal`

* Remove close button from `ScheduleEventModal`
2025-06-30 16:04:17 +01:00
Harsha Somaraju
6878af33c1 Remove dead link from resources (#8859)
Removed link to data machines at it is leading to page not found. Page must have been removed
2025-06-30 16:03:58 +01:00
mountdisk
44a415bb9f chore: remove redundant words (#8862)
Signed-off-by: mountdisk <mountdisk@icloud.com>
2025-06-30 16:03:30 +01:00
Kamran Ahmed
2d454348cc Migrate Flutter roadmap 2025-06-30 16:00:16 +01:00
Kamran Ahmed
14bd6bb529 Add flutter roadmap migration 2025-06-30 15:37:41 +01:00
Kamran Ahmed
f7ad6a167a Fix issue in billing 2025-06-29 21:50:09 +01:00
Kamran Ahmed
db287215a8 Add new roadmap entry 2025-06-27 17:12:24 +01:00
Kamran Ahmed
e1e7b416c3 Add missing content 2025-06-27 16:48:08 +01:00
Kamran Ahmed
9d37525350 Migrate MongoDB roadmap 2025-06-27 16:27:56 +01:00
Kamran Ahmed
a08d4beac0 Add sql vs python guide 2025-06-26 18:09:35 +01:00
Kamran Ahmed
4840828024 Add guide for sql how to learn 2025-06-26 17:53:37 +01:00
Kamran Ahmed
c4079e0099 Add guide is sql hard to learn 2025-06-26 17:34:52 +01:00
Kamran Ahmed
ed412ab0c2 Mobile navigation 2025-06-26 13:08:15 +01:00
Arik Chakma
e6d10ef592 feat: ai roadmaps and chat (#8821)
* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip: ai roadmap

* wip

* wip

* Add question answers

* Update content generator

* Update question answer chat

* Refresh button not working

* UI for chat

* Update question answers functionality

* wip

* wip

* fix: ai roadmap regenerate

* Improve preferences

* feat: roadmap actions

* wip

* fix: hydration error

* Fix responsiveness issue

* fix: show preferences option only when questions exist

* fix: infinite loop issue

* feat: node click message populate

* Improve UI

* wip

* wip

* fix: roadmap regenerate

* Update UI

* Update placeholder

* Update answers

* Update navigations

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2025-06-26 13:00:46 +01:00
Kamran Ahmed
08e8b83262 Progress cleanup for spring boot roadmap 2025-06-24 13:21:19 +01:00
Kamran Ahmed
9d0052b569 Migrate spring-boot roadmap 2025-06-24 13:20:26 +01:00
Kamran Ahmed
ca1932a45e Migrate spring boot roadmap 2025-06-24 12:22:36 +01:00
Kamran Ahmed
816d0edf3e Update resource links and noindex on AI pages 2025-06-24 11:29:35 +01:00
Jawher Kl
5fafd3b544 Fix broken topic link (#8744) 2025-06-24 10:58:47 +01:00
jj
3c81846e6c Fix ai-data-scientist roadmap links (#8750)
* fix ai-data-scientist roadmap links

* Update src/data/roadmaps/ai-data-scientist/content/data-understanding-data-analysis-and-visualization@JaN8YhMeN3whAe2TCXvw9.md

* Update src/data/roadmaps/ai-data-scientist/ai-data-scientist.json

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2025-06-24 10:58:12 +01:00
github-actions[bot]
a290cafa35 chore: update roadmap content json (#8823)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2025-06-24 15:49:43 +06:00
Ed Lan
c892e7178c Add course link on SQL queries questions (#8825) 2025-06-24 10:48:19 +01:00
Karim Safan
fdac509ec8 Add resource for depth first search (#8752)
* Update depth-first-search@NrPO7vF8Z1WzmA9Ca3Y_E.md

* Update src/data/roadmaps/datastructures-and-algorithms/content/depth-first-search@NrPO7vF8Z1WzmA9Ca3Y_E.md

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2025-06-24 01:09:21 +01:00
jonas0b1011001
8d82df7545 Fix reference declaration text (#8754) 2025-06-24 01:08:21 +01:00
Jonatan Mark Bakucz
0eca17ea45 Fix wrong link to workspaces blog entry (#8756) 2025-06-24 01:08:00 +01:00
Martin Kibera
503dc7d6ea Add generics resource (#8758) 2025-06-24 01:07:26 +01:00
Lokendar Singh Rathore
0d3e261bc3 Add heap datastructure content (#8760)
* Update heap@R3Coq0TG1_cSOXzXWgpuI.md

Add datastructures and algorithms content

* Update src/data/roadmaps/datastructures-and-algorithms/content/heap@R3Coq0TG1_cSOXzXWgpuI.md

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2025-06-24 01:06:51 +01:00
Neil Blazevic
c573675446 Add Anthropic MCP resource (#8763) 2025-06-24 01:04:47 +01:00
brumbo
0aacba53b2 Update wadcoms resources (#8764) 2025-06-24 01:04:01 +01:00
Muhammad Nanda Alfian
7b11f31dfa Add learning resource for process signals (#8787)
I propose a free learning resource from linuxjourney.com

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2025-06-24 00:59:32 +01:00
Muhammad Nanda Alfian
7b411e7c34 Update resources for killing resources (#8788)
I add a free resource from linuxjourney.com. Inside the link, it explains the default signal sent by kill command and the it explains the differences among signals option

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2025-06-24 00:57:45 +01:00
Muhammad Nanda Alfian
ae74f50d4a Update process priorities content (#8789)
* Update process-priorities@5anSYRhaKIs3dCLWlvZfT.md

I correct the lost bash code and add some explanations to it and free resouce to learn more from linuxjourney.com

* Update src/data/roadmaps/linux/content/process-priorities@5anSYRhaKIs3dCLWlvZfT.md

* Update process-priorities@5anSYRhaKIs3dCLWlvZfT.md

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2025-06-24 00:56:51 +01:00
Muhammad Nanda Alfian
6a0d8cdae2 Add content to linux node (#8790)
add a free resource from linuxjourney.com

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2025-06-24 00:52:32 +01:00
Ronnie Kaito Imagawa
a8f2c38a2f fix(android): correct migration mapping for recyclerview (#8791) 2025-06-24 00:51:19 +01:00
Adnan Valdes
e712bbdaba Update abstract class link (#8797)
The original link re-directed to some online store that looks rather spammy. This PR changes the link to an article from The Server Side that describes abstract classes without relying on any specific language.
2025-06-24 00:50:34 +01:00
Adnan Valdes
f3b5d845ed Remove resource (#8805)
* Update anemic-models@nVaoI4IDPVEsdtFcjGNRw.md

The existing link times out. It seems like the "https://www.ensonodigital.com" base URL doesn't exist anymore, but the resources can be accessed at "https://www.ensono.com"

* Update src/data/roadmaps/software-design-architecture/content/anemic-models@nVaoI4IDPVEsdtFcjGNRw.md

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2025-06-24 00:48:54 +01:00
Adnan Valdes
fc2512e4f9 Add class variants example (#8806)
Add link to Northeastern University course on Class Invariants.

I think this link provides a good middle ground between the existing but high-level Wikipedia article and the extremely detailed but difficult to parse arXiv paper.
2025-06-24 00:47:09 +01:00
github-actions[bot]
f798ab4876 chore: update roadmap content json (#8809)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2025-06-24 00:46:06 +01:00
Vedansh
c14aa17721 refactor(rust): cleanup roadmap content (#8813)
* audit first 55 topics

* audit next 38 topics

* audit last 32 topics
2025-06-24 00:45:23 +01:00
niz
30c9507945 Fix example (#8814) 2025-06-24 00:44:18 +01:00
shibsankar27
daea67602a Add bluetooth resource (#8817) 2025-06-24 00:43:51 +01:00
AJ
3da9bd51a2 (fix)(typo): update file name (#8818)
update file name in data-analyst roadmap's content
2025-06-24 00:42:11 +01:00
Kamran Ahmed
6c6dccf766 Remove login message 2025-06-24 00:39:03 +01:00
Arik Chakma
3db62c9e4d feat: remove question progress (#8822) 2025-06-24 00:34:32 +01:00
Kamran Ahmed
10eb82805b Progress cleanup for graphql roadmap 2025-06-24 00:22:34 +01:00
Kamran Ahmed
76a9d24845 Improve graphql content 2025-06-24 00:21:21 +01:00
Kamran Ahmed
91eff12b8f Migrate old graphql content 2025-06-24 00:12:06 +01:00
Kamran Ahmed
4038681fb5 Migrate react native roadmap 2025-06-23 13:15:29 +01:00
Emmanuel Ferdman
d0c5e3ba68 Allow mutation of guide template for HTML unescaping (#8816)
Signed-off-by: Emmanuel Ferdman <emmanuelferdman@gmail.com>
2025-06-23 11:07:56 +01:00
Vedansh
bd111db80f refactor(linux): cleanup roadmap content (#8811)
* refactor first 74 topics

* next 37 topics ...

* refactor last 21 files
2025-06-20 11:29:44 +01:00
recca
774d1ee3b1 Remove dead link (#8807) 2025-06-19 22:50:24 +01:00
AJ
fecbde4786 (fix): remove extra close button (#8808)
Modal Wrapper Provides close button.
2025-06-19 22:50:06 +01:00
Kamran Ahmed
79f5f423ab Analytics change 2025-06-19 16:34:59 +01:00
Bryan Wilches
2379ab3640 Fix broken link (#8799)
* Update debugging@rOGnHbGIr3xPCFdpkqoeK.md

Feat: Changing external link, as the previous was not working

* Update src/data/roadmaps/linux/content/debugging@rOGnHbGIr3xPCFdpkqoeK.md

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2025-06-19 11:48:54 +01:00
github-actions[bot]
58d1a790f2 chore: update roadmap content json (#8802)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2025-06-19 10:38:28 +01:00
Arik Chakma
89932bc18d feat: ai document (#8793)
* Refactor AI course

* Add AI course generation functionality

* Add basic error handling

* AI Document content

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* feat: regenerate guide

* wip

* wip

* wip

* wip

* wip

* fix: form ui

* feat: update guide ui

* refactor: update the course card

* fix: term and redirects

* Guide page UI improvements

* Loading chip refactor

* AI guide changes

* Improve UI for ai guide content

* Add AI guide

* AI Guide chat

* fix: stop streaming

* fix: chat responsiveness

* UI improvements for ai library

* Guide listing UI update

* User guides listing

* Library guides listing UI

* Library guides listing UI

* Featured courses listing UI update

* Staff picks UI changes

* Community page UI design

* Explore courses listing functionality

* Improve UI for explore page

* Implement guides functionality

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2025-06-19 02:22:04 +01:00
narashimha05
469f4ca530 Remove broken link of why should you use kubernetes (#8801) 2025-06-19 02:17:36 +01:00
Arik Chakma
7882a91a3d feat(topic): add lifetimes resource (#8800) 2025-06-18 18:47:30 +06:00
github-actions[bot]
0c72a6c36e chore: update roadmap content json (#8795)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2025-06-18 18:35:38 +06:00
Kamran Ahmed
e4183c2f21 Add cookie settings 2025-06-17 23:44:50 +01:00
Kamran Ahmed
bcb75c4a9b Add one trust 2025-06-17 20:06:09 +01:00
VItto Rivabella
30761f17f4 Add learning resources to blockchain roadmap (#8213)
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2025-06-17 19:00:27 +01:00
Kamran Ahmed
4b0e48d9e8 Fix sorting of questions 2025-06-17 18:26:05 +01:00
Kamran Ahmed
0a721514fd Add sql questions guide 2025-06-17 18:21:17 +01:00
Kamran Ahmed
61ae2ce5f3 Add new flag on guide 2025-06-17 16:16:16 +01:00
Kamran Ahmed
302c4381b2 Add new guide for sql queries 2025-06-17 16:15:34 +01:00
Kamran Ahmed
a47e057e48 Add sql-vs-mysql guide 2025-06-17 13:01:38 +01:00
Kamran Ahmed
75ce6942d8 Update rust roadmap content 2025-06-17 03:41:26 +01:00
Kamran Ahmed
8e020a90b7 Redraw rust roadmap 2025-06-17 03:32:31 +01:00
github-actions[bot]
3feaabcf0d chore: update roadmap content json (#8786)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2025-06-17 02:38:33 +06:00
Kamran Ahmed
2d98d34f41 Progress cleanup 2025-06-16 18:32:33 +01:00
Kamran Ahmed
3048800364 Add missing content 2025-06-16 17:41:04 +01:00
Kamran Ahmed
77764abdd5 Migrate software design architecture content 2025-06-16 16:56:13 +01:00
Kamran Ahmed
12294196d9 Add z-index to floating chat 2025-06-16 15:40:12 +01:00
Kamran Ahmed
cedffd7fb0 Fix dead link 2025-06-16 15:33:35 +01:00
Kamran Ahmed
c8b47634ea Update linux roadmap content 2025-06-15 01:36:35 +01:00
Kamran Ahmed
9de76da66f Migrate linux roadmap 2025-06-14 03:10:44 +01:00
Kamran Ahmed
2c5ae2d774 Migrate linux roadmap 2025-06-14 02:07:32 +01:00
Kamran Ahmed
853a26b6f4 Hide coupon banner if user is learning 2025-06-13 18:18:26 +01:00
Arik Chakma
5379aec4b2 fix: ai course progress percentage (#8781) 2025-06-13 11:02:51 +06:00
github-actions[bot]
f417fd4fdc chore: update roadmap content json (#8776)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2025-06-13 10:46:11 +06:00
Ilona Borsos
7f0d8bac58 Add resources to ARP and RARP (#8771)
Added 2 helpful videos explaining ARP and Ethernet to the relevant section
2025-06-13 01:19:57 +01:00
Kamran Ahmed
0f99964bd6 feat: histories in global chat and roadmap chat (#8775)
* feat: ai chat history

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip: skeleton loading

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* fix: chat history

* wip

* wip

* fix: responsiveness

* wip

* wip

* Chat history UI

* Update chat history

* wip

* Update chat history

* Update chat history

* Fix ai chat not working

* Update

* wip

* feat: show chat history always

* feat: upgrade to pro

* wip

* Update history design

* UI design improvement for empty sidebar

* feat: chat history title

* Fix, delete chat throwing error

* Plus icon when chat is closed

* fix: action z-index

* Improve skeleton and logged out user workflow

* Chat history improvements

* Add plus for chat icons

---------

Co-authored-by: Arik Chakma <arikchangma@gmail.com>
2025-06-13 01:19:01 +01:00
xuanzern
7d91696c85 fix: typo in grpc (#8777)
The title is spelt gPRC instead of GRPC
2025-06-12 13:34:42 +01:00
Timofei Pyshnov
4303e09f92 Update static-library@RuXuHQhMt2nywk43LgGeJ.md (#8779)
Removed misleading comments about increased app size when using static libraries.
2025-06-12 13:34:01 +01:00
Kamran Ahmed
0bc124bcd9 Add datacamp resources 2025-06-11 23:38:01 +01:00
Kamran Ahmed
0e66361a0d Add client id from the client side 2025-06-11 13:49:17 +01:00
Kamran Ahmed
02e7373bcd feat: add floating chat on roadmap pages (#8765)
* Add floating chat

* Refactor roadmap ai chat to hook

* Chat inside floating chat

* Fix bulk update not working

* Add floating chat widget

* Add chat header buttons

* Show a default set of questions

* Populate chat questions at bottom

* Handle chat submission

* Add personalize popup

* Fix body scroll locking issue

* Add scroll to bottom functionality

* Fix focus issue on persona form

* Fix responsiveness of the floating chat

* Final implementation

* Height fixes

* Fix floating ui

* Upgrade flow in floating chat

* Upgrade responsive UI

* Authetnicated checks

* Responsive bottom bar
2025-06-10 19:43:06 +01:00
Kamran Ahmed
b1223a90e5 AI Mentor -> AI Tutor 2025-06-09 13:17:44 +01:00
Kamran Ahmed
8c4ae121fe Add get-started chat widget 2025-06-09 12:19:29 +01:00
github-actions[bot]
e4b475cd78 chore: update roadmap content json (#8742)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2025-06-07 20:39:04 +06:00
Kamran Ahmed
fda439f0e9 Add sql coupon code 2025-06-05 19:12:21 +01:00
Arik Chakma
c8ba7578d2 fix: add removed code (#8741) 2025-06-04 22:25:00 +06:00
Kamran Ahmed
f37289ea35 feat: add global AI chat (#8740)
* wip: ai chat window

* wip: chat history

* wip: chat history ui

* wip: chat history ui

* wip: chat history ui

* wip: chat preferences

* wip

* wip: resume upload

* feat: process upload in background

* wip

* wip: common ai sidebar

* feat: clear chat button and scroll to bottom

* wip

* wip: regenerate message

* wip

* wip

* feat: generate course renderer

* fix: thinking card

* wip

* wip

* wip: quick help

* wip: tooltip

* wip: handle guest users

* feat: show ai limits

* Fix typo

* Update UI for upgrade message

* Update UI for upgrade message

* Update AI chat UI

* Update UI for upload resume model

* Update UI for upload resume model

* Update UI for chat history

* Add github cli rule

---------

Co-authored-by: Arik Chakma <arikchangma@gmail.com>
2025-06-04 16:42:34 +01:00
Kamran Ahmed
9910d2b268 Add missing content for python roadmap 2025-06-04 12:37:44 +01:00
Kamran Ahmed
85d9b6a2eb Add python missing content 2025-06-04 12:33:21 +01:00
Samiksha Kute
4dd7b99715 Add resource for Git and GitHub (#8633) 2025-06-04 12:28:15 +01:00
hafeez8826
edb27dddac feat(java): add cryptography video resource
* Update cryptography@_wV2VQq6MIY1rVHjK8pfu.md

* Update src/data/roadmaps/java/content/cryptography@_wV2VQq6MIY1rVHjK8pfu.md

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2025-06-04 12:24:07 +01:00
David Willis-Owen
fb5db127d5 Remove irrelevant course (#8641)
Removing unsuited course
2025-06-04 12:22:28 +01:00
Vedansh
b449afab1d refactor(angular): cleanup roadmap content (#8654)
* refactor first 38 topics

* refractor next 43 topics

* refractor last 67 topics.

* fix formatting

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2025-06-04 12:20:51 +01:00
Saurya Gur
2a0af411dc Added documentation for C++ Function Overloading (#8659)
* Added concise documentation for function-overloading@sgfqb22sdN4VRJYkhAVaf.md, including key concepts, basic examples, parameter count variation, and common pitfalls. This update aligns with the established contribution guidelines for adding content to roadmap topics.

* Update src/data/roadmaps/cpp/content/function-overloading@sgfqb22sdN4VRJYkhAVaf.md

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2025-06-04 12:18:39 +01:00
Allan Duarte Ehlert
0081a3bb57 Added concise documentation for C++ Operator Overloading (#8661)
* Added concise documentation for C++ Operator Overloading

* Update src/data/roadmaps/cpp/content/operator-overloading@llCBeut_uc9IAe2oi4KZ9.md

* Update src/data/roadmaps/cpp/content/operator-overloading@llCBeut_uc9IAe2oi4KZ9.md

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2025-06-04 12:17:25 +01:00
shravan lingampally lingampally
7407ec5fa9 fix(devops): update GitOps resource link
fixed broken link , attached a usefull article on gitops
2025-06-04 12:13:52 +01:00
Abdelrahman Mohamed
64e464582b Add content and resources for AutoFixture in dot-net roadmap (#8696)
* Update autofixture@K49M_7gSpfJuZaE6WaHxQ.md

* Update src/data/roadmaps/aspnet-core/content/autofixture@K49M_7gSpfJuZaE6WaHxQ.md

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2025-06-04 12:12:36 +01:00
Kritika02-git
d102a86fc0 feat(react-native): update beginner course to 2025 version
* Added React Native Course for Beginners in 2025 as a video resource in React Native roadmap which is updated according to changes and more relevant in the current year.

* Update src/data/roadmaps/react-native/content/introduction/index.md

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2025-06-04 12:10:55 +01:00
Suyash Gulati
96094e2ce0 feat(ai-engineer): add video comparing AI, ML, Deep Learning, and GenAI
The resources should include recent video by the same channel with more context around these topics.

We can either have both the video reference or maybe have the recent one.
2025-06-04 12:10:06 +01:00
Kamran Ahmed
8228d62ac8 Remove golangbyexample link 2025-06-04 12:08:06 +01:00
Islam Madian
216945a2e1 feat(backend): add comprehensive DNS guide resource 2025-06-04 12:04:56 +01:00
jj
701c168704 fix: improve Git hook description and fix typo 2025-06-04 12:04:28 +01:00
nndrei
00cd51b941 fix(linux): add missing /opt directory explanation 2025-06-04 11:58:53 +01:00
SinaRezaeiTavirani
299b167808 fix(cpp): improve C++17 standard library descriptions
The definition of any was misleading and wrong
2025-06-04 11:58:17 +01:00
Ronnie Kaito Imagawa
3841e9b8f4 fix(android): correct RecyclerView spelling and improve docs
* fix grammar

* fix 'RecycleView' to be 'RecyclerView'

* rename content file to 'recyclerview' for consistency

* add additional learning resource
2025-06-04 11:49:43 +01:00
artiomleo
7363aaf3d5 fix(ux-design): add missing word in user context description 2025-06-04 11:49:35 +01:00
Blessing
289c2b6233 feat(ux-design): add Figma video tutorial resource
* Enhanced Existing Content

* Enhanced Existing Content
2025-06-04 11:48:10 +01:00
ViktorVoloshko
708416cd21 feat(flutter): add Drift package as SQLite resource 2025-06-04 11:47:03 +01:00
Issachar
870463d61a fix(cyber-security): clarify zero-day vulnerability description
* Update zero-day@v9njgIxZyabJZ5iND3JGc.md

a software security flaw unknown to the vendor and its developers, not exploit developers. Exploit developers maybe already known about it, but they are not part of the development team in charge of the application.

* Update zero-day@zqRaMmqcLfx400kJ-h0LO.md

a software security flaw unknown to the vendor and its developers, not exploit developers. Exploit developers maybe already known about it, but they are not part of the development team in charge of the application.
2025-06-04 11:44:20 +01:00
Ali
62a610c1a6 fix(javascript): remove duplicate comparison operators link
Same article referenced twice!!
2025-06-04 11:40:31 +01:00
Micael Andrade
dd2709dd3f fix(angular): update @else block documentation link
fix link broke
2025-06-04 11:39:41 +01:00
Mohammad Mehran Fallah
ac9092092d feat(python): add Poetry video tutorial resource
Add youtube link for Poetry in python
2025-06-04 11:38:30 +01:00
Adithya V
44ab9aa9d9 fix: correct Mercurial spelling in DevOps roadmap 2025-06-04 11:37:38 +01:00
MTRX
10064da428 feat(cpp): add STL learning resources
Add comprehensive learning resources for C++ STL including video overview and modern C++23 book reference
2025-06-04 11:36:34 +01:00
github-actions[bot]
2a000eb30e chore: update roadmap content json (#8738)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2025-06-04 11:34:31 +01:00
Kamran Ahmed
c4e158bcdf Migrate kubernetes roadmap 2025-06-03 14:01:08 +01:00
Kamran Ahmed
aa155207ed Fix bug in billing screen 2025-06-03 11:41:19 +01:00
github-actions[bot]
2e8379ad7d chore: update roadmap content json (#8736)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2025-06-03 15:59:57 +06:00
Arik Chakma
56dfb5434a feat: ai tutor sidebar (#8720)
* refactor: logout functionality

* feat: add billing and logout in sidebar

* fix: spacing

* feat: user dropdown

* Improve sidebar button ui

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2025-06-02 19:53:42 +01:00
Kamran Ahmed
450cc14a7b Improve AI tutor subject titles 2025-06-02 18:54:44 +01:00
Kamran Ahmed
e7353aff4c Add assets for datastructures and algorithms roadmap 2025-06-02 18:34:08 +01:00
Kamran Ahmed
80e2b94615 Add missing topic files 2025-06-02 18:31:53 +01:00
Kamran Ahmed
f10662e46b Add datastructures and algorithms content 2025-06-02 18:16:13 +01:00
Kamran Ahmed
cf0cc2c34f Update height of datastructure roadmap 2025-06-02 17:57:28 +01:00
Kamran Ahmed
4a1fa3f482 Update datastructures and algorithms roadmap 2025-06-02 17:44:09 +01:00
Kamran Ahmed
8f77d90220 Fix tracking endpoint not called 2025-06-02 16:42:11 +01:00
Kamran Ahmed
803b0a5ecd Update subscription check 2025-06-02 16:38:08 +01:00
Arik Chakma
7384d68998 feat: analytics (#8727) 2025-06-02 15:49:22 +01:00
Kamran Ahmed
67b17ef075 Update billing on upgrade 2025-06-02 15:35:07 +01:00
Kamran Ahmed
ae4f103e80 Fix UI popup 2025-06-02 14:55:57 +01:00
Kamran Ahmed
e1b02ef810 Update rust content 2025-06-02 13:57:50 +01:00
github-actions[bot]
bd53331db7 chore: update roadmap content json (#8728)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2025-06-01 12:48:32 +06:00
Kamran Ahmed
ac4e4bc92b Add migrated content for aws 2025-05-30 18:15:59 +01:00
Kamran Ahmed
da386ba143 Update AWS roadmap 2025-05-30 16:48:24 +01:00
Kamran Ahmed
4cf33125eb AWS roadmap 2025-05-30 16:44:49 +01:00
Kamran Ahmed
e00bd629f5 Add beginner roadmaps to pages 2025-05-30 12:07:02 +01:00
Thomas
7cb5587097 fix: update outdated link to old angular website (#8726)
The link to the official documentation was the old angular website. I changed it so it points to the new website but the same content.
2025-05-30 16:48:42 +06:00
github-actions[bot]
2a1c56fdf3 chore: update roadmap content json (#8725)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2025-05-30 16:47:44 +06:00
Kamran Ahmed
8083120227 Update content for prompt engineering 2025-05-29 22:37:35 +01:00
Kamran Ahmed
6b87218cd5 Fix missing or wrong content 2025-05-29 20:58:52 +01:00
Kamran Ahmed
57ed6e2760 Update content for dockerg 2025-05-29 20:50:16 +01:00
Kamran Ahmed
a102624596 Add prompt engineering to cleanup 2025-05-29 20:14:44 +01:00
Kamran Ahmed
708454f0a8 Add docker missing dirs 2025-05-29 20:13:49 +01:00
Kamran Ahmed
3eaeb7ff9e Add docker roadmap 2025-05-29 20:05:19 +01:00
Kamran Ahmed
19be07817d Add about in user persona 2025-05-28 19:58:33 +01:00
Kamran Ahmed
2e8360a29b Fix spacing 2025-05-28 16:51:00 +01:00
Kamran Ahmed
53f86bb319 Add goal selection 2025-05-28 16:50:16 +01:00
github-actions[bot]
90851f38f3 chore: update roadmap content json (#8718)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2025-05-28 07:43:42 +06:00
Kamran Ahmed
bb9362412e Fix wrong count of topics 2025-05-27 21:39:51 +01:00
Kamran Ahmed
9b54116548 Rearrange roadmap tabs 2025-05-27 21:32:25 +01:00
Kamran Ahmed
7ee47f46b2 Add AI mentor to roadmap 2025-05-27 21:21:12 +01:00
Kamran Ahmed
abae4d3361 Hide roadmap courses tab on mobile 2025-05-27 21:08:59 +01:00
Arik Chakma
62f31a4964 feat: roadmap chat (#8666)
* wip: roadmap chat

* wip

* wip

* wip

* wip

* wip: message rendering

* wip: roadmap topics rendering

* Update UI for premium page

* Update UI for premium page

* wip: topic resources rendering

* Update premium page design

* Update navigation design

* Update design for play iconsg

* Update design for play iconsg

* wip: resource progress

* Update premium page

* Refactor premium page

* wip: resource progress

* feat: enhance the progress rendering

* feat: add abort functionality to chat and update UI elements

* feat: add roadmap recommendations feature and new query for built-in roadmaps

* Grid -> flex

* Update chat

* Handle error screen

* wip

* fix: empty content check

* feat: show loading status

* feat: ai chat limit

* Refactor content parsing

* Handle the wrapping of tag in codeblocks

* Refactor

* Refactor chat

* Fix hydration error

* feat: topic details

* style: adjust padding and icon size in RoadmapAIChat component

* feat: add tab navigation for chat and topic details

* fix: chat and details scrolling issue

* fix: invalidate progress query

* Fix upgrade modal and issue with close button

* Refactor topic detail AI

* Update progress UI

* Shorten the text

* Rewrite frontend roadmap content

* Minor update to content

* Update shrinking issue

* Changes to ai chat

* UI changes for chat card

* UI changes for chat card

* Refactor progress actions list

* Update progress marking UI

* UI Changes

* Responsiveness of sidebar

* Responsiveness of sidebar

* Mobile window for roadmap chat

* Responsiveness of AI chat

* Close button fix

* Make roadmap ai chat header responsive

* Escape key handling to close

* Update topic rendering node

* Make default active tab to AI in topic popup

* User progress component

* Clear chat only visible when there is chat

* wip: user persona

* fix: hide upgrade button

* fix: show chat input for guest users

* feat: persona update

* Roadmap recommendations

* Update persona form

* Update tell us more

* Fix persona form

* Fix scroll issue

* Lock body scroll when mobile is active

* Add intro message

* Refactor and update

* Update UI for AI chat

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2025-05-27 21:02:36 +01:00
Kamran Ahmed
6edf2869f8 Add sql course purchase complete event 2025-05-27 12:20:05 +01:00
github-actions[bot]
a367be60dc chore: update roadmap content json (#8690)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2025-05-26 22:51:52 +06:00
Kamran Ahmed
3429c17074 Add bluconic script 2025-05-26 13:17:01 +01:00
Kamran Ahmed
8e97088f21 Update the hide end key to 14 days 2025-05-26 12:52:59 +01:00
Kamran Ahmed
78e62f9de5 Change color of contribution 2025-05-23 20:40:44 +01:00
Kamran Ahmed
0b463a78e8 Fix title for partner link 2025-05-23 19:38:17 +01:00
Ismail Fateen
bb64dabc75 fix(doc): update resource link type (#8658)
the first link is to an article, not a roadmap
2025-05-21 22:15:39 +06:00
Kamran Ahmed
d1f480d9b9 Update registration count in footer 2025-05-21 12:56:53 +01:00
Kamran Ahmed
4b86af3a70 Update roadmap json endpoint 2025-05-21 12:47:40 +01:00
Kamran Ahmed
a1c564534a If topic has no contentn redirect to ai tutor 2025-05-21 12:31:33 +01:00
Kamran Ahmed
9bbf8ea04b Update roadmap endpoint 2025-05-21 09:50:05 +01:00
Kamran Ahmed
ffe8d4c2f6 Update roadmap endpoint 2025-05-21 02:03:25 +01:00
Kamran Ahmed
c0a52283d4 Update pnpm-lock 2025-05-21 01:50:15 +01:00
Kamran Ahmed
90cee9a223 Update prompt engineering roadmap 2025-05-21 01:41:08 +01:00
Kamran Ahmed
96417de7ed Update prompt engineering content 2025-05-21 01:39:39 +01:00
Kamran Ahmed
28a8f8493b Add prompt engineering roadmap 2025-05-21 01:35:13 +01:00
Kamran Ahmed
971dd8d2bd Update dependencies 2025-05-20 11:36:14 +01:00
Kamran Ahmed
ae7352b8f3 Fix roadmap content json not working 2025-05-20 11:31:20 +01:00
Arik Chakma
5d9a5bd05c chore: update official roadmap endpoint (#8628)
* chore: update official roadmap endpoint

* fix: variable typo

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-05-19 16:31:03 +01:00
Allan Duarte Ehlert
b8c60093a6 Fixed grammar and punctuation (#8660) 2025-05-19 13:03:39 +01:00
Manoj Patra
00467decca fix(elem-match.md): correct $elemMatch usage in example (#8662)
The original example attempts to match multiple 'subject' and 'score' values within a single $elemMatch, which is logically incorrect.

Due to key overwriting, only the last 'subject' and 'score' were matched.

Updated the query to use $and with separate $elemMatch conditions for "Math" and "English" subjects.
2025-05-17 16:14:22 +01:00
Arik Chakma
6e1e334406 feat: add ai tutor gtags (#8656)
* feat: add ai tutor gtags

* fix: price id condition check
2025-05-15 22:53:34 +01:00
Ed Lan
2867e25f2c chore: update devops content (#8648) 2025-05-16 03:29:49 +06:00
Ed Lan
e89b847ddb chore: update devops content (#8649) 2025-05-16 03:29:22 +06:00
Ed Lan
edace11348 chore: update devops content (#8650) 2025-05-16 03:28:26 +06:00
Ed Lan
96fb1b87e2 chore: update devops description (#8646) (#8647) 2025-05-16 03:27:13 +06:00
Ed Lan
bff8915c6e chore: update devops faq (#8646) 2025-05-16 03:26:15 +06:00
Ed Lan
de06961d85 chore(question): update question link (#8651) 2025-05-16 03:25:17 +06:00
Ed Lan
5a38999ec2 chore(guide): update devops vs sre guide (#8652) 2025-05-16 03:24:15 +06:00
Zein Miftah
7c20f9987a feat(doc): add "Learn X in Y minutes" resource (#8630) 2025-05-16 03:22:27 +06:00
Kamran Ahmed
cccc4a7cd9 Add guide data analyst career path 2025-05-15 18:33:03 +01:00
Kamran Ahmed
ad233daea2 Fix javascript questions guide not showing 2025-05-15 17:40:34 +01:00
Kamran Ahmed
64711eb6f9 Add new guide javascript vs typescript 2025-05-15 17:38:06 +01:00
Kamran Ahmed
a74c7fe19a Add javascript questions guide 2025-05-15 13:34:41 +01:00
Kamran Ahmed
c2137397b8 Add data science questions 2025-05-14 20:51:24 +01:00
Kamran Ahmed
a43bbe9768 Related guides link 2025-05-14 18:41:29 +01:00
Kamran Ahmed
c2d635bf89 Add FAQ link for how to become data analyst 2025-05-14 18:38:20 +01:00
Kamran Ahmed
e36d352d13 Update dependencies 2025-05-14 18:09:33 +01:00
github-actions[bot]
f45b337f36 chore: update roadmap content json (#8631)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2025-05-14 13:31:18 +01:00
Kamran Ahmed
025334738a Update URL for thank you on course 2025-05-12 17:08:05 +01:00
Kamran Ahmed
af28049b28 Update URL for thank you on course 2025-05-12 17:06:16 +01:00
Arik Chakma
e7259abd0e feat: add thank you page (#8587)
* feat: thank you page

* Add thank you page

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2025-05-12 16:56:08 +01:00
Karan Kanwar
df09e4e29e improvement: arrange authentication guides in progressive learning order (#8629)
This commit reorganizes the authentication resources to follow a logical learning path from fundamental concepts to more complex implementations.
2025-05-12 16:53:04 +01:00
Bryan Wilches
d38b1d52bf Add apt info (#8621)
As apt is gaining more traction, specially for end users, is better to maintain this command in the summary for Debian Based Distributions
2025-05-12 15:09:53 +01:00
Renan Galvão
eda161232b Fix broken links in PHP roadmap (#8624)
* Update csrf-protection@J9yIXZTtwbFzH2u4dI1ep.md

Fix broken link

* Update inheritance@c5q2e_jyMt8Pir5Od3lRi.md

Fix broken link

* Update polymorphism@gtq5KrghF28f5G8nuDcYQ.md

Fix broken link
2025-05-12 15:07:28 +01:00
Kamran Ahmed
888342ea37 Add changelog entry for ai agents red teaming 2025-05-12 13:33:25 +01:00
Kamran Ahmed
d3d18847ee Add json schema to course 2025-05-09 11:41:29 +01:00
Kamran Ahmed
5f7e8a99b6 Update dependencies 2025-05-09 03:24:01 +01:00
Kamran Ahmed
9230f79cb2 Update dependencies 2025-05-09 02:51:17 +01:00
Kamran Ahmed
bd0bfa562d Add linkedin and blusky in footer 2025-05-09 02:29:49 +01:00
github-actions[bot]
2569c3a965 chore: update roadmap content json (#8609)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2025-05-07 11:44:21 +01:00
The Jared Wilcurt
fe6829311e Update vue composition api content (#8606)
* Update options-api.md

* Update options-api@PPUU3Rb73aCpT4zcyvlJE.md
2025-05-07 00:01:47 +01:00
The Jared Wilcurt
e2e569617d Update content for vue composition api (#8607) 2025-05-06 23:57:36 +01:00
The Jared Wilcurt
599e4528ab Add details for vue styles (#8608) 2025-05-06 23:57:13 +01:00
Faraz Naeem Piracha
d7d3a2a089 replaced broken link 'advantages and disadvantages of AI' (#8517)
* replaced broken link 'advantages and disadvantages of AI'

* Update src/data/roadmaps/ai-engineer/ai-engineer.md

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2025-05-06 19:01:56 +01:00
Silicon27
f2136d2207 Add content for unique_ptr (#8532) 2025-05-06 18:58:07 +01:00
Fynaritra
500bd49a62 Add rust resource (#8533)
* Update what-is-rust.md

Added one article to https://doc.rust-lang.org/stable/rust-by-example/index.html

* Update title
2025-05-06 18:57:26 +01:00
Didier Krux
338e28df1b Add content to blockchain roadmap (#8555)
* Add beginner-friendly free educational resources from Bankless Academy to blockchain roadmap

* Fix formatting issues

* add Ethereum ressources

* Add additional resources for exploring dApps

* Revert "Add beginner-friendly free educational resources from Bankless Academy to blockchain roadmap"

This reverts commit 8a7443a81c.
2025-05-06 18:56:37 +01:00
SoloH3N
1860f32375 Add comptia resources (#8558)
Added link to Prof. Messer's playlist on the latest CompTIA Security+ exam
2025-05-06 18:55:33 +01:00
Cedric Clyburn
0cf801acfd Add ollama setup resource (#8573) 2025-05-06 18:53:48 +01:00
rudong leng
847e9b9edb Add java oop resource (#8574) 2025-05-06 18:53:19 +01:00
Matthew Bill
2cfd645256 Add empathy resource (#8576)
Added resource to a Daniel Goleman video describing different types of empathy and how leaders can use it. Empathy is one of the 4 key parts of emotional intelligence.
2025-05-06 18:52:54 +01:00
Atharva Joshi
8f36beb3bd Add correct link for GraphQL Mutations (#8583) 2025-05-06 18:46:54 +01:00
Kamran Ahmed
6de872d1ea Update UI for Learn another topic 2025-05-06 18:45:22 +01:00
Kamran Ahmed
a7eab6f81f Remove frontend-vs-backend AI 2025-05-06 18:23:18 +01:00
Arik Chakma
b7b96b7d7b feat: create new course (#8605)
* feat: create new course

* seo: update latest roadmap keywords (#8590)

* seo: update roadmap keywords

* Update src/lib/config.ts

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>

* Fix non-logged in user course access

* feat: create new course

* Update UI

---------

Co-authored-by: Vedansh <superuser.ntsystems@outlook.com>
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2025-05-06 18:21:18 +01:00
Kamran Ahmed
30d3a86784 Fix non-logged in user course access 2025-05-06 18:03:06 +01:00
Vedansh
852dce9d6a seo: update latest roadmap keywords (#8590)
* seo: update roadmap keywords

* Update src/lib/config.ts

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2025-05-06 17:56:49 +01:00
Micael Andrade
4401a4c9aa Remove dead link
* Update event-binding@bKnpirSvex4oE4lAjiSSV.md

Update articles links event biding

* Update src/data/roadmaps/angular/content/event-binding@bKnpirSvex4oE4lAjiSSV.md

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2025-05-06 16:50:20 +01:00
Mohammad Mehran Fallah
8973031252 Add resource about OOP (#8597)
* Update oop-basics.md

add - a article for OOP (Introduction)
add - a video for OOP (Simplified)

* Update src/data/roadmaps/datastructures-and-algorithms/content/programming-fundamentals/oop-basics.md

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2025-05-06 12:26:42 +01:00
Sapayth Hossain
a4c221505c remove create-react-app link (#8599)
* fix: update create-react-app to the latest link

Create React App is deprecated. so updated the link with the modern solution.

* Update src/data/roadmaps/react/content/cli-tools@tU4Umtnfu01t9gLlnlK6b.md

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2025-05-06 12:18:15 +01:00
Eugene Haisenka
f3c4468a7b TS roadmap: fix typo in link to any official doc (#8601) 2025-05-06 12:17:14 +01:00
Fuchen Shi
4d0bc30fc6 Fix typo in OSI and TCP/IP Models (#8602) 2025-05-06 12:16:59 +01:00
Arik Chakma
740bdf2aec fix: add a default subject (#8598) 2025-05-06 09:53:30 +01:00
Arik Chakma
6525b1bdee fix: hide the announcement for 3 days (#8595) 2025-05-05 21:22:34 +01:00
github-actions[bot]
afc6f2d5ae chore: update roadmap content json (#8580)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2025-05-05 19:55:57 +06:00
Kamran Ahmed
871d43c295 Fix CSS issues on AI tutor 2025-05-04 13:04:59 +01:00
Arik Chakma
bc32dc780b feat: add ai course creator id (#8592) 2025-05-03 23:14:18 +01:00
Matthew Bill
5685b30c42 Mention book tag (#8588)
added the @book@ tag as per reply on discord from Kamran that this is a valid type.
2025-05-03 13:56:02 +01:00
Arik Chakma
7e3508cdf4 feat: implement ai tutor in topics (#8546)
* wip

* feat: implement ai tutor

* fix: add style

* feat: ai course subjects

* fix: remove tree json

* wip

* Topic chat

* Refactor topic popup

* Improve UI for navigation

* Update contribution URL

* Improve topic popup

* Update UI

* feat: predefined messages

* fix: ui changes

* fix: add summarise

* fix: add explain topic

* Topic AI changes

* feat: predefined message group

* Refactor actions logic

* Implement topic ai changes

* Improve actions buttons

* Add new explainer action

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2025-05-02 21:12:04 +01:00
Kamran Ahmed
2ba3e64c1c Update ai agents roadmap links 2025-05-01 22:30:50 +01:00
Vedansh
ca30955e9f Adjust few topics in CyberSecurity roadmap (#8537) 2025-05-01 13:29:47 +01:00
Vedansh
c2e1d8fd28 cleanup and refactor Computer Science roadmap topics (#8561) 2025-05-01 13:29:23 +01:00
Vedansh
ab5cc9dd6d refactor (ai-agents): improve topic content resources (#8581)
* refactor first 27 topics.

* refactor next 28 topics

* finalize remaining 44 topics.

* Update src/data/roadmaps/ai-agents/content/acting--tool-invocation@sHYd4KsKlmw5Im3nQ19W8.md

* Update src/data/roadmaps/ai-agents/content/acting--tool-invocation@sHYd4KsKlmw5Im3nQ19W8.md

* Update src/data/roadmaps/ai-agents/content/agent-loop@Eih4eybuYB3C2So8K0AT3.md

* Update src/data/roadmaps/ai-agents/content/basic-backend-development@VPI89s-m885r2YrXjYxdd.md

* Update src/data/roadmaps/ai-agents/content/database-queries@sV1BnA2-qBnXoKpUn-8Ub.md

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2025-05-01 13:27:01 +01:00
Arik Chakma
74267a6061 fix: handle syntax error (#8506) 2025-04-30 16:32:12 +01:00
github-actions[bot]
9c2c06affd chore: update roadmap content json (#8567)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2025-04-30 16:31:44 +01:00
David Willis-Owen
0e0eea635b Update jailbreak content (#8577) 2025-04-30 13:20:37 +01:00
Kamran Ahmed
82400cd7a6 Update content 2025-04-30 12:27:24 +01:00
Kamran Ahmed
55fdc9f957 Add PDF and PNG for ai-agents 2025-04-29 23:47:41 +01:00
Kamran Ahmed
f8b9b58968 Add content to AI Agents 2025-04-29 23:37:39 +01:00
Kamran Ahmed
b79411c49e Fix height for ai-agents roadmap 2025-04-29 23:20:20 +01:00
Kamran Ahmed
5ba951e555 Add AI Agents roadmap on get-started and roadmaps pages 2025-04-29 23:20:20 +01:00
Kamran Ahmed
464bcb6c66 Add content for AI Agents roadmap 2025-04-29 23:20:20 +01:00
Kamran Ahmed
b9aee719b2 Add ai-agents roadmap 2025-04-29 23:20:20 +01:00
Kamran Ahmed
5d9eecc2b9 Add ai-agents roadmap 2025-04-29 23:20:20 +01:00
David Willis-Owen
80a0caba2f Update resources in AI Red Teaming Roadmap (#8570)
* Update why-red-team-ai-systems@fNTb9y3zs1HPYclAmu_Wv.md

* Update prompt-engineering@gx4KaFqKgJX9n9_ZGMqlZ.md

* Update generative-models@3XJ-g0KvHP75U18mxCqgw.md

* Update prompt-hacking@1Xr7mxVekeAHzTL7G4eAZ.md

* Update jailbreak-techniques@Ds8pqn4y9Npo7z6ubunvc.md

* Update countermeasures@G1u_Kq4NeUsGX2qnUTuJU.md

* Update forums@Smncq-n1OlnLAY27AFQOO.md

* Update lab-environments@MmwwRK4I9aRH_ha7duPqf.md

* Update ctf-challenges@2Imb64Px3ZQcBpSQjdc_G.md

* Update ctf-challenges@2Imb64Px3ZQcBpSQjdc_G.md

* Update industry-credentials@HHjsFR6wRDqUd66PMDE_7.md

* Update agentic-ai-security@FVsKivsJrIb82B0lpPmgw.md

* Update responsible-disclosure@KAcCZ3zcv25R6HwzAsfUG.md

* Update benchmark-datasets@et1Xrr8ez-fmB0mAq8W_a.md

* Update adversarial-examples@xjlttOti-_laPRn8a2fVy.md

* Update large-language-models@8K-wCn2cLc7Vs_V4sC3sE.md

* Update introduction@HFJIYcI16OMyM77fAw9af.md

* Update ethical-considerations@1gyuEV519LjN-KpROoVwv.md

* Update role-of-red-teams@Irkc9DgBfqSn72WaJqXEt.md

* Update threat-modeling@RDOaTBWP3aIJPUp_kcafm.md

* Update direct@5zHow4KZVpfhch5Aabeft.md

* Update indirect@3_gJRtJSdm2iAfkwmcv0e.md

* Update model-vulnerabilities@uBXrri2bXVsNiM8fIHHOv.md

* Update model-weight-stealing@QFzLx5nc4rCCD8WVc20mo.md

* Update unauthorized-access@DQeOavZCoXpF3k_qRDABs.md

* Update data-poisoning@nD0_64ELEeJSN-0aZiR7i.md

* Update model-inversion@iE5PcswBHnu_EBFIacib0.md

* Update code-injection@vhBu5x8INTtqvx6vcYAhE.md

* Update remote-code-execution@kgDsDlBk8W2aM6LyWpFY8.md

* Update api-protection@Tszl26iNBnQBdBEWOueDA.md

* Update authentication@J7gjlt2MBx7lOkOnfGvPF.md

* Update white-box-testing@Mrk_js5UVn4dRDw-Yco3Y.md

* Update white-box-testing@Mrk_js5UVn4dRDw-Yco3Y.md

* Update white-box-testing@Mrk_js5UVn4dRDw-Yco3Y.md

* Update automated-vs-manual@LVdYN9hyCyNPYn2Lz1y9b.md

* Update specialized-courses@s1xKK8HL5-QGZpcutiuvj.md
2025-04-28 13:12:11 +01:00
Jawher Kl
2937923fb1 Fix wrong URL (#8429) 2025-04-28 09:26:41 +01:00
Vedansh
a33018de1d fix(cybersecurity): resource link adjustments (#8544)
* adjustments.

* Squashed commit of the following:

commit ab55b0972edca0ea36bd87e93a54e38750b15208
Author: Vedansh <superuser.ntsystems@outlook.com>
Date:   Tue Apr 22 17:32:07 2025 +0530

    adjust remaining topics.

* Update src/data/roadmaps/cyber-security/content/dig@D2YYv1iTRGken75sHO0Gt.md

---------

Co-authored-by: Arik Chakma <arikchangma@gmail.com>
2025-04-27 19:08:05 +06:00
Soumik Sarker
c236e863a0 Fixed link of Experimental Design Article of AI Data Scientist roadmap (#8562) 2025-04-27 12:42:25 +01:00
github-actions[bot]
b7f94a7679 chore: update roadmap content json (#8564)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2025-04-27 01:41:31 +01:00
Vedansh
107fa4842c cybersecurity: adjust few topic links (#8520)
* adjust content in few topics.

* Update src/data/roadmaps/cyber-security/content/antimalware@9QtY1hMJ7NKLFztYK-mHY.md

* Update antimalware@9QtY1hMJ7NKLFztYK-mHY.md

---------

Co-authored-by: Arik Chakma <arikchangma@gmail.com>
2025-04-26 13:06:51 +01:00
Kamran Ahmed
3e059cc3e9 Fix broken URLs 2025-04-26 12:56:24 +01:00
Kamran Ahmed
ebd34612a2 Refactor red teaming resources (#8560) 2025-04-26 12:47:04 +01:00
Kamran Ahmed
ed54dd663a Add AI red teaming roadmap 2025-04-26 12:18:22 +01:00
Vedansh
bb0df94afa fix: topic links and content (#8536) 2025-04-26 14:13:05 +06:00
github-actions[bot]
be1b041acb chore: update roadmap content json (#8540)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2025-04-26 14:11:20 +06:00
Vedansh
5f53b3ef1e refactor: (cybersecurity) content & link adjustments. (#8549)
* refactor 40 topics quickly.

* finally.
2025-04-25 14:59:19 +01:00
David Willis-Owen
c83309b7db AI Red Teaming Roadmap - Initial Commit (#8553)
* Initial commit

* Editing formatting
2025-04-25 14:57:24 +01:00
Kamran Ahmed
3a49ad556a Update react router resources 2025-04-24 19:18:12 +01:00
Kamran Ahmed
4447f4841c Add hubspot snippet 2025-04-24 19:15:23 +01:00
Kamran Ahmed
6351969d3c Update frontend explanation video 2025-04-24 12:56:52 +01:00
Vedansh
599da5a153 refactor(cybersecurity): adjust topic content (#8527) 2025-04-23 20:11:19 +06:00
Vedansh
0a2e098c44 cleanup all 95 topics. phew (#8519) 2025-04-23 20:09:31 +06:00
github-actions[bot]
514377da63 chore: update roadmap content json (#8524)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2025-04-23 19:47:54 +06:00
Kamran Ahmed
9dea34869a Fix progress nudge not centered 2025-04-22 22:55:20 +01:00
Kamran Ahmed
db7d02b3c2 Update pnpm lock 2025-04-22 18:34:16 +01:00
Kamran Ahmed
cf09986ffc Update isNew flags 2025-04-22 18:31:47 +01:00
Kamran Ahmed
1ff5aa1e05 Add AI red teaming roadmap 2025-04-22 18:30:14 +01:00
Kamran Ahmed
36021ce4a5 Add AI red teaming roadmap 2025-04-22 18:28:03 +01:00
Kamran Ahmed
5409deeaa8 Add golang interview questions link 2025-04-22 12:44:42 +01:00
Kamran Ahmed
555cd15a8e Add golang interview questions 2025-04-22 12:44:42 +01:00
Arik Chakma
d36af2d3fa feat: project without submission (#8530) 2025-04-22 11:36:36 +01:00
Arik Chakma
05db236a3c fix: package lock file (#8528) 2025-04-21 23:25:23 +06:00
Kamran Ahmed
cd4f099ca8 Add FAQ backlink 2025-04-21 17:08:13 +01:00
Kamran Ahmed
c5694be86b Add og images to question guides 2025-04-21 15:57:09 +01:00
Kamran Ahmed
8a1960eae8 Add data analyst questions guide 2025-04-21 15:52:04 +01:00
Kamran Ahmed
649384ac45 Page sponsors removal 2025-04-21 11:44:50 +01:00
Vedansh
d3ccfb9ced refactor(cyber-security): adjust content for cyber securities (#8521) 2025-04-20 23:12:57 +06:00
Vedansh
eb5d2fbc3a refractor(redis): cleanup redis db roadmap (#8518)
* refractor 45 topics

* refractor remaining 46 topics
2025-04-20 20:00:25 +06:00
Bryan Wilches
a822f00a70 chore(topic): add help example (#8514)
* Update command-help.md

Feat: Adding the --help flag explanation

* Update src/data/roadmaps/linux/content/shell-basics/command-help.md

* Update command-help.md

---------

Co-authored-by: Arik Chakma <arikchangma@gmail.com>
2025-04-20 14:02:23 +06:00
github-actions[bot]
08d0301181 chore: update roadmap content json (#8511)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2025-04-20 13:53:43 +06:00
Satyaakam Goswami
62adbe49be feat(topic): public speaking content (#8420)
* Update public-speaking@LRZ8yxTfEGCXsYp4N1_uD.md

adding some content to the public speaking stub

* Update src/data/roadmaps/devrel/content/public-speaking@LRZ8yxTfEGCXsYp4N1_uD.md

---------

Co-authored-by: Arik Chakma <arikchangma@gmail.com>
2025-04-19 01:10:00 +06:00
Allen Terescenco
a0784e1695 fix: misspelling of 'Cucumber' in Java Course (#8457)
Co-authored-by: Allen Terescenco <allen.terescenco@gmail.com>
2025-04-19 01:07:34 +06:00
Instinct
556588c303 fix: official supabase vector reference (#8460)
current reference is https://supabase.com/docs/guides/ai/vector-columns

previous reference was https://supabase.com/vector which is now a 404
2025-04-19 01:05:56 +06:00
Instinct
c7ec3f08ee fix(topic): openai image understanding docs(#8467)
Previous article gives 404 (https://platform.openai.com/docs/guides/vision/low-or-high-fidelity-image-understanding)
New article linked in this PR (https://platform.openai.com/docs/guides/images)
2025-04-19 01:02:29 +06:00
Arnab Sarkar
ec0f129783 feat(topic): add content to control flow in cpp roadmap (#8480)
* added content to if-else/switch/goto under control flow & statements inside c++ roadmap

* added content to if-else/switch/goto under control flow & statements inside c++ roadmap

* added content to control flow in cpp roadmap fixed format error

* chore: update roadmap content json
2025-04-19 01:01:13 +06:00
web-svb
5f9dca9a1e fix(topic): postgresql docs link (#8491)
Removed outdated link to PostgreSQL 7.1 documentation.
Updated remaining link from version 8.1 to current to ensure long-term accuracy and relevance.
This change ensures that users are directed to the latest stable PostgreSQL documentation.
2025-04-19 00:59:36 +06:00
Amir Babaei
256ad44e60 feat(topic): add differential calculus resource (#8496)
Added link to the 3blue1brown very relevant "essence of calculus" youtube playlist - following the contrib guidelines and the style in the "Linear algebra" content in the roadmap
2025-04-19 00:57:44 +06:00
Silicon27
85b9eaa9f7 feat(topic): add virtual functions topic content (#8497) 2025-04-19 00:55:48 +06:00
Frank
5831588cd8 fix(topic): incorrect resource link (#8502)
**Fix the incorrect link to the Flutter documentation.**  
The current link points to the documentation for the `OutlineButton` widget, but it should link to the documentation about the Flutter widget tree, since the topic is about the hierarchy of widgets, NOT the `OutlineButton`.
2025-04-19 00:50:27 +06:00
Bryan Wilches
cd33b7aa92 feat(topic): linux file system (#8508)
* Update directory-hierarchy.md

Adding a youtube link about the Linux file system

* Update src/data/roadmaps/linux/content/navigation-basics/directory-hierarchy.md

---------

Co-authored-by: Arik Chakma <arikchangma@gmail.com>
2025-04-19 00:47:47 +06:00
Bryan Wilches
6193eaf176 feat: replace with a mini exercise (#8509)
Adding a mini exercise about bash scripting
2025-04-18 23:10:17 +06:00
Arik Chakma
f279aea1cb fix: pagination number (#8504) 2025-04-17 17:25:00 +06:00
Kamran Ahmed
8b69b266d5 Fix flicker of paid plan 2025-04-17 11:41:41 +01:00
Kamran Ahmed
3f0db1526d Add upgrade button on ai page 2025-04-17 10:57:35 +01:00
Kamran Ahmed
69d9dd23b2 Add upgrade button on ai page 2025-04-17 10:56:00 +01:00
github-actions[bot]
3e1bc34d4a chore: update roadmap content json (#8493)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2025-04-17 14:54:58 +06:00
Kamran Ahmed
dea689b068 Email login to trigger purchase 2025-04-17 09:31:37 +01:00
Kamran Ahmed
de237ec6fc Keep button loading when redirecting 2025-04-17 09:21:06 +01:00
Kamran Ahmed
5ec61cc32f Add AI vs data science guide 2025-04-14 20:08:57 +01:00
Kamran Ahmed
7bffc1004d Add new guide about software engineering 2025-04-14 20:05:25 +01:00
Kamran Ahmed
c06218910d Add new guide data science vs cyber security 2025-04-14 19:52:25 +01:00
Kamran Ahmed
130e381054 Remove testing from course demo 2025-04-14 18:14:47 +01:00
Kamran Ahmed
d5d38ee919 Add protip 2025-04-14 14:29:40 +01:00
Kamran Ahmed
6b7138b8d8 Add protip 2025-04-14 14:21:52 +01:00
Kamran Ahmed
242e40ddd8 Add protip 2025-04-14 14:18:54 +01:00
Kamran Ahmed
9ea70fcc97 Update placeholder 2025-04-14 14:08:37 +01:00
Kamran Ahmed
823c31eac4 AI Tutor - Explore page, sidebar better search (#8476)
* Add sidebar to ai-tutor

* wip

* wip

* Fix mistakes and refacctor

* AI landing page changes

* Update sidebar design

* wip

* wip

* Update AI tutor sidebar

* wip

* Add ai-course dropdown

* Update

* fix: ai chat window position

* Course explanation changes

* Update course

* Tutor sidebar changes

* Refactor staff picks and community

* Update UI for a course

* Improve pagination

* Implement pagination of ai tutor ai courses

* AI explore page with search

* Fix pagination of tutor

* Update tutor header design

* Responsiveness of AI

* Fork alert changes

* Responsiveness of actions

* Forking functionality changes

* Fork confirmation changes

* Add upgrade indicator in sidebar

* fix: ai course access

* fix: next lesson

* Add login to view functionality

* Add search to my picks

---------

Co-authored-by: Arik Chakma <arikchangma@gmail.com>
2025-04-14 10:54:38 +01:00
Kamran Ahmed
d4a1180c4d Add google tag manager 2025-04-11 14:28:00 +01:00
Kamran Ahmed
483c942338 Inline script 2025-04-11 13:04:41 +01:00
Kamran Ahmed
f28b018e99 Add varify 2025-04-11 12:58:35 +01:00
Sepand
c683db2757 Add resources for regression testing (#8482)
The QA roadmap does not have any resources for Regression Testing. I have added three resources for it.
2025-04-11 11:47:50 +01:00
Vedansh
6dd8f29bff Refactor spring boot roadmap (#8484) 2025-04-11 11:47:07 +01:00
Vedansh
671b59c0ac fix some topic content. (#8485) 2025-04-11 11:46:30 +01:00
sukalaper
1197a0fd6d doc: Proc Priorities Under Process Management (#8486) 2025-04-11 11:46:15 +01:00
web-svb
9ebb288f9b Remove broken link (#8489)
Removed obsolete link to outdated PostgreSQL 7.1 docs that no longer reflect current row behavior.
2025-04-11 11:45:40 +01:00
Kamran Ahmed
ca38c0cede Fix broken UI 2025-04-11 11:45:20 +01:00
Kamran Ahmed
ff7c981f2f Add loading delay 2025-04-10 18:32:19 +01:00
Kamran Ahmed
3455e6ef1c Add varify tracking 2025-04-10 18:17:11 +01:00
Kamran Ahmed
f7f409ca90 Add demo button 2025-04-10 18:12:05 +01:00
Kamran Ahmed
2538db4786 Implement course demo page (#8477)
* Add course demo button

* Read sample button on page

* GA event for buy button

* Add isTesting link
2025-04-10 17:55:18 +01:00
Kamran Ahmed
d5a8814add Handle incomplete 2025-04-10 12:46:07 +01:00
Kamran Ahmed
0cadde1092 Remove hubspot snippet 2025-04-09 19:28:17 +01:00
Kamran Ahmed
3f4bbef211 Treat expired as cancelled 2025-04-09 19:23:11 +01:00
Kamran Ahmed
715352eeab Add tracking code for hubspot 2025-04-09 11:22:39 +01:00
github-actions[bot]
e5e43de98a chore: update roadmap content json (#8471)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2025-04-08 18:18:53 +06:00
Kamran Ahmed
f085a226ba Fix broken best practices page 2025-04-08 09:21:01 +01:00
Kamran Ahmed
2e90823af4 Update premium pricing modal text 2025-04-07 20:24:43 +01:00
Kamran Ahmed
50df3eda0f Fix issue where in complete is shown as active subscription 2025-04-07 19:58:58 +01:00
Kamran Ahmed
69b0d7abb3 Improve course button visibility 2025-04-07 19:30:43 +01:00
Kamran Ahmed
c4af3c57f0 Add courses tab 2025-04-07 19:27:00 +01:00
Kamran Ahmed
2cee3a8859 Remove console.log 2025-04-07 17:11:46 +01:00
Kamran Ahmed
7f28a755dc Add 404 handling 2025-04-07 16:39:09 +01:00
Kamran Ahmed
a2e83e909e Fix pre-rendered 404 2025-04-07 16:28:09 +01:00
Kamran Ahmed
e4f53ed90e Fix path 2025-04-07 16:20:04 +01:00
Kamran Ahmed
5e836ab7a5 Fix path 2025-04-07 16:11:25 +01:00
Kamran Ahmed
9851978dbd Add debug info 2025-04-07 16:05:17 +01:00
Kamran Ahmed
82c52aca7e chore: upgrade dependencies (#8468)
* Upgrade paths

* Update topic rendering

* Fix file names

* Remove courses file
2025-04-07 15:52:48 +01:00
Kamran Ahmed
0d62847053 Add courses functionality 2025-04-07 13:49:43 +01:00
Kamran Ahmed
7a00234f9a Add courses tag 2025-04-07 13:49:43 +01:00
Kamran Ahmed
64a65fa2e9 Migrate to Tailwind 4 + Editor Upgrade (#8465)
* wip

* fix: roadmap editor

* fix: padding

* wip

* fix: remove editor package

* wip

* fix: update pnpm lock

* Add contribution docs

* UI changes for TW4

* Update deployment workflow

---------

Co-authored-by: Arik Chakma <arikchangma@gmail.com>
2025-04-07 12:53:25 +01:00
jj
09d8c709d4 Fix SQL roadmap content (#8459)
- fix typo in query-optimization@Ps9Yv2s-bKvEegGAbPsiA.md
- fix content in reducing-subqueries@UVTgbZrqpbYl1bQvQejcF.md - the existing content is duplicate with recursive-queries
2025-04-06 23:13:58 +01:00
github-actions[bot]
6a14170e64 chore: update roadmap content json (#8455)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2025-04-06 00:37:01 +06:00
Kamran Ahmed
ac3ebb2162 Update editor 2025-04-05 12:45:24 +01:00
Kamran Ahmed
56ea91b11c Update generate-renderer 2025-04-05 00:42:03 +01:00
Kamran Ahmed
5a1f52892e Add generate-renderer and dummy renderer 2025-04-05 00:36:58 +01:00
Kamran Ahmed
74781d6e7b Add generate-renderer and dummy renderer 2025-04-05 00:28:41 +01:00
Kamran Ahmed
06bdfc42d2 Update deployment flow 2025-04-05 00:12:50 +01:00
Kamran Ahmed
0a42ea6f41 Add dummy generate renderer 2025-04-04 23:42:08 +01:00
Kamran Ahmed
2dc4041228 Add editor 2025-04-04 23:41:05 +01:00
Kamran Ahmed
4b7eab66da Make deployment script accept pat 2025-04-04 21:16:00 +01:00
Kamran Ahmed
999f6b09a8 Make deployment script accept pat 2025-04-04 21:15:13 +01:00
Kamran Ahmed
a9cd557dd3 Make deployment script accept pat 2025-04-04 21:11:47 +01:00
Kamran Ahmed
3d3423f8e5 Make deployment script accept pat 2025-04-04 21:07:40 +01:00
Kamran Ahmed
a5eb5231cb Make deployment script accept pat 2025-04-04 21:03:12 +01:00
Kamran Ahmed
8662416c96 Make deployment script accept pat 2025-04-04 20:59:44 +01:00
Kamran Ahmed
7564895d7a Make deployment script accept pat 2025-04-04 20:55:35 +01:00
Kamran Ahmed
7b15ed39a3 Make deployment script accept pat 2025-04-04 20:54:24 +01:00
Kamran Ahmed
e72622f2b2 Make deployment script accept pat 2025-04-04 20:52:20 +01:00
Kamran Ahmed
deb9aaafc2 Migrate roadmaps 2025-04-04 20:46:39 +01:00
Kamran Ahmed
63b6d471a2 Update generate-renderer 2025-04-04 20:41:35 +01:00
Arik Chakma
2485b716dd feat: xyflow upgrade (#7803)
* wip

* fix: reset the sizes

* fix: update zustand

* fix: update

* fix: add additional width

* wip

* fix: remove hacky code

* wip

* wip

* wip

* wip

* wip

* fix: try pre-commit

* fix: add check pre-commit

* fix: remove xyflow

* fix: remove unnecessary files

* fix: update packages

* Update scripts/generate-renderer.sh

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2025-04-04 20:33:01 +01:00
Kamran Ahmed
dc2142dde0 Default path to be considered home 2025-04-04 11:38:18 +01:00
Kamran Ahmed
d8466634a1 Fix: Lesson generation fails 2025-04-04 11:12:34 +01:00
Kamran Ahmed
7900130f1c Set last page to home if not exists 2025-04-04 10:21:09 +01:00
Sarvar
13c4aee26a Add resources for minimal APIs (#8446) 2025-04-03 23:12:29 +01:00
Instinct
294e76b52d Fix broken resource link (#8447)
the [previous link](https://platform.openai.com/docs/guides/text-generation/managing-context-for-text-generation) directed to a 404 page. new link corrects this
2025-04-03 23:12:06 +01:00
Kamran Ahmed
d6e9602c0b Store page where user signed up from 2025-04-03 23:11:06 +01:00
Kamran Ahmed
b84e75a0d4 Update data scientist roadmap title 2025-04-03 19:37:47 +01:00
Kamran Ahmed
81bb0bac83 Remove new badge from projects 2025-04-03 18:16:21 +01:00
Kamran Ahmed
d2d7e54c74 Put SQL roadmap first 2025-04-03 18:03:11 +01:00
Kamran Ahmed
8a70a944e6 Add sql course in burger menu 2025-04-03 17:58:08 +01:00
Kamran Ahmed
175ac4d097 Setup a /ai-tutor to /ai redirect 2025-04-03 17:42:18 +01:00
Kamran Ahmed
b75d36a8c0 Changes to the ai tutor URL 2025-04-03 17:41:46 +01:00
Pavan Kumar Balijepalli
0d9374285b Fix md syntax issue (#8452) 2025-04-03 15:51:51 +01:00
Arik Chakma
f798035f0f feat: remove ai roadmap limit for pro user (#8442) 2025-04-03 15:50:22 +01:00
Kalvin Chakma
7a988cbbea fix: label typo (#8454) 2025-04-03 15:48:07 +01:00
Kamran Ahmed
b576ad5f86 Fix typo in file name 2025-04-03 15:47:20 +01:00
Kamran Ahmed
2124ce96dc Add changelog entry 2025-04-03 15:44:17 +01:00
Kamran Ahmed
27cbdd18fd Add full stack roadmap FAQs 2025-04-03 14:52:04 +01:00
Kamran Ahmed
ef242e8747 Add Java FAQs 2025-04-03 13:54:23 +01:00
Kamran Ahmed
614429283f Add java title faq 2025-04-03 13:44:36 +01:00
Kamran Ahmed
b4e6336732 Add data analyst FAQs 2025-04-03 13:34:59 +01:00
Kamran Ahmed
35aa2d07f0 Add missing FAQs to ai roadmap 2025-04-03 13:05:16 +01:00
Kamran Ahmed
d570618d32 Fix golang title question 2025-04-03 12:48:24 +01:00
Kamran Ahmed
1a5b6976c2 Wiggle animation on the course banner 2025-04-01 18:09:39 +01:00
Kamran Ahmed
45059998c0 Add support for replacing TNS partner banner 2025-04-01 15:05:28 +01:00
Kamran Ahmed
f3eed4d010 Update og image 2025-04-01 14:48:08 +01:00
Kamran Ahmed
0f1e1962db Update announcement banner 2025-04-01 12:24:11 +01:00
Kamran Ahmed
84de2a7c9d Update title of course 2025-04-01 12:22:14 +01:00
Arik Chakma
dfd54b35b0 feat: ai course chat (#8426)
* feat: ai course chat

* wip: remove old code

* wip

* feat: responsiveness of ai chat

* fix: key warning

* feat: make chat resizeable

* wip

* wip: default questions

* wip

* fix: fixed position

* fix: hide button

* Fix scroll issue

* Improve questions UI

* Refactor UI

* Add close icon

* Update UI for course chat

* Close AI chat question

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2025-04-01 12:09:14 +01:00
github-actions[bot]
981af58fa9 chore: update roadmap content json (#8441)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2025-03-31 17:00:47 +06:00
sickpoitew
e5802eaeaf feat: update resource video (#8431)
Replace Git & GitHub Crash Course For Beginner with Git & GitHub Crash Course For Beginner 2025 made by the same guy
2025-03-30 16:50:28 +06:00
github-actions[bot]
64fd0e28aa chore: update roadmap content json (#8427)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2025-03-30 16:48:05 +06:00
Kamran Ahmed
0a442493f1 Update sticky course banner 2025-03-28 19:54:54 +00:00
Kamran Ahmed
77b4e78348 Update sticky course banner 2025-03-28 19:52:27 +00:00
Kamran Ahmed
56c9faabe8 Add ai tutor inside ai roadmap topic 2025-03-28 18:15:20 +00:00
Kamran Ahmed
a68ed2e0b8 Remove terms of sale link 2025-03-27 21:21:04 +00:00
Kamran Ahmed
7d7cec3f4a Update terms of use 2025-03-27 18:21:52 +00:00
Kamran Ahmed
15ae58a109 Merge branch 'master' of github.com:kamranahmedse/developer-roadmap 2025-03-27 17:39:47 +00:00
Jawher Kl
c32cc7c11b fix: broken resource link (#8424) 2025-03-27 21:37:06 +06:00
github-actions[bot]
5398e2a93c chore: update roadmap content json (#8419)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2025-03-27 21:35:27 +06:00
Kamran Ahmed
bb8083801d Improve animation style 2025-03-26 16:05:54 +00:00
Jawher Kl
a2018556cd Add content to game developer roadmap (#8415)
* Improve coroutine content with resources

* Improve flow-control content with resources

* Improve congestion control content with resources

* Improve reliable transmission content with resources

* Improve error detection content with resources

* Improve channel content with resources

* Improve max-segment-size content with resources

* Improve max-segment-size content with resources
2025-03-26 15:15:30 +00:00
Kamran Ahmed
e0589284ef Fix typo 2025-03-26 15:14:45 +00:00
Arik Chakma
bd1a19da3d feat: ai course lesson questions (#8396)
* feat: ai course lesson questions

* Several fixes

* Improve test my knowledge

* Improve UI for questions

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2025-03-26 15:12:05 +00:00
Kamran Ahmed
6c6c9ea85d Improve limits page 2025-03-26 11:28:10 +00:00
Kamran Ahmed
8921081bf7 Improve guide content 2025-03-26 11:09:17 +00:00
Jawher Kl
858f131222 Add missing content in game developer roadmap (#8408)
* Update semaphore@DYvzGc_r0SlOArPPc1gNI.md

* Improve epoll content with many resource.

* Improve epoll content with many resource.

* Improve select content with many resource.

* Improve wsa-poll content with link resource.

* Improve iocp content with link resource.

* Improve io_uring content with link resource.

* update the title of resource section

* Improve registered-io content with link resource.

* Improve kqueue content with resources

* update content syntax
2025-03-26 10:59:51 +00:00
Arik Chakma
85202507e6 feat: course ai roadmap (#8352)
* feat: course ai roadmap

* wip

* fix: error

* refactor: remove open ai key

* wip: view switch

* feat: add roadmap progress

* fix: simplify module

* wip

* Update outline generation

* Update course limits popup

* fix: module done

* Updates to AI usage

* UI and error handling

* Map and outline view to share header

* Outline switcher

* Responsive AI generation

* Update header for course

* Roadmap switch

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2025-03-25 22:21:39 +00:00
Jawher Kl
80a4ebbb3d fix: broken link (#8409)
* Update data-types@5g9mmi01WeZ4aDqNzwx_V.md

* Update data-types@5g9mmi01WeZ4aDqNzwx_V.md

* Update src/data/roadmaps/java/content/data-types@5g9mmi01WeZ4aDqNzwx_V.md

---------

Co-authored-by: Arik Chakma <arikchangma@gmail.com>
2025-03-26 02:53:47 +06:00
Samyeak
03caf1bf23 feat: adds Gridify content for aspnet-core (#8407)
* Update gridlify@w5RnrhsP4p-AdSOLYVAY9.md

Adds description and links for Gridify library

* Update gridlify@w5RnrhsP4p-AdSOLYVAY9.md
2025-03-26 02:49:18 +06:00
Ed Lan
1a4f9f8f96 feat: update faqs (#8403) 2025-03-26 02:46:06 +06:00
Ed Lan
2778ed958d feat: update faqs (#8404) 2025-03-26 02:45:49 +06:00
github-actions[bot]
cda2be543d chore: update roadmap content json (#8397)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2025-03-25 21:42:50 +06:00
Ash Blade
e362d4250e Fix typo in "Tensor" title (#8400) 2025-03-25 13:35:55 +00:00
Jawher Kl
28493bc7f0 Update drivers section (#8401) 2025-03-25 13:35:36 +00:00
Kouka
2931461e2e Corrected description for "Built-in Functions" section (#8391)
* Corrected description for "Built-in Functions" section

The previous description primarily explained methods rather than built-in functions, which could cause confusion. This update provides a clearer explanation of built-in functions, including examples like parseInt(), setTimeout(), and Math.random(), while also acknowledging built-in methods within JavaScript objects.

This ensures that the description aligns with the section title and provides more accurate information for learners.

* Fixed explanation of JavaScript built-in functions

Refined the description of JavaScript’s built-in functions that are globally available or tied to specific objects. Clarified that objects like Array, String, and Date provide built-in methods for efficient data manipulation.
2025-03-24 22:04:40 +00:00
Vladimir Poplavskij
892ef44070 Add fs resource (#8395)
* Update working-with-files@wEK77A6MPQBCBUSJKMiaY.md

Add official File system page in the Node.js documentation

* Update src/data/roadmaps/nodejs/content/working-with-files@wEK77A6MPQBCBUSJKMiaY.md

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2025-03-24 22:04:08 +00:00
Piotr Idzik
58c3195831 Join strings and newline char (#8394) 2025-03-24 20:52:52 +00:00
Piotr Idzik
1813c7bba6 feat: use black compliant formatting (#8393) 2025-03-24 23:49:09 +06:00
Piotr Idzik
e92d8c442f fix: std abbreviation for STL (#8392) 2025-03-24 23:48:00 +06:00
Kamran Ahmed
dc08643daf Fix wrong link 2025-03-24 17:04:58 +00:00
Kamran Ahmed
7ccf731088 Fix search param in topic popup 2025-03-24 16:44:18 +00:00
Igor Kustov
cf2d0b80af Replace HTTP cookies resource (#8250) 2025-03-24 15:57:11 +00:00
Kamran Ahmed
d518867e80 Replace std::endl with \n 2025-03-24 15:56:19 +00:00
Jawher Kl
431790b690 Add content to infinite in game developer roadmap (#8253)
* Update infinite@sC3omOmL2DOyTSvET5cDa.md

* Update src/data/roadmaps/game-developer/content/infinite@sC3omOmL2DOyTSvET5cDa.md

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2025-03-24 15:53:31 +00:00
Vedansh
f077f354d7 fix: refactor and optimize resources (#8257) 2025-03-24 15:51:49 +00:00
Mahmoud Elnaggar
4268ce4346 Fixed a typo in brute-force-vs-password-spray@Q0i-plPQkb_NIvOQBVaDd.md (#8273) 2025-03-24 15:48:20 +00:00
Allan Lires
180ca335b6 Add Git resource (#8284) 2025-03-24 15:46:22 +00:00
Matthew Bill
81ebc0197a Add agile resource (#8299)
Added the scrum guide to the list of resources
2025-03-24 15:44:30 +00:00
akshatsuccessive
ff7fdcd5bf Added content for Manual mapping in aspnet core (#8305)
Co-authored-by: akshat.kumar <akshat.kumar@succssive.tech>
2025-03-24 15:40:12 +00:00
Kamran Ahmed
55b6a81ccc Fix razor pages typo 2025-03-24 15:39:21 +00:00
golfpastete
0bc63fb9af Fix typo in DevOps beginner roadmap (#8331) 2025-03-24 15:38:07 +00:00
Jawher Kl
a90495b0d6 Add resources to RDBMS (#8342)
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2025-03-24 15:37:02 +00:00
Koki Kazaore
fdf630d4e3 Remove link (#8343)
* Add a TestLink tutorial article

* Update src/data/roadmaps/qa/content/testlink@leiCCxLJgXCpk1a--mE83.md

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2025-03-24 15:30:41 +00:00
Cyril GHALI
cfc84e246e Fixed typo (#8349) 2025-03-24 15:29:17 +00:00
Jawher Kl
2622141113 Fix broken URL (#8359) 2025-03-24 15:28:19 +00:00
Kamran Ahmed
9b182f965f Remove javatpoint links 2025-03-24 15:23:53 +00:00
Tyler Teschon
dca2fdf6d5 Add engineering manager roadmap resource (#8364)
added resource of software engineering at google section on the engineering manager
2025-03-24 15:17:59 +00:00
Naman Acharya
169bf45e9f Replace broken resource URL (#8365)
* Replace broken resource URL with a better FreeCodeCamp article

Replace broken resource URL with a better FreeCodeCamp article  

The previous resource URL was not found, so I replaced it with a more relevant article from FreeCodeCamp:  
https://www.freecodecamp.org/news/what-is-an-orm-the-meaning-of-object-relational-mapping-database-tools

* Update src/data/roadmaps/php/content/object-relational-mapping-orm@SeqGIfcLuveZ2z5ZSXcOd.md

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2025-03-24 15:17:17 +00:00
Vedansh
7e39785289 Update resources of AI Engineer roadmap (#8369) 2025-03-24 15:12:55 +00:00
Danis Idiatullin
bcb76b4ef3 Fix broken link to the article on common algorithms (#8370) 2025-03-24 15:12:25 +00:00
Praise Emmanuel
3121827ee7 fix typo on 'azure' (#8377) 2025-03-24 15:10:57 +00:00
github-actions[bot]
69b63e2a8d chore: update roadmap content json (#8381)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2025-03-24 15:10:33 +00:00
Liwei Su
4b603ecd2e Add external link to /proc File System (#8385)
* Update 101-listing-finding-proc.md

Append useful article at the end.

* Update 101-listing-finding-proc.md

Small change.

---------

Co-authored-by: Liwei Su <liweisu@proton.me>
2025-03-24 15:09:18 +00:00
Jawher Kl
6b49a1123d Fix broken links
* Update services---remote-data@CpsoIVoCKaZnM_-BbXbCh.md

* Update src/data/roadmaps/angular/content/services---remote-data@CpsoIVoCKaZnM_-BbXbCh.md

* Update src/data/roadmaps/angular/content/services---remote-data@CpsoIVoCKaZnM_-BbXbCh.md

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2025-03-24 15:08:23 +00:00
Kamran Ahmed
33cdbddadb Fix typo 2025-03-24 13:52:54 +00:00
Kamran Ahmed
0e1845aade Add FAQs t golang roadmap 2025-03-24 13:42:32 +00:00
Kamran Ahmed
76cd909280 Add data scientist vs ai guide 2025-03-24 12:53:08 +00:00
Kamran Ahmed
92527d9c4e Add DS vs AI guide 2025-03-24 12:49:24 +00:00
Kamran Ahmed
eec79cc18a Add guide for data science vs statistics 2025-03-24 12:30:32 +00:00
Kamran Ahmed
83d014c9b1 Add new guide data science vs business analytics 2025-03-24 12:18:01 +00:00
Kamran Ahmed
d5a9a9a490 Add datascience vs data engineering guide 2025-03-24 11:42:39 +00:00
Kamran Ahmed
18cff6476a Add redirect from devops guide 2025-03-24 10:37:37 +00:00
Vedansh
d6b0357ee7 refactor: nodejs roadmap resources (#8371)
Co-authored-by: Arik Chakma <arikchangma@gmail.com>
2025-03-23 20:25:24 +06:00
Micael Andrade
55efe7f954 fix: remove links from react framework (#8374)
* fix: removing references from react framework

* fix: add new article about lifecycle hooks in Angular

* Update src/data/roadmaps/angular/content/component-lifecycle@nCpfj_35ZvW-NTygg06XZ.md

---------

Co-authored-by: Arik Chakma <arikchangma@gmail.com>
2025-03-23 20:22:18 +06:00
Vladimir Poplavskij
016c6cf343 feat: add resource link (#8375)
* Update native-drivers@KpC-QYKalUp7VUvnMKBoW.md

Add SQLite database

* Update src/data/roadmaps/nodejs/content/native-drivers@KpC-QYKalUp7VUvnMKBoW.md

---------

Co-authored-by: Arik Chakma <arikchangma@gmail.com>
2025-03-23 20:20:16 +06:00
M1nKyu
beeb6f9e93 fix: resource broken link (#8378)
- The previous URL for the article "Exception Handling in Java" in the Java Developer Roadmap was not working. 
- Replaced it with a working URL.
2025-03-23 20:17:21 +06:00
Vladimir Poplavskij
a6519d7aba feat: add resource link (#8380)
Add link with NodejS getting started about debug
2025-03-23 20:15:19 +06:00
github-actions[bot]
b70e73124f chore: update roadmap content json (#8362)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2025-03-23 20:13:00 +06:00
Kamran Ahmed
300759ca43 Enable single request 2025-03-21 18:05:51 +00:00
Kamran Ahmed
c20d16660a Update ad 2025-03-21 18:01:06 +00:00
Kamran Ahmed
d388c2c563 Remove empty ad slot 2025-03-21 17:54:54 +00:00
Kamran Ahmed
f9c2c4153d Add google ad targeting 2025-03-21 16:28:33 +00:00
Kamran Ahmed
ebc3b9021c Add cpp roadmap 2025-03-21 15:10:56 +00:00
Kamran Ahmed
9354bd3d4d Add missing roadmap dirs 2025-03-21 15:06:49 +00:00
Kamran Ahmed
b32adbe3c5 Migrate C++ roadmap 2025-03-21 15:05:33 +00:00
Kamran Ahmed
ff5609b722 Add gam support 2025-03-20 14:46:49 +00:00
Vladimir Poplavskij
f882ca1b9c feat: add npm topic resource (#8353)
Add useful article how to update npm packages safe and by group
2025-03-20 20:24:38 +06:00
d2h5IHRoZSBmdWNrIGlzIGl0IHNvIGhhcmQgdG8gbGl2ZT8=
20b040735a fix: correct AWS service name from VPN to VPC (#8357)
Changed VPN to VPC (Virtual Private Cloud) in AWS services list as VPC is the correct AWS service being referenced.
2025-03-20 19:47:33 +06:00
Kamran Ahmed
3881377490 Add gam 2025-03-19 14:57:18 +00:00
Kamran Ahmed
f0d208f050 Add gam 2025-03-19 14:05:23 +00:00
Kamran Ahmed
b81c74984e Add gam 2025-03-19 13:43:43 +00:00
Kamran Ahmed
d399ba2c61 Update hero title 2025-03-19 12:06:24 +00:00
Kamran Ahmed
fe829442d1 Add reddit pixel in header 2025-03-18 20:12:47 +00:00
Arik Chakma
fd7f95c1a5 feat: delete ai course (#8345)
* feat: delete ai course

* Improve UI

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2025-03-18 18:17:39 +00:00
github-actions[bot]
3982a2eee8 chore: update roadmap content json (#8340)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2025-03-19 00:01:55 +06:00
Kamran Ahmed
a60bcb5a45 Update message 2025-03-18 16:29:59 +00:00
Kamran Ahmed
3cf2ad9b25 Update course content 2025-03-18 16:27:00 +00:00
Kamran Ahmed
6449c24398 Update AI chat popup 2025-03-18 01:28:56 +00:00
Kamran Ahmed
eaddc81383 Merge branch 'master' of github.com:kamranahmedse/developer-roadmap 2025-03-18 00:39:25 +00:00
Jawher Kl
b6e0d566a6 fix: broken link (#8334) 2025-03-18 00:39:11 +00:00
Gleison
01f93d95fb feat: add content for StyleCop (#8337)
* Added content for StyleCop section

* Update src/data/roadmaps/aspnet-core/content/stylecop-rules@R7Qk5hsEIl9dspQXdaJAJ.md

* Update src/data/roadmaps/aspnet-core/content/stylecop-rules@R7Qk5hsEIl9dspQXdaJAJ.md

---------

Co-authored-by: Arik Chakma <arikchangma@gmail.com>
2025-03-18 00:39:11 +00:00
Kamran Ahmed
fbd39e9079 Moving next should be mark it as done 2025-03-18 00:32:17 +00:00
Kamran Ahmed
3bc00b5b1a Storing fine-tune data 2025-03-18 00:32:17 +00:00
Kamran Ahmed
340ae002ca Improve fine-tuning 2025-03-18 00:32:17 +00:00
Kamran Ahmed
98d8510b60 Add UI 2025-03-18 00:32:17 +00:00
Kamran Ahmed
a82a0e6efb Moving next should be mark it as done 2025-03-18 00:30:46 +00:00
Kamran Ahmed
b17ba1b009 Storing fine-tune data 2025-03-18 00:07:23 +00:00
Kamran Ahmed
a07a5af543 Improve fine-tuning 2025-03-17 23:53:21 +00:00
Jawher Kl
16db649baf fix: broken link (#8334) 2025-03-18 01:22:18 +06:00
Kamran Ahmed
017fe3e0a4 Add UI 2025-03-17 17:15:35 +00:00
Gleison
1f727d2e17 feat: add content for StyleCop (#8337)
* Added content for StyleCop section

* Update src/data/roadmaps/aspnet-core/content/stylecop-rules@R7Qk5hsEIl9dspQXdaJAJ.md

* Update src/data/roadmaps/aspnet-core/content/stylecop-rules@R7Qk5hsEIl9dspQXdaJAJ.md

---------

Co-authored-by: Arik Chakma <arikchangma@gmail.com>
2025-03-17 21:57:14 +06:00
Kamran Ahmed
281f6f369c Remove old guide flags 2025-03-17 15:28:54 +00:00
Kamran Ahmed
eb5e5fadcc Add python FAQs 2025-03-17 13:27:55 +00:00
Kamran Ahmed
4996d51340 Add JavaScript faqs 2025-03-17 12:46:12 +00:00
Kamran Ahmed
ea944a001e Add AI and Data Scientist Roadmap FAQs 2025-03-17 12:25:34 +00:00
Kamran Ahmed
6d28ab40a8 Update signup popup message 2025-03-16 00:19:24 +00:00
Arik Chakma
ebb88721b6 feat: ai course pagination (#8329) 2025-03-15 12:32:24 +00:00
Kamran Ahmed
8878d04f98 Remove autocomplete from ai roadmap search 2025-03-15 04:28:44 +00:00
Kamran Ahmed
1085c33dc4 Regenerate functionality 2025-03-14 21:10:57 +00:00
Kamran Ahmed
6b9007c530 Enable AI tutor 2025-03-14 19:53:42 +00:00
Kamran Ahmed
5ff89fa184 Add regenerate lessons 2025-03-14 14:46:27 +00:00
Kamran Ahmed
dfff959916 Remove ai course lessons before generation 2025-03-14 13:28:53 +00:00
Kamran Ahmed
3ba9abe7e3 Improve AI courses 2025-03-14 13:17:04 +00:00
Kamran Ahmed
fbd149f955 Disable AI tutor 2025-03-14 11:39:58 +00:00
Kamran Ahmed
d78fd6ccff Refactor AI course view 2025-03-14 04:25:23 +00:00
Kamran Ahmed
2be8dbe0c2 Update sidebar ui for courses 2025-03-14 03:24:59 +00:00
Kamran Ahmed
79c6e2be53 refactor: ai-courses (#8327)
* Refactor ai courses

* Refactor

* Regenerate roadmap functionality

* Title and difficulty to refresh also

* Add course regeneration

* Improve the non paid user headings

* Update

* Improve back button logic

* Is paid user checks
2025-03-14 03:05:07 +00:00
github-actions[bot]
cc5585171c chore: update roadmap content json (#8326)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2025-03-14 02:14:57 +00:00
Kamran Ahmed
38cd727e48 Add ai tutor link in navigation 2025-03-13 12:06:41 +00:00
Kamran Ahmed
fda56a5d30 Remove geeksforgeeks links 2025-03-13 11:48:33 +00:00
Kamran Ahmed
e27146d549 Add billing 2025-03-13 01:16:19 +00:00
Kamran Ahmed
eb95da0bb0 Refactor perks 2025-03-12 15:37:14 +00:00
Kamran Ahmed
554e61947b Update design 2025-03-12 15:23:59 +00:00
Kamran Ahmed
107ae1923b Update back text for ai tutor 2025-03-12 14:18:05 +00:00
Kamran Ahmed
cb64894e49 feat: add ai course generator (#8322)
* Course landing page

* Add ai course page

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip: error handling

* wip

* wip

* wip

* wip: ai course progress

* wip

* wip

* wip

* feat: code highlighting

* feat: usage limit

* feat: follow up message

* Update UI

* wip

* Add course content

* wip: autogrow textarea & examples

* Update types

* Update

* fix: add highlight to the AI chat

* UI changes

* Refactor

* Update

* Improve outline style

* Improve spacing

* Improve spacing

* UI changes for sidebar

* Update UI for sidebar

* Improve course UI

* Mark done, undone

* Add toggle lesson done/undone

* Update forward backward UI

* wip

* Minor ui change

* Responsiveness of sidebar

* wip

* wip

* wip: billing page

* wip

* Update UI

* fix: hide upgrade if paid user

* feat: token usage

* feat: list ai courses

* fix: limit for followup

* Course content responsiveness

* Make course content responsive

* Responsiveness

* Outline button

* Responsiveness of course content

* Responsiveness of course content

* Add course upgrade button

* Update design for upgrade

* Improve logic for upgrade and limits button

* Limits and errors

* Add lesson count

* Add course card

* Improve UI for course generator

* Update course functionality

* Refactor AI course generation

* Responsiveness of screen

* Improve

* Add responsiveness

* Improve empty billing page design

* Add empty billing screen

* Update UI for billing page

* Update UI for billing page

* Update UI for billing page

* Update billing page design

* Update

* Remove sidebar

* Update

---------

Co-authored-by: Arik Chakma <arikchangma@gmail.com>
2025-03-12 13:17:38 +00:00
Jawher Kl
faf43f7905 fix: broken link (#8254) 2025-03-12 02:43:46 +06:00
Ed Lan
c9f450e166 fix: ai data scientist meta (#8320) 2025-03-12 02:36:20 +06:00
Vedansh
3b6d620ed8 feat: refractor flutter roadmap content (#8311)
* refractor - 100, 101, 102 topics

* refractor 103

* refractor 104 105

* refractor 106

* refractor 107 108 content

* refractor 109 content

* refractor 110 to 119 content.
2025-03-11 18:59:56 +06:00
github-actions[bot]
bd937f5dbe chore: update roadmap content json (#8317)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2025-03-11 18:59:29 +06:00
Kamran Ahmed
cf05610b86 Update course page text 2025-03-11 12:47:07 +00:00
Alexandre D. Roberge
8b61bbfcbb fix: typo in filename 2025-03-10 18:44:18 +06:00
github-actions[bot]
2c39611b47 chore: update roadmap content json (#8312)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2025-03-10 18:43:41 +06:00
Naser Mohamed
475cb85600 fix: remove member only content (#8307)
The mentioned resource was not free (required a member subscription)
2025-03-09 22:40:50 +06:00
github-actions[bot]
37de8700d5 chore: update roadmap content json (#8304)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2025-03-08 08:04:12 +06:00
Kamran Ahmed
9db05bddbd Fix broken link 2025-03-06 11:46:06 +00:00
Matthew Bill
4bda81bf52 Add resource for trust building (#8300)
Added details about the trust equation to trust/influence in theengineering-manager roadmap
2025-03-06 11:45:07 +00:00
github-actions[bot]
00c5254ea9 chore: update roadmap content json (#8301)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2025-03-06 11:31:27 +00:00
Kamran Ahmed
bc97fc4c03 Add java roadmap content 2025-03-05 14:06:58 +00:00
Kamran Ahmed
f953b96d52 Add updated java assets 2025-03-05 12:14:26 +00:00
Kamran Ahmed
40793efe4e Migrate Java roadmap 2025-03-05 11:49:22 +00:00
github-actions[bot]
22a29605d8 chore: update roadmap content json (#8288)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2025-03-04 21:15:08 +06:00
Devin DeShun
cbfd4f7fcb Replace a link for sheet (#8287)
Replace Microsoft Access "replace function" link with Microsoft Excel "replace function" link.
2025-02-28 23:51:45 +00:00
Igor Kustov
992cf82e5c feat: add resources to rate-limiting topic (#8282)
* Added few resources to rate-limiting topic

* Added 'What is rate limiting? | Rate limiting and bots' article
2025-02-28 19:26:31 +06:00
Michelle
ea89ac864c fix: bookmarks typo (#8259) 2025-02-27 02:55:48 +06:00
github-actions[bot]
35a4a93ca7 chore: update roadmap content json (#8277)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2025-02-27 02:55:08 +06:00
Kamran Ahmed
2544d4b12d Add title question in devops roadmap 2025-02-26 18:42:30 +00:00
Igor Kustov
d6ee7ef76a Added article on http-caching topic (#8263) 2025-02-24 11:45:37 +00:00
Kamran Ahmed
daa2c03643 Update DevOps FAQs 2025-02-24 11:45:00 +00:00
github-actions[bot]
92a61e7c45 chore: update roadmap content json (#8255)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2025-02-22 17:50:00 +06:00
Kamran Ahmed
e6ad9b29d6 Add changelog entry for cloudflare + new dashboard 2025-02-21 19:40:18 +00:00
Kamran Ahmed
ea040b7912 Update navigation 2025-02-21 19:19:50 +00:00
Kamran Ahmed
28e874bdcd Update aspnet-core roadmap 2025-02-21 19:15:08 +00:00
Kamran Ahmed
4125c618d7 Add roadmaps to clean 2025-02-21 19:00:30 +00:00
Kamran Ahmed
088615d13f Add missing files 2025-02-21 18:30:00 +00:00
Kamran Ahmed
b02d07917d Migrate aspnet-core roadmap 2025-02-21 18:29:23 +00:00
Kamran Ahmed
9f1d44e542 Add clarity 2025-02-20 17:46:12 +00:00
Kamran Ahmed
587e8a197f Update quote message 2025-02-20 17:31:13 +00:00
Vedansh
5023e962b3 feat: add content to cloudflare roadmap (#8248)
* add content to prerequisites and core dev skills.

* add content and topic links to each topic.
few refractors too.
---
2025-02-20 17:17:51 +00:00
Kamran Ahmed
28c41b02c0 Update quote message 2025-02-20 17:15:49 +00:00
Kamran Ahmed
7a80313f1d Add author credentials on page 2025-02-20 15:42:25 +00:00
Kamran Ahmed
6bc1233253 Add author credentials on page 2025-02-20 15:41:28 +00:00
Kamran Ahmed
f82ca986c5 Update testimonial 2025-02-20 13:33:52 +00:00
Kamran Ahmed
d45b08c5d3 Update testimonial 2025-02-20 13:33:52 +00:00
Kamran Ahmed
d0c6ae1835 Update 2025-02-20 13:33:52 +00:00
Vedansh
be2d3a0d0e feat: add content to few topics in cloudflare roadmap. (#8245)
* add content to prerequisites and core dev skills.

* Update src/data/roadmaps/cloudflare/content/basic-command-line-knowledge@q9oQTt_NqhdWvJfA5XH1V.md

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2025-02-20 13:10:17 +00:00
Kamran Ahmed
c81c799e44 Add testimonials 2025-02-20 13:06:01 +00:00
Artur
0bcf1b09bd Adding 2 videos links to Aws Roadmap - Lambda-Creating and Lambda-Layers subtopics (#8148)
* Added link video to Lambda content

Added a link video to show how create a lambda function in python

* Added link video do Lambda-layers content

Added a video showing use and how create a lambda layer to a script in pytho
2025-02-20 00:47:07 +00:00
Vedansh
f7f0270f75 refractor all topics. (#8168) 2025-02-20 00:45:52 +00:00
Eyob wondyifraw
8033ccbe6d clarify behavior of git diff and --unified option (#8169)
The previous documentation incorrectly described the behavior of `git diff`
and the purpose of the `--unified` option. This commit fixes the definition
to accurately reflect how `git diff` works and the role of `--unified`.

Changes:
- Clarify that `git diff` compares the working directory against the staging
  area for unstaged changes, not directly against the latest commit.
- Explain that `--unified` controls the number of context lines shown in the
  diff output, rather than being a mode for comparing unstaged changes.
- Add examples to illustrate the correct usage of `git diff` and `--unified`.

This update ensures users have a clear and accurate understanding of how to
review changes and customize diff output.
2025-02-20 00:45:30 +00:00
Andrew Garvin
694c208ee3 Fix typo (#8178) 2025-02-20 00:44:49 +00:00
Piotr Idzik
41c7388f63 Use consistent formatting (#8184)
* Use consistent space after `if`

* Use consistent space after `for`

* Add missing space between `)` and `{`
2025-02-20 00:44:30 +00:00
Sai Prithvi
2f2a9b2d32 fixed typo: act to acr (#8185) 2025-02-20 00:44:01 +00:00
Priyanshu Maurya
083ec6c0d7 Add ECS resource (#8186)
* Update 100-clusters.md

Contained the same additional resources as the ECS

https://docs.aws.amazon.com/AmazonECS/latest/developerguide/Welcome.html

Changed to relevant one

(https://docs.aws.amazon.com/AmazonECS/latest/developerguide/clusters.html)

* Update 100-clusters.md

added additional seperate link for ECS Container Agents

https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-agent-config.html
2025-02-20 00:43:00 +00:00
Piotr Idzik
32690e98da Use gofmt compliant formatting (#8192) 2025-02-20 00:42:14 +00:00
Dom Jackson
ed8c2f3168 Swap out a 404ing link from Backend Architectural patterns with its new location (#8201)
* Update architectural-patterns@tHiUpG9LN35E5RaHddMv5.md

This article is 404ing

* Swap out with new link
2025-02-20 00:41:21 +00:00
github-actions[bot]
1a9f53150b chore: update roadmap content json (#8244)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2025-02-20 00:40:43 +00:00
Jawher Kl
1779eef91b Update watermill resources (#8230)
* Update 100-watermill.md

Enhance Watermill description with additional resources

* Update src/data/roadmaps/golang/content/109-go-microservices/100-watermill.md

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2025-02-19 15:52:04 +00:00
Jawher Kl
d7b3f82d18 Update resources in game development (#8233) 2025-02-19 15:48:26 +00:00
Furkan Emin Can
fb34a7176c Update description of Godot game engine in game dev roadmap (#8234) 2025-02-19 15:46:51 +00:00
Furkan Emin Can
c5316929ba Update Godot resources (#8235)
* Add new video resources for Godot Engine in game dev roadmap

* Replace mobile video link with normal one in Godot Engine description
2025-02-19 15:45:53 +00:00
Furkan Emin Can
1ef1818327 Update resources related to C / C++ (#8237)
* Update resource link of C in game dev roadmap

* Add resources for C / C++ in server side game dev roadmap
2025-02-19 15:45:15 +00:00
Vo Chanh Hung
472c7f415b chore: update roadmap content json (#8238) 2025-02-19 15:44:52 +00:00
dejanualex
c43d294ab4 refactor phrasing for container runtime (#8242)
Signed-off-by: dejanu <dejanualexandru@gmail.com>
2025-02-19 15:44:34 +00:00
Kamran Ahmed
06747df054 Add platform demo 2025-02-19 14:36:32 +00:00
Kamran Ahmed
2aeb2ad65e Add course video on the course landing page 2025-02-19 14:28:40 +00:00
github-actions[bot]
3fd6e859df chore: update roadmap content json (#8227)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2025-02-19 14:59:45 +06:00
Kamran Ahmed
6d85bbe488 Add highlighting in reviews 2025-02-17 21:08:46 +00:00
Kamran Ahmed
5bb1252795 Add testimonials on course page 2025-02-17 21:07:04 +00:00
Kamran Ahmed
dfaf120314 Add testimonials 2025-02-17 21:00:04 +00:00
Kamran Ahmed
be5ccbbc0b Add testimonials 2025-02-17 20:05:10 +00:00
Kamran Ahmed
12950051d6 Update 2025-02-17 19:51:59 +00:00
Kamran Ahmed
03cd25b6c0 Update reviews section 2025-02-17 19:45:03 +00:00
Kamran Ahmed
829615ffec Add testimonials 2025-02-17 16:06:25 +00:00
Kamran Ahmed
6a24436418 Fix course broken UI 2025-02-17 13:35:09 +00:00
Kamran Ahmed
c726a1a342 Add workers kv resources 2025-02-17 13:33:06 +00:00
eqsdxr
7d7835ee9c Fix typos in content (#8218)
* Fix small typos

* Fix typo

* Fix typo
2025-02-17 12:37:45 +00:00
Mojtaba Kamyabi
17d30c0e8d Update 404 links in towarddatascience site to medium ones (#8221) 2025-02-17 12:37:05 +00:00
github-actions[bot]
62bd5c339f chore: update roadmap content json (#8216)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2025-02-16 09:22:22 +00:00
Jasper
111f702b9b Cloudflare Roadmap - Update Cloudflare Hono & Itty Router (#8211) 2025-02-15 17:31:11 +00:00
Jawher Kl
3dd115dce1 fix: classname import path
Resolves #8204
2025-02-14 18:40:28 +06:00
github-actions[bot]
75925cb53a chore: update roadmap content json (#8193)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2025-02-14 18:39:20 +06:00
Kamran Ahmed
de5bed02f8 Add SQL course link to sql roadmap 2025-02-13 15:06:42 +00:00
Kamran Ahmed
72c670570b Add cloudflare roadmap to get-started page 2025-02-12 23:52:31 +00:00
Kamran Ahmed
a450b4ed5a Add higher quality cloudflare roadmap 2025-02-12 22:44:28 +00:00
Kamran Ahmed
66be61efa3 Add cloudflare roadmap 2025-02-12 22:42:35 +00:00
Kamran Ahmed
caddd0f93d Fix ai roadamp UI 2025-02-11 22:10:23 +00:00
Arik Chakma
cc32cbe79c fix: editor roadmap rendering style (#8190) 2025-02-11 19:47:51 +06:00
Kamran Ahmed
f9d39db24a Remove personal button when loading 2025-02-11 13:40:58 +00:00
Kamran Ahmed
203bbc6eae Add dashboard redesign (#8189)
* Improve personal dashboard design

* Add projects toggle

* Improve UI for AI roadmaps

* Add builtin roadmaps and best practices

* Collapse and expand

* Move to separate files

* Refactor hero items group

* Collapse expand

* Add expand collapse in hero title

* Add collapse expand of groups

* Style updates

* Collapse expand

* Remove global collapse expand

* Update hero title

* Fix spacing

* Empty screen handling

* Add empty message

* Add profile button

* Add questions listing on dashboard

* Add guides and videos on dashboard

* Responsiveness

* Update messaging
2025-02-11 12:39:34 +00:00
Arik Chakma
31a852113f fix: member progress (#8188)
* fix: member progress

* fix: remove question check

* refactor: resource meta
2025-02-11 12:34:44 +00:00
Kamran Ahmed
66119e935b Fix broken label in AI roadmap 2025-02-11 12:12:54 +00:00
github-actions[bot]
3374fafe5b chore: update roadmap content json (#8183)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2025-02-09 23:55:11 +06:00
Piotr Idzik
8ed47a2e71 Make the code example c++20 compliant (#8177) 2025-02-09 05:32:46 +00:00
Shayan Shojaei
932b513d98 fix: topic file name 2025-02-07 22:43:15 +06:00
Kamran Ahmed
e0ae5dd309 Add new guide data science vs machine learning 2025-02-06 19:29:29 +00:00
Kamran Ahmed
70bc2a1038 Update guide authors 2025-02-06 19:15:43 +00:00
Kamran Ahmed
86c1120559 Add new guide data science vs data analytics 2025-02-06 19:13:56 +00:00
Kamran Ahmed
c3135e1470 Add new guide data science vs computer science 2025-02-06 19:05:30 +00:00
Kamran Ahmed
23346ec007 Add course author messageg 2025-02-06 15:46:30 +00:00
Kamran Ahmed
c92a183ef8 Add course author messageg 2025-02-06 14:32:43 +00:00
Jinhwan Kim
ca7888aa37 feat: bubble tea content 2025-02-06 18:34:30 +06:00
Klexus1
33b36a7017 fix: topic content
This change is to emphasize that container can be stopped without data loss.
2025-02-06 17:46:24 +06:00
Mohammed Hafeez
bff98e6448 feat: add rust interactive book
* Update index.md

Added an interactive web doc form which im learning rust.

* Update src/data/roadmaps/rust/content/100-introduction/index.md

---------

Co-authored-by: Arik Chakma <arikchangma@gmail.com>
2025-02-06 17:11:01 +06:00
github-actions[bot]
5dd2bc439f chore: update roadmap content json (#8173)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2025-02-06 17:08:59 +06:00
Kamran Ahmed
24d10d212f Add devops projects on homepage 2025-02-04 18:06:54 +00:00
Kamran Ahmed
4127f77aac Add sql course changelog entry 2025-02-04 18:05:26 +00:00
Kamran Ahmed
dbebf593fc Fix z-index issues 2025-02-04 13:32:39 +00:00
Kamran Ahmed
0e0b550f98 Add how to become a fullstack developer guide 2025-02-04 12:53:34 +00:00
Kamran Ahmed
80741df13b Add go vs java guide 2025-02-04 02:17:25 +00:00
Kamran Ahmed
14b6aea3b1 Update messaging for course 2025-02-04 02:01:53 +00:00
Kamran Ahmed
e0da1e4f0e Fix issue where share solution is shown without submitting 2025-02-04 02:01:15 +00:00
Kamran Ahmed
5cc4b834d1 Improve UI for project solutions 2025-02-03 23:03:32 +00:00
Kamran Ahmed
314eb5d7d2 Refactor project solutoin row 2025-02-03 21:17:06 +00:00
Kamran Ahmed
ad2597f610 Update banner message 2025-02-03 19:57:18 +00:00
Kamran Ahmed
8d25eabe3a Add sorting to project solution listing 2025-02-03 19:45:42 +00:00
Kamran Ahmed
6186e12b05 Improve language filtering 2025-02-03 18:05:59 +00:00
Kamran Ahmed
158857c928 Add sql course banner 2025-02-03 14:22:20 +00:00
Kamran Ahmed
8e6959cc60 Fix z-index issue 2025-02-03 13:34:24 +00:00
Kamran Ahmed
e351f653a1 Add banner on top 2025-02-03 13:29:12 +00:00
Arik Chakma
83e315aef7 feat: add first login flag (#8161) 2025-02-03 11:06:22 +00:00
github-actions[bot]
b15bdd5f78 chore: update roadmap content json (#8154)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2025-02-02 09:40:01 +06:00
github-actions[bot]
0783330a70 chore: update roadmap content json (#8145)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2025-02-01 21:18:11 +06:00
Rikuya Osawa
7ec56fd1ff fix: replace unavailable resource link (#8152) 2025-02-01 13:14:07 +00:00
Kamran Ahmed
201632941a Handle redirect on purchase 2025-01-31 17:37:07 +00:00
Kamran Ahmed
126501b40a Add course page to index 2025-01-31 16:59:27 +00:00
Arik Chakma
34ba9162b2 feat: add course GA tracking (#8150) 2025-01-31 16:52:06 +00:00
Kamran Ahmed
e093eddabc Update course slug 2025-01-31 16:13:45 +00:00
Kamran Ahmed
1e4a4c96b8 Fix type issue 2025-01-31 14:50:59 +00:00
Kamran Ahmed
0c3ea981cb Add announcement 2025-01-31 12:50:53 +00:00
Kamran Ahmed
5de9539af5 Add platform demo 2025-01-31 12:43:41 +00:00
gavhu10
3722e5f3bd Added a resource concerning Python Modules and Packages (#8095) 2025-01-30 22:01:01 +00:00
Vedansh
7f90b8a0b0 fix topic link type. (#8098) 2025-01-30 22:00:06 +00:00
Rikuya Osawa
2bafd61f71 add article resource (#8125) 2025-01-30 21:54:25 +00:00
OLODiman11
adc66cf97c Fixed some typos on redis rodemap (#8131)
* fix: wrong link to redis rpop command

* fix: links not properly displaying because of a typo
2025-01-30 21:52:57 +00:00
Jérémy
c754a971c3 Fix typo in Symfony detail description (#8132) 2025-01-30 21:52:26 +00:00
Jovan Ivošević
dbda69fc23 Fix EPA definition (#8134)
* Updated EPA text for game-developer roadmap

* Removed reduntant whitespace
2025-01-30 21:52:09 +00:00
DombleGames
6f1087981c Fix array_fill example (#8138)
Fix: Use correct parameter name "count" instead of "num" in array_fill()

Updated the array_fill() function to use "count" as the second parameter, aligning with the official PHP documentation.
2025-01-30 21:51:47 +00:00
github-actions[bot]
ec8a0917c1 chore: update roadmap content json (#8140)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2025-01-30 21:50:54 +00:00
Kamran Ahmed
60e5e38a55 Update greetings workflow message 2025-01-30 21:48:14 +00:00
Mahesh Ravariya
5d77d36236 Updated correct tag for more resources (#8142)
More resources had wrong tag "@articles". Changed it to "@course"
2025-01-30 21:44:27 +00:00
Sergio V
37b3140516 Fix typo (#8141) 2025-01-30 21:40:34 +00:00
Ed Lan
34b68478cc Add guide link (#8143) 2025-01-30 21:40:11 +00:00
Ed Lan
9bb86408c5 Add link to ai data scientist guide (#8144) 2025-01-30 21:39:56 +00:00
Kamran Ahmed
d07fd3d183 Update pricing section 2025-01-30 21:39:29 +00:00
Kamran Ahmed
9aa363a01e Add java vs javascript guide 2025-01-30 18:57:33 +00:00
Kamran Ahmed
9f2a33f078 Add full-stack questions 2025-01-30 12:31:39 +00:00
Kamran Ahmed
91cfa88b3d Fix broken course url 2025-01-29 19:31:43 +00:00
Kamran Ahmed
d87ea1c972 Add full-stack questions 2025-01-29 15:49:48 +00:00
Kamran Ahmed
dbf2353a41 Add fullstack questions 2025-01-29 15:49:48 +00:00
Vedansh
8d78c17c77 fix: update nodejs exit topic links 2025-01-29 19:10:54 +06:00
github-actions[bot]
698dbbd7d8 chore: update roadmap content json (#8135)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2025-01-29 19:08:30 +06:00
Kamran Ahmed
25216d4052 Add data scientist lifecycle guid 2025-01-29 12:17:17 +00:00
Kamran Ahmed
2be0d61a1e Course cache clearing 2025-01-29 00:17:06 +00:00
Kamran Ahmed
f3ee75e92d Add ai data science tools guide 2025-01-28 22:15:19 +00:00
Kamran Ahmed
db0b5e77ad Add guide for data science skills 2025-01-28 18:13:10 +00:00
Kamran Ahmed
c239886049 Add guide for data science career path 2025-01-28 17:12:07 +00:00
Meher
aab03074f8 Add authorization types link (#8130)
Link to API Authentication types was provided instead of authorization types.
2025-01-28 11:42:39 +00:00
Rikuya Osawa
433302b910 fix: resource link on Outliers (#8126) 2025-01-28 07:58:12 +06:00
Alice
a583937f5c fix: file name typo 2025-01-28 07:57:39 +06:00
Arik Chakma
412e3b5935 feat: add subscribe to changelog (#8012)
* feat: add subscribe to changelog

* Add subscribe to changelog

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2025-01-27 23:23:19 +00:00
Arik Chakma
1ffa292c98 feat: new user flag (#8070)
* feat: new user flag

* feat: share icon event

* fix: upload the query tag

* fix: name and label

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2025-01-27 22:00:24 +00:00
Kamran Ahmed
0bef28fa20 Update flag issue 2025-01-27 16:13:23 +00:00
github-actions[bot]
1af013d5f8 chore: update roadmap content json (#8121)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2025-01-27 22:12:16 +06:00
Kamran Ahmed
28af19cd1c Add SQL course landing page (#8127)
* wip: courses

* fix: update course sidebar

* wip

* fix: merge lessons

* wip

* wip: course footer

* wip

* fix: refactor layout

* fix: refactor

* feat: course progress

* fix: update current lesson store

* fix: refactor props

* wip

* wip

* feat: course certificate

* wip: course rating

* wip: course notes

* wip

* feat: implement course notes

* feat: make card clickable

* fix: add hover background

* fix: refactor course layout

* fix: resizeable

* fix: go back on save

* feat: delete confimation

* wip

* feat: chat UI

* fix: lesson complete guard issue

* wip: add public json files

* wip: course ai

* fix: loading card

* Fix failing dev without internet

* Light mode and UI changes

* Update UI

* Update course UI

* Add chapter page

* Improve sidebar of course

* Update navigation:

* Update quiz view

* Improve UI for quiz attempts

* Remove unnecessary console.logs

* Add progress loading skeletons

* Update UI

* Change background color of editor

* Fix line color not applied on editor

* UI updates

* feat: empty view

* feat: course ai token limit

* feat: handle auth users

* wip

* feat: course landing page

* wip

* Add first chapter of SQL

* Add introduction chapter

* Add quiz for introduction

* Add expressions in select

* Add content for DISTINCT

* Add filter with where

* Add lesson about limit and offset

* Add lesson for handling null values

* Add lesson about comments

* Add challenges

* Add challenge

* Add challenge

* Add challenge

* Add challenge 7

* Add creating tables lesson

* Add common data types lesson

* Add data types in sqlite

* Add more on data types lesson

* feat: course landing page

* Add more on numeric types

* Update

* Add lesson about temporal data types

* Add constraints

* Add primary keys chapter

* Add modifying tables

* Add dropping and truncating

* Rewrite for PostgreSQL

* Update numeric types to PostgreSQL

* Improve temporal data type content

* Improve temporal data type content

* Add setup for temporal data

* Improve challenges in SQL basics

* Update challenge names

* Add new challenges

* Add temporal validation challenge

* Add new constraint

* Add modifying tables query

* Removing table

* Add insert operations lesson

* Add updating data lesson

* Add delete operations

* Add inserting and updating challenges

* Add lesson for cleaning up data

* Update course title

* Add relation data lesson

* Add relationships and types

* Add relationships and types

* wip

* Add joins lesson

* Joins in queries

* Add inner join details

* Add join queries

* Add inner join details

* Add foreign key constraint lesson

* Update composite foreign keys

* Add lesson about foreign keys

* Add lesson about set operation queries

* Add lesson about set operation queries

* Add set operator challenges

* Add new challenge

* Add view lesson

* Add notes in views

* Add inactive customer challenge

* Add high value order challenge

* gst

* Add new challenges

* Add readers like you challenge

* Update inactive customer query

* Update inactive customer query

* Update inactive customer query

* Update inactive customer query

* Update inactive customer query

* add challenge for same price books

* Add aggregate functions introduction

* Add basic aggregation lesson

* Add basic aggregation lesson

* Add introduction quiz

* Add grouping lesson

* Add grouping gotchas

* Add grouping and filtering lesson

* Add note for lesson

* Add challenges for aggregate

* Update aggregate challenge

* Rearrange chapters

* Add scalar functions lessons

* Add numeric functions

* Add date functions

* Add conversion functions

* Add conversion functions

* Add logical functions chapter

* Add exercises

* Add new challenges

* Add monthly sales analysis

* Add subqueries and ctes

* Update

* Add correlated subqueries

* Add common table expressions

* Add common-table expressions

* Add example

* Add recursive CTEs

* Add subquery challenge

* Add latest category books challenge

* Add challenges

* Add bestseller rankings challenge

* Add new customer analysis

* Add daily sales report

* Improve queries

* Add introduction to window functions

* Add over and partition

* wip: billing page

* Add ranking functions

* Improve ranking functions

* Add order by

* Add window frames lesson

* Add window frames explanation

* Add challenges for window functions

* Add price range analysis challenge

* wip

* wip: course enroll

* fix: start learning

* wip

* wip

* Enrollment changes

* wip

* wip

* feat: mobile responsive

* Changelog banner refactor

* Update

* Header for course

* Header for what to expect

* UI color

* Table of contents

* Icons on chapters

* Change design for road to sql

* Add sql course page

* Add lesson content

* Update UI

* Expanded chapter row

* Add course page

* Refactor

* Add spotlight

* Improve features

* Add course features

* Add certificate note

* Zoom in on the image

* Update

* Add floating purchase

* Floating purchase indicatorg

* Add about section

* Update about section

* Add FAQ section

* Update UI

* Add purchase power parity

* Show purchasing power pricing

* Add course login popup

* Add course login popup

* Add account button

* Add trigger for course purchase

* Course purchase param

* Buy button changes

* Add faqs

* Add purchase trigger on reload

* Landing verification

* Make header responsive

* Make course page upper half responsive

* Full page is responsive

* Fix login height bug

* Responsiveness

* Implement login after checkout

* Remove unused code

* Update dependenciesg

* Update

* fix: refetch mount to false

* Remove unused code

* Remove unused code

* Remove unused code

* Remove unused code

* Remove unused code

* Remove unused code

* Remove unused

* Add quizzes to chapters

* Update course slug

* Update dependencies

* Add header for sql course

---------

Co-authored-by: Arik Chakma <arikchangma@gmail.com>
2025-01-27 15:32:13 +00:00
Ed Lan
4696af9c6a feat: update topic content 2025-01-27 00:45:23 +06:00
Ed Lan
e2dece0e6a feat: update topic content 2025-01-27 00:45:07 +06:00
Ed Lan
a5f483c335 feat: update topic content 2025-01-27 00:44:50 +06:00
Vedansh
4552d3f9c8 refractor: improve data analyst roadmap (#8104)
* refractor 36 topics

* refractor remaining topics - 16
2025-01-27 00:44:14 +06:00
Rikuya Osawa
f213bd9604 fix: inappropriate resource tags (#8112) 2025-01-27 00:38:58 +06:00
ZIT2050
de65909357 fix: replace topic resource
* Update csrf-protection@J9yIXZTtwbFzH2u4dI1ep.md

@official@Security Guide page not found 404

* Update src/data/roadmaps/php/content/csrf-protection@J9yIXZTtwbFzH2u4dI1ep.md

---------

Co-authored-by: Arik Chakma <arikchangma@gmail.com>
2025-01-27 00:38:07 +06:00
niibuthelezi
9a77ca8a17 feat: add topic resource 2025-01-27 00:35:27 +06:00
github-actions[bot]
7ab3f758fd chore: update roadmap content json (#8096)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2025-01-26 06:33:16 +06:00
gavhu10
bcf4126b3a fix: add a tuple resource (#8089) 2025-01-22 22:39:33 +06:00
gavhu10
f9dbd16afe feat: add resource for dictionaries (#8090) 2025-01-22 22:10:31 +06:00
cepjant
21ed4a647f fix: update topic content 2025-01-22 22:09:44 +06:00
github-actions[bot]
68cf2c00c6 chore: update roadmap content json (#8092)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2025-01-22 22:05:55 +06:00
Michal Freriks
d3b0c32eb7 fix: topic content
The statement was not true, as technically, global variables are also able to be declared
2025-01-21 23:22:50 +06:00
Karim Safan
37ca08f956 feat: add topic content resources
* Update dml@tcQSH-eAvJUZuePTDjAIb.md

adding two resource for DML

* Update src/data/roadmaps/computer-science/content/dml@tcQSH-eAvJUZuePTDjAIb.md

* Update src/data/roadmaps/computer-science/content/dml@tcQSH-eAvJUZuePTDjAIb.md

---------

Co-authored-by: Arik Chakma <arikchangma@gmail.com>
2025-01-21 23:17:52 +06:00
Said-BT
b40ec83137 fix: add topic content resources
* Update tuples@i7xIGiXU-k5UIKHIhQPjE.md

added 2 resources as this section has nothing.

* Update tuples@i7xIGiXU-k5UIKHIhQPjE.md

* Update src/data/roadmaps/python/content/tuples@i7xIGiXU-k5UIKHIhQPjE.md

---------

Co-authored-by: Arik Chakma <arikchangma@gmail.com>
2025-01-21 23:13:34 +06:00
psychobioMACHINE
edc7de8226 feat: add topic content resource
Added "freeCodeCamp | Responsive Web Design Certification" to HTML and CSS. [url: "

https://www.freecodecamp.org/learn/2022/responsive-web-design/

"]
It is a free certification with step-by-step guided projects in HTML & CSS.
The final project is even your first webpage portfolio.
2025-01-21 23:12:14 +06:00
psychobioMACHINE
5bffdebeb8 feat: add topic content resource
Added "freeCodeCamp | Responsive Web Design Certification" to HTML and CSS. [url: "

https://www.freecodecamp.org/learn/2022/responsive-web-design/

"]
It is a free certification with step-by-step guided projects in HTML & CSS.
The final project is even your first webpage portfolio.
2025-01-21 23:11:36 +06:00
Jawher Kl
e5e902a268 fix: topic content resource 2025-01-21 23:03:07 +06:00
Milen Todev
5842b0a692 fix: typo in backend-beginner (#8002)
This pull request corrects a typo in the instructions on the right-hand side. The word "knowledge" was incorrectly spelled as "konwledge."

Changes:
Corrected the typo from "konwledge" to "knowledge" in the instructions.
2025-01-21 22:59:16 +06:00
mrlane51
f1592571db feat: add topic content resources
Added a useful detailed video of Resource Management that is easily digestible.
2025-01-21 22:54:30 +06:00
xaviduds
4058dff406 fix: grammar typo Priviliges -> Privileges (#8016)
Commits done in PostgreSQL Roadmap
2025-01-21 22:35:15 +06:00
Abhay Shukla
5a813eea04 feat: add topic content resources
* Update how-computers-calculate@GDLKJkKgB-i7n0YcV2NDa.md

I have added short description so that learner should not roam and can get overview of the topic.

* Update src/data/roadmaps/computer-science/content/how-computers-calculate@GDLKJkKgB-i7n0YcV2NDa.md

---------

Co-authored-by: Arik Chakma <arikchangma@gmail.com>
2025-01-21 22:16:18 +06:00
Shivam Kumar
e577ba095f feat: add topic content resource
Added Design Guidelines to the title and resources from IxD Foundation regarding User Interface design guidelines.
2025-01-21 22:12:17 +06:00
Attila Maraz
069cb6fc06 fix: topic content resources 2025-01-21 22:01:50 +06:00
Priyanshu Maurya
b0a3cdc8c4 fix: add topic content resource
* Update 101-docker-compose.md

* Added type (Update 101-docker-compose.md)
2025-01-21 22:00:08 +06:00
Priyanshu Maurya
536a79ef59 fix: topic content resources
previous link

https://www.docker.com/blog/docker-cli-commands-cheat-sheet/

has been expired 

I replaced it with this 

https://docs.docker.com/get-started/docker_cheatsheet.pdf
2025-01-21 21:58:16 +06:00
Anshuman Singh
5a132b6f07 fix: typo mistake 'Fareness' changed to 'Fairness' #8041 (#8043)
Co-authored-by: Arik Chakma <arikchangma@gmail.com>
2025-01-21 21:31:29 +06:00
任跃兵
e3b56ab716 fix: topic content resources 2025-01-21 21:29:04 +06:00
任跃兵
2d8030a175 fix: topic content resources 2025-01-21 21:28:33 +06:00
Rikuya Osawa
dca2ba5fac feat: add resource for linux service management (#8053)
Added hands-on resource for Linux service management. LabEx is an excellent guide which explores Linux service management through systemd and systemctl.
2025-01-21 21:27:19 +06:00
LaralenaV
16fc4b08ff fix: add top content resources
Added resources: article and video
2025-01-21 21:26:24 +06:00
Fuchen Shi
7a7590d872 fix: incorrect descriptions of the P = NP problem (#8084) 2025-01-21 21:23:56 +06:00
Glitchagon
073708e7e9 fix: resource content grammar
Fixed a couple spelling errors in the Use Delimiters section of the Prompt Engineering course.
2025-01-21 21:22:22 +06:00
Glitchagon
66a8c2e73c fix: resource content grammar
Fixed grammar and spelling errors in the Types of LLM's page of Prompt Engineering course.
2025-01-21 20:55:39 +06:00
github-actions[bot]
34425019b7 chore: update roadmap content json (#8083)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2025-01-21 20:54:48 +06:00
Arik Chakma
699e05a3b4 fix: user progress modal percentage (#8082) 2025-01-20 17:44:41 +00:00
Kamran Ahmed
3bd379692f Add AI roadmap link 2025-01-20 17:27:38 +00:00
Arik Chakma
22f29a12f9 feat: add copy content (#8001) 2025-01-20 11:09:39 +00:00
Abraham J. Olaobaju
2640c82167 Add content to patterns (#8074)
* Update patterns--design-principles@_U0VoTkqM1d6NR13p5azS.md

* Update src/data/roadmaps/software-architect/content/patterns--design-principles@_U0VoTkqM1d6NR13p5azS.md

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2025-01-20 11:06:52 +00:00
Rikuya Osawa
9ff560b1fd fix: replace unavailable resource and add more description (#8079) 2025-01-20 11:06:05 +00:00
github-actions[bot]
e16866009a chore: update roadmap content json (#8077)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2025-01-20 11:05:27 +00:00
Alberto Belalcazar
2085a31894 fix: updated link - Redis URL Docs (#8081) 2025-01-20 10:47:48 +00:00
Ed Lan
0534e99093 Fix typo (#8067) 2025-01-18 01:36:30 +00:00
za4g
19a6cb20ec fix: resource content title typo
Typo - Spelling of Fairness
2025-01-18 07:33:57 +06:00
SangHyun Kim
7b59b5862e fix: dedupe the same redirect link (#8065) 2025-01-18 07:26:48 +06:00
github-actions[bot]
3d2db1b46e chore: update roadmap content json (#8062)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2025-01-18 07:20:51 +06:00
Kamran Ahmed
8cf272431d Fix spacing in license 2025-01-17 20:06:55 +00:00
Kamran Ahmed
b05f6148ac Add devops vs devsecops guide 2025-01-17 16:06:33 +00:00
Kamran Ahmed
19dd7f7f4f Add devops vs agile guide 2025-01-17 15:46:12 +00:00
Kamran Ahmed
a22867bd96 Add devops job description guide 2025-01-17 15:36:54 +00:00
Kamran Ahmed
23eb9b6626 Fix code formatting 2025-01-17 12:12:25 +00:00
Kamran Ahmed
2d3c86ceff Add guide 2025-01-17 12:12:25 +00:00
Vedansh
5e97ded10d Fix formatting of backend questions (#8014) 2025-01-17 01:39:52 +00:00
Vedansh
cbd290baa2 Improve devops questions formatting (#8015)
* refractor complete

* fix url
2025-01-17 01:39:26 +00:00
Vedansh
da968b6d5b Improve devops guides (#8035) 2025-01-17 01:39:04 +00:00
Vedansh
07ebf3585d Improve backend guides (#8036) 2025-01-17 01:38:44 +00:00
Kamran Ahmed
26b5ccd10f Add tutorial about making golang rest api 2025-01-17 01:16:01 +00:00
Kamran Ahmed
3c03cb46f7 Add faq for devops and new guide 2025-01-16 23:35:34 +00:00
github-actions[bot]
514edea44e chore: update roadmap content json (#8050)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2025-01-17 04:33:37 +06:00
Rikuya Osawa
f0b740bfb2 fix: remove unavailable video resource (#8054) 2025-01-17 04:29:48 +06:00
任跃兵
8e68f7230c feat: add topic content resource 2025-01-17 04:29:12 +06:00
任跃兵
090100d784 feat: add topic content resource 2025-01-17 04:28:40 +06:00
任跃兵
e9e100d46e feat: add topic content resource 2025-01-17 04:27:48 +06:00
任跃兵
c2a206ac37 feat: content resource 2025-01-17 04:22:55 +06:00
Vedansh
05d36c898e refractor: optimize remaining guides 2025-01-15 22:27:08 +06:00
任跃兵
d4c33930b5 fix: content resource
* Update v-on@hVuRmhXVP65IPtuHTORjJ.md

* Update src/data/roadmaps/vue/content/v-on@hVuRmhXVP65IPtuHTORjJ.md

---------

Co-authored-by: Arik Chakma <arikchangma@gmail.com>
2025-01-15 22:25:39 +06:00
Vedansh
7a931f2f3b refractor: cleanup and optimize few guides. (#8039)
* cleanup both frontend and full stack guides.

* Update src/data/guides/frontend-languages.md

* Update src/data/guides/full-stack-vs-software-engineer.md

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2025-01-14 11:12:58 +00:00
github-actions[bot]
565ec779dc chore: update roadmap content json (#8027)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2025-01-13 14:00:26 +06:00
Alan Klimowski
e716765f01 fix: topic content resource issue
Fixing visual bug due to a link getting into the main list and not being parsed correctly
2025-01-13 01:04:53 +06:00
github-actions[bot]
3b274f3b0a chore: update roadmap content json (#8006)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2025-01-13 01:02:37 +06:00
Vedansh
1623d09de6 fix: refractor frontend questions (#8017) 2025-01-13 01:01:51 +06:00
J. Degand
d2bf09b405 fix: remove unused import (#8022) 2025-01-13 00:58:02 +06:00
coderhxjin
f3110e99f6 fix: content resource type
the CS 61B Lecture is a video instead of an article
2025-01-09 16:59:18 +06:00
github-actions[bot]
cdc6591765 chore: update roadmap content json (#7999)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2025-01-09 16:57:48 +06:00
Max Culley
96db3e3920 fix: spelling error on system design roadmap (#7992) 2025-01-08 11:06:58 +06:00
Gertscc
f7df0acc90 fix: remove unrelated content
Deleted content which had nothing to do with this topic.
2025-01-08 11:06:14 +06:00
ACHMAD IRIANTO EKA PUTRA
1480b20dcb feat: add GoFiber in web frameworks
Add GoFiber
2025-01-08 10:54:47 +06:00
github-actions[bot]
e11ce51b09 chore: update roadmap content json (#7990)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2025-01-07 21:54:15 +06:00
coderhxjin
3c7761cbe8 fix: content typo
fix typo: endianess->endianness

Add two articles(one from MDN; another from freecodecamp)
2025-01-06 22:32:06 +06:00
github-actions[bot]
65996a6982 chore: update roadmap content json (#7987)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2025-01-06 22:30:17 +06:00
Ty
99b1859de2 fix: roadmap topic typo
Co-authored-by: = <=>
2025-01-05 18:22:58 +06:00
Ivan Delgado
7b2a047046 fix: content typo
Typo. "xxplainability" should be "explainability".
2025-01-05 18:21:04 +06:00
Mohammed Hafeez
6bbf384b73 feat: add content resources
* Update index.md

Added a resource which i felt is important.

* Update index.md

fixing following guidelines

* Update index.md based on guide.
2025-01-05 18:20:24 +06:00
Omkar Shisode
4bd1c4aebc feat: add observer resource
Best document that explain very well design patterns
2025-01-05 18:18:50 +06:00
Ivan Delgado
14835464de fix: content typo 2025-01-05 18:17:28 +06:00
Jawher Kl
020def730d fix: replace broken link
* Update index.md

* fix: title

---------

Co-authored-by: Arik Chakma <arikchangma@gmail.com>
2025-01-05 18:14:41 +06:00
github-actions[bot]
ca1cad9bfc chore: update roadmap content json (#7969)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2025-01-03 22:53:12 +06:00
Rikuya Osawa
5ac086036e fix: resource tag inconsistencies (#7922)
* fix: apply@-BtF34cEzI6J8sZCDRlRE.md

* fix: bind@dbercnxXVTJXMpYSDNGb2.md
2025-01-01 16:59:08 +06:00
Fuchen Shi
5fbec97c8d fix: incorrect descriptions of asymptotic notations (#7929) 2025-01-01 16:58:34 +06:00
Atharva Shah
94bc36d67e fix: unnecessary code blocks on opengraph data(#7958) 2025-01-01 16:56:48 +06:00
Nicolás Ramírez
98997800b9 fix: deprecated link in React Native roadmap (#7964) 2025-01-01 16:55:01 +06:00
github-actions[bot]
9b32685e88 chore: update roadmap content json (#7957)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2025-01-01 16:53:35 +06:00
Albin David C
9d0c2667fc fix: Angular and history (#7928)
* Update angular-and-history@hpShWwL0M57ZAzqkB4I8t.md

* Update angular-and-history@hpShWwL0M57ZAzqkB4I8t.md
2024-12-30 12:33:20 +06:00
Blossom Woo
aa3c065b51 fix: typo in System Design roadmap (#7953) 2024-12-30 12:31:26 +06:00
github-actions[bot]
657ee41900 chore: update roadmap content json (#7954)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2024-12-30 12:30:44 +06:00
Kamran Ahmed
ad203cca4e Update contribution guidelines 2024-12-29 15:35:23 +00:00
Tom
b83eedbb68 Update content for docker for desktop (#7948) 2024-12-29 15:32:30 +00:00
Kamran Ahmed
0d8b039114 Prepare for 2025 2024-12-29 15:31:49 +00:00
Durgeshhirani
0a1705fdc1 fix: PHP intro URL
Fix php introduction URL
2024-12-29 21:28:08 +06:00
Vedansh
a2063c2822 Improve AI engineer content (#7924) 2024-12-29 15:27:19 +00:00
Vedansh
4c6f0a1234 Improve backend roadmap content (#7949) 2024-12-29 15:26:34 +00:00
Kamran Ahmed
b1d87ae639 Prepare for 2025 2024-12-29 15:24:23 +00:00
github-actions[bot]
609faeacef chore: update roadmap content json (#7927)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2024-12-26 04:36:24 +06:00
Vedansh
6469ef3078 feat: improve full-stack roadmap 2024-12-22 22:25:00 +06:00
github-actions[bot]
721456a82e chore: update roadmap content json (#7920)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2024-12-22 07:29:43 +06:00
RemyyS
ef958779d6 fix: typo in Sphinx (#7918)
Fixed Typo in roadmaps/python/content/sphinx 
-line 7
Changed "Spihnx" to "Sphinx"
2024-12-22 02:37:49 +06:00
Arman Toreniyazov
77ca038e8c Typo in TS docs (#7869) 2024-12-21 13:25:57 +00:00
Hunter Beckmann
e52608a48a Add functional programming in python course (#7873) 2024-12-21 13:24:08 +00:00
Gildas Quéméner
85cc58b85e Add DDD modeling guide (#7907)
* Guide DDD newcomers towards the Starter Modelling Process

* Update src/data/roadmaps/software-architect/content/ddd@IIelzs8XYMPnXabFKRI51.md

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2024-12-21 13:23:01 +00:00
Mohammed Bahumaish
d9ec7b71ec Fix broken link (#7910) 2024-12-21 13:20:03 +00:00
James Teddy
80d4d37e5c Rewrite pick a language (#7914) 2024-12-21 13:19:39 +00:00
Kamran Ahmed
c584325a7d Add changelog entry 2024-12-21 13:16:38 +00:00
Kamran Ahmed
942050e56c Add php and postgre roadmap assets 2024-12-21 11:19:37 +00:00
github-actions[bot]
7cfdfaab1f chore: update roadmap content json (#7911)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2024-12-21 02:51:16 +06:00
Maxat Akbanov
8148cb23ad Fix typo in word "IMAPS" in DevOps roadmap (#7909)
* Fix broken link in Kubernetes Roadmap (#6343)

* Add missing naming for Cloud Design Patterns link in DevOps roadmap

* DevOps roadmap: Fix typo in ECS official link

* Change title to IMAP in devops roadmap

* Change label name to IMAP

* Change name to imap
2024-12-20 09:05:07 +00:00
Kamran Ahmed
9e15f59660 fix: typo in imaps in devops roadmap 2024-12-20 09:04:50 +00:00
Vedansh
2b07b2d4cd Add workflow to refactor new contributors (#7912) 2024-12-20 09:03:26 +00:00
Kamran Ahmed
00c288855e Remove redundant link 2024-12-19 12:20:17 +00:00
Brian Travis
b7848fd73c Fix typo in getting started page Engineering Manager card title (#7905) 2024-12-19 07:23:11 +00:00
github-actions[bot]
de1f9fc2d2 chore: update roadmap content json (#7904)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2024-12-19 06:13:25 +06:00
Rikuya Osawa
8cf5765349 fix: replace the missing resource with another resource (#7887) 2024-12-18 14:52:35 +00:00
github-actions[bot]
b4621733be chore: update roadmap content json (#7892)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2024-12-18 12:33:20 +00:00
fellalli
b7eb3166ed Make logo clickable (#7891)
Clickable logo
2024-12-18 10:55:30 +00:00
Kamran Ahmed
534a27e7a7 Add devops FAQ and related guides 2024-12-18 08:12:45 +00:00
Aleks Henderson
0c355f3cef Add content for cross functional collaboration (#7898)
Added text from Cross-functional collaboration part
2024-12-18 08:05:17 +00:00
Kamran Ahmed
3a72911bc6 Add new guide 2024-12-17 22:08:26 +00:00
Vedansh
6c099db875 Add content to PHP roadmap (#7895)
* Section 1

* Section 2

* Section 3

* Section 4

* Section 5
2024-12-17 21:40:19 +00:00
Kamran Ahmed
8b80f4b00b Add missing content for system design roadmap 2024-12-17 15:30:55 +00:00
Kamran Ahmed
7abe4ab91d Revamp system design content 2024-12-17 12:04:36 +00:00
Jayaram R
c5f1e383c7 feat: add resource (#7876)
* Update 100-inodes.md

* Update src/data/roadmaps/linux/content/110-disks-filesystems/100-inodes.md

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2024-12-16 15:08:01 +06:00
Vedansh
2b5134e0a5 Refractor DevOps Roadmap (#7883)
* Refractor Every Topic.

* Update src/data/roadmaps/devops/content/drone@TsXFx1wWikVBVoFUUDAMx.md

---------

Co-authored-by: Arik Chakma <arikchangma@gmail.com>
2024-12-16 15:06:16 +06:00
github-actions[bot]
f3b325e72f chore: update roadmap content json (#7881)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2024-12-14 23:51:13 +06:00
Vedansh
78084be9a4 fix: rollback a previously deleted file. (#7879)
* Spawn Required File.

Spawn programming-language@v5FGKQc-_7NYEsWjmTEuq.md

* fix: minor formatting

---------

Co-authored-by: Arik Chakma <arikchangma@gmail.com>
2024-12-14 15:26:10 +06:00
Arik Chakma
bfcb32bd57 fix: schedule learning time frequency (#7871) 2024-12-13 20:19:59 +05:00
Jawher Kl
2623d7abeb Fix 404 error on content file (#7877) 2024-12-13 19:49:54 +05:00
github-actions[bot]
90e20fcd8f chore: update roadmap content json (#7866)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2024-12-11 17:57:40 +06:00
Kamran Ahmed
78f28fb18e Add PHP roadmap content 2024-12-10 17:46:12 +05:00
Kamran Ahmed
412676b0c7 Add projects to php roadmap 2024-12-10 15:09:20 +05:00
github-actions[bot]
c45314c991 chore: update roadmap content json (#7862)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2024-12-10 10:25:59 +05:00
duds
d8aab6180c Fix typo in TypeScript roadmap (#7854)
* Fix typo roadmap/typescript/namespace-a[gu -> ug]mentation

tldr: fix typo: namespace-agumentation....md -> namespace-augmentation....md

Long Version:
Rename namespace-agumentation@16TT8R4N-9tCfWmPetqMP.md to namespace-augmentation@16TT8R4N-9tCfWmPetqMP.md

Fixes english typo in topic name.

* typescript.json: label change for namespace-augmentation typofix

changed "label": "Namespace A[gu -> ug]mentation"
2024-12-10 10:25:25 +05:00
Kamran Ahmed
3727b33000 Add PHP roadmap references 2024-12-10 10:23:42 +05:00
Kamran Ahmed
fd97b2810e Add directory structure for PHP roadmap 2024-12-09 17:40:30 +05:00
Kamran Ahmed
62a8a5836c Add PHP roadmap 2024-12-09 17:40:30 +05:00
SantiagoN
ca696e6f01 fix: typo in data analyst roadmap
I discovered a grammatical error where "Analaysis" was written instead of "Analysis"
2024-12-09 13:38:47 +06:00
Vedansh
64b5bdfbe2 Improve content in terraform roadmap (#7852) 2024-12-09 10:25:52 +05:00
github-actions[bot]
6c9b0c1fb8 chore: update roadmap content json (#7847)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2024-12-08 00:51:09 +06:00
Kamran Ahmed
03c85f29c8 Make the question on the roadmap top sticky 2024-12-06 11:59:11 +05:00
Kamran Ahmed
c96886c929 Fix canonical tag issue 2024-12-06 08:02:13 +05:00
Hermes
f3584f8af6 Fix spelling mistake (#7836)
spelling correction
2024-12-05 20:14:55 +05:00
Jayaram R
7daf1e213b Add resource for Uptime Load in Linux (#7838)
* Resource for Uptime Load in Linux

Added 2 article link.

* Update src/data/roadmaps/linux/content/105-server-review/100-uptime-load.md

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2024-12-05 20:14:37 +05:00
Ed Lan
7d461a44b4 Reference tweaks for new guides (#7845)
* Update faqs.astro

* Update devops-shift-left-testing.md

* Update devops-principles.md

* Update devops-best-practices.md

* Update frontend-job-description.md

* Update how-to-become-frontend-developer.md

* Update frontend-languages.md

* Update frontend-developer-skills.md

* Update frontend.md

* Update css-variables.md

* Update devops-automation.md

* Update faqs.astro

* Update how-to-become-devops-engineer.md

* Update devops-career-path.md

* Update devops-vs-full-stack.md

* Update devops-principles.md

* Update devops-automation.md

* Update devops-lifecycle.md

* Update devops-shift-left-testing.md

* Update backend-languages.md

* Update backend-developer-skills.md

* Update backend-project-ideas.md

* Update backend-job-description.md

* Update devops-best-practices.md

* Update devops-career-path.md

* Update devops-lifecycle.md

* Update devops-principles.md

* Update devops-shift-left-testing.md

* Update devops-shift-left-testing.md

* Update devops-skills.md

* Update devops-vs-full-stack.md

* Update how-to-become-devops-engineer.md

* Update frontend-developer-skills.md

* Update frontend-job-description.md

* Update frontend-languages.md

* Update frontend-web-developer-portfolio.md

* Update how-to-become-frontend-developer.md
2024-12-05 20:11:50 +05:00
Kamran Ahmed
e2926012f4 Remove links from images 2024-12-05 20:10:52 +05:00
Vedansh
a5afac7d6d Improve QA roadmap content (#7842)
* Part E

* Part F

* Part G
2024-12-05 17:32:16 +05:00
Vedansh
e734563996 wip: refractor QA roadmap (#7841)
* Part C

* Part D

* Update src/data/roadmaps/qa/content/espresso@stMeB1U3SfuefZ-yS8wGF.md

---------

Co-authored-by: Arik Chakma <arikchangma@gmail.com>
2024-12-05 18:01:44 +06:00
Vedansh
cc3db36fc2 wip: refractor QA roadmap (#7840)
* Part A

* Part B
2024-12-05 11:43:31 +06:00
Chaitanya Shimpi
d6e842169a Fix spelling mistakes (#7839) 2024-12-04 21:51:55 +05:00
Maxat Akbanov
96de0f98df Fix typo in ECS official link (#7835)
* Fix broken link in Kubernetes Roadmap (#6343)

* Add missing naming for Cloud Design Patterns link in DevOps roadmap

* DevOps roadmap: Fix typo in ECS official link
2024-12-04 21:51:26 +05:00
Kamran Ahmed
4c05f135f0 feat: remember authenticated redirect URL after login (#7832)
* feat: remember authenticated redirect URL after login

* feat: remember authenticated redirect URL after login
2024-12-03 22:27:45 +05:00
github-actions[bot]
a81c435500 chore: update roadmap content json (#7813)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2024-12-03 14:27:24 +06:00
Vedansh
add174a69b Refractor Entire Roadmap. (#7828) 2024-12-02 20:47:12 +05:00
Mauricio Pasten
9023073f9b Adding article of design patterns guide with examples (#7815)
* Adding article of design patterns guide with examples

* Update src/data/roadmaps/backend/content/gof-design-patterns@6XIWO0MoE-ySl4qh_ihXa.md

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2024-12-02 09:55:26 +05:00
Jayaram R
e8082ae75e Add resources for text processing (#7817)
Added Some Resources for Linux -> Text Processing
2024-12-02 09:52:48 +05:00
Himanshu Pareek
e43bb2c1f8 Adds resource for scrypt (#7824)
* Corrects resources

Existing resources point to sCrypt, which is a Web3 Development Platform

* Update scrypt@kGTALrvCpxyVCXHRmkI7s.md

* Update scrypt@kGTALrvCpxyVCXHRmkI7s.md
2024-12-02 09:50:39 +05:00
Joshi Prashant
d9cbc2f56e fix: correct link for client side game development (#7823) 2024-12-01 21:37:16 +06:00
Vedansh
6158d4def8 Improve software architect roadmap content (#7821)
* Phase A

* Phase B

* Phase C

* Phase D

* Phase E

* Phase F

* Phase - G

* Phase H

* Phase - I

* Phase - J

* Phase - <K>
2024-12-01 20:12:47 +05:00
Vedansh
a317d90f14 Improve PostgreSQL DBA roadmap (#7822) 2024-12-01 20:08:30 +05:00
Maxat Akbanov
8e1ba1eae2 DevOps roadmap: Missing name for the official link of Cloud Design Patterns (#7811)
* Fix broken link in Kubernetes Roadmap (#6343)

* Add missing naming for Cloud Design Patterns link in DevOps roadmap
2024-11-30 16:38:53 +05:00
Viktor Kolev
fa3312f70c Fix typo in AI roadmap (#7804) 2024-11-29 15:49:38 +05:00
github-actions[bot]
d7ed3a1cb5 chore: update roadmap content json (#7805)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2024-11-29 15:49:07 +05:00
shresth-kumar-lal
68675d6c16 Replace obsolete links (#7809)
Updated the obsolete link with new and maintained one.

Old link contents had been obsoleted since (02/2023) and contents are migrated to https://btrfs.readthedocs.io and https://btrfs.docs.kernel.org

New links also include new changes and features.
2024-11-29 14:27:05 +05:00
Kamran Ahmed
7ba2d22463 Remove the "Feature" button from AI generated roadmaps 2024-11-29 11:55:17 +05:00
Kamran Ahmed
18f77a01f8 Add devops tools guide 2024-11-29 11:48:05 +05:00
Kamran Ahmed
faf70f6e35 Add frontend technologies guide 2024-11-29 11:22:26 +05:00
Kamran Ahmed
bf734b0294 Update project announcement 2024-11-28 08:58:45 +05:00
Kamran Ahmed
266d357e2a Make TOC sticky on guides 2024-11-27 21:44:33 +05:00
Kamran Ahmed
addf973c81 Add related guides on mobile 2024-11-27 21:44:33 +05:00
Ed Lan
8d841b1bf2 Update guides (#7802)
* Update faqs.astro

* Update devops-shift-left-testing.md

* Update devops-principles.md

* Update devops-best-practices.md

* Update frontend-job-description.md

* Update how-to-become-frontend-developer.md

* Update frontend-languages.md

* Update frontend-developer-skills.md

* Update frontend.md

* Update css-variables.md

* Update devops-automation.md

* Update faqs.astro

* Update how-to-become-devops-engineer.md

* Update devops-career-path.md

* Update devops-vs-full-stack.md

* Update devops-principles.md

* Update devops-automation.md

* Update devops-lifecycle.md

* Update devops-shift-left-testing.md

* Update backend-languages.md

* Update backend-developer-skills.md

* Update backend-project-ideas.md

* Update backend-job-description.md
2024-11-27 19:59:34 +05:00
Ni Jannasch
c099f341b5 Update title from Infrastructure as Cloud to Infrastructure as Code (#7801)
* Rename understand-the-concept-of-infrastructure-as-cloud@RJctUpvlUJGAdwBNtDSXw.md to understand-the-concept-of-infrastructure-as-code@RJctUpvlUJGAdwBNtDSXw.md

Fix the name of the page

* Update cyber-security.json
2024-11-27 18:11:23 +05:00
Kamran Ahmed
6f38dcccb8 Refactor related guides functionality (#7800) 2024-11-27 15:52:23 +05:00
Arik Chakma
9d65c49b8d fix: hide loading screen on error (#7798) 2024-11-27 13:27:51 +06:00
Ed Lan
64a31481e7 Various touch ups for frontend and devops guides (#7793)
* Update faqs.astro

* Update devops-shift-left-testing.md

* Update devops-principles.md

* Update devops-best-practices.md

* Update frontend-job-description.md

* Update how-to-become-frontend-developer.md

* Update frontend-languages.md

* Update frontend-developer-skills.md

* Update frontend.md

* Update css-variables.md
2024-11-27 12:12:28 +05:00
Abderrahmane Lazraq
d1edda8940 What is engineering management? (#7794)
* What is engineering management?

* Update src/data/roadmaps/engineering-manager/content/what-is-engineering-management@_hYN0gEi9BL24nptEtXWU.md

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2024-11-27 12:11:15 +05:00
Arik Chakma
43849e758e feat: showcase roadmap (#7791)
* wip

* wip

* fix: status issue

* feat: update UI

* wip

* wip: showcase status

* wip: showcase listing

* feat: update showcase status

* chore: update roadmap content json (#7738)

Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>

* Fix issue in sticky top ad

* Add preloading of ad image

* feat(backend): update unit testing node resources (#7743)

* feat: container orchestration

* Update container-orchestration@Yq8kVoRf20aL_o4VZU5--.md

Simplified content and added working links to resources for better clarity and learning.

* Update container-orchestration@Yq8kVoRf20aL_o4VZU5--.md

Replace content and added working links to resources for better clarity and learning.

* Update container-orchestration@Yq8kVoRf20aL_o4VZU5--.md

* Update src/data/roadmaps/devops/content/container-orchestration@Yq8kVoRf20aL_o4VZU5--.md

---------

Co-authored-by: Arik Chakma <arikchangma@gmail.com>

* docs: fix typos and improve grammar in documentation (#7747)

Corrects typos and grammatical errors in various markdown files to enhance clarity and readability.

* feat: add PearAI code editor

Added PearAI to the list of AI Code Editors (An Open Source Option for developers!)

* chore: update roadmap content json (#7751)

Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>

* feat: center of mass explain video (#7754)

video addition explaining COM better

* Ad new changelog entry

* Update C# link to correct URL (#7757)

* Add engineering manager roadmap

* chore: update roadmap content json (#7758)

Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>

* Update frontend FAQs (#7764)

Tweaked the first two Qs

* Update DevOps skills (#7763)

Added internal refs

* Add ref to DevOps roadmap in guide (#7762)

Added roadmap ref.

* Add engineering manager roadmap

* Update engineering manager roadmap content

* Update engineering manager roadmap

* Add content to engineering manager roadmap

* chore: update roadmap content json (#7768)

Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>

* fix: postgresql link (#7766)

* fix(typo): comma todo-list-api.md (#7772)

* Add new link of Redis in FullStack (#7771)

* chore: update roadmap content json (#7778)

Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>

* Add content to vue.js performance (#7777)

* Update performance@f7N4pAp_jBlT8_8owAcbG.md

* Update src/data/roadmaps/vue/content/performance@f7N4pAp_jBlT8_8owAcbG.md

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>

* Update resources for Authentication (#7745)

* Update authentication-vs-authorization@WG7DdsxESm31VcLFfkVTz.md

replaced a wrong article with one about biometrics

* Update understand-common-exploit-frameworks@Lg7mz4zeCToEzZBFxYuaU.md

link redirects to a Thai gambling game site

* Add resource for rest-assured (#7737)

## Content

I’ve added a beginner-friendly article, A Guide to REST-assured, from Baeldung to the REST Assured section. If there’s anything that doesn’t meet the format, please feel free to comment. Thanks😊.

## Issue
Fixed #7736

* Add UX design resource (#7710)

* Update conceptual-design@r6D07cN0Mg4YXsiRSrl1_.md

I have added an article by Dan Nessler on How to apply a design thinking, HCD, UX or any creative process from scratch which is a how-to article aims at providing designers, creative thinkers or even project managers with a tool to set up, frame, organise, structure, run or manage design challenges, and projects: The Double Diamond revamped.

* Update conceptual-design@r6D07cN0Mg4YXsiRSrl1_.md

I have added an article by Dan Nessler on How to apply a design thinking, HCD, UX or any creative process from scratch which is a how-to article aims at providing designers, creative thinkers or even project managers with a tool to set up, frame, organise, structure, run or manage design challenges, and projects: The Double Diamond revamped.

* Add user personas resource to UX design (#7709)

Added more resources from IxD Foundation and NN group.

Co-authored-by: Shivam Kumar <85393390+TinyTijil@users.noreply.github.com>

* Add linked in content (#7695)

* Update linkedin@6UR59TigEZ0NaixbaUIqn.md

* Update src/data/roadmaps/devrel/content/linkedin@6UR59TigEZ0NaixbaUIqn.md

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>

* Added article on AuthN vs AuthZ (#7694)

Added a guide on the difference between authentication and authorization, since these terms are often confused.

* Add a video to the Decentralization section (#7692)

* adding a video to the Decentralization section

* adding a video to the Decentralization section

* Fixes typo in 104-proc-priorities.md (#7684)

Old: renice +5
New: renice -5

From my research, after reading the topic in the Linux roadmap, it didnt make sense that increasing the priority of a process was made by +5, the topic said that a negative number makes the priority higher, so do many articles on the internet.

* Add bastion host and file integrity checker idea

* Add pomodoro timer project idea

* Add project idea for quiz app

* chore: update roadmap content json (#7785)

Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>

* fix typo in dockerhub alternatives (#7780)

Co-authored-by: Fabio Stabile <fabio.stabile@mia-platform.eu>

* Add content to engineering manager roadmap (#7779)

* Update system-design-and-architecture@iX4HPgoiEbc_gze1A01n4.md

* Update src/data/roadmaps/engineering-manager/content/system-design-and-architecture@iX4HPgoiEbc_gze1A01n4.md

* Update src/data/roadmaps/engineering-manager/content/system-design-and-architecture@iX4HPgoiEbc_gze1A01n4.md

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>

* Add project idea for stories feature

* Add weather app project idea

* Update project ideas

* Add engineering manager roadmap content

* Update engineering manager roadmap content

* Add DevOps best practices guide

* Add AI Engineer introduction video (#7788)

* Added Introduction Video

* Changed formatting

* Update src/data/roadmaps/ai-engineer/content/introduction@_hYN0gEi9BL24nptEtXWU.md

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>

* chore: update roadmap content json (#7789)

Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>

* Add devops automation tools

* Add featuring functionality

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
Co-authored-by: Rogério Ferreira de Souza <rogeriofrsouza@gmail.com>
Co-authored-by: Jawher Kl <kalleljawher4@gmail.com>
Co-authored-by: garyellow <gary20011110@gmail.com>
Co-authored-by: Nang <nathanang2000@gmail.com>
Co-authored-by: FormerlyWD <156501761+FormerlyWD@users.noreply.github.com>
Co-authored-by: dudi vaichledere <117650526+dudi-w@users.noreply.github.com>
Co-authored-by: Ed Lan <165309301+Edlan01@users.noreply.github.com>
Co-authored-by: elias_sisay <87943132+eliassisay@users.noreply.github.com>
Co-authored-by: feelsgoodfrog <gudrb963@gmail.com>
Co-authored-by: Gustavo Martins Pereira <gustavo.martins.pereira.main@gmail.com>
Co-authored-by: Maksymilian <maxsapa@gmail.com>
Co-authored-by: b4haa7 <69992780+88BahaaAdel88@users.noreply.github.com>
Co-authored-by: Wick Dynex <1328032567@qq.com>
Co-authored-by: Shivam Kumar <85393390+kshivam14@users.noreply.github.com>
Co-authored-by: Shivam Kumar <85393390+TinyTijil@users.noreply.github.com>
Co-authored-by: Yanbo Wang <yanbotravelaroundworld@gmail.com>
Co-authored-by: Lisa Dziuba <lisa@flawlessapp.io>
Co-authored-by: Karamoko Israël Abdelaziz Axel <72276211+karamokoisrael@users.noreply.github.com>
Co-authored-by: duds <xaviduds@gmail.com>
Co-authored-by: Fabio Stabile <93452841+fabioS24@users.noreply.github.com>
Co-authored-by: Fabio Stabile <fabio.stabile@mia-platform.eu>
Co-authored-by: Naresh Thakur <122244033+thinklikeacto@users.noreply.github.com>
Co-authored-by: Gustaf <79180496+GGyll@users.noreply.github.com>
2024-11-27 12:07:59 +05:00
Umut
ee95280452 fix: a broken link, an image, and punctuation (#7795)
* introduction-to-llms.md - editing a broken link and an image, and punctuation

- Editing the URL of the image, it was broken.
- Editing the URL of BERT, it was broken.
- Some punctuation corrections

* Reverted the URL update 

Because the URL of BERT was broken, I had updated it. But the previous URL works now.
2024-11-27 08:09:31 +06:00
github-actions[bot]
d01678ad56 chore: update roadmap content json (#7796)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2024-11-27 08:07:51 +06:00
Kamran Ahmed
1cf9adab25 Remove author from base layout 2024-11-26 21:02:26 +05:00
Kamran Ahmed
a837f9b0a1 Add devops automation tools 2024-11-26 10:09:57 +05:00
github-actions[bot]
e48c57e205 chore: update roadmap content json (#7789)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2024-11-26 07:43:12 +05:00
Gustaf
436d0580b4 Add AI Engineer introduction video (#7788)
* Added Introduction Video

* Changed formatting

* Update src/data/roadmaps/ai-engineer/content/introduction@_hYN0gEi9BL24nptEtXWU.md

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2024-11-26 07:42:59 +05:00
Kamran Ahmed
ecd0624d51 Add DevOps best practices guide 2024-11-26 07:41:35 +05:00
Kamran Ahmed
7f97085b2c Update engineering manager roadmap content 2024-11-25 18:11:27 +05:00
Kamran Ahmed
f4f74df5d4 Add engineering manager roadmap content 2024-11-25 18:01:37 +05:00
Kamran Ahmed
8845c05dd3 Update project ideas 2024-11-25 10:10:11 +05:00
Kamran Ahmed
35a48f9a28 Add weather app project idea 2024-11-25 09:36:47 +05:00
Kamran Ahmed
b41caff321 Add project idea for stories feature 2024-11-25 09:32:33 +05:00
Naresh Thakur
77c2b59d0b Add content to engineering manager roadmap (#7779)
* Update system-design-and-architecture@iX4HPgoiEbc_gze1A01n4.md

* Update src/data/roadmaps/engineering-manager/content/system-design-and-architecture@iX4HPgoiEbc_gze1A01n4.md

* Update src/data/roadmaps/engineering-manager/content/system-design-and-architecture@iX4HPgoiEbc_gze1A01n4.md

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2024-11-25 07:34:28 +05:00
Fabio Stabile
4a43c4748a fix typo in dockerhub alternatives (#7780)
Co-authored-by: Fabio Stabile <fabio.stabile@mia-platform.eu>
2024-11-25 07:32:34 +05:00
github-actions[bot]
8247a1661a chore: update roadmap content json (#7785)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2024-11-25 07:32:21 +05:00
Kamran Ahmed
9948873866 Add project idea for quiz app 2024-11-24 10:14:22 +05:00
Kamran Ahmed
67d8fcccb1 Add pomodoro timer project idea 2024-11-24 09:54:19 +05:00
Kamran Ahmed
f629987064 Add bastion host and file integrity checker idea 2024-11-24 08:54:33 +05:00
duds
902aa1c7a6 Fixes typo in 104-proc-priorities.md (#7684)
Old: renice +5
New: renice -5

From my research, after reading the topic in the Linux roadmap, it didnt make sense that increasing the priority of a process was made by +5, the topic said that a negative number makes the priority higher, so do many articles on the internet.
2024-11-24 08:17:10 +05:00
Karamoko Israël Abdelaziz Axel
1008d22a22 Add a video to the Decentralization section (#7692)
* adding a video to the Decentralization section

* adding a video to the Decentralization section
2024-11-24 08:16:34 +05:00
Lisa Dziuba
165d2a870b Added article on AuthN vs AuthZ (#7694)
Added a guide on the difference between authentication and authorization, since these terms are often confused.
2024-11-24 08:15:36 +05:00
Yanbo Wang
f2946d2b31 Add linked in content (#7695)
* Update linkedin@6UR59TigEZ0NaixbaUIqn.md

* Update src/data/roadmaps/devrel/content/linkedin@6UR59TigEZ0NaixbaUIqn.md

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2024-11-24 08:14:33 +05:00
Shivam Kumar
30f7705c93 Add user personas resource to UX design (#7709)
Added more resources from IxD Foundation and NN group.

Co-authored-by: Shivam Kumar <85393390+TinyTijil@users.noreply.github.com>
2024-11-24 08:10:54 +05:00
Shivam Kumar
58f7e3e579 Add UX design resource (#7710)
* Update conceptual-design@r6D07cN0Mg4YXsiRSrl1_.md

I have added an article by Dan Nessler on How to apply a design thinking, HCD, UX or any creative process from scratch which is a how-to article aims at providing designers, creative thinkers or even project managers with a tool to set up, frame, organise, structure, run or manage design challenges, and projects: The Double Diamond revamped.

* Update conceptual-design@r6D07cN0Mg4YXsiRSrl1_.md

I have added an article by Dan Nessler on How to apply a design thinking, HCD, UX or any creative process from scratch which is a how-to article aims at providing designers, creative thinkers or even project managers with a tool to set up, frame, organise, structure, run or manage design challenges, and projects: The Double Diamond revamped.
2024-11-24 08:09:59 +05:00
Wick Dynex
c28fffcbfd Add resource for rest-assured (#7737)
## Content

I’ve added a beginner-friendly article, A Guide to REST-assured, from Baeldung to the REST Assured section. If there’s anything that doesn’t meet the format, please feel free to comment. Thanks😊.

## Issue
Fixed #7736
2024-11-24 08:07:49 +05:00
b4haa7
9b1848d504 Update resources for Authentication (#7745)
* Update authentication-vs-authorization@WG7DdsxESm31VcLFfkVTz.md

replaced a wrong article with one about biometrics

* Update understand-common-exploit-frameworks@Lg7mz4zeCToEzZBFxYuaU.md

link redirects to a Thai gambling game site
2024-11-24 08:07:02 +05:00
Maksymilian
39d64df330 Add content to vue.js performance (#7777)
* Update performance@f7N4pAp_jBlT8_8owAcbG.md

* Update src/data/roadmaps/vue/content/performance@f7N4pAp_jBlT8_8owAcbG.md

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2024-11-24 08:01:16 +05:00
github-actions[bot]
f22afb4708 chore: update roadmap content json (#7778)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2024-11-24 07:56:41 +05:00
Gustavo Martins Pereira
e0cbb69710 Add new link of Redis in FullStack (#7771) 2024-11-23 20:03:08 +06:00
feelsgoodfrog
7ea7ae68c4 fix(typo): comma todo-list-api.md (#7772) 2024-11-22 18:03:48 +06:00
elias_sisay
6c86cc4a30 fix: postgresql link (#7766) 2024-11-20 22:42:49 +06:00
github-actions[bot]
7c55761380 chore: update roadmap content json (#7768)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2024-11-20 06:12:44 +06:00
Kamran Ahmed
39791a98a8 Add content to engineering manager roadmap 2024-11-19 13:18:17 -08:00
Kamran Ahmed
c193510f95 Update engineering manager roadmap 2024-11-19 08:49:00 -08:00
Kamran Ahmed
0c59ce24c1 Update engineering manager roadmap content 2024-11-19 08:47:21 -08:00
Kamran Ahmed
00383f4142 Add engineering manager roadmap 2024-11-19 07:25:11 -08:00
Ed Lan
b4b9311601 Add ref to DevOps roadmap in guide (#7762)
Added roadmap ref.
2024-11-19 05:16:03 -08:00
Ed Lan
cdbf2b3afd Update DevOps skills (#7763)
Added internal refs
2024-11-19 05:15:41 -08:00
Ed Lan
17615c68c5 Update frontend FAQs (#7764)
Tweaked the first two Qs
2024-11-19 05:10:53 -08:00
github-actions[bot]
b6eb3f38a6 chore: update roadmap content json (#7758)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2024-11-19 17:43:05 +06:00
Kamran Ahmed
4180ecd30f Add engineering manager roadmap 2024-11-18 18:19:39 -08:00
dudi vaichledere
a567425bf3 Update C# link to correct URL (#7757) 2024-11-18 15:46:50 -08:00
Kamran Ahmed
e387204802 Ad new changelog entry 2024-11-18 12:55:27 -08:00
FormerlyWD
96c2b84c71 feat: center of mass explain video (#7754)
video addition explaining COM better
2024-11-18 21:32:55 +06:00
github-actions[bot]
9add3d9dc1 chore: update roadmap content json (#7751)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2024-11-18 21:28:52 +06:00
Nang
1d9cdb2b9c feat: add PearAI code editor
Added PearAI to the list of AI Code Editors (An Open Source Option for developers!)
2024-11-18 01:57:12 +06:00
garyellow
3601b025a3 docs: fix typos and improve grammar in documentation (#7747)
Corrects typos and grammatical errors in various markdown files to enhance clarity and readability.
2024-11-17 18:44:00 +06:00
Jawher Kl
d7a9df3533 feat: container orchestration
* Update container-orchestration@Yq8kVoRf20aL_o4VZU5--.md

Simplified content and added working links to resources for better clarity and learning.

* Update container-orchestration@Yq8kVoRf20aL_o4VZU5--.md

Replace content and added working links to resources for better clarity and learning.

* Update container-orchestration@Yq8kVoRf20aL_o4VZU5--.md

* Update src/data/roadmaps/devops/content/container-orchestration@Yq8kVoRf20aL_o4VZU5--.md

---------

Co-authored-by: Arik Chakma <arikchangma@gmail.com>
2024-11-17 06:36:29 +06:00
Rogério Ferreira de Souza
37c504b6cf feat(backend): update unit testing node resources (#7743) 2024-11-17 06:31:59 +06:00
Kamran Ahmed
75a6c9133c Add preloading of ad image 2024-11-15 07:18:31 -07:00
Kamran Ahmed
1d1541386f Fix issue in sticky top ad 2024-11-15 07:09:57 -07:00
github-actions[bot]
8de3b5eb38 chore: update roadmap content json (#7738)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2024-11-15 16:39:33 +06:00
Jawher Kl
8e5e8ce0b6 fix: git clone link (#7735)
Fix broken link in Git & GitHub Roadmap
2024-11-14 17:21:23 +06:00
github-actions[bot]
c81cdf87c3 chore: update roadmap content json (#7732)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2024-11-14 17:19:26 +06:00
gavhu10
b28834ee3b feat: add a resource for python functions (#7724) 2024-11-14 03:42:17 +06:00
icoderarely
c3c9e8dd9a Fix color mismatch between legend and roadmap sections (#7729) 2024-11-13 07:20:02 -07:00
Jawher Kl
8788aabba7 Fix bug in file name (#7730)
I encountered a bug today while attempting to select the 'virtualenv' panel in the Python Roadmap. After investigating, it appears that the generated ID, virutalenv@_IXXTSwQOgYzYIUuKVWNE, is incorrect. The correct ID should be virtualenv@_IXXTSwQOgYzYIUuKVWNE.
2024-11-13 07:18:42 -07:00
Kamran Ahmed
9dcde9d2fc Add missing alt tag to backend job template guide 2024-11-12 16:15:18 -07:00
Kamran Ahmed
d9a161c876 Add backend job description template 2024-11-12 16:14:16 -07:00
Kamran Ahmed
41397b7960 Remove new badge from old guides 2024-11-12 15:37:17 -07:00
Kamran Ahmed
92ec666d3b Add related guides to devops guides 2024-11-12 15:28:46 -07:00
Kamran Ahmed
9d17dcc27f Add related guides to frontend guides 2024-11-12 15:22:34 -07:00
Kamran Ahmed
f8e6e8cf92 Add related guides to backend guides 2024-11-12 15:14:17 -07:00
ASIIMWE GRACE NOBLE
684c103aa2 fix(expense tracker): logical error in description (#7720)
If we are referencing by id and not index then --id 1 would remove the first element making the summary 10 and not 20

Solution: delete the second element instead to make the summary add up correctly.
2024-11-12 11:26:50 +06:00
Kamran Ahmed
322dea30d0 Remove new badge from old guides and videos 2024-11-11 15:31:35 -08:00
Kamran Ahmed
c6d96d8fa9 Remove actively maintained from unrelated pages 2024-11-11 15:29:41 -08:00
Kamran Ahmed
7b28484679 Remove AI roadmaps from indexing 2024-11-11 15:29:41 -08:00
Rudin Maxim
d5fae890a6 fix: empty buttons in profile update (#7717)
* Empty buttons in profile update

* fix: filtering in one call

---------

Co-authored-by: Arik Chakma <arikchangma@gmail.com>
2024-11-12 01:21:36 +06:00
Tanishk Bansode
76474bd604 fix: protocol buffers video (#7712)
* Update 107-buffer.md

* Update 105-protocol-buffers.md

* Update 105-protocol-buffers.md
2024-11-11 06:32:24 +06:00
github-actions[bot]
316d265fef chore: update roadmap content json (#7704)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2024-11-09 19:27:38 +06:00
Kamran Ahmed
112c1d4672 Add calendar event 2024-11-09 11:20:50 +05:00
Arik Chakma
2a6c1bfce8 feat: implement calendar scheduling (#7574)
* wip

* feat: add calendar scheduling

* fix: update names

* UI Changes for calendar scheduling

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2024-11-08 21:48:09 +05:00
Brendan Chia
e4c863bbf4 fix: Update color ticks hexcode from #2d72d2 to #874efe (#7699) 2024-11-08 16:34:38 +05:00
Prasanna Kotyal
d7a390213c fix: broken gitignore link (#7696)
fix: update gitignore documentation link
Closes #7693
2024-11-08 08:05:04 +06:00
Georgios Drivas
ae54bac820 Update Toast.tsx to remove unsued interface (#7698) 2024-11-07 23:44:27 +05:00
Dan
a60da85876 add devops automation guide (#7680) 2024-11-07 17:02:42 +05:00
Arik Chakma
f47bf798d3 feat: related guides sidebar (#7682)
* feat: related guides sidebar

* fix: hide related guides on mobile
2024-11-07 17:01:18 +05:00
duds
a0addd1408 fix: typo handle to handled (#7686)
From handle to handled, I believe this is grammatically correct.
2024-11-06 21:25:50 +06:00
Aldiyar Dabarov
8fe9669fd4 fix: broken Docker Docs link (#7689) 2024-11-06 21:24:33 +06:00
Ed Lan
b8ea4d58ec Update how-to-become-frontend-developer.md (#7678)
Guide reference updates
2024-11-05 14:14:22 +00:00
Ed Lan
b4fa9fcf9e Update frontend-frameworks.md (#7677)
Guide reference touch ups
2024-11-05 14:14:02 +00:00
Ed Lan
ee83070507 Fix guide text (#7679)
Guide reference tweaks
2024-11-05 16:41:23 +05:00
Ed Lan
54809698ed Fix markdown link issue in guide (#7676)
* Update frontend-languages.md

Guide reference touch ups

* Update src/data/guides/frontend-languages.md

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2024-11-05 16:04:03 +05:00
github-actions[bot]
7ac0383769 chore: update roadmap content json (#7673)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2024-11-05 07:49:55 +06:00
Dan
e7ad915067 DevRel Roadmap Content. (#7512)
* copy for 40 topics

* 35 complete topics

* add 8 topics
2024-11-04 23:02:09 +05:00
Dan
b82d791b4e Add frontend job description guide (#7570)
* add frontend job description guide

* remove bold on h2

* Update src/data/guides/frontend-job-description.md

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2024-11-04 22:59:18 +05:00
Dan
a970359c7a Removed relational operators in favour of conditional (#7616)
* removed relational operators in favour of conditional as they're one in the same

* removed relational file
2024-11-04 22:58:28 +05:00
Dan
1e020de085 Add shift left devops guide (#7623)
* add shift-left devops guide

* add article to FAQs

* Update src/data/guides/devops-shift-left-testing.md

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2024-11-04 22:58:09 +05:00
Dan
55c35409e3 Add full stack job spec guide (#7654)
* add full stack job spec guide

* Update src/data/guides/full-stack-job-description.md

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2024-11-04 22:56:09 +05:00
Dan
fbc3b89aca Add devops lifecycle guide (#7655) 2024-11-04 22:54:52 +05:00
Dan
4730997e6e Removed the hacktoberfest contrib guide (#7670) 2024-11-04 22:53:45 +05:00
Arik Chakma
f6e244d52b fix: paragraph overflow (#7669) 2024-11-04 16:46:12 +06:00
Rogério Ferreira de Souza
e9647bbe92 feat(java): add official articles on basic syntax and update the content (#7665) 2024-11-04 09:53:12 +00:00
Charles J. Fowler
f69130e918 Improve Prompt Engineering - Pitfalls of LLMs - Content & Links (#7666)
* 📃 docs, data (Image Prompting) Update Topic/Sub Topics - In Place Edits.

- intent: Update topic from May 2023 to Oct 2024

- data: src/data/roadmaps/prompt-engineering/content/

- modify - 10X .ms
---

Co-authored-by: @iPoetDev <ipoetdev-github-no-reply@outlook.com>

* 📃 docs, data (Prompt Engineering Roadmap) Basic Concepts - In Place Edits.

- changes: single paragraphs (74-125 words)>
- concerns: if any more concise, topics looses fidelity, meaning and utility.

- data: src/data/roadmaps/prompt-engineering/content/
    - 📂 100-basic-llm

- modify: Topic
    - update content:
        - index.md
        - 100-what-are-llm.md
        - 101-llm-types.md
        - 102-how-llms-built.md
---

Co-authored-by: @iPoetDev <ipoetdev-github-no-reply@outlook.com>

* 📃 docs: (Prompt Eng.)  Basic LLM Concepts - New Links.

- intent: Update topic from May 2023 to Oct 2024
   - 📂 100 basic-llm

- modify topics:
    - add links
        - 100-what-are-llms.md
        - 101-types-llms.md
        - 102-how-llms-are-bilt.md

BREAKING CHANGE: 
---

Co-authored-by: @iPoetDev <ipoetdev-github-no-reply@outlook.com>

* docs: (Prompt Eng.) Prompting Introduction - New Links.

- intent: Update topic from May 2023 to Oct 2024
   - 📂 101-prompting-introduction

- modify topics:
    - add links
        - index.md
        - 100-basic-prompting.md
        - 101-need-for-prompting.md

BREAKING CHANGE: 
---

Co-authored-by: @iPoetDev <ipoetdev-github-no-reply@outlook.com>

* 📃 docs: (Prompt Eng.) Real World Uses - Content & Links.

- intent:
  - Update topic and links from May 2023 to Oct 2024.
  - Realword use cases are dynamic and evolving.
  - Remodelled existing examples.

- data: src/data/roadmaps/prompt-engineering/content/
  - 📂 103-real-world

   - modify: Content Improve, 1st paragraph.

    - modify: Expanded Content paragraphs
      - index.md
      - 100-structured-data.md
      - 101-inferring.md
      - 102-writing-emails.md
      - 103-coding-assistance.md
      - 104-study-buddy.md
      - 105-designing-chatbots.md

    - modify: Links New
      - index.md
      - 100-structured-data.md
      - 101-inferring.md
      - 102-writing-emails.md
      - 103-coding-assistance.md
      - 104-study-buddy.md
      - 105-designing-chatbots.md

BREAKINGCHANGE: 
---

Co-authored-by: @iPoetDev <ipoetdev-github-no-reply@outlook.com>

* 📃 docs: (Prompt Eng.) LLM Pitfalls - Links.

- intent: Insert Links from May 2023 to Oct 2024

- data: src/data/roadmaps/prompt-engineering/content/
  - 📂 104-llm-pitfalls

- modify: Links New
  - index.md
  - 100-citing-sources.md
  - 101-bias.md
  - 102-halluncinations.md
  - 103-math.md
  - 104-prompt-hacking.md

- modify: Copy Refresh
  - index.md
  - 100-citing-sources.md
  - 101-bias.md
  - 102-halluncinations.md
  - 103-math.md
  - 104-prompt-hacking.md

BREAKINGCHANGE: 
---

Co-authored-by: @iPoetDev <ipoetdev-github-no-reply@outlook.com>

* Apply suggestions from code review

spacing and styling fixes

---------

Co-authored-by: Dan <daniel.s.holdsworth@gmail.com>
2024-11-04 09:52:32 +00:00
Charles J. Fowler
779935cc60 Improve Prompt Engineering - Real World Examples - Content & Links (#7660)
* 📃 docs, data (Image Prompting) Update Topic/Sub Topics - In Place Edits.

- intent: Update topic from May 2023 to Oct 2024

- data: src/data/roadmaps/prompt-engineering/content/

- modify - 10X .ms
---

Co-authored-by: @iPoetDev <ipoetdev-github-no-reply@outlook.com>

* 📃 docs, data (Prompt Engineering Roadmap) Basic Concepts - In Place Edits.

- changes: single paragraphs (74-125 words)>
- concerns: if any more concise, topics looses fidelity, meaning and utility.

- data: src/data/roadmaps/prompt-engineering/content/
    - 📂 100-basic-llm

- modify: Topic
    - update content:
        - index.md
        - 100-what-are-llm.md
        - 101-llm-types.md
        - 102-how-llms-built.md
---

Co-authored-by: @iPoetDev <ipoetdev-github-no-reply@outlook.com>

* 📃 docs: (Prompt Eng.)  Basic LLM Concepts - New Links.

- intent: Update topic from May 2023 to Oct 2024
   - 📂 100 basic-llm

- modify topics:
    - add links
        - 100-what-are-llms.md
        - 101-types-llms.md
        - 102-how-llms-are-bilt.md

BREAKING CHANGE: 
---

Co-authored-by: @iPoetDev <ipoetdev-github-no-reply@outlook.com>

* docs: (Prompt Eng.) Prompting Introduction - New Links.

- intent: Update topic from May 2023 to Oct 2024
   - 📂 101-prompting-introduction

- modify topics:
    - add links
        - index.md
        - 100-basic-prompting.md
        - 101-need-for-prompting.md

BREAKING CHANGE: 
---

Co-authored-by: @iPoetDev <ipoetdev-github-no-reply@outlook.com>

* 📃 docs: (Prompt Eng.) Real World Uses - Content & Links.

- intent:
  - Update topic and links from May 2023 to Oct 2024.
  - Realword use cases are dynamic and evolving.
  - Remodelled existing examples.

- data: src/data/roadmaps/prompt-engineering/content/
  - 📂 103-real-world

   - modify: Content Improve, 1st paragraph.

    - modify: Expanded Content paragraphs
      - index.md
      - 100-structured-data.md
      - 101-inferring.md
      - 102-writing-emails.md
      - 103-coding-assistance.md
      - 104-study-buddy.md
      - 105-designing-chatbots.md

    - modify: Links New
      - index.md
      - 100-structured-data.md
      - 101-inferring.md
      - 102-writing-emails.md
      - 103-coding-assistance.md
      - 104-study-buddy.md
      - 105-designing-chatbots.md

BREAKINGCHANGE: 
---

Co-authored-by: @iPoetDev <ipoetdev-github-no-reply@outlook.com>

* Apply suggestions from code review

Just a couple of small spacing fixes

---------

Co-authored-by: Dan <daniel.s.holdsworth@gmail.com>
2024-11-04 09:47:25 +00:00
Charles J. Fowler
a09704baa2 Improve Prompt Engineering - Prompts & Techniques - Links (#7653)
* 📃 docs, data (Image Prompting) Update Topic/Sub Topics - In Place Edits.

- intent: Update topic from May 2023 to Oct 2024

- data: src/data/roadmaps/prompt-engineering/content/

- modify - 10X .ms
---

Co-authored-by: @iPoetDev <ipoetdev-github-no-reply@outlook.com>

* 📃 docs, data (Prompt Engineering Roadmap) Basic Concepts - In Place Edits.

- changes: single paragraphs (74-125 words)>
- concerns: if any more concise, topics looses fidelity, meaning and utility.

- data: src/data/roadmaps/prompt-engineering/content/
    - 📂 100-basic-llm

- modify: Topic
    - update content:
        - index.md
        - 100-what-are-llm.md
        - 101-llm-types.md
        - 102-how-llms-built.md
---

Co-authored-by: @iPoetDev <ipoetdev-github-no-reply@outlook.com>

* 📃 docs: (Prompt Eng.)  Basic LLM Concepts - New Links.

- intent: Update topic from May 2023 to Oct 2024
   - 📂 100 basic-llm

- modify topics:
    - add links
        - 100-what-are-llms.md
        - 101-types-llms.md
        - 102-how-llms-are-bilt.md

BREAKING CHANGE: 
---

Co-authored-by: @iPoetDev <ipoetdev-github-no-reply@outlook.com>

* docs: (Prompt Eng.) Prompting Introduction - New Links.

- intent: Update topic from May 2023 to Oct 2024
   - 📂 101-prompting-introduction

- modify topics:
    - add links
        - index.md
        - 100-basic-prompting.md
        - 101-need-for-prompting.md

BREAKING CHANGE: 
---

Co-authored-by: @iPoetDev <ipoetdev-github-no-reply@outlook.com>

* 📃 docs:  (Prompt Eng.) Prompting Techniques - New Links.

- intent: Update missing links from May 2023 to Oct 2024

- data: src/data/roadmaps/prompt-engineering/content/
  - 📂 102-prompts

- modify: Links New
  - prompts/index.md
  - prompts/100-parts-of-a-prompt.md

  - 📂 102-prompts/prompting-techniques

- modify: Content Modify
  - added a "Learn more" line to all files ahead of links.
  - removed duplicated text in a code fence.
      - 104-least-to-most.md

- modify: Links New
  - 100-role-prompting.md
  - 101few-shot-prompting.md
  - 102-chain-of-thought.md
  - 103-zeroshot-chain-of-thought.md
  - 104-least-to-most.md
  - 105-dual-prompt.md
  - 106-combining-technqiues.md

BREAKINGCHANGE: 
---

Co-authored-by: @iPoetDev <ipoetdev-github-no-reply@outlook.com>
2024-11-01 12:12:28 +00:00
github-actions[bot]
b9fdd0c82b chore: update roadmap content json (#7649)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2024-11-01 16:42:46 +06:00
Dan
e06f9ea461 remove dupe link (#7652)
* remove dupe link
2024-11-01 09:23:31 +00:00
github-actions[bot]
5a2101e244 chore: update roadmap content json (#7643)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2024-10-31 20:25:08 +06:00
Laurin Sorgend
e0ea600a14 Update cookies@UFuX8wcxZQ7dvaQF_2Yp8.md (#7636)
Fixed typo
2024-10-31 10:47:18 +00:00
Charles J. Fowler
cf5a7d055a Improve Prompt Engineering - Basic LLM & Prompt Introduction: Links (#7639)
* 📃 docs, data (Image Prompting) Update Topic/Sub Topics - In Place Edits.

- intent: Update topic from May 2023 to Oct 2024

- data: src/data/roadmaps/prompt-engineering/content/

- modify - 10X .ms
---

Co-authored-by: @iPoetDev <ipoetdev-github-no-reply@outlook.com>

* 📃 docs, data (Prompt Engineering Roadmap) Basic Concepts - In Place Edits.

- changes: single paragraphs (74-125 words)>
- concerns: if any more concise, topics looses fidelity, meaning and utility.

- data: src/data/roadmaps/prompt-engineering/content/
    - 📂 100-basic-llm

- modify: Topic
    - update content:
        - index.md
        - 100-what-are-llm.md
        - 101-llm-types.md
        - 102-how-llms-built.md
---

Co-authored-by: @iPoetDev <ipoetdev-github-no-reply@outlook.com>

* 📃 docs: (Prompt Eng.)  Basic LLM Concepts - New Links.

- intent: Update topic from May 2023 to Oct 2024
   - 📂 100 basic-llm

- modify topics:
    - add links
        - 100-what-are-llms.md
        - 101-types-llms.md
        - 102-how-llms-are-bilt.md

BREAKING CHANGE: 
---

Co-authored-by: @iPoetDev <ipoetdev-github-no-reply@outlook.com>

* docs: (Prompt Eng.) Prompting Introduction - New Links.

- intent: Update topic from May 2023 to Oct 2024
   - 📂 101-prompting-introduction

- modify topics:
    - add links
        - index.md
        - 100-basic-prompting.md
        - 101-need-for-prompting.md

BREAKING CHANGE: 
---

Co-authored-by: @iPoetDev <ipoetdev-github-no-reply@outlook.com>
2024-10-31 10:46:54 +00:00
Bartłomiej Galicki
44f1b01da3 chore(r-cs-subnetting): replace the video resource with better one (#7640)
Co-authored-by: bartgalicki <bartlomiej.galicki.sp@lhsystems.com>
2024-10-31 10:45:42 +00:00
Ikboljon Abdurasulov
7254a58328 fix: Improve grep command to filter files ending with .txt (#7627) 2024-10-30 14:17:05 +06:00
github-actions[bot]
0d3fdb2319 chore: update roadmap content json (#7633)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2024-10-30 14:16:08 +06:00
Aboody_01
5d4c7b8bac add a complete guide article about wiston logging at Nodejs Roadmap (#7634) 2024-10-30 08:10:54 +00:00
salocin-95
aca289b214 fix: desktop typo (#7625)
Fix a typo at line 31 from "desctop" to "desktop"
2024-10-29 19:45:42 +06:00
Bartłomiej Galicki
b395e4fc70 fix(r-cs-ldap): add missing video title (#7624) 2024-10-29 19:44:28 +06:00
github-actions[bot]
4a5c3d5786 chore: update roadmap content json (#7628)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2024-10-29 19:40:53 +06:00
Arik Chakma
8891404331 fix: roadmap node overflow (#7622) 2024-10-28 19:13:13 +06:00
Dan
a1371d552c added FAQs with TDS link for AI Eng (#7619) 2024-10-28 12:21:40 +00:00
Dan
25db2fdfda update SSL copy from the incorrect SSO one (#7618) 2024-10-28 10:57:33 +00:00
github-actions[bot]
c8250ae8bb chore: update roadmap content json (#7610)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2024-10-28 16:46:05 +06:00
Raf
7d9b10b2c6 Update data-structures--algorithms@VJSIbYJcy2MC6MOFBrqXi.md (#7607)
Updated the URL to visit the dedicated DSA Roadmap rather than leading to a page not found with the wrong URL.
2024-10-27 21:21:26 +00:00
github-actions[bot]
fe580b8da2 chore: update roadmap content json (#7603)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2024-10-27 16:04:02 +06:00
Kamran Ahmed
65f1c9ca50 feat: add support for sticky sponsor banner (#7602)
* Add sponsors functionality

* Fix overlapping issue

* Add sticky top sponsor
2024-10-26 23:34:50 +01:00
github-actions[bot]
7f399f5c7c chore: update roadmap content json (#7591)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2024-10-26 19:14:48 +06:00
Kamran Ahmed
414ce7afd9 Fix propagation issue on sponsor close 2024-10-26 11:01:23 +01:00
Murshal Akhtar Ansari
7e9de94b14 roadmap(DSA): added missing resouce links in problem solving techniques (#7586) 2024-10-26 09:02:20 +01:00
Hunter Greer
e34619c24b Update 102-big-omega.md (#7587)
Fixed inaccuracy with description
2024-10-26 08:59:51 +01:00
Aboody_01
65ab0f4f4f add an article about Web Storage API at Frontend Roadmap (#7592) 2024-10-26 08:52:14 +01:00
Eshaan Awasthi
50155c3ad0 Adding Kafka Streams documentation (#7578)
* Adding Kafka Streams documentations

* Adding detailed docs for Streams API

* Updating the changes

* Updating changes
2024-10-26 08:48:26 +01:00
Mohammad Mahdi Bahrami
8845af89e6 Update formatting@fU8Vnw1DobM4iXl1Tq6EK.md (#7590)
* Update formatting@fU8Vnw1DobM4iXl1Tq6EK.md

Added [BiomeJS](https://biomejs.dev) to formatting tools

* fix: update paragraph

---------

Co-authored-by: Arik Chakma <arikchangma@gmail.com>
2024-10-26 04:28:09 +06:00
nigeisel
4910719d4e Fix content for terraform and aws roadmaps (#7589)
* Fix URLs to AWS docs: links pointed to portuguese version of documentation

* Fix URL to official process.env documentation (it pointed to an unrelated digital ocean article about command line args)

* Fix typo

* Add resource lifecycle node

* Fix @article@ tag case

* * Fix common but dangerous misconception: values, even if marked as sensitive, ARE written to state files in CLEAR text!
  * Source: https://developer.hashicorp.com/terraform/language/values/outputs#sensitive-suppressing-values-in-cli-output
* Fix minor display issue: "<sensitive>" is rendered to "", so it was changed to `<sensitive>`

* Fix missing space

* Update terraform plan & apply
* Fix link to terraform apply docs (pointed to terraform plan)
* Add link to official terraform plan docs to terraform plan node
2024-10-25 22:31:36 +01:00
Vedansh
5933413f3b Improve content of game developer roadmap (#7561)
* Phase 1 for Long Running...

* Phase - 2

* Phase - 3

* Phase - 4

* Phase - 5

* Phase - 6

* Phase - 7

* Phase - 8

* Phase - 9

* Phase - 10 (Final)
2024-10-25 22:14:28 +01:00
Charles J. Fowler
e4dcf5585e 📃 Prompt Eng Roadmap (Image Prompting) - Improve (2023, Q2 -> 2024, Q4) (#7571)
* 📃 docs, data (Image Prompting) Update Topic/Sub Topics - In Place Edits.

- intent: Update topic from May 2023 to Oct 2024

- data: src/data/roadmaps/prompt-engineering/content/

- modify - 10X .ms
---

Co-authored-by: @iPoetDev <ipoetdev-github-no-reply@outlook.com>

* 📃 docs, data (Prompt Engineering Roadmap) Basic Concepts - In Place Edits.

- changes: single paragraphs (74-125 words)>
- concerns: if any more concise, topics looses fidelity, meaning and utility.

- data: src/data/roadmaps/prompt-engineering/content/
    - 📂 100-basic-llm

- modify: Topic
    - update content:
        - index.md
        - 100-what-are-llm.md
        - 101-llm-types.md
        - 102-how-llms-built.md
---

Co-authored-by: @iPoetDev <ipoetdev-github-no-reply@outlook.com>
2024-10-25 19:16:52 +01:00
Alastair
85230cdb8b Fixing link to point to specific "Ambient Modules" anchor in TS Modules Reference (#7585)
The old link is improperly formatted--as such, it simply redirects the user to https://www.typescriptlang.org/docs/handbook/modules/introduction.html, rather than the more specific https://www.typescriptlang.org/docs/handbook/modules/reference.html#ambient-modules
2024-10-25 19:12:45 +01:00
github-actions[bot]
afdadf1efc chore: update roadmap content json (#7575)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2024-10-25 23:29:20 +06:00
megaqbit
4cb2994b13 fix: add space for Markdown links formatting (#7582) 2024-10-25 16:16:07 +01:00
Kamran Ahmed
03a974ad24 Add event value 2024-10-25 11:39:34 +01:00
Kamran Ahmed
171f1431c2 Move GA to head 2024-10-25 11:00:38 +01:00
Kamran Ahmed
f37ed9fab8 Migrate from UA -> GA4 2024-10-25 10:45:14 +01:00
Vedansh
687d3ee4da Improve Blockchain Roadmap (#7557)
* Phase - 1 (Common Fixes)

* Phase - 2 (Majors)

* Phase - 3 (Special Content)

* Phase - 4

* Phase - 5 (Final)

* Apply Suggested Changes from Dan.
2024-10-24 13:46:13 +01:00
github-actions[bot]
70c09f263c chore: update roadmap content json (#7567)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2024-10-24 17:53:04 +06:00
Vedansh
13ec5a7274 Update Few Topics in UX Design Roadmap (#7559)
* Phase - 1

* Phase - 2
2024-10-24 10:09:20 +01:00
dsh
5c5aa683b3 Add developer portfolioo guide (#7527) 2024-10-23 11:29:51 +01:00
dsh
f6e5901ae7 Add new fe overview video to video page (#7558) 2024-10-23 11:28:48 +01:00
github-actions[bot]
4b0b0fa5ca chore: update roadmap content json (#7563)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2024-10-23 15:20:29 +06:00
Aboody_01
346020829a add a video resource about API`s in Nodejs Roadmap (#7564) 2024-10-23 10:06:21 +01:00
github-actions[bot]
d7252f9a9c chore: update roadmap content json (#7552)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2024-10-23 00:38:14 +06:00
Artur
f1e552d085 Adding 2 videos links to Aws Roadmap - EC2 and VPC topics (#7533)
* adding official video from aws that resumes ec2

* adding video from freecodecamp that cover vpc service

* Add a newer video

Adding a video that give a overview and a tutorial on how to create a basic instance
2024-10-22 10:34:08 +01:00
Debajyati Dey
64931e0e0e Linux (#7541)
Adding links to Linux topics.

---------

Co-authored-by: dsh <daniel.s.holdsworth@gmail.com>
2024-10-22 10:25:19 +01:00
Aboody_01
eb44988a84 add a process stdin article to the Nodejs Roadmap (#7554) 2024-10-22 10:19:58 +01:00
Benjamin Yee
75b01dc212 Add resources to Technical Writer Roadmap (#7555)
I added two articles and two YouTube videos to explain more about the subject of technical writing.
2024-10-22 10:19:05 +01:00
ChocolateCharlie
3a6565d08c fix: friends typo (#7551) 2024-10-22 01:20:32 +06:00
Himanshu Jangid, हिमांशु जाँगिड़
b4545185a3 Add the curve definition and application examples for game development (#7543)
* Add the curve definition and application examples for game development

* chore: make the content concise and add links

There aren't much articles and videos for curves as a whole, most of them just have the definition. Creators prefer explaining individual curve types rather than all of them in one video but those should be linked into the sub-categories and that is already done.
2024-10-21 15:41:51 +01:00
github-actions[bot]
e40af763d7 chore: update roadmap content json (#7547)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2024-10-21 16:52:47 +06:00
Nkwi Cyril
70c7a7ee16 Fix/grammatical error (#7535)
* chore(src): fix grammatical error on headings

* chore(src): fix grammatical error on headings
2024-10-21 10:45:43 +01:00
Aboody_01
b0700a3273 add an article about react susbense at Reactjs Roadmap (#7534) 2024-10-21 10:19:24 +01:00
Himanshu Jangid, हिमांशु जाँगिड़
47741ca640 Add a video learning resource for bezier curve (#7544)
The attached video is one of the most simple to understand yet highly technical for bezier curves.
2024-10-21 10:14:03 +01:00
Murshal Akhtar Ansari
8663ba3969 roadmap: added missing resource links in DSA (#7545) 2024-10-21 10:13:19 +01:00
Vishnu Vardhan
a7b40f047c Fix typo in PgBouncer website URL (#7542)
* Fix typo in PgBouncer website URL

* Revert the JSON File for PgBouncer
2024-10-20 17:39:23 +06:00
Alastair
4a8ddf5687 Fixed typo, was consructor now constructor. (#7536)
Very minor typo in the Typescript "Constructor Overloading" section. For the paragraph beginning in "Note that, similar to function overloading . . ."
2024-10-20 10:55:37 +01:00
github-actions[bot]
4c54997bfb chore: update roadmap content json (#7532)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2024-10-19 11:25:45 +06:00
dsh
ceeaa91f62 Complete AI Engineer Roadmap (#7508)
* ai eng content

* 57 topics

* 44 topics

* 68 topics, need to add links to the final 15 or so

* final topics

* update copy and links

* Update ai-engineer-vs-ml-engineer@jSZ1LhPdhlkW-9QJhIvFs.md

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>

* Update code-completion-tools@TifVhqFm1zXNssA8QR3SM.md

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>

* Update development-tools@NYge7PNtfI-y6QWefXJ4d.md

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>

* Update introduction@_hYN0gEi9BL24nptEtXWU.md

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>

* Update what-is-an-ai-engineer@GN6SnI7RXIeW8JeD-qORW.md

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>

* resolve comments

* Update src/data/roadmaps/ai-engineer/content/image-understanding@fzVq4hGoa2gdbIzoyY1Zp.md

* Update src/data/roadmaps/ai-engineer/content/anomaly-detection@AglWJ7gb9rTT2rMkstxtk.md

* Update src/data/roadmaps/ai-engineer/content/chunking@mX987wiZF7p3V_gExrPeX.md

* Update src/data/roadmaps/ai-engineer/content/data-classification@06Xta-OqSci05nV2QMFdF.md

* Update src/data/roadmaps/ai-engineer/content/inference@KWjD4xEPhOOYS51dvRLd2.md

* Update src/data/roadmaps/ai-engineer/content/manual-implementation@6xaRB34_g0HGt-y1dGYXR.md

* Update src/data/roadmaps/ai-engineer/content/mongodb-atlas@j6bkm0VUgLkHdMDDJFiMC.md

* Update src/data/roadmaps/ai-engineer/content/video-understanding@TxaZCtTCTUfwCxAJ2pmND.md

* Update src/data/roadmaps/ai-engineer/content/performing-similarity-search@ZcbRPtgaptqKqWBgRrEBU.md

* Update src/data/roadmaps/ai-engineer/content/popular-open-source-models@97eu-XxYUH9pYbD_KjAtA.md

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2024-10-18 23:01:27 +01:00
fellalli
ee3736bd60 Fix broken link (#7530) 2024-10-18 22:37:05 +01:00
Kamran Ahmed
029e45c5c0 Fix canonical URLs (#7531) 2024-10-18 22:36:39 +01:00
Debajyati Dey
ad2095bcce Cs (#7526)
* Added relevant resources to learn the topic and changed the list of CPU scheduling algorithms

Multilevel Feedback Queue Scheduling Algorithm was present twice in the list. Removed the lines containing the duplicate.

Added HRRN (Highest Response Ratio Next) Algorithm in the list because it is a highly optimised and important CPU Scheduling Algorithm.

* Added video resource for processes and threads

* Restructured the Resource links based on Contributing.md
2024-10-18 14:30:44 +01:00
Matt Skovranek
0c1cd9decd add video link of full python course to Python Roadmap (#7520) 2024-10-18 08:27:00 +01:00
github-actions[bot]
f059d34e1f chore: update roadmap content json (#7521)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2024-10-18 12:36:35 +06:00
Arik Chakma
e1a56af631 feat: add frontend projects (#7356)
* wip: age calculator

* fix: update age calculator description

* wip: flash cards project

* wip: flash cards

* fix: remove JavaScript roadmap

* fix: remove JavaScript roadmap
2024-10-17 23:46:52 +01:00
dsh
49c3a67964 updated frontend roadmap question (#7484)
* updated fe question

* replace breaks with h2
2024-10-17 23:45:23 +01:00
dsh
0dc96ac7aa Add devops vs full-stack guide (#7518)
* add devops vs full-stack guide

* improve table
2024-10-17 21:49:36 +01:00
dsh
35dae76d26 Add FE vs BE for AI guide (#7519) 2024-10-17 21:49:20 +01:00
dsh
86e83652bf Add full stack vs backend guide (#7516) 2024-10-17 18:49:20 +01:00
Vedansh
ccc2cbd9c2 Improve Vue.js Roadmap (#7498)
* Phase - 1

* Phase - 2

* Phase - 3

* Phase - 4

* Phase - 6

* Phase - 7 (Final)

* Update src/data/roadmaps/vue/content/v-else-if@a9caVhderJaVo0v14w8WB.md

* Update src/data/roadmaps/vue/content/v-else@0CtAZQcFJexMiJfZ-mofv.md

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2024-10-17 15:16:59 +01:00
Aboody_01
5c0a5e2426 added an article link about linear search at DSA Roadmap (#7513) 2024-10-17 15:15:59 +01:00
Vedansh
4b63d17383 Update contribution docs (#7506) 2024-10-17 11:16:07 +01:00
Murshal Akhtar Ansari
3ca0a5c94c roadmap: added resource links in DSA for linear and binary search (#7505) 2024-10-17 10:27:17 +01:00
Aboody_01
523511c078 add an article about handling async errors at Nodejs Roadmap (#7495) 2024-10-17 10:24:45 +01:00
Astro
d4cb23b370 Update evm-based@tSJyp46rkJcOtDqVpJX1s.md (#7500)
Replace deprecated article link with a new one
2024-10-17 10:23:55 +01:00
Andrey Blazejuk
55255dbbb1 fix: refactor number utils (#7504) 2024-10-17 13:48:19 +06:00
github-actions[bot]
5033c89adf chore: update roadmap content json (#7503)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2024-10-17 13:47:06 +06:00
Kamran Ahmed
c481e8aa38 Add UTM registration tracking 2024-10-16 23:07:08 +01:00
fellalli
87ed33b330 Add C++ projects (#7497) 2024-10-16 21:14:09 +01:00
Kamran Ahmed
6837330be1 Add team dashboard 2024-10-16 16:55:12 +01:00
Kamran Ahmed
b1d97db2d2 Add change log 2024-10-16 16:51:55 +01:00
Akshay B
f20cf95592 OpenSource AI Engineer content (#7492)
* Update opensource-ai@a_3SabylVqzzOyw3tZN5f.md

Updating on AI Engineer roadmap
- OpenSource AI

* Update open-vs-closed-source-models@RBwGsq9DngUsl8PrrCbqx.md

Updating on AI Engineer Roadmap
- Open vs Closed Source Models

* Update open-vs-closed-source-models@RBwGsq9DngUsl8PrrCbqx.md

minor change (-)

* Update popular-open-source-models@97eu-XxYUH9pYbD_KjAtA.md

Updating on AI Engineer Roadmap
- Popular Open Source Models

* Update src/data/roadmaps/ai-engineer/content/popular-open-source-models@97eu-XxYUH9pYbD_KjAtA.md

cut down the topic

* Update ollama@rTT2UnvqFO3GH6ThPLEjO.md

Updating on AI Engineer Roadmap
- Ollama

* Update ollama-models@ro3vY_sp6xMQ-hfzO-rc1.md

Updating on AI Engineer Roadmap
- Ollama Models

* Update ollama-sdk@TsG_I7FL-cOCSw8gvZH3r.md

Updating on AI Engineer Roadmap
- Ollama SDK

* Update hugging-face@v99C5Bml2a6148LCJ9gy9.md

Updating on AI Engineer Roadmap
- Hugging Face

* Update hugging-face-tasks@YKIPOiSj_FNtg0h8uaSMq.md

Updating on AI Engineer Roadmap
- Hugging Face Tasks

* Update hugging-face-hub@YLOdOvLXa5Fa7_mmuvKEi.md

Updating on AI Engineer Roadmap
- Hugging Face Hub

* Update inference-sdk@3kRTzlLNBnXdTsAEXVu_M.md

Updating on AI Engineer Roadmap
- Inference SDK

* Update transformersjs@bGLrbpxKgENe2xS1eQtdh.md

Updating on AI Engineer Roadmap
- Transformers.js

---------

Co-authored-by: dsh <daniel.s.holdsworth@gmail.com>
2024-10-16 15:51:42 +01:00
Kamran Ahmed
6e5e77c86b Revert "Remove Hacktoberfest (#7494)" (#7496)
This reverts commit 2410c89bde.
2024-10-16 15:48:43 +01:00
Kamran Ahmed
2410c89bde Remove Hacktoberfest (#7494) 2024-10-16 15:16:51 +01:00
github-actions[bot]
b513a48c2a chore: update roadmap content json (#7488)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2024-10-16 19:44:36 +06:00
Arik Chakma
b4990ae3cd fix: api design node id (#7493) 2024-10-16 19:43:42 +06:00
Nirator
c178749818 Add minipic to image compressor list (#7489)
* Add minipic to image compressor list

* Update src/data/best-practices/frontend-performance/content/compress-your-images.md

capitalized

---------

Co-authored-by: dsh <daniel.s.holdsworth@gmail.com>
2024-10-16 11:58:13 +01:00
Aboody_01
88e7aa9d3f Add a Javascript error reference article to Nodejs roadmap (#7487)
* Add a Javascript error reference article to Nodejs roadmap

a Javascript error reference article from mdn web documents

* Add a reference article to the nodejs Roadmap
2024-10-16 09:35:31 +01:00
Akshay B
373068e713 Contribution to AI Engineer Roadmap (#7490)
* Update opensource-ai@a_3SabylVqzzOyw3tZN5f.md

Updating on AI Engineer roadmap
- OpenSource AI

* Update open-vs-closed-source-models@RBwGsq9DngUsl8PrrCbqx.md

Updating on AI Engineer Roadmap
- Open vs Closed Source Models

* Update open-vs-closed-source-models@RBwGsq9DngUsl8PrrCbqx.md

minor change (-)

* Update popular-open-source-models@97eu-XxYUH9pYbD_KjAtA.md

Updating on AI Engineer Roadmap
- Popular Open Source Models

* Update src/data/roadmaps/ai-engineer/content/popular-open-source-models@97eu-XxYUH9pYbD_KjAtA.md

cut down the topic

---------

Co-authored-by: dsh <daniel.s.holdsworth@gmail.com>
2024-10-16 09:34:31 +01:00
github-actions[bot]
02eceacfe1 chore: update roadmap content json (#7479)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2024-10-15 21:24:00 +06:00
Deni Andreawan
9082f345da feat: added content to AI ​​Engineer Roadmap (#7464)
* feat: added content to AI ​​Engineer Roadmap

* fix: update content for AI Engineer vs ML Engineer
2024-10-15 15:42:02 +01:00
dsh
1df57aa83b fix libra/libre type (#7483) 2024-10-15 10:08:49 +01:00
Aboody_01
dcba12aca0 Update Node.js system errors (#7474)
Add an Article that explains system errors and fix them
2024-10-15 10:04:28 +01:00
Kamran Ahmed
7cf5071ee4 Fix spacing on grid 2024-10-14 22:07:25 +01:00
dsh
3a1c7e5300 Update docker roadmap content (#7440)
* rework docker roadmap content

* remove h2
2024-10-14 16:36:34 +01:00
Vedansh
51d7dfb0a4 Improve API design roadmap content (#7462)
* Phase - 1st

* Phase - 2

* Phase - 3

* Phase - 4

* Phase  - 5

* Added Some Special Content.
2024-10-14 16:32:48 +01:00
dsh
2b9e86cd67 change JSON to Markdown (#7471) 2024-10-14 16:31:28 +01:00
Kamran Ahmed
737126ebc4 Add a button to visit homepage from bookmarks 2024-10-14 16:27:51 +01:00
Kamran Ahmed
677e66b806 Add AI engineer roadmap link 2024-10-14 15:58:26 +01:00
Kamran Ahmed
24a2da024f Add team sponsor 2024-10-14 15:55:40 +01:00
dsh
1426959f77 removed broken link (#7472) 2024-10-14 10:14:56 +01:00
Moulishwaran Balaji
566210ace5 Updated nose -python description (nose is deprecated now) (#7443)
* Update nose@SSnzpijHLO5_l7DNEoMfx.md  

As nose is deprecated and not actively maintained the information is added to this page.

* Update src/data/roadmaps/python/content/nose@SSnzpijHLO5_l7DNEoMfx.md

---------

Co-authored-by: dsh <daniel.s.holdsworth@gmail.com>
2024-10-14 10:02:34 +01:00
Kabeer Arora
426766f261 fix: update router content in cybersecurity roadmap (#7465)
* fix: update router content in cybersecurity roadmap

* fix: update video titles for router in cyber-security roadmap
2024-10-14 09:50:30 +01:00
Abdullahi Abdiaziz yusuf
9a241448ef Add a free article to the documentation (#7467)
Added a section on 'Testing JavaScript with Vultr' to the documentation. The article explains how to deploy and test JavaScript applications on the Vultr cloud platform, covering setup, environment configuration, and basic test scripts for ensuring performance and reliability.
2024-10-14 09:49:07 +01:00
github-actions[bot]
817d3a0018 chore: update roadmap content json (#7446)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2024-10-13 21:36:04 +06:00
Kamran Ahmed
2bff8d8303 Update dependencies 2024-10-12 13:11:54 +01:00
Kamran Ahmed
d7974de788 Downgrade dependencie 2024-10-12 13:02:40 +01:00
Kamran Ahmed
3675de800e Upgrade dependencies 2024-10-12 12:37:29 +01:00
Shivam Mittal
6d16cb7564 Fixed typo in automated-backups.md (#7447) 2024-10-12 12:19:41 +01:00
Mehul
25e51eec37 fix: Broken Link in React Roadmap -> Component Life Cycle (#7439) 2024-10-11 21:40:37 +06:00
github-actions[bot]
e967f5a183 chore: update roadmap content json (#7435)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2024-10-11 21:39:48 +06:00
Kamran Ahmed
b509c31652 Update dependencies 2024-10-11 12:22:04 +01:00
Sivarajakani
02d60e8eca feat: add a YouTube video link to Rust memory management (#7438)
* Added a YouTube video link to Rust memory management

In this video, he provides a clear explanation of Rust's ownership system, including example code. It could be helpful for understanding ownership concepts.

* Update src/data/roadmaps/rust/content/100-introduction/102-memory-safety.md

---------

Co-authored-by: dsh <daniel.s.holdsworth@gmail.com>
2024-10-11 12:13:24 +01:00
Obiechina Emmanuel
c7e483c384 Add content to AI Engineer roadmap (#7349)
* Added content to custom-validators topic

* Added contents to 10 git & github topics

* Apply suggestions from code review

styling clean up

* Added contents to 10 git and github topics

* Update src/data/roadmaps/git-github/content/committing-changes@2_z3R7seCvQVj-Na4H1SV.md

* Update src/data/roadmaps/git-github/content/creating-account@i7fIIHcBEk473te8bniJ5.md

* Update src/data/roadmaps/git-github/content/creating-branch@OegitQ5Ngjvd3ZfMpfrkM.md

* Update src/data/roadmaps/git-github/content/creating-repositories@c_FO6xMixrrMo6iisfsvl.md

* Update src/data/roadmaps/git-github/content/deleting-branch@1uDenoQ6zu7CT69FR2iQB.md

* Update src/data/roadmaps/git-github/content/fast-forward-vs-non-ff@agtPWS8j6i6wQPk10cy8E.md

* Update src/data/roadmaps/git-github/content/forking-vs-cloning@l1Wf7Pe_ah8ycCgslfSK4.md

* Update src/data/roadmaps/git-github/content/git-rebase@HMEfUFNu_Wp_Pac7VWHr-.md

* Added contents to 7 git and github topics

* added content to 10 redis topics

* Revert changes to src/app.js from commit abc1234

* Added contents to 5 Ai engineer roadmap topics

* Update src/data/roadmaps/ai-engineer/content/ai-agents@9XCxilAQ7FRet7lHQr1gE.md

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>

* Update src/data/roadmaps/ai-engineer/content/ai-code-editors@XcKeQfpTA5ITgdX51I4y-.md

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>

* Update src/data/roadmaps/ai-engineer/content/chroma@dSd2C9lNl-ymmCRT9_ZC3.md

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>

* updated content of adding-end-user-ids

* Update src/data/roadmaps/ai-engineer/content/adding-end-user-ids-in-prompts@4Q5x2VCXedAWISBXUIyin.md

* Update src/data/roadmaps/ai-engineer/content/agents-usecases@778HsQzTuJ_3c9OSn5DmH.md

* Update src/data/roadmaps/ai-engineer/content/agents-usecases@778HsQzTuJ_3c9OSn5DmH.md

---------

Co-authored-by: dsh <daniel.s.holdsworth@gmail.com>
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2024-10-11 01:17:12 +01:00
Kamran Ahmed
75ab1ba89c Add ec2 instance project idea 2024-10-10 15:21:42 +01:00
Kamran Ahmed
44562b6a1e Add new project idea 2024-10-10 15:02:22 +01:00
Kamran Ahmed
10dfd37d40 Add new project ideas for deployment and service discovery 2024-10-10 15:02:22 +01:00
dsh
8beb9754ba Add articles for machine learning (#7427) 2024-10-10 14:26:43 +01:00
Vedansh
788825fb75 Improve AWS Roadmap (#7403)
* RDS

* DynamoDB.

* ECS

* Lambda

* Final Phase.
2024-10-10 12:22:16 +01:00
Vedansh
8535c6eef2 Improve AWS Roadmap (#7401)
* SES

* S3

* Route 53

* Cloudwatch

* Cloudfront
2024-10-10 12:21:29 +01:00
Vedansh
78a642f8bd Improve AWS Roadmap content (#7400)
* Introduction.

* EC2.

* VPC

* IAM

* Autoscaling.
2024-10-10 12:21:03 +01:00
dsh
5b29181d95 removed duplicate subtopic, replaced content, shifted nodes up (#7424) 2024-10-10 12:19:20 +01:00
Abdul Samad Shaikh
2571a7c52e fix superfluous word 'token' when writing JWT (#7426) 2024-10-10 12:19:07 +01:00
Ruslan Semagin
9b952b9afe Fixed inaccuracies in Redis Roadmaps (#7404) 2024-10-10 11:34:37 +01:00
0x009922
960218235d Add links to the free "Rust Atomics and Locks" ebook (#7416)
* Add links to the free "Rust Atomics and Locks" ebook
2024-10-10 11:31:40 +01:00
Sparsh
ec668a3a0b Added 2 new course links of Swift programming (#7419)
* Added new course link of 100 days of Swift | Hacking with SwiftUI

* Added new course link of Swift Programming | Programiz
2024-10-10 11:29:29 +01:00
Patrick Schröder
42874aa6c7 replace broken link (#7421) 2024-10-10 11:27:01 +01:00
Robiul Hossain
aa1d4c9914 Devops Roadmap: GitHub action & nginx resource added (#7350)
* feat: add a course video to github actions in devops

* feat: add an nginx setup article to nginx in devops

* fix: github action certification video starting point in github action of devops roadmap
2024-10-10 11:13:07 +01:00
github-actions[bot]
5e0ff6c780 chore: update roadmap content json (#7415)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2024-10-10 09:12:16 +06:00
Roman
9b14b2d60a fix: replace duplicated link in Introduction to TypeScript content (#7406) 2024-10-09 23:45:00 +06:00
Kamran Ahmed
9c73a476c3 Add prometheus project 2024-10-09 17:00:04 +01:00
Kamran Ahmed
c336b85a0a Add automated backups project 2024-10-09 15:31:16 +01:00
Kamran Ahmed
e3694f4e36 Add multi-container project idea 2024-10-09 14:58:50 +01:00
Kamran Ahmed
801556d515 Update sorting 2024-10-09 14:30:37 +01:00
Kamran Ahmed
900b618f66 Add dockerized service project idea 2024-10-09 14:23:53 +01:00
Kamran Ahmed
ea7b55cb64 Add project 2024-10-09 12:54:30 +01:00
Kamran Ahmed
8f8cca4be3 Add new projects for devops roadmap 2024-10-09 12:54:30 +01:00
Vedansh
63004475aa Improve Go Roadmap (#7399)
* Go Basics.

* Go Advanced.

* 102,103,104,105,106

* Everything Else.
2024-10-09 11:36:51 +01:00
Akhilesh Rawat
fae4899a2c Update v-html@bZxtIBeIfeUcR32LZWrPW.md - v-html,HTML typo fix (#7394)
Fixed typos "v-thml" and "HTMl" to "v-html" and "HTML" respectively.
2024-10-09 11:19:16 +01:00
Brian Rodriguez
f34f6a280c [Update] software architect: Agile model (#7391) 2024-10-09 11:18:48 +01:00
Roy Straub
cad104a413 Corrects the CQS article (#7396)
* Improved CQS article

The previous article referred to a broader, architectural pattern of CQRS, which are not the same

* Update src/data/roadmaps/software-design-architecture/content/100-clean-code-principles/113-command-query-separation.md

removed extra bracket.

---------

Co-authored-by: dsh <daniel.s.holdsworth@gmail.com>
2024-10-09 11:17:55 +01:00
Himanshu Jangid, हिमांशु जाँगिड़
29d3b26fe4 Add content for game-mathematics (#7307)
* Update game-mathematics, add one of the most best free books for learning game math

Multiple mathematics books specifically target game math but this is one of the best yet free.

* fix: resource formatting

---------

Co-authored-by: Arik Chakma <arikchangma@gmail.com>
2024-10-09 10:26:07 +01:00
Ruslan Semagin
6de4a36dd4 feat: add useful links for Rust (#7397) 2024-10-09 15:14:23 +06:00
Ruslan Semagin
c8d8b75c31 feat: add Leptos Web Framework to Web Development (#7398) 2024-10-09 15:13:03 +06:00
github-actions[bot]
25661736ff chore: update roadmap content json (#7377)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2024-10-09 15:11:29 +06:00
Kamran Ahmed
31dffa82c5 Add server stats project 2024-10-09 02:15:12 +01:00
Kamran Ahmed
473366f3ca Add dummy service project ideas 2024-10-09 00:24:12 +01:00
Kamran Ahmed
01e366cbac Add monitoring dashboard idea 2024-10-08 23:22:07 +01:00
Kamran Ahmed
69f350ef85 Add new projects for devops roadmap 2024-10-08 22:18:54 +01:00
Kamran Ahmed
ccb3890484 Update project description 2024-10-08 22:18:54 +01:00
FerPlej
10af26eed6 feat: remove link in Hindi (#7387)
Co-authored-by: Piotr Pietryga <piotr.j.pietryga@gmail.com>
2024-10-08 19:48:40 +01:00
Kamran Ahmed
9ec855fb15 Add github actions workflow task 2024-10-08 14:25:55 +01:00
Kamran Ahmed
ae7ea40f74 Add nginx log analyzer 2024-10-08 14:25:55 +01:00
Mark
4125c28f5a Feat/postgres roadmap add new links group by (#7378)
* Add new links for group by for PostgreSQL

* Update article name

* Update src/data/roadmaps/postgresql-dba/content/grouping@uwd_CaeHQQ3ZWojbmtbPh.md

---------

Co-authored-by: dsh <daniel.s.holdsworth@gmail.com>
2024-10-08 12:59:41 +01:00
Robiul Hossain
912e7d7a56 Adding api design roadmap resources (#7373)
* feat: add a resource link to api designs basics of dns topic

* feat: add a resource link to api designs restful apis topic

* Update src/data/roadmaps/api-design/content/basics-of-dns@v4nJYD9yiIEUviLPhVTCD.md

---------

Co-authored-by: dsh <daniel.s.holdsworth@gmail.com>
2024-10-08 12:55:41 +01:00
Tejaswi Tyagi
11cb5caafc Added content to blank Java Advanced Topics index.md file (#7371) 2024-10-08 12:51:34 +01:00
Krushna Kanta Rout
34c951b619 Feat: Added Resources, Improvements, and Typo Fixes for Full Stack Roadmap (#7369)
* feat: add video for restful api

* feat: add documentationfor redis

* feat: add dedicated roadmap

* fix: add website names

* feat: add official website of monit

* fix: replace article with official

* fix: change feed link github to github-actions

* fix: add taiwind css
2024-10-08 12:48:16 +01:00
Murshal Akhtar Ansari
fe9162296e roadmap: added resource links in DSA for selection and heap sort (#7368) 2024-10-08 12:46:16 +01:00
Arunabha-NOTE
b282129eab Update devops-principles.md (#7365)
Fixed typo and incomplete link in the 9th section for cncf.io
2024-10-08 12:44:01 +01:00
lerethel
6e1e045773 Update 101-big-theta.md (#7364)
* Update 101-big-theta.md

Replace 'Theta' with 'θ' where applicable and remove unnecessary escaping

* Update 101-big-theta.md

Remove unnecessary parentheses
2024-10-08 12:43:12 +01:00
Youssef Hassan
191ca24c93 Link refers to SQL Roadmap under 'Learn SQL' topic in 'PostgreSQL DBA' (#7363) 2024-10-08 12:40:49 +01:00
Mark
9487a2947b Fix relational database app daily dev link in postgres roadmap (#7379) 2024-10-08 12:36:53 +01:00
Brian Rodriguez
4a45c0b6b1 [Update] software architect: PMI & RUP (#7341) 2024-10-08 12:20:22 +01:00
vansh kabra
099ec78cca add new references to learn component lifecycles (#7319)
* add new references to learn component lifecycles

* add new references to learn component lifecycles and update official at top

* add new references to learn component lifecycles and place the main link in link section
2024-10-08 12:15:57 +01:00
Vedansh
c565fb5e0a Improve python roadmap (#7323)
* 18 Topics Verified.

* 19 Topics Verified.

* 21 Topics Verified.

* 12 Topics Verified.
2024-10-08 11:51:52 +01:00
Kamran Ahmed
2db1bce35b Remove new badge from old guides 2024-10-08 11:50:32 +01:00
Kamran Ahmed
53cda20ddb Highlight official roadmaps, add changelog 2024-10-08 11:50:23 +01:00
adnn-alc
e3224cb7b1 Add content for pre-trained models (#7370)
* Update pre-trained-models

* Update src/data/roadmaps/ai-engineer/content/pre-trained-models@d7fzv_ft12EopsQdmEsel.md

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2024-10-07 12:48:44 +01:00
Arik Chakma
8b0c536750 feat: team dashboard (#7213)
* fix: add team roadmaps

* feat: implement add member

* feat: separate team dashboard page

* UI changes for team dashboard

* Add team activity dashboard

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2024-10-07 12:47:54 +01:00
dsh
3f7e50907a Add redis roadmap content (#7229)
* 24 topics

* 9 topics

* remove experimental androud additions

* 66 topics, no links

* 51 topics, need to add links

* add links to 50+ topics

* add links to 10+ topics

* final changes

* Update src/data/roadmaps/redis/content/pubsub@9W_jaK1DSEZHRKdPcUM7h.md

* Update src/data/roadmaps/redis/content/redis-enterprise@8lyXDuZJ-KHl4v2_8Ew1h.md

* Update src/data/roadmaps/redis/content/redis-modules@hLIT00Iz7rV56ZBIUhWYn.md

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2024-10-07 11:31:26 +01:00
github-actions[bot]
01c2b90cc2 chore: update roadmap content json (#7353)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2024-10-07 05:46:57 +06:00
Arik Chakma
55218ea85a feat: add open source link type (#7351)
* feat: add open source link type

* fix: capitalize link type
2024-10-06 06:45:55 +06:00
Arik Chakma
c894430a86 fix: bcrypt open source link (#7344) 2024-10-05 10:53:42 +06:00
github-actions[bot]
f876ba8df5 chore: update roadmap content json (#7339)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2024-10-05 09:52:41 +06:00
Jean-François Greffier
c26fb97bc7 Use react.dev for links (#7332)
* Update useCallback with new React website

* Update links with new React website
2024-10-04 18:41:47 +01:00
Koki Kazaore
3b1cc91405 update index.md of 101-ec2 dir (#7329) 2024-10-04 14:31:53 +01:00
Kamran Ahmed
5a49ad45be Remove best practices 2024-10-04 11:59:48 +01:00
Kamran Ahmed
be221a2b14 Remove content from AI engineer roadmap 2024-10-04 11:31:36 +01:00
Satyam Vyas
6461ccaf59 Fix: Added content for Prompt Engineering: Prompt Hacking (#7318)
* fix: added content for Prompt Hacking

* fix: formatted the roadmap content according to the guidelines
2024-10-04 09:25:28 +01:00
Robiul Hossain
aa76db78da Devops roadmap: add resources links (#7317)
* feat: add a article for nginx as reverse proxy in devops roadmap

* feat: add nginx as load balancer article in devops roadmap

* feat: add a ufw filewall blog for fiirewall resources in devops roadmap
2024-10-04 09:18:37 +01:00
github-actions[bot]
c40cda13d8 chore: update roadmap content json (#7322)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2024-10-04 07:55:48 +06:00
Kamran Ahmed
487145b9a4 UI redesign for invite page 2024-10-03 23:33:27 +01:00
Arik Chakma
cc817b060c feat: add referral user count (#7233)
* feat: add referral user count

* feat: add referrals leaderboard

* fix: update UI

* Update referral design

* Update invite friends UI

* Add leaderboard page

* Update leaderboard page

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2024-10-03 23:07:21 +01:00
Kamran Ahmed
06c242cf32 Add AI engineer roadmap content 2024-10-03 15:28:33 +01:00
Kamran Ahmed
5b09e61b86 Add content to AI Engineer roadmap 2024-10-03 15:28:33 +01:00
Kamran Ahmed
a3fedad816 Add content to AI Engineer roadmap 2024-10-03 15:28:33 +01:00
Kamran Ahmed
338f6c5d4a Add AI Engineer roadmap content 2024-10-03 15:28:33 +01:00
Robiul Hossain
9d6d77f93e feat: remove the packag-lock.json file from commit (#7301) 2024-10-03 15:27:42 +01:00
mitch edwards // valhalla_dev
f4c717b958 Addition of the poem library to web-development as well as the file-parsing topic (#7291)
Copy and links added to a few Rust topics.

---------

Co-authored-by: dsh <daniel.s.holdsworth@gmail.com>
2024-10-03 15:25:37 +01:00
Berkcan Gümüşışık
65fe7aeb71 Python resources added. (#7293) 2024-10-03 15:23:45 +01:00
Aryan Chaurasia
1d0e65c2c8 Added content for KV database (#7295)
* Update key-value-database@l2aXyO3STnhbFjvUXPpm2.md

Added content for KV database

* Update src/data/roadmaps/redis/content/key-value-database@l2aXyO3STnhbFjvUXPpm2.md

---------

Co-authored-by: dsh <daniel.s.holdsworth@gmail.com>
2024-10-03 15:20:48 +01:00
Vedansh
421133ecc2 Improved Frontend Roadmap (#7298)
* Phase - 1

* Phase - 2

* Phase - 3

* Phase - 4

* Phase - 5

* Phase - 6

* Phase - 7

* Apply suggestions from code review

---------

Co-authored-by: dsh <daniel.s.holdsworth@gmail.com>
2024-10-03 15:16:07 +01:00
joel1st
346c630019 Update hashing--encryption--encoding@7r7o8pYhFHVAJIv0wNT6X.md (#7315)
Collisions are possible with hashes & lossless (which would be the case with text) encoding/decoding does not have issues with collisions.
2024-10-03 14:54:44 +01:00
Kamran Ahmed
3b929e45d2 Add AI Engineer roadmap PDF 2024-10-03 12:27:31 +01:00
Satyam Vyas
2bef597ced Improved Content in Prompt Hacking (#7308)
* Update index.md

* Update src/data/roadmaps/prompt-engineering/content/107-prompt-hacking/index.md

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2024-10-03 08:48:08 +01:00
Vedansh
1219b9e905 fix: devops os broken link (#7306) 2024-10-03 08:35:01 +06:00
Hashir V
87ef708da3 Add content for axum (#7299)
* Update 104-axum.md

* Update src/data/roadmaps/rust/content/108-web-development/104-axum.md

---------

Co-authored-by: dsh <daniel.s.holdsworth@gmail.com>
2024-10-02 15:17:22 +01:00
github-actions[bot]
0643e86514 chore: update roadmap content json (#7292)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2024-10-02 09:41:10 +06:00
Kamran Ahmed
814b819195 Leaderboard page UI 2024-10-01 21:37:32 +01:00
Kamran Ahmed
9f2efc5872 UI for leaderboard 2024-10-01 19:31:04 +01:00
Arik Chakma
55f0eff569 feat: add github contributors leaderboard (#7277)
* feat: add github contributors leaderboard

* Improve UI for leaderboard

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2024-10-01 18:55:13 +01:00
Vedansh
47936801fd Improve backend roadmap resources (#7257)
* Phase - A to F

* Phase - G to M

* Phase - N to S

* Phase - S to Z

* Update src/data/roadmaps/backend/content/bcrypt@dlG1bVkDmjI3PEGpkm1xH.md

Co-authored-by: dsh <daniel.s.holdsworth@gmail.com>

* Update src/data/roadmaps/backend/content/caddy@Op-PSPNoyj6Ss9CS09AXh.md

Co-authored-by: dsh <daniel.s.holdsworth@gmail.com>

* Update src/data/roadmaps/backend/content/loadshifting@HoQdX7a4SnkFRU4RPQ-D5.md

Co-authored-by: dsh <daniel.s.holdsworth@gmail.com>

* Update src/data/roadmaps/backend/content/ms-sql@dEsTje8kfHwWjCI3zcgLC.md

Co-authored-by: dsh <daniel.s.holdsworth@gmail.com>

* Update src/data/roadmaps/backend/content/open-api-specs@9cD5ag1L0GqHx4_zxc5JX.md

Co-authored-by: dsh <daniel.s.holdsworth@gmail.com>

* Update twelve-factor-apps@8DmabQJXlrT__COZrDVTV.md


Co-authored-by: dsh <daniel.s.holdsworth@gmail.com>

---------

Co-authored-by: dsh <daniel.s.holdsworth@gmail.com>
2024-10-01 15:54:15 +01:00
Kamran Ahmed
6b118d14d3 Add project status 2024-10-01 15:53:22 +01:00
Kamran Ahmed
efbd1d7f04 Project card loading status 2024-10-01 14:45:05 +01:00
psaradhi
f036a11784 Update the satisfies content to be minimal (#7211)
* changed example to use toUpperCase() instead of .at(0) because .at(0) does not cause any errors since it is available in string and array

* Update satisfies-keyword@HD1UGOidp7JGKdW6CEdQ_.md

---------

Co-authored-by: pardha <pardha@Vs-MacBook-Pro.local>
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2024-10-01 14:36:33 +01:00
Vedansh
3d7bdc55bd Improve android roadmap content (#7236)
* Phase - 1.

* Phase - 2 (B)

* Phase - 3 (C)

* Phase - 4 (D)

* Phase - 5 (E,F)

* Phase - 6 (G)

* Phase - 7 (I)

* Phase - 8 (J&K)

* Phase - 9 (L)

* Phase - 10 (M,N)

* Phase - 11 (O,P,R,S)

* Phase - 12 (T,U,V,W)

* Update animations@Xn1VQ-xOT67ZfJJTM4r1p.md

* Update src/data/roadmaps/android/content/apollo-android@ww0fTbdXwVr-QIOClU7ng.md

Co-authored-by: dsh <daniel.s.holdsworth@gmail.com>

* Update basics-of-kotlin@jl1FsQ5-WGKeFyaILNt_p.md

* Update src/data/roadmaps/android/content/chucker@7RKN1FNtRE_BE6QeAQrKb.md

Co-authored-by: dsh <daniel.s.holdsworth@gmail.com>

* Update buttons@WhfzFOUpm0DFEj7Oeq21R.md

* Update src/data/roadmaps/android/content/rxkotlin@4h37WBpYxRRyw9oH8ge7o.md

Co-authored-by: dsh <daniel.s.holdsworth@gmail.com>

---------

Co-authored-by: dsh <daniel.s.holdsworth@gmail.com>
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2024-10-01 14:31:51 +01:00
github-actions[bot]
b658591c45 chore: update roadmap content json (#7283)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2024-10-01 14:28:43 +01:00
Arik Chakma
52c1b20f56 feat: add project status (#7252)
* feat: add project status

* Update project card and fix warnings

* Add loading indicator to project card

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2024-10-01 14:27:39 +01:00
Kamran Ahmed
e3ca03e531 Opening topic should not hide sponsor 2024-10-01 11:48:52 +01:00
Francesco Mannino
2378cd4bb9 [typo]: Update 102-insertion-sort.md (#7281) 2024-10-01 09:54:22 +01:00
Eduard Brahas
d673a06472 Update what-is-software-architecture@EGG99VA-PEdWdVxNDLtG_.md (#7280) 2024-10-01 09:48:50 +01:00
Sandeep Sahani
122bbe6b27 Update ios-architecture@IduGSdUa2Fi7VFMLKgmsS.md (#7279)
* Update ios-architecture@IduGSdUa2Fi7VFMLKgmsS.md

Added description for iOS Architecture, ensuring contribution rules.

* Update src/data/roadmaps/ios/content/ios-architecture@IduGSdUa2Fi7VFMLKgmsS.md

---------

Co-authored-by: dsh <daniel.s.holdsworth@gmail.com>
2024-10-01 09:46:36 +01:00
Danrley Senegalha Pires
d2a36a9d4c fix: change tag from article to video (#7285) 2024-10-01 09:44:59 +01:00
Danrley Senegalha Pires
04151f9693 fix: change tag from article to video (#7284) 2024-10-01 09:44:43 +01:00
Ahmad Asaad
264afe4e03 Add a link to "Learn Git Branching" tutorial to "Branching Basics" topic in "Git & Github" roadmap & rename file in "Backend" roadmap content. (#7250)
Added "Learn Git Branching" tutorial link.
2024-09-30 11:44:42 +01:00
github-actions[bot]
678388d401 chore: update roadmap content json (#7271)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2024-09-30 16:42:54 +06:00
cromulent0101
8ce7aa7bcb Update SSL/TLS pages with correct topic content (#7272)
* Update SSL TLS pages with correct topic

* Update TLS pages with correct non-SSO content

* Update SSL and TLS pages withcorrect content
2024-09-30 11:42:29 +01:00
Aryan Chaurasia
447437bfc9 Update in-memory-data-structure-store@M-EXrTDeAEMz_IkEi-ab4.md (#7270)
* Update in-memory-data-structure-store@M-EXrTDeAEMz_IkEi-ab4.md

added content

* Update src/data/roadmaps/redis/content/in-memory-data-structure-store@M-EXrTDeAEMz_IkEi-ab4.md

---------

Co-authored-by: dsh <daniel.s.holdsworth@gmail.com>
2024-09-30 11:41:30 +01:00
Brian Rodriguez
72a04b9b9f fix: update android roadmap content 2024-09-30 02:22:40 +06:00
github-actions[bot]
15d19eeb6c chore: update roadmap content json (#7253)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2024-09-28 17:55:18 +06:00
Kamran Ahmed
9aae8b5eb7 Add scrimba banner 2024-09-27 15:39:11 +01:00
dsh
0ebf479d9b Add backend frameworks guide (#7245)
* completed backend frameworks guide and updated faqs

* update og image
2024-09-27 15:19:32 +01:00
dsh
1035ea8041 Add frontend framework guide (#7240)
* add frontend framework guide

* added new faq to link to article
2024-09-27 15:18:51 +01:00
dsh
f3c9de8f78 Add DevOps principles guide (#7219)
* add devops principles guide

* update devops question copy
2024-09-27 15:17:49 +01:00
dsh
a5f043b4e9 Update mlops content (#7210) 2024-09-27 15:17:10 +01:00
dsh
1090545b82 Add migrations to db section (#7175) 2024-09-27 15:15:31 +01:00
dsh
f2bc4548ba Cleanup frontend roadmap links (#7026)
* cleaning up FE links

* astro topics

* 52 topics completed

* finish updating fe content

* correct angular site link

* webpack topic

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2024-09-27 15:15:14 +01:00
dsh
8e9d1df3d2 Add hacktoberfest contribution docs (#7217)
* initial hacktoberfest contribution points

* added note
2024-09-27 15:14:47 +01:00
Mark
67475b1b6d Fix article link for Knexjs should be official (#7247) 2024-09-27 15:06:32 +01:00
dsh
88b830c862 added provisioning content and links (#7246) 2024-09-27 11:23:55 +01:00
Brian Rodriguez
b29d8150c7 [Add] Android docs: SharedPreferences & JUnit (#7243) 2024-09-27 10:05:32 +01:00
github-actions[bot]
c0b1337755 chore: update roadmap content json (#7241)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2024-09-27 06:19:27 +06:00
Mark
4df1814769 Fix link in Nodejs roadmap - NestJS section (#7239) 2024-09-26 13:27:42 +01:00
github-actions[bot]
35d38f654f chore: update roadmap content json (#7234)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2024-09-26 18:14:56 +06:00
Abbas Pourfallah
f20334b0de Add description of what is redis (#7227)
* Add description of what is redis

---------

Co-authored-by: Arik Chakma <arikchangma@gmail.com>
2024-09-25 15:07:38 +01:00
github-actions[bot]
1c0a8d1f47 chore: update roadmap content json (#7223)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2024-09-25 17:55:20 +06:00
Brian Rodriguez
4df1ef730c [Add] Android docs: Datastore & Room (#7224) 2024-09-25 11:02:58 +01:00
Stefan Cristian
f177d57b2d fix: remove invalid URL (#7222)
Invalid URL: https://flutterbyexample.com/lesson/about-dart
2024-09-25 06:05:17 +06:00
github-actions[bot]
216d389cd4 chore: update roadmap content json (#7214)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2024-09-25 06:03:55 +06:00
Vedansh
b265da3b37 Improved Git-Github Roadmap (#7218)
Cleaned spelling and grammatical issues in topics. Added new, official links to docs etc.

---------

Co-authored-by: dsh <daniel.s.holdsworth@gmail.com>
2024-09-24 14:52:35 +01:00
Kamran Ahmed
3786c91d71 Ignore compressing .gif 2024-09-23 22:41:55 +01:00
Kamran Ahmed
86c65e6d72 Fix image clipping 2024-09-23 22:37:56 +01:00
Kamran Ahmed
13290595b2 Update changelob banner 2024-09-23 22:34:59 +01:00
Kamran Ahmed
82359f89a0 Update account streak UI and changelog banner design 2024-09-23 19:10:21 +01:00
Kamran Ahmed
e3e972a360 Add changelog banner 2024-09-23 19:00:03 +01:00
Kamran Ahmed
72f8da6805 Update redis roadmap changelog 2024-09-23 18:19:09 +01:00
Kamran Ahmed
daa5a430bd Update banner 2024-09-23 18:12:14 +01:00
Kamran Ahmed
5c96a57f85 Change color for recommended roadmaps 2024-09-23 16:31:08 +01:00
Kamran Ahmed
59e359f303 Add changelog page 2024-09-23 16:17:49 +01:00
Kamran Ahmed
61816ab1e3 Changelog page design 2024-09-23 15:54:06 +01:00
Kamran Ahmed
53e87095ef Update changelog page 2024-09-23 15:19:10 +01:00
Kamran Ahmed
086c790837 Update alert text 2024-09-23 13:54:50 +01:00
Arik Chakma
9948e89b84 feat: implement changelog page (#7099)
* feat: implement leaderboard page

* feat: sample changelog files

* Update UI for changelog page

* Make changelog page noindex

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2024-09-23 13:52:42 +01:00
Arik Chakma
3166a02f23 feat: implement roadmap alert (#7116)
* feat: implement roadmap alert

* fix: floating icon position
2024-09-23 13:46:37 +01:00
Kamran Ahmed
e9fdde087f Add redis roadmap 2024-09-23 13:32:25 +01:00
Kamran Ahmed
fdfc8e6c6b Add redis links to roadmaps and get-staretd pages 2024-09-23 13:30:59 +01:00
Arik Chakma
7642493369 feat: update public profile (#7170)
* feat: update public profile

* Update arp@M52V7hmG4ORf4TIVw3W3J.md (#7171)

* Update arp@M52V7hmG4ORf4TIVw3W3J.md

A little changes made to the Topic

* Update src/data/roadmaps/cyber-security/content/arp@M52V7hmG4ORf4TIVw3W3J.md

* Update src/data/roadmaps/cyber-security/content/arp@M52V7hmG4ORf4TIVw3W3J.md

---------

Co-authored-by: Arik Chakma <arikchangma@gmail.com>

* chore: update roadmap content json (#7164)

Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>

* Add redis roadmap

* Add redis roadmap

* Add redis roadmap

* Improved Docker Roadmap. 🌨️  (#7029)

* Introduction.

* Namespaces.

* Installation & Setup

* Data Persistence.

* Databases.

* Building Container Images.

* Container Registries.

* Running Containers.

* Container Security

* Docker CLI. (Goated)

* Developer Experience.

* Deploying Containers + Extras.

* Few Refractors.

* Trim Content As Requested.

* Undo / Remove Refractors.

* Update 100-dockerhub.md

* Update 101-dockerhub-alt.md

* Update index.md

* Apply Requested Changes.

* Update what-is-hosting@aqMaEY8gkKMikiqleV5EP.md (#7174)

Add new article for 'Web Hosting', it has clearly explained all the details for the beginners. And it will be more reasonable to have not only videos but also article

* replaced broken link (#7176)

* 7165 roadmap title typo (#7177)

* corrected the node title

* corrected file name

* Fix SEO title

* chore: update roadmap content json (#7173)

Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>

* Complete spell-check for "Prespective Analytics" (#7179)

Corrected "Prespective Analytics" into _Prescriptive Analytics_ 


References:
Issue #7165 
PR #7177

* Fix typo in article title (#7180)

* Update 101-memory-management.md (#7181)

* Update 101-memory-management.md

* Update src/data/roadmaps/java/content/101-java-advanced-topics/101-memory-management.md

---------

Co-authored-by: dsh <daniel.s.holdsworth@gmail.com>

* Add cybersecurity content (#7136)

* add 80+ topics

* 7 topics

* 19 topics

* complete cyber roadmap

* expanded internal links into full urls

* Update DevOps roadmap resources (#7081)

* 6 topics

* 6 topics

* 37 topics

* 25 topics

* 53 topics

* finalised the updated content

* Apply suggestions from code review

Co-authored-by: Arik Chakma <arikchangma@gmail.com>
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>

* reverted the removal of go link

---------

Co-authored-by: Arik Chakma <arikchangma@gmail.com>
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>

* chore: update roadmap content json (#7188)

Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>

* Update Rendering link to the new React docs (#7205)

* Fix typo (#7202)

* Update technical-documentation@X0xUzEP0S6SyspvqyoDDk.md (#7198)

* Update technical-documentation@X0xUzEP0S6SyspvqyoDDk.md

* Update src/data/roadmaps/devrel/content/technical-documentation@X0xUzEP0S6SyspvqyoDDk.md

---------

Co-authored-by: dsh <daniel.s.holdsworth@gmail.com>

* Update vs-code@j5nNSYI8s-cH8EA6G1EWY.md (#7195)

* Update vs-code@j5nNSYI8s-cH8EA6G1EWY.md

* Update src/data/roadmaps/devrel/content/vs-code@j5nNSYI8s-cH8EA6G1EWY.md

---------

Co-authored-by: dsh <daniel.s.holdsworth@gmail.com>

* Update basic-programming-skills@aSYXa25_0O2qQl1O-N3xl.md (#7193)

* Update basic-programming-skills@aSYXa25_0O2qQl1O-N3xl.md

* Update src/data/roadmaps/devrel/content/basic-programming-skills@aSYXa25_0O2qQl1O-N3xl.md

---------

Co-authored-by: dsh <daniel.s.holdsworth@gmail.com>

* [Update] Software architect: ITIL (#7191)

* [Update] Software architect: ITIL

* [Update] Android roadmap: Firebase docs (#7190)

* [Update] Android roadmap: Firebase docs

* [Update] Android roadmap: Firebase docs

* Chibuike 19/add redis contents (#7186)

* added content to 10 redis topics

---------

Co-authored-by: dsh <daniel.s.holdsworth@gmail.com>
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>

* Update links type to official (#7209)

* add link for an article about rendering ,by kentcdodds.com (#7208)

* add link for an article about rendering ,by kentcdodds.com

* Update src/data/roadmaps/react/content/rendering@0uiGsC5SWavNdlFqizkKe.md

---------

Co-authored-by: dsh <daniel.s.holdsworth@gmail.com>

* Fix: Change "virutalenv" to "virtualenv" (#7184)

* Update 102-control-flow.md (#7182)

* feat: update dashboard layout (#7155)

* Update button design for cards

* Default visiblity to all

* Fix qa roadmap issue and public projects

* Update button design for profile

---------

Co-authored-by: Vipul Patil <70363133+1VIP1786@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
Co-authored-by: Vedansh <superuser.ntsystems@outlook.com>
Co-authored-by: Jiayou Zhu <43867657+ZlatanCN@users.noreply.github.com>
Co-authored-by: dsh <daniel.s.holdsworth@gmail.com>
Co-authored-by: Sarkis Kovlekjian <83559262+kenshanta@users.noreply.github.com>
Co-authored-by: Mark <mac21macky@gmail.com>
Co-authored-by: Rahul <rahulrp3031@gmail.com>
Co-authored-by: tal bendet <68239430+t-bendet@users.noreply.github.com>
Co-authored-by: Philip B. Krogh <71797726+phibkro@users.noreply.github.com>
Co-authored-by: Brian Rodriguez <rzknairb@gmail.com>
Co-authored-by: Obiechina Emmanuel <94564639+chibuike-19@users.noreply.github.com>
Co-authored-by: Inkyung Huh <inkyung.huh@metric-studio.com>
Co-authored-by: Ahmad Asaad <ahmadasaadh@gmail.com>
2024-09-23 13:23:28 +01:00
Kamran Ahmed
3355b91aa0 Update button design for cards 2024-09-23 12:00:23 +01:00
Arik Chakma
9b865678b2 feat: update dashboard layout (#7155) 2024-09-23 11:51:27 +01:00
Ahmad Asaad
9b3ec7cc19 Update 102-control-flow.md (#7182) 2024-09-23 10:49:42 +01:00
Inkyung Huh
e78a7da1a9 Fix: Change "virutalenv" to "virtualenv" (#7184) 2024-09-23 10:40:45 +01:00
tal bendet
8c99cb6ea8 add link for an article about rendering ,by kentcdodds.com (#7208)
* add link for an article about rendering ,by kentcdodds.com

* Update src/data/roadmaps/react/content/rendering@0uiGsC5SWavNdlFqizkKe.md

---------

Co-authored-by: dsh <daniel.s.holdsworth@gmail.com>
2024-09-23 10:32:11 +01:00
tal bendet
bd4e3edf76 Update links type to official (#7209) 2024-09-23 10:29:15 +01:00
Obiechina Emmanuel
af132495d5 Chibuike 19/add redis contents (#7186)
* added content to 10 redis topics

---------

Co-authored-by: dsh <daniel.s.holdsworth@gmail.com>
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2024-09-23 10:28:42 +01:00
Brian Rodriguez
c77465aa8a [Update] Android roadmap: Firebase docs (#7190)
* [Update] Android roadmap: Firebase docs

* [Update] Android roadmap: Firebase docs
2024-09-23 10:20:37 +01:00
Brian Rodriguez
4e02f2fe43 [Update] Software architect: ITIL (#7191)
* [Update] Software architect: ITIL
2024-09-23 10:07:33 +01:00
Vedansh
363fb3cbf5 Update basic-programming-skills@aSYXa25_0O2qQl1O-N3xl.md (#7193)
* Update basic-programming-skills@aSYXa25_0O2qQl1O-N3xl.md

* Update src/data/roadmaps/devrel/content/basic-programming-skills@aSYXa25_0O2qQl1O-N3xl.md

---------

Co-authored-by: dsh <daniel.s.holdsworth@gmail.com>
2024-09-23 10:06:44 +01:00
Vedansh
8f92c34e2e Update vs-code@j5nNSYI8s-cH8EA6G1EWY.md (#7195)
* Update vs-code@j5nNSYI8s-cH8EA6G1EWY.md

* Update src/data/roadmaps/devrel/content/vs-code@j5nNSYI8s-cH8EA6G1EWY.md

---------

Co-authored-by: dsh <daniel.s.holdsworth@gmail.com>
2024-09-23 10:03:18 +01:00
Vedansh
abb4b6ff97 Update technical-documentation@X0xUzEP0S6SyspvqyoDDk.md (#7198)
* Update technical-documentation@X0xUzEP0S6SyspvqyoDDk.md

* Update src/data/roadmaps/devrel/content/technical-documentation@X0xUzEP0S6SyspvqyoDDk.md

---------

Co-authored-by: dsh <daniel.s.holdsworth@gmail.com>
2024-09-23 10:00:01 +01:00
Philip B. Krogh
ba75bc3336 Fix typo (#7202) 2024-09-23 09:56:11 +01:00
tal bendet
ba135d9f0b Update Rendering link to the new React docs (#7205) 2024-09-23 09:53:56 +01:00
github-actions[bot]
47bfa7724e chore: update roadmap content json (#7188)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2024-09-21 19:22:26 +06:00
dsh
f344571ce4 Update DevOps roadmap resources (#7081)
* 6 topics

* 6 topics

* 37 topics

* 25 topics

* 53 topics

* finalised the updated content

* Apply suggestions from code review

Co-authored-by: Arik Chakma <arikchangma@gmail.com>
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>

* reverted the removal of go link

---------

Co-authored-by: Arik Chakma <arikchangma@gmail.com>
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2024-09-20 17:16:42 +01:00
dsh
89bea259f9 Add cybersecurity content (#7136)
* add 80+ topics

* 7 topics

* 19 topics

* complete cyber roadmap

* expanded internal links into full urls
2024-09-20 16:37:50 +01:00
Rahul
06489391f5 Update 101-memory-management.md (#7181)
* Update 101-memory-management.md

* Update src/data/roadmaps/java/content/101-java-advanced-topics/101-memory-management.md

---------

Co-authored-by: dsh <daniel.s.holdsworth@gmail.com>
2024-09-20 14:59:17 +01:00
Mark
f08566a24c Fix typo in article title (#7180) 2024-09-20 14:58:30 +01:00
Sarkis Kovlekjian
acfa8c343a Complete spell-check for "Prespective Analytics" (#7179)
Corrected "Prespective Analytics" into _Prescriptive Analytics_ 


References:
Issue #7165 
PR #7177
2024-09-20 14:58:09 +01:00
github-actions[bot]
9f6de412c3 chore: update roadmap content json (#7173)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2024-09-20 19:29:22 +06:00
Kamran Ahmed
0998196593 Fix SEO title 2024-09-20 11:18:38 +01:00
dsh
9fdb9be863 7165 roadmap title typo (#7177)
* corrected the node title

* corrected file name
2024-09-20 09:48:46 +01:00
dsh
ca1abffc36 replaced broken link (#7176) 2024-09-20 09:36:24 +01:00
Jiayou Zhu
8b73387f03 Update what-is-hosting@aqMaEY8gkKMikiqleV5EP.md (#7174)
Add new article for 'Web Hosting', it has clearly explained all the details for the beginners. And it will be more reasonable to have not only videos but also article
2024-09-20 09:05:46 +01:00
Vedansh
2eac27b03b Improved Docker Roadmap. 🌨️ (#7029)
* Introduction.

* Namespaces.

* Installation & Setup

* Data Persistence.

* Databases.

* Building Container Images.

* Container Registries.

* Running Containers.

* Container Security

* Docker CLI. (Goated)

* Developer Experience.

* Deploying Containers + Extras.

* Few Refractors.

* Trim Content As Requested.

* Undo / Remove Refractors.

* Update 100-dockerhub.md

* Update 101-dockerhub-alt.md

* Update index.md

* Apply Requested Changes.
2024-09-20 09:04:40 +01:00
Kamran Ahmed
03d92f893c Add redis roadmap 2024-09-20 00:08:57 +01:00
Kamran Ahmed
8918940aa6 Add redis roadmap 2024-09-19 23:57:01 +01:00
Kamran Ahmed
e620c1a686 Add redis roadmap 2024-09-19 23:48:00 +01:00
github-actions[bot]
4162a4aedd chore: update roadmap content json (#7164)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2024-09-20 01:30:44 +06:00
Vipul Patil
13a1c6e085 Update arp@M52V7hmG4ORf4TIVw3W3J.md (#7171)
* Update arp@M52V7hmG4ORf4TIVw3W3J.md

A little changes made to the Topic

* Update src/data/roadmaps/cyber-security/content/arp@M52V7hmG4ORf4TIVw3W3J.md

* Update src/data/roadmaps/cyber-security/content/arp@M52V7hmG4ORf4TIVw3W3J.md

---------

Co-authored-by: Arik Chakma <arikchangma@gmail.com>
2024-09-20 01:22:00 +06:00
teykamp
4183871a75 Added v-cloak and v-slot content on Vue roadmap (#7161)
* Add v-cloak description

Added v-cloak content in Vue roadmap

* Add v-slot description

Added v-slot content in Vue roadmap
2024-09-19 09:45:02 +01:00
Cody
61c4d566c2 Add new resource to symbol, refine documentation for clarity and flow. (#7163) 2024-09-19 09:43:09 +01:00
mori yuta
c49563ba16 Update 102-bitrise.md 404 link (#7167) 2024-09-19 09:41:44 +01:00
Arik Chakma
77c47e8f03 feat: add mark favourite button (#7156)
* feat: add mark favourite button

* fix: update favourite
2024-09-19 00:32:53 +01:00
Mark
597efd07ca Add new article links for triggers section in postgresql roadmap (#7152) 2024-09-18 15:41:10 +01:00
眼圈发黑
9577f4d615 Update optimizing-renders@RRPhAxIqvAcjZIcLe_N8-.md (#7154)
* Update optimizing-renders@RRPhAxIqvAcjZIcLe_N8-.md

* Update src/data/roadmaps/vue/content/optimizing-renders@RRPhAxIqvAcjZIcLe_N8-.md

cleaned up the styling

---------

Co-authored-by: dsh <daniel.s.holdsworth@gmail.com>
2024-09-18 15:39:38 +01:00
stuartrace
4f01c51232 Add formatting so the HTML elements don't get rendered (#7157)
The <input> <textarea> and <select> elements are attempted to be rendered by the browser so they aren't visible as text
2024-09-18 15:37:28 +01:00
Hang
84184724c4 Updates to the Linux Roadmap (#7149)
* add Practice Linux Commands with Hands-on Labs

* Update public/roadmap-content/devops.json

Co-authored-by: Arik Chakma <arikchangma@gmail.com>

* Update public/roadmap-content/devops.json

* add linux free tutorials

---------

Co-authored-by: huhuhang <huhuhang@github.com>
Co-authored-by: dsh <daniel.s.holdsworth@gmail.com>
Co-authored-by: Arik Chakma <arikchangma@gmail.com>
Co-authored-by: huhuhang <no-reply@huhuhang.com>
2024-09-18 15:30:42 +01:00
github-actions[bot]
024c7cbda1 chore: update roadmap content json (#7148)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2024-09-18 19:02:01 +06:00
dsh
951f97d5f0 fix: expand all internal roadmap urls (#7151) 2024-09-18 13:18:29 +01:00
Kamran Ahmed
c3118daa57 Fix typo in homepage 2024-09-18 13:17:47 +01:00
Mark
358402e20f Fix no article title in postgres roadmap (#7153) 2024-09-18 12:39:24 +01:00
Arik Chakma
6c914d1b47 fix: update copy roadmap alert (#7110)
* fix: update copy roadmap alert

* fix: update text
2024-09-18 12:24:36 +01:00
Nicholas Zingleman
3598db798c Update 104-selection-sort.md (#7147)
Dollar Signs were being rendered on the website. Removed for visual clarity.
2024-09-18 10:48:39 +01:00
Arik Chakma
ffaba806c9 feat: add projects in homepage (#7118) 2024-09-17 18:16:02 +01:00
Ed Lan
caf39819da Small content update (#7145) 2024-09-17 18:15:31 +01:00
dsh
1a98f62b38 Update Frontend FAQs (#7146) 2024-09-17 18:15:09 +01:00
J. Degand
b2e2e2c3ad docs(angular): update angular architecture content (#7103)
* docs(angular): update angular architecture content

* docs(angular): change list to paragraph
2024-09-17 10:30:53 +01:00
Saumya Shah
387d5218b2 Improve structured data content for rookies (#7137)
Improve the content in `src/data/roadmaps/prompt-engineering/content/103-real-world/100-structured-data.md` to be more concise and understandable for rookies.
2024-09-17 10:04:31 +01:00
Krishna Chaiatanya
fa0452e9c9 Update oauth-apps@qrdOARfqGPF9xhF6snbAn.md (#7138)
* Update oauth-apps@qrdOARfqGPF9xhF6snbAn.md

---------

Co-authored-by: Arik Chakma <arikchangma@gmail.com>
2024-09-17 10:02:17 +01:00
Mark
915373f16d Add offical links for for nodejs core modules (#7140) 2024-09-17 09:59:10 +01:00
Carl Walsh
12077bb8f2 devops networking fix ping typo (#7142)
Changed URL with hostname
2024-09-17 09:54:03 +01:00
github-actions[bot]
ade4b279e4 chore: update roadmap content json (#7141)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2024-09-17 06:10:43 +06:00
VotreX Tan
c5eaf08f6e Update content relevance (#7106)
Updated the explanation to include the key thesis of the framework and the components of the CREATE acronym.
2024-09-16 14:20:19 +01:00
VotreX Tan
50b342bdbf Update content (#7108)
Previous content did not refer to the correct framework by Stephen Wendel. See: https://www.oreilly.com/library/view/designing-for-behavior/9781449367947/ch01.html#in_familiar_situations_our_minds_can_use
2024-09-16 14:19:27 +01:00
moonzn
cf1e2b4d5c Update devops-engineer.md (#7111)
Typo in line 2: "Responsbilities" -> "Responsibilities"
2024-09-16 14:18:22 +01:00
Sparsh
ce6fc83ad9 Added new course link of 100 days of SwiftUI | Hacking with SwiftUI (#7112)
* Update swiftui@kAIKsDcDzwI1E0wSnC_uo.md

Added new course link of 100 days of SwiftUI | Hacking with SwiftUI

* Added new course link of 100 days of SwiftUI | Hacking with SwiftUI

Added new course link of 100 days of SwiftUI | Hacking with SwiftUI
2024-09-16 14:17:03 +01:00
Krishna Chaiatanya
d2a44fbe75 Update flink@o6GQ3-8DgDtHzdX6yeg1w.md (#7115)
* Update spark@UljuqA89_SlCSDWWMD_C_.md

* Update src/data/roadmaps/mlops/content/spark@UljuqA89_SlCSDWWMD_C_.md

* Update flink@o6GQ3-8DgDtHzdX6yeg1w.md

---------

Co-authored-by: Arik Chakma <arikchangma@gmail.com>
2024-09-16 14:15:20 +01:00
Mark
1d772af10a Add realtime data links in Backend roadmap (#7121) 2024-09-16 14:13:26 +01:00
Hang
4cb4c057aa add "Practice Linux Commands with Hands-on Labs" to "Ubuntu / Debian" node (#7122)
* add Practice Linux Commands with Hands-on Labs

* Update public/roadmap-content/devops.json

Co-authored-by: Arik Chakma <arikchangma@gmail.com>

* Update public/roadmap-content/devops.json

---------

Co-authored-by: huhuhang <huhuhang@github.com>
Co-authored-by: dsh <daniel.s.holdsworth@gmail.com>
Co-authored-by: Arik Chakma <arikchangma@gmail.com>
2024-09-16 14:11:56 +01:00
sickpoitew
8dd03f0272 Added content to some Vue topics. (#7127)
* Added v-bind description

* Added v-for description

* Added v-text description

* Added v-html description

* Added v-once description

* Added v-pre description

* Added v-else-if description
2024-09-16 14:08:19 +01:00
Brian Rodriguez
6130f16b23 [Update] Fcm docs (#7130) 2024-09-16 14:07:00 +01:00
Stavros Siamantas
30edae3e6e add git filter-repo as an alternative to git filter-branch (#7135) 2024-09-16 14:05:39 +01:00
dsh
ce48c7b594 added and removed the requested links (#7134) 2024-09-16 13:06:39 +01:00
Kamran Ahmed
3a24ff7f24 Update homepage link 2024-09-16 12:33:09 +01:00
Arik Chakma
111c7f23ab fix: progress nudge count (#7133) 2024-09-16 17:22:22 +06:00
Nicholas Zingleman
6ccbde99fe feat: content line break (#7131)
Updating formatting. Placed summary on a new line.
2024-09-16 02:29:05 +06:00
Mark
7754f7a576 fix: SQL query pattern title section in backend roadmap (#7129) 2024-09-15 15:11:57 +06:00
github-actions[bot]
2fc86bc400 chore: update roadmap content json (#7120)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2024-09-14 20:23:54 +06:00
Kamran Ahmed
56e7aa5687 Update homepage link color 2024-09-13 19:08:54 +01:00
Kamran Ahmed
b92abb127d Add link to old homepage 2024-09-13 19:08:21 +01:00
Andrea Gasparini
a9b9077d07 Adds link to Git article from MIT "The Missing Semester of Your CS Education" (#7109) 2024-09-13 19:00:40 +06:00
github-actions[bot]
65f51d9243 chore: update roadmap content json (#7102)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2024-09-13 16:37:44 +06:00
Krushna Kanta Rout
824c796029 fix: replace article with official for ruby website (#7107) 2024-09-13 16:24:04 +06:00
Abdulrhman SayedAli
e58c30f74f fix: hard links share the same inode number. (#7093)
Co-authored-by: abdulrhman.ali@bld.ai <abdulrhman.ali@bld.ai>
2024-09-13 09:36:36 +01:00
Krishna Chaiatanya
36a66fa901 Update spark@UljuqA89_SlCSDWWMD_C_.md (#7095)
* Update spark@UljuqA89_SlCSDWWMD_C_.md

* Update src/data/roadmaps/mlops/content/spark@UljuqA89_SlCSDWWMD_C_.md

---------

Co-authored-by: Arik Chakma <arikchangma@gmail.com>
2024-09-13 09:35:11 +01:00
J. Degand
fbf124aedf docs(git): add gitignore template repo (#7104) 2024-09-13 09:33:47 +01:00
J. Degand
7e100434f7 docs(java): change article to official (#7105) 2024-09-13 09:32:40 +01:00
Kamran Ahmed
7adbdc3fb1 Fix redirect issue on dashboard for AI roadmaps 2024-09-12 22:39:17 +01:00
Kamran Ahmed
e79bfca074 Add link to leaderboard 2024-09-12 19:57:18 +01:00
Kamran Ahmed
989f7ad5c1 Add streaks for lifetime 2024-09-12 19:09:04 +01:00
Kamran Ahmed
dd5232f2f8 Fix spacing on leaderboard page 2024-09-12 18:53:34 +01:00
Kamran Ahmed
851a0381b6 Add leaderboard page 2024-09-12 18:51:05 +01:00
Arik Chakma
88d783680b feat: implement leaderboard page (#7063)
* feat: implement leaderboard page

* feat: add empty and error pages

* feat: add rank badge
2024-09-12 17:32:51 +01:00
Kamran Ahmed
a1aba2e026 Update skeleton height 2024-09-12 17:01:58 +01:00
Kamran Ahmed
01eb7b2f0f Update font style for bookmarks 2024-09-12 16:54:18 +01:00
Kamran Ahmed
94ce774586 Update comments 2024-09-12 15:38:32 +01:00
Kamran Ahmed
bbcd7e18e5 Update stack message 2024-09-12 15:28:28 +01:00
Kamran Ahmed
298b137a7d Fix sorting order of roadmaps 2024-09-12 13:32:42 +01:00
dsh
ae58fa2a2a Clean Backend Roadmap Links / Content (#7076)
* 95 topics complete

* 32 topics

* 8 topics

* Update src/data/roadmaps/backend/content/building-for-scale@SHmbcMRsc3SygEDksJQBD.md

* Update src/data/roadmaps/backend/content/architectural-patterns@tHiUpG9LN35E5RaHddMv5.md

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2024-09-12 13:20:51 +01:00
Kamran Ahmed
bcc85dcebe Update projects header 2024-09-12 13:08:38 +01:00
Kamran Ahmed
44a7a01e3c Update UI for projects 2024-09-12 12:45:46 +01:00
Arik Chakma
e3b6bacbc4 feat: implement projects page (#7067) 2024-09-12 12:30:28 +01:00
dsh
8c615084d3 fix: blank button into DevOps Roadmap button (#7058)
* turned blank button into DevOps Roadmap button

* reverted type change

* fixed correct button
2024-09-12 17:28:39 +06:00
github-actions[bot]
9f446764bc chore: update roadmap content json (#7087)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2024-09-12 12:25:01 +01:00
Kamran Ahmed
bf80d3f052 Stop project functionality 2024-09-12 12:24:35 +01:00
Arik Chakma
09b63442dc feat: add stop project button (#7083)
* feat: add stop project button

* fix: minor
2024-09-12 11:51:03 +01:00
dsh
af4b04a510 Add 10 devops skills guide (#7089) 2024-09-12 11:50:26 +01:00
Kavish Baghel
839d92db29 Added content for Environment Variable and Validation Rules in Terraform Roadmap (#7084)
* Added content for Environment variables in terraform roadmap

* Added content for validation rules in Terraform roadmap
2024-09-12 11:05:37 +01:00
Brian Rodriguez
2193565071 Add docs: Android mvi (#7086)
* [Add] MVI docs

* [Add] Format & add link

* Update src/data/roadmaps/android/content/mvi@Bz-BkfzsDHAbAw3HD7WCd.md

cleaned

---------

Co-authored-by: dsh <daniel.s.holdsworth@gmail.com>
2024-09-12 11:04:16 +01:00
VotreX Tan
1121993c15 Renaming "Triggers" to "Prompts" (#7088)
BJ Fogg has renamed "Triggers" to "Prompts" in late 2017. See: https://behaviormodel.org/prompts/
2024-09-12 11:01:51 +01:00
dsh
973d4dc73a replace assembly with gdscript (#7078) 2024-09-11 16:01:55 +01:00
Arik Chakma
a913da47a7 feat: implement dashboard page (#6965)
* wip: implement success modal

* feat: share solution modal

* fix: step count issue

* fix: responsiveness share button

* feat: project listing

* wip

* wip: project status

* feat: personal dashboard

* wip: team activity

* feat: personal dashboard page

* feat: add team member tooltip

* feat: dashboard favourite

* fix: invite team page

* fix: invite team

* wip: update design

* fix: add custom roadmaps

* feat: add projects in public page

* wip: dashboard re-design

* feat: add teams

* feat: update dashboard design

* feat: update dashboard design

* feat: add streak stats

* feat: add topics done today count

* UI changes for dashboard

* Refactor progress stack

* Progress stack UI

* Progress stack card fixes

* Update card designs

* AI and custom roadmap

* Update recommendation

* Update recommendation UI

* Add AI roadmap listing

* Redirect to team page from dashboard

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2024-09-11 16:01:26 +01:00
dsh
2959ea3fda removed paided resource (#7079) 2024-09-11 15:45:39 +01:00
Arik Chakma
cf5301030f fix: hide the team member progress (#7077)
* fix: hide the team member progress

* Refactor member progress

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2024-09-11 15:44:11 +01:00
sergiomarotco
537bbc2ceb add real examples about segmentations (#6897)
* Update src/data/roadmaps/cyber-security/content/perimiter-vs-dmz-vs-segmentation@PUgPgpKio4Npzs86qEXa7.md

---------

Co-authored-by: dsh <daniel.s.holdsworth@gmail.com>
2024-09-11 15:29:33 +01:00
github-actions[bot]
c9f34087c4 chore: update roadmap content json (#7049)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2024-09-11 10:37:15 +01:00
Arik Chakma
c1e733d640 fix: pnpm lock (#7074) 2024-09-11 15:29:07 +06:00
Mark
ceb4baefa1 Add article links for short/long polling articles in Backend Roadmap (#7061)
* Add article links for short/long polling articles in Backend Roadmap

* Update src/data/roadmaps/backend/content/short-polling@Tt7yr-ChHncJG0Ge1f0Xk.md

removed duped article from short polling

---------

Co-authored-by: dsh <daniel.s.holdsworth@gmail.com>
2024-09-11 10:01:56 +01:00
Abdulrhman SayedAli
c387a6b843 Add some linux resources (#7066)
* add some useful links to text processing section:

- add a detaild link about piping.
- add a detailed link about text filters in general.
- add a basic link for grep beginners.

---------

Co-authored-by: abdulrhman.ali@bld.ai <abdulrhman.ali@bld.ai>
2024-09-11 09:59:43 +01:00
Clinton
909b0fa81a Update index.md (#7070)
Added a brief description of realtime communication, methods of achieving it and a link to a YouTube video showing websockets being used with Go.

---------

Co-authored-by: dsh <daniel.s.holdsworth@gmail.com>
2024-09-11 09:56:03 +01:00
Kamran Ahmed
dae737fa02 Upgrade dependencies 2024-09-10 11:11:21 +01:00
Kavish Baghel
f81783ff9d Added content for terraform local values page in terraform roadmap. (#7060) 2024-09-10 09:29:24 +01:00
dsh
52d0fffaab Remove druid add tauri (#7055) 2024-09-09 16:09:27 +01:00
dsh
8bad7f4de1 removed whitespace from the end of the file name (#7054) 2024-09-09 15:37:25 +01:00
dsh
c3ff9efb73 fix github wiki topic file name (#7053) 2024-09-09 15:13:43 +01:00
Rebecca Ariss
53b5d7c953 Update parallel-processing@Fwwve0j-KDfc605IIgmil.md (#7000)
Slight adjustments to article titles to reflect the casing of the article headers themselves
2024-09-09 12:47:28 +01:00
Mark
c3421b4c1a Add official article link for MVCC in Postgres Roadmap (#7034) 2024-09-09 12:45:13 +01:00
NEOmega
6c3f8cb0e2 Update texture@iBZ1JsEWI0xuLgUvfWfl-.md (#7037)
* Update src/data/roadmaps/game-developer/content/texture@iBZ1JsEWI0xuLgUvfWfl-.md

---------

Co-authored-by: Ku-Ahnkh <147754131+Ku-Ahnkh@users.noreply.github.com>
Co-authored-by: dsh <daniel.s.holdsworth@gmail.com>
2024-09-09 12:44:38 +01:00
Satyam Vyas
e99c88aae5 Added content inside IDEs and VS Code sections, present inside DevRel Roadmap (#7039)
* Update src/data/roadmaps/devrel/content/vs-code@j5nNSYI8s-cH8EA6G1EWY.md

* Update src/data/roadmaps/devrel/content/ides@KdFYmj36M2jrGfsYkukpo.md


---------

Co-authored-by: dsh <daniel.s.holdsworth@gmail.com>
2024-09-09 12:41:42 +01:00
NEOmega
d3c259e79f Update bump@r4UkMd5QURbvJ3Jlr_H9H.md (#7040)
* Update src/data/roadmaps/game-developer/content/bump@r4UkMd5QURbvJ3Jlr_H9H.md

---------

Co-authored-by: Ku-Ahnkh <147754131+Ku-Ahnkh@users.noreply.github.com>
Co-authored-by: dsh <daniel.s.holdsworth@gmail.com>
2024-09-09 12:38:50 +01:00
NEOmega
03f6a58110 Update specular@odfZWKtPbb-lC35oeTCNV.md (#7044)
* Update specular@odfZWKtPbb-lC35oeTCNV.md

* Update src/data/roadmaps/game-developer/content/specular@odfZWKtPbb-lC35oeTCNV.md

corrected styling

---------

Co-authored-by: dsh <daniel.s.holdsworth@gmail.com>
2024-09-09 10:03:31 +01:00
Sivan Sakthivel
59c8a8184d Update set-operations@kOwhnSZBwIhIbIsoAXQ50.md (#7045) 2024-09-09 09:58:55 +01:00
Amit Merchant
9b5199d829 Add "Abort a fetch request manually in JavaScript" article (#7048) 2024-09-09 09:58:11 +01:00
Mau
c123abdc23 Add "TLDR" information to Linux roadmap - Command Help (#7050)
* Add "TLDR" information to Linux roadmap - Command Help

* Updated styling.

---------

Co-authored-by: dsh <daniel.s.holdsworth@gmail.com>
2024-09-09 09:57:00 +01:00
dsh
ee143d8b6c Add content to Cyber security roadmap (#6978)
* 57 topics copy

* 28 topics

* Update iaas@1nPifNUm-udLChIqLC_uK.md

* 18 topics

* adding links to 20 topics

* links added to 44 topics

* links added to 67 topics

* completed roadmap, no empty topics remain

* mesh topic links

* last 5 topics

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2024-09-08 16:34:33 +01:00
github-actions[bot]
7cf4618634 chore: update roadmap content json (#7031)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2024-09-08 18:12:46 +06:00
ShubhamKatyal
762444725a Add content to wap/wp2/wp3/wep (#7020)
* Update wpa-vs-wpa2-vs-wpa3-vs-wep@MBnDE0VyVh2u2p-r90jVk.md

* Update src/data/roadmaps/cyber-security/content/wpa-vs-wpa2-vs-wpa3-vs-wep@MBnDE0VyVh2u2p-r90jVk.md

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2024-09-07 19:22:41 +01:00
Ramchandra Warang
df4d083c01 Add resource for pipes (#7021)
The link for Understanding pipes for the official documentation from the Angular Documentation was either changed or incorrect hence changed to the correct one
2024-09-07 19:19:48 +01:00
Mark
e78bf8d7f7 Add data replication article link for Backend Roadmap (#7023)
* Add data replication article link for Backend Roadmap

* remove IBM
2024-09-07 19:18:01 +01:00
github-actions[bot]
dcb5538b12 chore: update roadmap content json (#6996)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2024-09-07 22:22:28 +06:00
Mateo
fc3acb9702 docs(rust): fix formatting on functions content page (#7027) 2024-09-07 22:19:02 +06:00
Mark
6133c10beb fix: missing article title in PostgreSQL dba roadmap (#7028) 2024-09-07 22:18:29 +06:00
Kamran Ahmed
29c8c3e76f Update UI for share button 2024-09-07 12:58:52 +01:00
dsh
48e3832dbd Add article for creating aws account (#7022) 2024-09-06 12:08:38 +01:00
Mentales
db2973f27e Remove unreachable nudge theory video (#7008) 2024-09-06 09:29:18 +01:00
Hussain Ali
2b03fe1554 Add postgresql history page from the official docs (#7010)
* Add postgresql history page from the official docs

I brief historical view of Postgresql that might introduce new developers to Berkeley Labs to look up the projects from there.

* Update src/data/roadmaps/postgresql-dba/content/introduction@lDIy56RyC1XM7IfORsSLD.md

---------

Co-authored-by: dsh <daniel.s.holdsworth@gmail.com>
2024-09-06 09:28:15 +01:00
Brian Rodriguez
01f5e57ef4 [Add] Docs linear & frame layouts (#7012) 2024-09-06 09:25:48 +01:00
blubu
4ac9e7b12c Update what-are-relational-databases@R9DQNc0AyAQ2HLpP4HOk6.md (#7017) 2024-09-06 09:24:57 +01:00
ingar
c2c122e4dc Update 102-insertion-sort.md (#7019)
add visualisation to insertion sort
2024-09-06 09:24:43 +01:00
Arik Chakma
1e6fa6d8c6 fix: content modal (#7016) 2024-09-06 13:29:04 +06:00
7935 changed files with 361207 additions and 218406 deletions

View File

@@ -3,6 +3,6 @@
"enabled": false
},
"_variables": {
"lastUpdateCheck": 1724925726721
"lastUpdateCheck": 1753810743067
}
}

View File

@@ -0,0 +1,155 @@
---
description: When user requests migrating old roadmap content to new folder from content-old to content folder
globs:
alwaysApply: false
---
# Content Migration Rule
## Rule Name: content-migration
## Description
This rule provides a complete process for migrating roadmap content from old structure to new structure using migration mapping files.
## When to Use
Use this rule when you need to:
- Migrate content from content-old directories to content directories
- Use a migration-mapping.json file to map topic paths to content IDs
- Populate empty content files with existing content from legacy structure
## Process
### 1. Prerequisites Check
- Verify the roadmap directory has a `migration-mapping.json` file
- Confirm `content-old/` directory exists with source content
- Confirm `content/` directory exists with target files
### 2. Migration Script Creation
Create a Node.js script with the following functionality:
```javascript
const fs = require('fs');
const path = require('path');
// Load the migration mapping
const migrationMapping = JSON.parse(fs.readFileSync('migration-mapping.json', 'utf8'));
// Function to find old content file based on topic path
function findOldContentFile(topicPath) {
const parts = topicPath.split(':');
if (parts.length === 1) {
// Top level file like "introduction"
return path.join('content-old', parts[0], 'index.md');
} else if (parts.length === 2) {
// Like "introduction:what-is-rust"
const [folder, filename] = parts;
return path.join('content-old', folder, `${filename}.md`);
} else if (parts.length === 3) {
// Like "language-basics:syntax:variables"
const [folder, subfolder, filename] = parts;
return path.join('content-old', folder, subfolder, `${filename}.md`);
}
return null;
}
// Function to find new content file based on content ID
function findNewContentFile(contentId) {
const contentDir = 'content';
const files = fs.readdirSync(contentDir);
// Find file that ends with the content ID
const matchingFile = files.find(file => file.includes(`@${contentId}.md`));
if (matchingFile) {
return path.join(contentDir, matchingFile);
}
return null;
}
// Process each mapping
console.log('Starting content migration...\n');
let migratedCount = 0;
let skippedCount = 0;
for (const [topicPath, contentId] of Object.entries(migrationMapping)) {
const oldFilePath = findOldContentFile(topicPath);
const newFilePath = findNewContentFile(contentId);
if (!oldFilePath) {
console.log(`❌ Could not determine old file path for: ${topicPath}`);
skippedCount++;
continue;
}
if (!newFilePath) {
console.log(`❌ Could not find new file for content ID: ${contentId} (topic: ${topicPath})`);
skippedCount++;
continue;
}
if (!fs.existsSync(oldFilePath)) {
console.log(`❌ Old file does not exist: ${oldFilePath} (topic: ${topicPath})`);
skippedCount++;
continue;
}
try {
// Read old content
const oldContent = fs.readFileSync(oldFilePath, 'utf8');
// Write to new file
fs.writeFileSync(newFilePath, oldContent);
console.log(`✅ Migrated: ${topicPath} -> ${path.basename(newFilePath)}`);
migratedCount++;
} catch (error) {
console.log(`❌ Error migrating ${topicPath}: ${error.message}`);
skippedCount++;
}
}
console.log(`\n📊 Migration complete:`);
console.log(` Migrated: ${migratedCount} files`);
console.log(` Skipped: ${skippedCount} files`);
console.log(` Total: ${Object.keys(migrationMapping).length} mappings`);
```
### 3. Execution Steps
1. Navigate to the roadmap directory (e.g., `src/data/roadmaps/[roadmap-name]`)
2. Create the migration script as `migrate_content.cjs`
3. Run: `node migrate_content.cjs`
4. Review the migration results
5. Clean up the temporary script file
### 4. Validation
After migration:
- Verify a few migrated files have proper content (not just titles)
- Check that the content structure matches the old content
- Ensure proper markdown formatting is preserved
## File Structure Expected
```
roadmap-directory/
├── migration-mapping.json
├── content/
│ ├── file1@contentId1.md
│ ├── file2@contentId2.md
│ └── ...
└── content-old/
├── section1/
│ ├── index.md
│ ├── topic1.md
│ └── subsection1/
│ └── subtopic1.md
└── section2/
└── ...
```
## Notes
- The migration mapping uses colons (`:`) to separate nested paths
- Content files in the new structure use the pattern `filename@contentId.md`
- The script handles 1-3 levels of nesting in the old structure
- Always create the script with `.cjs` extension to avoid ES module issues

389
.cursor/rules/gh-cli.mdc Normal file
View File

@@ -0,0 +1,389 @@
---
description: GitHub pull requests
globs:
alwaysApply: false
---
# gh cli
Work seamlessly with GitHub from the command line.
USAGE
gh <command> <subcommand> [flags]
CORE COMMANDS
auth: Authenticate gh and git with GitHub
browse: Open repositories, issues, pull requests, and more in the browser
codespace: Connect to and manage codespaces
gist: Manage gists
issue: Manage issues
org: Manage organizations
pr: Manage pull requests
project: Work with GitHub Projects.
release: Manage releases
repo: Manage repositories
GITHUB ACTIONS COMMANDS
cache: Manage GitHub Actions caches
run: View details about workflow runs
workflow: View details about GitHub Actions workflows
ALIAS COMMANDS
co: Alias for "pr checkout"
ADDITIONAL COMMANDS
alias: Create command shortcuts
api: Make an authenticated GitHub API request
attestation: Work with artifact attestations
completion: Generate shell completion scripts
config: Manage configuration for gh
extension: Manage gh extensions
gpg-key: Manage GPG keys
label: Manage labels
preview: Execute previews for gh features
ruleset: View info about repo rulesets
search: Search for repositories, issues, and pull requests
secret: Manage GitHub secrets
ssh-key: Manage SSH keys
status: Print information about relevant issues, pull requests, and notifications across repositories
variable: Manage GitHub Actions variables
HELP TOPICS
accessibility: Learn about GitHub CLI's accessibility experiences
actions: Learn about working with GitHub Actions
environment: Environment variables that can be used with gh
exit-codes: Exit codes used by gh
formatting: Formatting options for JSON data exported from gh
mintty: Information about using gh with MinTTY
reference: A comprehensive reference of all gh commands
FLAGS
--help Show help for command
--version Show gh version
EXAMPLES
$ gh issue create
$ gh repo clone cli/cli
$ gh pr checkout 321
LEARN MORE
Use `gh <command> <subcommand> --help` for more information about a command.
Read the manual at https://cli.github.com/manual
Learn about exit codes using `gh help exit-codes`
Learn about accessibility experiences using `gh help accessibility`
## gh pr
Work with GitHub pull requests.
USAGE
gh pr <command> [flags]
GENERAL COMMANDS
create: Create a pull request
list: List pull requests in a repository
status: Show status of relevant pull requests
TARGETED COMMANDS
checkout: Check out a pull request in git
checks: Show CI status for a single pull request
close: Close a pull request
comment: Add a comment to a pull request
diff: View changes in a pull request
edit: Edit a pull request
lock: Lock pull request conversation
merge: Merge a pull request
ready: Mark a pull request as ready for review
reopen: Reopen a pull request
review: Add a review to a pull request
unlock: Unlock pull request conversation
update-branch: Update a pull request branch
view: View a pull request
FLAGS
-R, --repo [HOST/]OWNER/REPO Select another repository using the [HOST/]OWNER/REPO format
INHERITED FLAGS
--help Show help for command
ARGUMENTS
A pull request can be supplied as argument in any of the following formats:
- by number, e.g. "123";
- by URL, e.g. "https://github.com/OWNER/REPO/pull/123"; or
- by the name of its head branch, e.g. "patch-1" or "OWNER:patch-1".
EXAMPLES
$ gh pr checkout 353
$ gh pr create --fill
$ gh pr view --web
LEARN MORE
Use `gh <command> <subcommand> --help` for more information about a command.
Read the manual at https://cli.github.com/manual
Learn about exit codes using `gh help exit-codes`
Learn about accessibility experiences using `gh help accessibility`
## gh pr list
List pull requests in a GitHub repository. By default, this only lists open PRs.
The search query syntax is documented here:
<https://docs.github.com/en/search-github/searching-on-github/searching-issues-and-pull-requests>
For more information about output formatting flags, see `gh help formatting`.
USAGE
gh pr list [flags]
ALIASES
gh pr ls
FLAGS
--app string Filter by GitHub App author
-a, --assignee string Filter by assignee
-A, --author string Filter by author
-B, --base string Filter by base branch
-d, --draft Filter by draft state
-H, --head string Filter by head branch ("<owner>:<branch>" syntax not supported)
-q, --jq expression Filter JSON output using a jq expression
--json fields Output JSON with the specified fields
-l, --label strings Filter by label
-L, --limit int Maximum number of items to fetch (default 30)
-S, --search query Search pull requests with query
-s, --state string Filter by state: {open|closed|merged|all} (default "open")
-t, --template string Format JSON output using a Go template; see "gh help formatting"
-w, --web List pull requests in the web browser
INHERITED FLAGS
--help Show help for command
-R, --repo [HOST/]OWNER/REPO Select another repository using the [HOST/]OWNER/REPO format
JSON FIELDS
additions, assignees, author, autoMergeRequest, baseRefName, baseRefOid, body,
changedFiles, closed, closedAt, closingIssuesReferences, comments, commits,
createdAt, deletions, files, fullDatabaseId, headRefName, headRefOid,
headRepository, headRepositoryOwner, id, isCrossRepository, isDraft, labels,
latestReviews, maintainerCanModify, mergeCommit, mergeStateStatus, mergeable,
mergedAt, mergedBy, milestone, number, potentialMergeCommit, projectCards,
projectItems, reactionGroups, reviewDecision, reviewRequests, reviews, state,
statusCheckRollup, title, updatedAt, url
EXAMPLES
# List PRs authored by you
$ gh pr list --author "@me"
# List PRs with a specific head branch name
$ gh pr list --head "typo"
# List only PRs with all of the given labels
$ gh pr list --label bug --label "priority 1"
# Filter PRs using search syntax
$ gh pr list --search "status:success review:required"
# Find a PR that introduced a given commit
$ gh pr list --search "<SHA>" --state merged
LEARN MORE
Use `gh <command> <subcommand> --help` for more information about a command.
Read the manual at https://cli.github.com/manual
Learn about exit codes using `gh help exit-codes`
Learn about accessibility experiences using `gh help accessibility`
## gh pr diff
View changes in a pull request.
Without an argument, the pull request that belongs to the current branch
is selected.
With `--web` flag, open the pull request diff in a web browser instead.
USAGE
gh pr diff [<number> | <url> | <branch>] [flags]
FLAGS
--color string Use color in diff output: {always|never|auto} (default "auto")
--name-only Display only names of changed files
--patch Display diff in patch format
-w, --web Open the pull request diff in the browser
INHERITED FLAGS
--help Show help for command
-R, --repo [HOST/]OWNER/REPO Select another repository using the [HOST/]OWNER/REPO format
LEARN MORE
Use `gh <command> <subcommand> --help` for more information about a command.
Read the manual at https://cli.github.com/manual
Learn about exit codes using `gh help exit-codes`
Learn about accessibility experiences using `gh help accessibility`
## gh pr merge
Merge a pull request on GitHub.
Without an argument, the pull request that belongs to the current branch
is selected.
When targeting a branch that requires a merge queue, no merge strategy is required.
If required checks have not yet passed, auto-merge will be enabled.
If required checks have passed, the pull request will be added to the merge queue.
To bypass a merge queue and merge directly, pass the `--admin` flag.
USAGE
gh pr merge [<number> | <url> | <branch>] [flags]
FLAGS
--admin Use administrator privileges to merge a pull request that does not meet requirements
-A, --author-email text Email text for merge commit author
--auto Automatically merge only after necessary requirements are met
-b, --body text Body text for the merge commit
-F, --body-file file Read body text from file (use "-" to read from standard input)
-d, --delete-branch Delete the local and remote branch after merge
--disable-auto Disable auto-merge for this pull request
--match-head-commit SHA Commit SHA that the pull request head must match to allow merge
-m, --merge Merge the commits with the base branch
-r, --rebase Rebase the commits onto the base branch
-s, --squash Squash the commits into one commit and merge it into the base branch
-t, --subject text Subject text for the merge commit
INHERITED FLAGS
--help Show help for command
-R, --repo [HOST/]OWNER/REPO Select another repository using the [HOST/]OWNER/REPO format
LEARN MORE
Use `gh <command> <subcommand> --help` for more information about a command.
Read the manual at https://cli.github.com/manual
Learn about exit codes using `gh help exit-codes`
Learn about accessibility experiences using `gh help accessibility`
## gh pr review
Add a review to a pull request.
Without an argument, the pull request that belongs to the current branch is reviewed.
USAGE
gh pr review [<number> | <url> | <branch>] [flags]
FLAGS
-a, --approve Approve pull request
-b, --body string Specify the body of a review
-F, --body-file file Read body text from file (use "-" to read from standard input)
-c, --comment Comment on a pull request
-r, --request-changes Request changes on a pull request
INHERITED FLAGS
--help Show help for command
-R, --repo [HOST/]OWNER/REPO Select another repository using the [HOST/]OWNER/REPO format
EXAMPLES
# Approve the pull request of the current branch
$ gh pr review --approve
# Leave a review comment for the current branch
$ gh pr review --comment -b "interesting"
# Add a review for a specific pull request
$ gh pr review 123
# Request changes on a specific pull request
$ gh pr review 123 -r -b "needs more ASCII art"
LEARN MORE
Use `gh <command> <subcommand> --help` for more information about a command.
Read the manual at https://cli.github.com/manual
Learn about exit codes using `gh help exit-codes`
Learn about accessibility experiences using `gh help accessibility`
## gh pr checkout
Check out a pull request in git
USAGE
gh pr checkout [<number> | <url> | <branch>] [flags]
FLAGS
-b, --branch string Local branch name to use (default [the name of the head branch])
--detach Checkout PR with a detached HEAD
-f, --force Reset the existing local branch to the latest state of the pull request
--recurse-submodules Update all submodules after checkout
INHERITED FLAGS
--help Show help for command
-R, --repo [HOST/]OWNER/REPO Select another repository using the [HOST/]OWNER/REPO format
EXAMPLES
# Interactively select a PR from the 10 most recent to check out
$ gh pr checkout
# Checkout a specific PR
$ gh pr checkout 32
$ gh pr checkout https://github.com/OWNER/REPO/pull/32
$ gh pr checkout feature
LEARN MORE
Use `gh <command> <subcommand> --help` for more information about a command.
Read the manual at https://cli.github.com/manual
Learn about exit codes using `gh help exit-codes`
Learn about accessibility experiences using `gh help accessibility`
## gh pr close
Close a pull request
USAGE
gh pr close {<number> | <url> | <branch>} [flags]
FLAGS
-c, --comment string Leave a closing comment
-d, --delete-branch Delete the local and remote branch after close
INHERITED FLAGS
--help Show help for command
-R, --repo [HOST/]OWNER/REPO Select another repository using the [HOST/]OWNER/REPO format
LEARN MORE
Use `gh <command> <subcommand> --help` for more information about a command.
Read the manual at https://cli.github.com/manual
Learn about exit codes using `gh help exit-codes`
Learn about accessibility experiences using `gh help accessibility`
## gh pr comment
Add a comment to a GitHub pull request.
Without the body text supplied through flags, the command will interactively
prompt for the comment text.
USAGE
gh pr comment [<number> | <url> | <branch>] [flags]
FLAGS
-b, --body text The comment body text
-F, --body-file file Read body text from file (use "-" to read from standard input)
--create-if-none Create a new comment if no comments are found. Can be used only with --edit-last
--delete-last Delete the last comment of the current user
--edit-last Edit the last comment of the current user
-e, --editor Skip prompts and open the text editor to write the body in
-w, --web Open the web browser to write the comment
--yes Skip the delete confirmation prompt when --delete-last is provided
INHERITED FLAGS
--help Show help for command
-R, --repo [HOST/]OWNER/REPO Select another repository using the [HOST/]OWNER/REPO format
EXAMPLES
$ gh pr comment 13 --body "Hi from GitHub CLI"
LEARN MORE
Use `gh <command> <subcommand> --help` for more information about a command.
Read the manual at https://cli.github.com/manual
Learn about exit codes using `gh help exit-codes`
Learn about accessibility experiences using `gh help accessibility`

View File

@@ -1,3 +1,10 @@
PUBLIC_API_URL=https://api.roadmap.sh
PUBLIC_AVATAR_BASE_URL=https://dodrc8eu8m09s.cloudfront.net/avatars
PUBLIC_EDITOR_APP_URL=https://draw.roadmap.sh
PUBLIC_EDITOR_APP_URL=https://draw.roadmap.sh
PUBLIC_COURSE_APP_URL=http://localhost:5173
PUBLIC_STRIPE_INDIVIDUAL_MONTHLY_PRICE_ID=
PUBLIC_STRIPE_INDIVIDUAL_YEARLY_PRICE_ID=
PUBLIC_STRIPE_INDIVIDUAL_MONTHLY_PRICE_AMOUNT=10
PUBLIC_STRIPE_INDIVIDUAL_YEARLY_PRICE_AMOUNT=100

View File

@@ -2,7 +2,7 @@ name: Clears API Cloudfront Cache
on:
workflow_dispatch:
jobs:
aws_costs:
cloudfront_api_cache:
runs-on: ubuntu-latest
steps:
- name: Clear Cloudfront Caching

View File

@@ -2,7 +2,7 @@ name: Clears Frontend Cloudfront Cache
on:
workflow_dispatch:
jobs:
aws_costs:
cloudfront_fe_cache:
runs-on: ubuntu-latest
steps:
- name: Clear Cloudfront Caching
@@ -13,4 +13,4 @@ jobs:
-H "Authorization: Bearer ${{ secrets.GH_PAT }}" \
-H "X-GitHub-Api-Version: 2022-11-28" \
https://api.github.com/repos/roadmapsh/infra-ansible/actions/workflows/playbook.yml/dispatches \
-d '{ "ref":"master", "inputs": { "playbook": "roadmap_web.yml", "tags": "cloudfront", "is_verbose": false } }'
-d '{ "ref":"master", "inputs": { "playbook": "roadmap_web.yml", "tags": "cloudfront,cloudfront-course", "is_verbose": false } }'

View File

@@ -43,7 +43,7 @@ jobs:
## Updated all Dependencies to Latest Versions.
> [!IMPORTANT]
> This PR Upgrades the Dependencies to the Latest Their Versions.
> This PR Upgrades the Dependencies to the their latest versions.
>
> Commit: ${{ github.sha }}
> Workflow Path: ${{ github.workflow_ref }}

8
.gitignore vendored
View File

@@ -1,5 +1,6 @@
.idea
.temp
.astro
# build output
dist/
@@ -27,9 +28,6 @@ pnpm-debug.log*
/playwright-report/
/playwright/.cache/
tests-examples
*.csv
*.csveditor/
/editor/*
!/editor/readonly-editor.tsx
!/editor/renderer/renderer.ts
!/editor/renderer/index.tsx
packages/editor

10
.vscode/settings.json vendored
View File

@@ -2,5 +2,13 @@
"prettier.documentSelectors": ["**/*.astro"],
"[astro]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
}
},
"tailwindCSS.experimental.classRegex": [
["\\b\\w+[cC]lassName\\s*=\\s*[\"']([^\"']*)[\"']"],
["\\b\\w+[cC]lassName\\s*=\\s*`([^`]*)`"],
["[\\w]+[cC]lassName[\"']?\\s*:\\s*[\"']([^\"']*)[\"']"],
["[\\w]+[cC]lassName[\"']?\\s*:\\s*`([^`]*)`"],
["cva\\(((?:[^()]|\\([^()]*\\))*)\\)", "[\"'`]([^\"'`]*).*?[\"'`]"],
["cx\\(((?:[^()]|\\([^()]*\\))*)\\)", "(?:'|\"|`)([^']*)(?:'|\"|`)"]
]
}

View File

@@ -1,16 +1,31 @@
// https://astro.build/config
import sitemap from '@astrojs/sitemap';
import tailwind from '@astrojs/tailwind';
import node from '@astrojs/node';
import { defineConfig } from 'astro/config';
import rehypeExternalLinks from 'rehype-external-links';
import { serializeSitemap, shouldIndexPage } from './sitemap.mjs';
import tailwindcss from '@tailwindcss/vite';
import react from '@astrojs/react';
// https://astro.build/config
export default defineConfig({
site: 'https://roadmap.sh/',
redirects: {
'/devops/devops-engineer': {
status: 301,
destination: '/devops',
},
'/ai-tutor': {
status: 301,
destination: '/ai',
},
},
vite: {
server: {
allowedHosts: ['roadmap.sh', 'port3k.kamranahmed.info'],
},
},
markdown: {
shikiConfig: {
theme: 'dracula',
@@ -40,21 +55,22 @@ export default defineConfig({
],
],
},
output: 'hybrid',
output: 'server',
adapter: node({
mode: 'standalone',
}),
trailingSlash: 'never',
integrations: [
tailwind({
config: {
applyBaseStyles: false,
},
}),
sitemap({
filter: shouldIndexPage,
serialize: serializeSitemap,
}),
react(),
],
vite: {
plugins: [tailwindcss()],
ssr: {
noExternal: [/^@roadmapsh\/editor.*$/],
},
},
});

View File

@@ -1,4 +1,4 @@
# Contribution
# Contribution Guidelines ✨
First of all, thank you for considering to contribute. Please look at the details below:
@@ -7,10 +7,12 @@ First of all, thank you for considering to contribute. Please look at the detail
- [Adding Projects](#adding-projects)
- [Adding Content](#adding-content)
- [Guidelines](#guidelines)
- [Good vs. Not So Good Contributions](#good-vs-not-so-good-contributions)
## New Roadmaps
For new roadmaps, you can either:
- Submit a roadmap by providing [a textual roadmap similar to this roadmap](https://gist.github.com/kamranahmedse/98758d2c73799b3a6ce17385e4c548a5) in an [issue](https://github.com/kamranahmedse/developer-roadmap/issues).
- Create an interactive roadmap yourself using [our roadmap editor](https://draw.roadmap.sh/) & submit the link to that roadmap in an [issue](https://github.com/kamranahmedse/developer-roadmap/issues).
@@ -18,10 +20,10 @@ For new roadmaps, you can either:
For the existing roadmaps, please follow the details listed for the nature of contribution:
- **Fixing Typos** — Make your changes in the [roadmap JSON file](https://github.com/kamranahmedse/developer-roadmap/tree/master/src/data/roadmaps) and submit a [PR](https://github.com/kamranahmedse/developer-roadmap/pulls).
- **Fixing Typos** — Make your changes in the [roadmap markdown file](https://github.com/kamranahmedse/developer-roadmap/tree/master/src/data/roadmaps) and submit a [PR](https://github.com/kamranahmedse/developer-roadmap/pulls).
- **Adding or Removing Nodes** — Please open an [issue](https://github.com/kamranahmedse/developer-roadmap/issues) with your suggestion.
**Note:** Please note that our goal is <strong>not to have the biggest list of items</strong>. Our goal is to list items or skills most relevant today.
**Note:** Please note that our goal is **not to have the biggest list of items**. Our goal is to list items or skills most relevant today.
## Adding Projects
@@ -29,7 +31,7 @@ If you have a project idea that you think we should add to the roadmap, feel fre
The detailed format for the issue should be as follows:
```
```md
## What is this project about?
(Add an introduction to the project.)
@@ -53,18 +55,20 @@ Find [the content directory inside the relevant roadmap](https://github.com/kamr
- Maximum of 8 links per topic.
- Follow the below style guide for content.
Please note that we are intentionally keeping the content under the topic popup concise. You MUST always aim to explain the topic simply in a **single paragraph** or so and provide external resources where users can learn more about the topic.
### How To Structure Content
Please adhere to the following style when adding content to a topic:
```
```md
# Topic Title
(Content)
Visit the following resources to learn more:
- [@type@Description of link](Link)
- [@type@Title/Description of Link](Link)
```
`@type@` must be one of the following and describe the type of content you are adding:
@@ -75,20 +79,21 @@ Visit the following resources to learn more:
- `@course@`
- `@podcast@`
- `@video@`
- `@book@`
It's important to add a valid type, this will help us categorize the content and display it properly on the roadmap.
It's important to add a valid type, this will help us categorize the content and display it properly on the roadmap. The order of the links based on type is same as above.
## Guidelines
- <p><strong>Please don't use the project for self-promotion!</strong><br />
- <p><strong>Please don't use the project for self-promotion!</strong><br/>
We believe this project is a valuable asset to the developer community, and it includes numerous helpful resources. We kindly ask you to avoid submitting pull requests for the sole purpose of self-promotion. We appreciate contributions that genuinely add value, such as guides from maintainers of well-known frameworks, and will consider accepting these even if they're self authored. Thank you for your understanding and cooperation!
- <p><strong>Adding everything available out there is not the goal!</strong><br />
- <p><strong>Adding everything available out there is not the goal!</strong><br/>
The roadmaps represent the skillset most valuable today, i.e., if you were to enter any of the listed fields today, what would you learn? There might be things that are of-course being used today, but prioritize the things that are most in demand today, e.g., agree that lots of people are using angular.js today, but you wouldn't want to learn that instead of React, Angular, or Vue. Use your critical thinking to filter out non-essential stuff. Give honest arguments for why the resource should be included.</p>
- <p><strong>Do not add things you have not evaluated personally!</strong><br />
- <p><strong>Do not add things you have not evaluated personally!</strong><br/>
Use your critical thinking to filter out non-essential stuff. Give honest arguments for why the resource should be included. Have you read this book? Can you give a short article?</p>
@@ -96,26 +101,47 @@ It's important to add a valid type, this will help us categorize the content and
If you are planning to contribute by adding content to the roadmaps, I recommend you to clone the repository, add content to the [content directory of the roadmap](./src/data/roadmaps/) and create a single PR to make it easier for me to review and merge the PR.
- <p><strong>Write meaningful commit messages</strong><br >
- <p><strong>Write meaningful commit messages</strong><br/>
Meaningful commit messages help speed up the review process as well as help other contributors gain a good overview of the repositories commit history without having to dive into every commit.
</p>
- <p><strong>Look at the existing issues/pull requests before opening new ones</strong></p>
### Good vs. Not So Good Contributions
## Good vs. Not So Good Contributions
<strong>Good</strong>
- New Roadmaps.
- Engaging, fresh content links.
- Typos and grammatical fixes.
- Content copy in topics that do not have any (or minimal copy exists).
- New Roadmaps.
- Engaging and fresh content links.
- Typos and grammatical fixes.
- Enhanced Existing Content.
- Content copy in topics that do not have any (or minimal copy exists).
<strong>Not So Good</strong>
- Adding whitespace that doesn't add to the readability of the content.
- Rewriting content in a way that doesn't add any value.
- Non-English content.
- PR's that don't follow our style guide, have no description, and a default title.
- Links to your own blog articles.
- Adding whitespace that doesn't add to the readability of the content.
- Rewriting content in a way that doesn't add any value.
- Non-English content.
- PR's that don't follow our style guide, have no description, and a default title.
- Links to your own blog articles.
## Local Development
For local development, you can use the following commands:
```bash
git clone git@github.com:kamranahmedse/developer-roadmap.git --depth 1
cd developer-roadmap
pnpm add @roadmapsh/editor@npm:@roadmapsh/dummy-editor -w
pnpm install
```
Run the development server with:
```bash
pnpm dev
```
***
Have a look at the [License](./license) file.

View File

@@ -1,14 +0,0 @@
export function ReadonlyEditor(props: any) {
return (
<div className="fixed bottom-0 left-0 right-0 top-0 z-[9999] border bg-white p-5 text-black">
<h2 className="mb-2 text-xl font-semibold">Private Component</h2>
<p className="mb-4">
Renderer is a private component. If you are a collaborator and have
access to it. Run the following command:
</p>
<code className="mt-5 rounded-md bg-gray-800 p-2 text-white">
npm run generate-renderer
</code>
</div>
);
}

View File

@@ -1,14 +0,0 @@
export function Renderer(props: any) {
return (
<div className="fixed bottom-0 left-0 right-0 top-0 z-[9999] border bg-white p-5 text-black">
<h2 className="mb-2 text-xl font-semibold">Private Component</h2>
<p className="mb-4">
Renderer is a private component. If you are a collaborator and have
access to it. Run the following command:
</p>
<code className="mt-5 rounded-md bg-gray-800 p-2 text-white">
npm run generate-renderer
</code>
</div>
);
}

View File

@@ -1,5 +0,0 @@
export function renderFlowJSON(data: any, options?: any) {
console.warn("renderFlowJSON is not implemented");
console.warn("run the following command to generate the renderer:");
console.warn("> npm run generate-renderer");
}

View File

@@ -1,7 +1,7 @@
Everything including text and images in this project are protected by the copyright laws.
You are allowed to use this material for personal use but are not allowed to use it for
any other purpose including publishing the images, the project files or the content in the
images in any form either digital, non-digital, textual, graphical or written formats.
any other purpose including publishing the images, the project files or the content in
the images in any form either digital, non-digital, textual, graphical or written formats.
You are allowed to share the links to the repository or the website roadmap.sh but not
the content for any sort of usage that involves the content of this repository taken out
of the repository and be shared from any other medium including but not limited to blog
@@ -9,7 +9,7 @@ posts, articles, newsletters, you must get prior consent from the understated. T
conditions do not apply to the readonly GitHub forks created using the Fork button on
GitHub with the whole purpose of contributing to the project.
Copyright © 2023 Kamran Ahmed <kamranahmed.se@gmail.com>
Copyright © 2017 - Present. Kamran Ahmed <kamranahmed.se@gmail.com>
Please note that I am really flexible with allowing the usage of the content in this
repository. If you reach out to me with a brief detail of why and how you would like

352
package-lock.json generated
View File

@@ -18,7 +18,7 @@
"@resvg/resvg-js": "^2.6.2",
"@types/react": "^18.3.3",
"@types/react-dom": "^18.3.0",
"astro": "^4.14.6",
"astro": "^4.15.4",
"clsx": "^2.1.1",
"dayjs": "^1.11.12",
"dom-to-image": "^2.6.0",
@@ -29,16 +29,18 @@
"jose": "^5.6.3",
"js-cookie": "^3.0.5",
"lucide-react": "^0.419.0",
"luxon": "^3.5.0",
"nanoid": "^5.0.7",
"nanostores": "^0.10.3",
"node-html-parser": "^6.1.13",
"npm-check-updates": "^17.0.0",
"playwright": "^1.45.3",
"playwright": "^1.47.1",
"prismjs": "^1.29.0",
"react": "^18.3.1",
"react-calendar-heatmap": "^1.9.0",
"react-confetti": "^6.1.0",
"react-dom": "^18.3.1",
"react-slick": "^0.30.2",
"react-tooltip": "^5.27.1",
"reactflow": "^11.11.4",
"rehype-external-links": "^3.0.0",
@@ -47,6 +49,7 @@
"satori": "^0.10.14",
"satori-html": "^0.3.2",
"sharp": "^0.33.4",
"slick-carousel": "^1.8.1",
"slugify": "^1.6.6",
"tailwind-merge": "^2.4.0",
"tailwindcss": "^3.4.7",
@@ -59,8 +62,10 @@
"@tailwindcss/typography": "^0.5.13",
"@types/dom-to-image": "^2.6.7",
"@types/js-cookie": "^3.0.6",
"@types/luxon": "^3.4.2",
"@types/prismjs": "^1.26.4",
"@types/react-calendar-heatmap": "^1.6.7",
"@types/react-slick": "^0.23.13",
"@types/turndown": "^5.0.5",
"csv-parser": "^3.0.0",
"gh-pages": "^6.1.1",
@@ -506,9 +511,9 @@
}
},
"node_modules/@babel/types": {
"version": "7.25.4",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.4.tgz",
"integrity": "sha512-zQ1ijeeCXVEh+aNL0RlmkPkG8HUiDcU2pzQQFjtbntgAczRASFzj4H+6+bV+dy1ntKR14I/DypeuRG1uma98iQ==",
"version": "7.25.6",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.6.tgz",
"integrity": "sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==",
"dependencies": {
"@babel/helper-string-parser": "^7.24.8",
"@babel/helper-validator-identifier": "^7.24.7",
@@ -1749,6 +1754,50 @@
"node": ">=18"
}
},
"node_modules/@playwright/test/node_modules/fsevents": {
"version": "2.3.2",
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
"integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
"dev": true,
"hasInstallScript": true,
"optional": true,
"os": [
"darwin"
],
"engines": {
"node": "^8.16.0 || ^10.6.0 || >=11.0.0"
}
},
"node_modules/@playwright/test/node_modules/playwright": {
"version": "1.46.0",
"resolved": "https://registry.npmjs.org/playwright/-/playwright-1.46.0.tgz",
"integrity": "sha512-XYJ5WvfefWONh1uPAUAi0H2xXV5S3vrtcnXe6uAOgdGi3aSpqOSXX08IAjXW34xitfuOJsvXU5anXZxPSEQiJw==",
"dev": true,
"dependencies": {
"playwright-core": "1.46.0"
},
"bin": {
"playwright": "cli.js"
},
"engines": {
"node": ">=18"
},
"optionalDependencies": {
"fsevents": "2.3.2"
}
},
"node_modules/@playwright/test/node_modules/playwright-core": {
"version": "1.46.0",
"resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.46.0.tgz",
"integrity": "sha512-9Y/d5UIwuJk8t3+lhmMSAJyNP1BUC/DqP3cQJDQQL/oWqAiuPTLgy7Q5dzglmTLwcBRdetzgNM/gni7ckfTr6A==",
"dev": true,
"bin": {
"playwright-core": "cli.js"
},
"engines": {
"node": ">=18"
}
},
"node_modules/@reactflow/background": {
"version": "11.3.14",
"resolved": "https://registry.npmjs.org/@reactflow/background/-/background-11.3.14.tgz",
@@ -2266,13 +2315,21 @@
]
},
"node_modules/@shikijs/core": {
"version": "1.14.1",
"resolved": "https://registry.npmjs.org/@shikijs/core/-/core-1.14.1.tgz",
"integrity": "sha512-KyHIIpKNaT20FtFPFjCQB5WVSTpLR/n+jQXhWHWVUMm9MaOaG9BGOG0MSyt7yA4+Lm+4c9rTc03tt3nYzeYSfw==",
"version": "1.16.3",
"resolved": "https://registry.npmjs.org/@shikijs/core/-/core-1.16.3.tgz",
"integrity": "sha512-yETIvrETCeC39gSPIiSADmjri9FwKmxz0QvONMtTIUYlKZe90CJkvcjPksayC2VQOtzOJonEiULUa8v8crUQvA==",
"dependencies": {
"@types/hast": "^3.0.4"
"@shikijs/vscode-textmate": "^9.2.0",
"@types/hast": "^3.0.4",
"oniguruma-to-js": "0.3.3",
"regex": "4.3.2"
}
},
"node_modules/@shikijs/vscode-textmate": {
"version": "9.2.2",
"resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-9.2.2.tgz",
"integrity": "sha512-TMp15K+GGYrWlZM8+Lnj9EaHEFmOen0WJBrfa17hF7taDOYthuPPV0GWzfd/9iMij0akS/8Yw2ikquH7uVi/fg=="
},
"node_modules/@shuding/opentype.js": {
"version": "1.4.0-beta.0",
"resolved": "https://registry.npmjs.org/@shuding/opentype.js/-/opentype.js-1.4.0-beta.0.tgz",
@@ -2614,6 +2671,12 @@
"integrity": "sha512-wkw9yd1kEXOPnvEeEV1Go1MmxtBJL0RR79aOTAApecWFVu7w0NNXNqhcWgvw2YgZDYadliXkl14pa3WXw5jlCQ==",
"dev": true
},
"node_modules/@types/luxon": {
"version": "3.4.2",
"resolved": "https://registry.npmjs.org/@types/luxon/-/luxon-3.4.2.tgz",
"integrity": "sha512-TifLZlFudklWlMBfhubvgqTXRzLDI5pCbGa4P8a3wPyUQSW+1xQ5eDsreP9DWHX3tjq1ke96uYG/nwundroWcA==",
"dev": true
},
"node_modules/@types/mdast": {
"version": "4.0.4",
"resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz",
@@ -2690,6 +2753,15 @@
"@types/react": "*"
}
},
"node_modules/@types/react-slick": {
"version": "0.23.13",
"resolved": "https://registry.npmjs.org/@types/react-slick/-/react-slick-0.23.13.tgz",
"integrity": "sha512-bNZfDhe/L8t5OQzIyhrRhBr/61pfBcWaYJoq6UDqFtv5LMwfg4NsVDD2J8N01JqdAdxLjOt66OZEp6PX+dGs/A==",
"dev": true,
"dependencies": {
"@types/react": "*"
}
},
"node_modules/@types/sax": {
"version": "1.2.7",
"resolved": "https://registry.npmjs.org/@types/sax/-/sax-1.2.7.tgz",
@@ -2900,20 +2972,17 @@
}
},
"node_modules/astro": {
"version": "4.14.6",
"resolved": "https://registry.npmjs.org/astro/-/astro-4.14.6.tgz",
"integrity": "sha512-MIDyNhtu3L4uakHvlTprh21eQPehYOtZSuSLtd+r6xZcl3lB+mlBz/hs1W3iHEQAORyJnKArWSY/aVOBKUyflA==",
"version": "4.15.4",
"resolved": "https://registry.npmjs.org/astro/-/astro-4.15.4.tgz",
"integrity": "sha512-wqy+m3qygt9DmCSqMsckxyK4ccCUFtti2d/WlLkEpAlqHgyDIg20zRTLHO2v/H4YeSlJ8sAcN0RW2FhOeYbINg==",
"dependencies": {
"@astrojs/compiler": "^2.10.3",
"@astrojs/internal-helpers": "0.4.1",
"@astrojs/markdown-remark": "5.2.0",
"@astrojs/telemetry": "3.1.0",
"@babel/core": "^7.25.2",
"@babel/generator": "^7.25.5",
"@babel/parser": "^7.25.4",
"@babel/plugin-transform-react-jsx": "^7.25.2",
"@babel/traverse": "^7.25.4",
"@babel/types": "^7.25.4",
"@babel/types": "^7.25.6",
"@oslojs/encoding": "^0.4.1",
"@rollup/pluginutils": "^5.1.0",
"@types/babel__core": "^7.20.5",
@@ -2936,8 +3005,8 @@
"es-module-lexer": "^1.5.4",
"esbuild": "^0.21.5",
"estree-walker": "^3.0.3",
"execa": "^8.0.1",
"fast-glob": "^3.3.2",
"fastq": "^1.17.1",
"flattie": "^1.1.1",
"github-slugger": "^2.0.0",
"gray-matter": "^4.0.3",
@@ -2946,6 +3015,7 @@
"js-yaml": "^4.1.0",
"kleur": "^4.1.5",
"magic-string": "^0.30.11",
"magicast": "^0.3.5",
"micromatch": "^4.0.8",
"mrmime": "^2.0.0",
"neotraverse": "^0.6.18",
@@ -2957,14 +3027,15 @@
"prompts": "^2.4.2",
"rehype": "^13.0.1",
"semver": "^7.6.3",
"shiki": "^1.14.1",
"shiki": "^1.16.1",
"string-width": "^7.2.0",
"strip-ansi": "^7.1.0",
"tsconfck": "^3.1.1",
"tinyexec": "^0.3.0",
"tsconfck": "^3.1.3",
"unist-util-visit": "^5.0.0",
"vfile": "^6.0.3",
"vite": "^5.4.2",
"vitefu": "^0.2.5",
"vitefu": "^1.0.2",
"which-pm": "^3.0.0",
"xxhash-wasm": "^1.0.2",
"yargs-parser": "^21.1.1",
@@ -3924,6 +3995,11 @@
"iconv-lite": "^0.6.2"
}
},
"node_modules/enquire.js": {
"version": "2.1.6",
"resolved": "https://registry.npmjs.org/enquire.js/-/enquire.js-2.1.6.tgz",
"integrity": "sha512-/KujNpO+PT63F7Hlpu4h3pE3TokKRHN26JYmQpPyjkRD/N57R7bPDNojMXdi7uveAKjYB7yQnartCxZnFWr0Xw=="
},
"node_modules/entities": {
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
@@ -4040,28 +4116,6 @@
"resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz",
"integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA=="
},
"node_modules/execa": {
"version": "8.0.1",
"resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz",
"integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==",
"dependencies": {
"cross-spawn": "^7.0.3",
"get-stream": "^8.0.1",
"human-signals": "^5.0.0",
"is-stream": "^3.0.0",
"merge-stream": "^2.0.0",
"npm-run-path": "^5.1.0",
"onetime": "^6.0.0",
"signal-exit": "^4.1.0",
"strip-final-newline": "^3.0.0"
},
"engines": {
"node": ">=16.17"
},
"funding": {
"url": "https://github.com/sindresorhus/execa?sponsor=1"
}
},
"node_modules/extend": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
@@ -4325,17 +4379,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/get-stream": {
"version": "8.0.1",
"resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz",
"integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==",
"engines": {
"node": ">=16"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/get-tsconfig": {
"version": "4.7.6",
"resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.6.tgz",
@@ -4720,14 +4763,6 @@
"node": ">= 0.8"
}
},
"node_modules/human-signals": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz",
"integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==",
"engines": {
"node": ">=16.17.0"
}
},
"node_modules/humanize-ms": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz",
@@ -4927,17 +4962,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/is-stream": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz",
"integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==",
"engines": {
"node": "^12.20.0 || ^14.13.1 || >=16.0.0"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/is-unicode-supported": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.0.0.tgz",
@@ -4998,6 +5022,12 @@
"url": "https://github.com/sponsors/panva"
}
},
"node_modules/jquery": {
"version": "3.7.1",
"resolved": "https://registry.npmjs.org/jquery/-/jquery-3.7.1.tgz",
"integrity": "sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg==",
"peer": true
},
"node_modules/js-cookie": {
"version": "3.0.5",
"resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-3.0.5.tgz",
@@ -5033,6 +5063,14 @@
"node": ">=4"
}
},
"node_modules/json2mq": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/json2mq/-/json2mq-0.2.0.tgz",
"integrity": "sha512-SzoRg7ux5DWTII9J2qkrZrqV1gt+rTaoufMxEzXbS26Uid0NwaJd123HcoB80TgubEppxxIGdNxCx50fEoEWQA==",
"dependencies": {
"string-convert": "^0.2.0"
}
},
"node_modules/json5": {
"version": "2.2.3",
"resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
@@ -5159,6 +5197,11 @@
"integrity": "sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==",
"dev": true
},
"node_modules/lodash.debounce": {
"version": "4.0.8",
"resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
"integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow=="
},
"node_modules/lodash.isplainobject": {
"version": "4.0.6",
"resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
@@ -5244,6 +5287,14 @@
"react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0"
}
},
"node_modules/luxon": {
"version": "3.5.0",
"resolved": "https://registry.npmjs.org/luxon/-/luxon-3.5.0.tgz",
"integrity": "sha512-rh+Zjr6DNfUYR3bPwJEnuwDdqMbxZW7LOQfUN4B54+Cl+0o5zaU9RJ6bcidfDtC1cWCZXQ+nvX8bf6bAji37QQ==",
"engines": {
"node": ">=12"
}
},
"node_modules/magic-string": {
"version": "0.30.11",
"resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.11.tgz",
@@ -5252,6 +5303,16 @@
"@jridgewell/sourcemap-codec": "^1.5.0"
}
},
"node_modules/magicast": {
"version": "0.3.5",
"resolved": "https://registry.npmjs.org/magicast/-/magicast-0.3.5.tgz",
"integrity": "sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==",
"dependencies": {
"@babel/parser": "^7.25.4",
"@babel/types": "^7.25.4",
"source-map-js": "^1.2.0"
}
},
"node_modules/make-dir": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
@@ -5526,11 +5587,6 @@
"resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz",
"integrity": "sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q=="
},
"node_modules/merge-stream": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
"integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w=="
},
"node_modules/merge2": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
@@ -6118,17 +6174,6 @@
"node": ">= 0.6"
}
},
"node_modules/mimic-fn": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz",
"integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==",
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/mimic-function": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/mimic-function/-/mimic-function-5.0.1.tgz",
@@ -6325,31 +6370,6 @@
"npm": ">=8.12.1"
}
},
"node_modules/npm-run-path": {
"version": "5.3.0",
"resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz",
"integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==",
"dependencies": {
"path-key": "^4.0.0"
},
"engines": {
"node": "^12.20.0 || ^14.13.1 || >=16.0.0"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/npm-run-path/node_modules/path-key": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz",
"integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==",
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/nth-check": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz",
@@ -6397,18 +6417,12 @@
"wrappy": "1"
}
},
"node_modules/onetime": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz",
"integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==",
"dependencies": {
"mimic-fn": "^4.0.0"
},
"engines": {
"node": ">=12"
},
"node_modules/oniguruma-to-js": {
"version": "0.3.3",
"resolved": "https://registry.npmjs.org/oniguruma-to-js/-/oniguruma-to-js-0.3.3.tgz",
"integrity": "sha512-m90/WEhgs8g4BxG37+Nu3YrMfJDs2YXtYtIllhsEPR+wP3+K4EZk6dDUvy2v2K4MNFDDOYKL4/yqYPXDqyozTQ==",
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
"url": "https://github.com/sponsors/antfu"
}
},
"node_modules/openai": {
@@ -6738,11 +6752,11 @@
}
},
"node_modules/playwright": {
"version": "1.46.0",
"resolved": "https://registry.npmjs.org/playwright/-/playwright-1.46.0.tgz",
"integrity": "sha512-XYJ5WvfefWONh1uPAUAi0H2xXV5S3vrtcnXe6uAOgdGi3aSpqOSXX08IAjXW34xitfuOJsvXU5anXZxPSEQiJw==",
"version": "1.47.2",
"resolved": "https://registry.npmjs.org/playwright/-/playwright-1.47.2.tgz",
"integrity": "sha512-nx1cLMmQWqmA3UsnjaaokyoUpdVaaDhJhMoxX2qj3McpjnsqFHs516QAKYhqHAgOP+oCFTEOCOAaD1RgD/RQfA==",
"dependencies": {
"playwright-core": "1.46.0"
"playwright-core": "1.47.2"
},
"bin": {
"playwright": "cli.js"
@@ -6755,9 +6769,9 @@
}
},
"node_modules/playwright-core": {
"version": "1.46.0",
"resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.46.0.tgz",
"integrity": "sha512-9Y/d5UIwuJk8t3+lhmMSAJyNP1BUC/DqP3cQJDQQL/oWqAiuPTLgy7Q5dzglmTLwcBRdetzgNM/gni7ckfTr6A==",
"version": "1.47.2",
"resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.47.2.tgz",
"integrity": "sha512-3JvMfF+9LJfe16l7AbSmU555PaTl2tPyQsVInqm3id16pdDfvZ8TTZ/pyzmkbDrZTQefyzU7AIHlZqQnxpqHVQ==",
"bin": {
"playwright-core": "cli.js"
},
@@ -7207,6 +7221,22 @@
"node": ">=0.10.0"
}
},
"node_modules/react-slick": {
"version": "0.30.2",
"resolved": "https://registry.npmjs.org/react-slick/-/react-slick-0.30.2.tgz",
"integrity": "sha512-XvQJi7mRHuiU3b9irsqS9SGIgftIfdV5/tNcURTb5LdIokRA5kIIx3l4rlq2XYHfxcSntXapoRg/GxaVOM1yfg==",
"dependencies": {
"classnames": "^2.2.5",
"enquire.js": "^2.1.6",
"json2mq": "^0.2.0",
"lodash.debounce": "^4.0.8",
"resize-observer-polyfill": "^1.5.0"
},
"peerDependencies": {
"react": "^0.14.0 || ^15.0.1 || ^16.0.0 || ^17.0.0 || ^18.0.0",
"react-dom": "^0.14.0 || ^15.0.1 || ^16.0.0 || ^17.0.0 || ^18.0.0"
}
},
"node_modules/react-tooltip": {
"version": "5.27.1",
"resolved": "https://registry.npmjs.org/react-tooltip/-/react-tooltip-5.27.1.tgz",
@@ -7256,6 +7286,11 @@
"node": ">=8.10.0"
}
},
"node_modules/regex": {
"version": "4.3.2",
"resolved": "https://registry.npmjs.org/regex/-/regex-4.3.2.tgz",
"integrity": "sha512-kK/AA3A9K6q2js89+VMymcboLOlF5lZRCYJv3gzszXFHBr6kO6qLGzbm+UIugBEV8SMMKCTR59txoY6ctRHYVw=="
},
"node_modules/rehype": {
"version": "13.0.1",
"resolved": "https://registry.npmjs.org/rehype/-/rehype-13.0.1.tgz",
@@ -7406,6 +7441,11 @@
"url": "https://opencollective.com/unified"
}
},
"node_modules/resize-observer-polyfill": {
"version": "1.5.1",
"resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz",
"integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg=="
},
"node_modules/resolve": {
"version": "1.22.8",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz",
@@ -7792,11 +7832,12 @@
}
},
"node_modules/shiki": {
"version": "1.14.1",
"resolved": "https://registry.npmjs.org/shiki/-/shiki-1.14.1.tgz",
"integrity": "sha512-FujAN40NEejeXdzPt+3sZ3F2dx1U24BY2XTY01+MG8mbxCiA2XukXdcbyMyLAHJ/1AUUnQd1tZlvIjefWWEJeA==",
"version": "1.16.3",
"resolved": "https://registry.npmjs.org/shiki/-/shiki-1.16.3.tgz",
"integrity": "sha512-GypUE+fEd06FqDs63LSAVlmq7WsahhPQU62cgZxGF+TJT5LjD2k7HTxXj4/CKOVuMM3+wWQ1t4Y5oooeJFRRBQ==",
"dependencies": {
"@shikijs/core": "1.14.1",
"@shikijs/core": "1.16.3",
"@shikijs/vscode-textmate": "^9.2.0",
"@types/hast": "^3.0.4"
}
},
@@ -7847,6 +7888,14 @@
"resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz",
"integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw=="
},
"node_modules/slick-carousel": {
"version": "1.8.1",
"resolved": "https://registry.npmjs.org/slick-carousel/-/slick-carousel-1.8.1.tgz",
"integrity": "sha512-XB9Ftrf2EEKfzoQXt3Nitrt/IPbT+f1fgqBdoxO3W/+JYvtEOW6EgxnWfr9GH6nmULv7Y2tPmEX3koxThVmebA==",
"peerDependencies": {
"jquery": ">=1.8.0"
}
},
"node_modules/slugify": {
"version": "1.6.6",
"resolved": "https://registry.npmjs.org/slugify/-/slugify-1.6.6.tgz",
@@ -7896,6 +7945,11 @@
"resolved": "https://registry.npmjs.org/stream-replace-string/-/stream-replace-string-2.0.0.tgz",
"integrity": "sha512-TlnjJ1C0QrmxRNrON00JvaFFlNh5TTG00APw23j74ET7gkQpTASi6/L2fuiav8pzK715HXtUeClpBTw2NPSn6w=="
},
"node_modules/string-convert": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/string-convert/-/string-convert-0.2.1.tgz",
"integrity": "sha512-u/1tdPl4yQnPBjnVrmdLo9gtuLvELKsAoRapekWggdiQNvvvum+jYF329d84NAa660KQw7pB2n36KrIKVoXa3A=="
},
"node_modules/string-width": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz",
@@ -8018,17 +8072,6 @@
"node": ">=0.10.0"
}
},
"node_modules/strip-final-newline": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz",
"integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==",
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/strip-outer": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz",
@@ -8250,6 +8293,11 @@
"resolved": "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.3.tgz",
"integrity": "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw=="
},
"node_modules/tinyexec": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.0.tgz",
"integrity": "sha512-tVGE0mVJPGb0chKhqmsoosjsS+qUnJVGJpZgsHYQcGoPlG3B51R3PouqTgEGH2Dc9jjFyOqOpix6ZHNMXp1FZg=="
},
"node_modules/to-fast-properties": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
@@ -8319,9 +8367,9 @@
"integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA=="
},
"node_modules/tsconfck": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/tsconfck/-/tsconfck-3.1.1.tgz",
"integrity": "sha512-00eoI6WY57SvZEVjm13stEVE90VkEdJAFGgpFLTsZbJyW/LwFQ7uQxJHWpZ2hzSWgCPKc9AnBnNP+0X7o3hAmQ==",
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/tsconfck/-/tsconfck-3.1.3.tgz",
"integrity": "sha512-ulNZP1SVpRDesxeMLON/LtWM8HIgAJEIVpVVhBM6gsmvQ8+Rh+ZG7FWGvHh7Ah3pRABwVJWklWCr/BTZSv0xnQ==",
"bin": {
"tsconfck": "bin/tsconfck.js"
},
@@ -9111,9 +9159,9 @@
}
},
"node_modules/vitefu": {
"version": "0.2.5",
"resolved": "https://registry.npmjs.org/vitefu/-/vitefu-0.2.5.tgz",
"integrity": "sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==",
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/vitefu/-/vitefu-1.0.2.tgz",
"integrity": "sha512-0/iAvbXyM3RiPPJ4lyD4w6Mjgtf4ejTK6TPvTNG3H32PLwuT0N/ZjJLiXug7ETE/LWtTeHw9WRv7uX/tIKYyKg==",
"peerDependencies": {
"vite": "^3.0.0 || ^4.0.0 || ^5.0.0"
},

View File

@@ -20,77 +20,108 @@
"editor-roadmap-content": "tsx scripts/editor-roadmap-content.ts",
"roadmap-content": "node scripts/roadmap-content.cjs",
"generate-renderer": "sh scripts/generate-renderer.sh",
"generate-renderer-dummy": "sh scripts/generate-renderer-dummy.sh",
"best-practice-dirs": "node scripts/best-practice-dirs.cjs",
"best-practice-content": "node scripts/best-practice-content.cjs",
"generate:og": "node ./scripts/generate-og-images.mjs",
"warm:urls": "sh ./scripts/warm-urls.sh https://roadmap.sh/sitemap-0.xml",
"compress:images": "tsx ./scripts/compress-images.ts",
"generate:roadmap-content-json": "tsx ./scripts/editor-roadmap-content-json.ts",
"migrate:editor-roadmaps": "tsx ./scripts/migrate-editor-roadmap.ts",
"test:e2e": "playwright test"
},
"dependencies": {
"@astrojs/node": "^8.3.3",
"@astrojs/react": "^3.6.2",
"@astrojs/sitemap": "^3.1.6",
"@astrojs/tailwind": "^5.1.0",
"@fingerprintjs/fingerprintjs": "^4.4.3",
"@nanostores/react": "^0.7.2",
"@astrojs/node": "^9.2.1",
"@astrojs/react": "^4.2.7",
"@astrojs/sitemap": "^3.4.0",
"@fingerprintjs/fingerprintjs": "^4.6.2",
"@microsoft/clarity": "^1.0.0",
"@nanostores/react": "^1.0.0",
"@napi-rs/image": "^1.9.2",
"@radix-ui/react-dropdown-menu": "^2.1.15",
"@radix-ui/react-popover": "^1.1.14",
"@resvg/resvg-js": "^2.6.2",
"@types/react": "^18.3.3",
"@types/react-dom": "^18.3.0",
"astro": "^4.14.6",
"@roadmapsh/editor": "workspace:*",
"@tailwindcss/vite": "^4.1.7",
"@tanstack/react-query": "^5.76.1",
"@tiptap/core": "^2.12.0",
"@tiptap/extension-document": "^2.12.0",
"@tiptap/extension-paragraph": "^2.12.0",
"@tiptap/extension-placeholder": "^2.12.0",
"@tiptap/extension-text": "^2.12.0",
"@tiptap/pm": "^2.12.0",
"@tiptap/react": "^2.12.0",
"@tiptap/suggestion": "^2.12.0",
"@types/react": "^19.1.4",
"@types/react-dom": "^19.1.5",
"astro": "^5.7.13",
"clsx": "^2.1.1",
"dayjs": "^1.11.12",
"dayjs": "^1.11.13",
"dom-to-image": "^2.6.0",
"dracula-prism": "^2.1.16",
"gray-matter": "^4.0.3",
"htm": "^3.1.1",
"image-size": "^1.1.1",
"jose": "^5.6.3",
"image-size": "^2.0.2",
"jose": "^6.0.11",
"js-cookie": "^3.0.5",
"lucide-react": "^0.419.0",
"nanoid": "^5.0.7",
"nanostores": "^0.10.3",
"node-html-parser": "^6.1.13",
"npm-check-updates": "^17.0.0",
"playwright": "^1.45.3",
"prismjs": "^1.29.0",
"react": "^18.3.1",
"react-calendar-heatmap": "^1.9.0",
"react-confetti": "^6.1.0",
"react-dom": "^18.3.1",
"react-tooltip": "^5.27.1",
"reactflow": "^11.11.4",
"lucide-react": "^0.511.0",
"luxon": "^3.6.1",
"markdown-it-async": "^2.2.0",
"nanoid": "^5.1.5",
"nanostores": "^1.0.1",
"node-html-parser": "^7.0.1",
"npm-check-updates": "^18.0.1",
"playwright": "^1.52.0",
"prismjs": "^1.30.0",
"radix-ui": "^1.4.2",
"react": "^19.1.0",
"react-calendar-heatmap": "^1.10.0",
"react-confetti": "^6.4.0",
"react-dom": "^19.1.0",
"react-dropzone": "^14.3.8",
"react-resizable-panels": "^3.0.2",
"react-textarea-autosize": "^8.5.9",
"react-tooltip": "^5.28.1",
"rehype-external-links": "^3.0.0",
"remark-parse": "^11.0.0",
"roadmap-renderer": "^1.0.6",
"satori": "^0.10.14",
"roadmap-renderer": "^1.0.7",
"sanitize-html": "^2.17.0",
"satori": "^0.13.1",
"satori-html": "^0.3.2",
"sharp": "^0.33.4",
"sharp": "^0.34.1",
"shiki": "^3.4.2",
"slugify": "^1.6.6",
"tailwind-merge": "^2.4.0",
"tailwindcss": "^3.4.7",
"tailwind-merge": "^3.3.0",
"tailwindcss": "^4.1.7",
"tippy.js": "^6.3.7",
"tiptap-markdown": "^0.8.10",
"turndown": "^7.2.0",
"unified": "^11.0.5",
"zustand": "^4.5.4"
"zustand": "^5.0.4"
},
"devDependencies": {
"@playwright/test": "^1.45.3",
"@tailwindcss/typography": "^0.5.13",
"@ai-sdk/google": "^1.2.18",
"@playwright/test": "^1.52.0",
"@tailwindcss/typography": "^0.5.16",
"@types/dom-to-image": "^2.6.7",
"@types/js-cookie": "^3.0.6",
"@types/prismjs": "^1.26.4",
"@types/react-calendar-heatmap": "^1.6.7",
"@types/luxon": "^3.6.2",
"@types/markdown-it": "^14.1.2",
"@types/prismjs": "^1.26.5",
"@types/react-calendar-heatmap": "^1.9.0",
"@types/react-slick": "^0.23.13",
"@types/sanitize-html": "^2.16.0",
"@types/turndown": "^5.0.5",
"csv-parser": "^3.0.0",
"gh-pages": "^6.1.1",
"ai": "^4.3.16",
"csv-parser": "^3.2.0",
"gh-pages": "^6.3.0",
"js-yaml": "^4.1.0",
"markdown-it": "^14.1.0",
"openai": "^4.53.2",
"prettier": "^3.3.3",
"openai": "^4.100.0",
"prettier": "^3.5.3",
"prettier-plugin-astro": "^0.14.1",
"prettier-plugin-tailwindcss": "^0.6.5",
"tsx": "^4.16.5"
"prettier-plugin-tailwindcss": "^0.6.11",
"tailwind-scrollbar": "^4.0.2",
"tsx": "^4.19.4"
}
}

0
packages/.gitkeep Normal file
View File

8261
pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff

2
pnpm-workspace.yaml Normal file
View File

@@ -0,0 +1,2 @@
packages:
- packages/*

View File

Before

Width:  |  Height:  |  Size: 2.4 KiB

After

Width:  |  Height:  |  Size: 2.4 KiB

View File

Before

Width:  |  Height:  |  Size: 3.6 KiB

After

Width:  |  Height:  |  Size: 3.6 KiB

View File

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 2.6 KiB

View File

Before

Width:  |  Height:  |  Size: 3.1 KiB

After

Width:  |  Height:  |  Size: 3.1 KiB

View File

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 17 KiB

BIN
public/img/gifs/bot.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 821 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 386 KiB

BIN
public/img/gifs/rocket.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 256 KiB

BIN
public/img/gifs/star.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 145 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1013 KiB

BIN
public/img/gifs/wave.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 370 KiB

View File

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

Before

Width:  |  Height:  |  Size: 203 B

After

Width:  |  Height:  |  Size: 203 B

View File

Before

Width:  |  Height:  |  Size: 1021 B

After

Width:  |  Height:  |  Size: 1021 B

View File

Before

Width:  |  Height:  |  Size: 54 KiB

After

Width:  |  Height:  |  Size: 54 KiB

View File

Before

Width:  |  Height:  |  Size: 5.0 KiB

After

Width:  |  Height:  |  Size: 5.0 KiB

View File

Before

Width:  |  Height:  |  Size: 38 KiB

After

Width:  |  Height:  |  Size: 38 KiB

View File

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 26 KiB

View File

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 22 KiB

View File

Before

Width:  |  Height:  |  Size: 36 KiB

After

Width:  |  Height:  |  Size: 36 KiB

View File

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 20 KiB

View File

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 17 KiB

View File

Before

Width:  |  Height:  |  Size: 405 KiB

After

Width:  |  Height:  |  Size: 405 KiB

View File

Before

Width:  |  Height:  |  Size: 8.9 KiB

After

Width:  |  Height:  |  Size: 8.9 KiB

View File

Before

Width:  |  Height:  |  Size: 149 KiB

After

Width:  |  Height:  |  Size: 149 KiB

BIN
public/img/party.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 936 KiB

View File

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

Before

Width:  |  Height:  |  Size: 398 KiB

After

Width:  |  Height:  |  Size: 398 KiB

View File

Before

Width:  |  Height:  |  Size: 286 KiB

After

Width:  |  Height:  |  Size: 286 KiB

View File

Before

Width:  |  Height:  |  Size: 60 KiB

After

Width:  |  Height:  |  Size: 60 KiB

View File

Before

Width:  |  Height:  |  Size: 132 KiB

After

Width:  |  Height:  |  Size: 132 KiB

View File

Before

Width:  |  Height:  |  Size: 137 KiB

After

Width:  |  Height:  |  Size: 137 KiB

View File

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

View File

Before

Width:  |  Height:  |  Size: 123 KiB

After

Width:  |  Height:  |  Size: 123 KiB

View File

Before

Width:  |  Height:  |  Size: 66 KiB

After

Width:  |  Height:  |  Size: 66 KiB

View File

Before

Width:  |  Height:  |  Size: 96 KiB

After

Width:  |  Height:  |  Size: 96 KiB

View File

Before

Width:  |  Height:  |  Size: 119 KiB

After

Width:  |  Height:  |  Size: 119 KiB

View File

Before

Width:  |  Height:  |  Size: 114 KiB

After

Width:  |  Height:  |  Size: 114 KiB

View File

Before

Width:  |  Height:  |  Size: 129 KiB

After

Width:  |  Height:  |  Size: 129 KiB

View File

Before

Width:  |  Height:  |  Size: 312 KiB

After

Width:  |  Height:  |  Size: 312 KiB

View File

Before

Width:  |  Height:  |  Size: 99 KiB

After

Width:  |  Height:  |  Size: 99 KiB

View File

Before

Width:  |  Height:  |  Size: 132 KiB

After

Width:  |  Height:  |  Size: 132 KiB

View File

Before

Width:  |  Height:  |  Size: 76 KiB

After

Width:  |  Height:  |  Size: 76 KiB

View File

Before

Width:  |  Height:  |  Size: 116 KiB

After

Width:  |  Height:  |  Size: 116 KiB

View File

Before

Width:  |  Height:  |  Size: 123 KiB

After

Width:  |  Height:  |  Size: 123 KiB

View File

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

Before

Width:  |  Height:  |  Size: 7.3 KiB

After

Width:  |  Height:  |  Size: 7.3 KiB

View File

Before

Width:  |  Height:  |  Size: 170 KiB

After

Width:  |  Height:  |  Size: 170 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@@ -2,22 +2,11 @@
"aStaDENn5PhEa-cFvNzXa": {
"title": "Mathematics",
"description": "Mathematics is the foundation of AI and Data Science. It is essential to have a good understanding of mathematics to excel in these fields.",
"links": [
{
"title": "Mathematics for Machine Learning",
"url": "https://imp.i384100.net/baqMYv",
"type": "article"
},
{
"title": "Algebra and Differential Calculus",
"url": "https://imp.i384100.net/LX5M7M",
"type": "article"
}
]
"links": []
},
"4WZL_fzJ3cZdWLLDoWN8D": {
"title": "Statistics",
"description": "Statistics is the science of collecting, analyzing, interpreting, presenting, and organizing data. It is a branch of mathematics that deals with the collection, analysis, interpretation, presentation, and organization of data. It is used in a wide range of fields, including science, engineering, medicine, and social science. Statistics is used to make informed decisions, to predict future events, and to test hypotheses. It is also used to summarize data, to describe relationships between variables, and to make inferences about populations based on samples.\n\nLearn more from the resources given on the roadmap.",
"description": "Statistics is the science of collecting, analyzing, interpreting, presenting, and organizing data. It is a branch of mathematics that deals with the collection, analysis, interpretation, presentation, and organization of data. It is used in a wide range of fields, including science, engineering, medicine, and social science. Statistics is used to make informed decisions, to predict future events, and to test hypotheses. It is also used to summarize data, to describe relationships between variables, and to make inferences about populations based on samples.",
"links": []
},
"gWMvD83hVXeTmCuHGIiOL": {
@@ -42,13 +31,18 @@
]
},
"mwPJh33MEUQ4Co_LiVEOb": {
"title": "Differential Calculus",
"title": "Differential Calculus ",
"description": "",
"links": [
{
"title": "Algebra and Differential Calculus for Data Science",
"url": "https://imp.i384100.net/LX5M7M",
"type": "article"
},
{
"title": "Calculus Youtube Course",
"url": "https://www.youtube.com/playlist?list=PLZHQObOWTQDMsr9K-rj53DwVRMYO3t5Yr",
"type": "video"
}
]
},
@@ -106,7 +100,7 @@
},
{
"title": "Step by Step Process for Planning an A/B Test",
"url": "https://towardsdatascience.com/step-by-step-for-planning-an-a-b-test-ef3c93143c0b",
"url": "https://medium.com/data-science/step-by-step-for-planning-an-a-b-test-ef3c93143c0b",
"type": "article"
},
{
@@ -170,7 +164,7 @@
},
"Gd2egqKZPnbPW1W2jw4j8": {
"title": "Econometrics",
"description": "Ecenometrics is the application of statistical methods to economic data. It is a branch of economics that aims to give empirical content to economic relations. More precisely, it is \"the quantitative analysis of actual economic phenomena based on the concurrent development of theory and observation, related by appropriate methods of inference.\" Econometrics can be described as something that allows economists \"to sift through mountains of data to extract simple relationships.\"",
"description": "Econometrics is the application of statistical methods to economic data. It is a branch of economics that aims to give empirical content to economic relations. More precisely, it is \"the quantitative analysis of actual economic phenomena based on the concurrent development of theory and observation, related by appropriate methods of inference.\" Econometrics can be described as something that allows economists \"to sift through mountains of data to extract simple relationships.\"",
"links": []
},
"y6xXsc-uSAmRDnNuyhqH2": {
@@ -318,8 +312,8 @@
"type": "article"
},
{
"title": "Exploratory Data Analysis with Seaborn",
"url": "https://imp.i384100.net/ZQmMgR",
"title": "Python for Data Visualization: Matplotlib & Seaborn",
"url": "https://imp.i384100.net/55xvzn",
"type": "article"
}
]

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -9,7 +9,17 @@
"description": "APIs, or Application Programming Interfaces, provide a manner in which software applications communicate with each other. They abstract the complexity of applications to allow developers to use only the essentials of the software they are working with. They define the methods and data formats an application should use in order to perform tasks, like sending, retrieving, or modifying data. Understanding APIs is integral to mastering modern software development, primarily because they allow applications to exchange data and functionality with ease, thus enabling integration and convergence of technological services. Therefore, a solid understanding of what APIs are forms the basic cornerstone of API design.\n\nVisit the following resources to learn more:",
"links": [
{
"title": "What is an API?",
"title": "Getting Started with APIs - Postman",
"url": "https://www.postman.com/what-is-an-api/",
"type": "article"
},
{
"title": "API - IBM",
"url": "https://www.ibm.com/topics/api",
"type": "article"
},
{
"title": "What is an API? - AWS",
"url": "https://aws.amazon.com/what-is/api/",
"type": "article"
},
@@ -61,7 +71,7 @@
"type": "article"
},
{
"title": "HTTP: 1.0 vs. 1.1 vs 2.0 vs. 3.0",
"title": "HTTP: 1.0 vs 1.1 vs 2.0 vs 3.0",
"url": "https://www.baeldung.com/cs/http-versions",
"type": "article"
}
@@ -72,17 +82,12 @@
"description": "HTTP (Hypertext Transfer Protocol) Methods play a significant role in API design. They define the type of request a client can make to a server, providing the framework for interaction between client and server. Understanding HTTP methods is paramount to creating a robust and effective API. Some of the common HTTP methods used in API design include GET, POST, PUT, DELETE, and PATCH. Each of these methods signifies a different type of request, allowing for various interactions with your API endpoints. This in turn creates a more dynamic, functional, and user-friendly API.\n\nLearn more from the following resources:",
"links": [
{
"title": "HTTP request methods",
"title": "HTTP Methods - MDN",
"url": "https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods",
"type": "article"
},
{
"title": "HTTP Request Methods - W3Schools",
"url": "https://www.w3schools.com/tags/ref_httpmethods.asp",
"type": "article"
},
{
"title": "What are HTTP Methods?",
"title": "What are HTTP Methods? - Postman",
"url": "https://blog.postman.com/what-are-http-methods/",
"type": "article"
}
@@ -124,12 +129,12 @@
"type": "article"
},
{
"title": "What are HTTP headers?",
"title": "What are HTTP Headers?",
"url": "https://blog.postman.com/what-are-http-headers/",
"type": "article"
},
{
"title": "What are HTTP Headers & Understand different types of HTTP headers",
"title": "What are HTTP Headers & Types of HTTP headers",
"url": "https://requestly.com/blog/what-are-http-headers-understand-different-types-of-http-headers/",
"type": "article"
}
@@ -150,7 +155,7 @@
"type": "article"
},
{
"title": "Path parameters",
"title": "Path Parameters",
"url": "https://help.iot-x.com/api/how-to-use-the-api/parameters/path-parameters",
"type": "article"
}
@@ -166,8 +171,8 @@
"type": "article"
},
{
"title": "Cookes - Mozilla",
"url": "https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/cookies",
"title": "Using HTTP cookies - Mozilla",
"url": "https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies",
"type": "article"
}
]
@@ -182,7 +187,7 @@
"type": "article"
},
{
"title": "Content Negotiation in practice",
"title": "Content Negotiation in Practice",
"url": "https://softwaremill.com/content-negotiation-in-practice/",
"type": "article"
}
@@ -244,6 +249,11 @@
"url": "https://aws.amazon.com/route53/what-is-dns/",
"type": "article"
},
{
"title": "DNS Record Crash Course for Web Developers",
"url": "https://dev.to/chrisachard/dns-record-crash-course-for-web-developers-35hn",
"type": "article"
},
{
"title": "DNS explained in 100 seconds",
"url": "https://www.youtube.com/watch?v=UVR9lhUGAyU",
@@ -253,8 +263,19 @@
},
"o8i093VQv-T5Qf1yGqU0R": {
"title": "Different API Styles",
"description": "Application Programming Interface (API) design isn't a one-size-fits-all endeavor. APIs can be structured in various styles, each with its own unique characteristics, advantages, and use cases. Early identification of the appropriate API style is crucial in ensuring a functional, efficient and seamless end-user experience. Commonly used API styles include REST, SOAP, GraphQL, and gRPC. Understanding these diverse API styles would help in making better design choices, fostering efficient overall system architecture, and promoting an intuitive and easy-to-use application.",
"links": []
"description": "Application Programming Interface (API) design isn't a one-size-fits-all endeavor. APIs can be structured in various styles, each with its own unique characteristics, advantages, and use cases. Early identification of the appropriate API style is crucial in ensuring a functional, efficient and seamless end-user experience. Commonly used API styles include REST, SOAP, GraphQL, and gRPC. Understanding these diverse API styles would help in making better design choices, fostering efficient overall system architecture, and promoting an intuitive and easy-to-use application.\n\nVisit the following resources to learn more:",
"links": [
{
"title": "API Styles",
"url": "https://www.redhat.com/architect/api-styles",
"type": "article"
},
{
"title": "Top API Styles",
"url": "https://www.youtube.com/watch?v=4vLxWqE94l4",
"type": "video"
}
]
},
"BvwdASMvuNQ9DNgzdSZ4o": {
"title": "RESTful APIs",
@@ -269,6 +290,11 @@
"title": "What is a RESTul API?",
"url": "https://aws.amazon.com/what-is/restful-api/",
"type": "article"
},
{
"title": "Understanding RESTful APIs",
"url": "https://www.youtube.com/watch?v=lsMQRaeKNDk",
"type": "video"
}
]
},
@@ -277,45 +303,30 @@
"description": "Simple JSON (JavaScript Object Notation) APIs are a popular form of API or \"Application Programming Interface\" which utilise JSON to exchange data between servers and web applications. This method has gained prominence mainly for its simplicity, light weight, and easy readability. In the context of API design, a well-structured JSON API allows developers to efficiently interact with the backend and retrieve only the data they need in a consistent and comprehensible manner. From reducing redundant data to enabling quick parsing, Simple JSON APIs provide numerous benefits to improve the overall performance of applications. Designing a good JSON API requires careful planning, sound knowledge of HTTP methods, endpoints, error handling mechanisms, and most importantly, a clear understanding of the application's data requirements.\n\nLearn more from the following resources:",
"links": [
{
"title": "A specification for building JSON APIs",
"title": "Specification for Building JSON APIs",
"url": "https://github.com/json-api/json-api",
"type": "opensource"
},
{
"title": "JSON API: Explained in 4 minutes (+ EXAMPLES)",
"title": "JSON API: Explained in 4 Minutes",
"url": "https://www.youtube.com/watch?v=N-4prIh7t38",
"type": "video"
}
]
},
"Wwd-0PjrtViMFWxRGaQey": {
"title": "gRPC APIs",
"description": "gRPC is a platform agnostic serialization protocol that is used to communicate between services. Designed by Google in 2015, it is a modern alternative to REST APIs. It is a binary protocol that uses HTTP/2 as a transport layer. It is a high performance, open source, general-purpose RPC framework that puts mobile and HTTP/2 first.\n\nIt's main use case is for communication between two different languages within the same application. You can use Python to communicate with Go, or Java to communicate with C#.\n\ngRPC uses the protocol buffer language to define the structure of the data that is\n\nVisit the following resources to learn more:",
"title": "SOAP APIs",
"description": "SOAP (Simple Object Access Protocol) APIs are a standard communication protocol system that permits programs that run on different operating systems (like Linux and Windows) to communicate using Hypertext Transfer Protocol (HTTP) and its Extensible Markup Language (XML). In the context of API Design, SOAP APIs offer a robust and well-defined process for interaction between various software applications, mostly over a network. They are highly extensible, versatile and support a wide range of communications protocols. Despite being more complex compared to other API types like REST, SOAP APIs ensure high reliability and security, making them the choice for certain business-focused, high-transaction applications.\n\nLearn more from the following resources:",
"links": [
{
"title": "gRPC Website",
"url": "https://grpc.io/",
"title": "What are SOAP APIs?",
"url": "https://www.indeed.com/career-advice/career-development/what-is-soap-api",
"type": "article"
},
{
"title": "gRPC Introduction",
"url": "https://grpc.io/docs/what-is-grpc/introduction/",
"title": "SOAP vs REST 101: Understand The Differences",
"url": "https://www.soapui.org/learn/api/soap-vs-rest-api/",
"type": "article"
},
{
"title": "gRPC Core Concepts",
"url": "https://grpc.io/docs/what-is-grpc/core-concepts/",
"type": "article"
},
{
"title": "Explore top posts about gRPC",
"url": "https://app.daily.dev/tags/grpc?ref=roadmapsh",
"type": "article"
},
{
"title": "Stephane Maarek - gRPC Introduction",
"url": "https://youtu.be/XRXTsQwyZSU",
"type": "video"
}
]
},
@@ -328,13 +339,18 @@
"url": "https://github.com/graphql-kit/graphql-apis",
"type": "opensource"
},
{
"title": "Visit Dedicated GraphQL Roadmap",
"url": "https://roadmap.sh/graphql",
"type": "article"
},
{
"title": "GraphQL Website",
"url": "https://graphql.org/",
"type": "article"
},
{
"title": "GraphQL explained in 100 seconds",
"title": "GraphQL Explained in 100 Seconds",
"url": "https://www.youtube.com/watch?v=eIQh02xuVw4",
"type": "video"
}
@@ -345,12 +361,12 @@
"description": "Building JSON/RESTful APIs involves designing and implementing APIs that adhere to the architectural constraints of Representational State Transfer (REST). These APIs use JSON (JavaScript Object Notation) as a format for information interchange, due to its lightweight, easy-to-understand, and universally accepted nature. A well-designed RESTful API, utilizing JSON, is key in developing applications that are scalable, maintainable, and easily integrated with other systems. This design approach enables the resources on a server to be accessed and manipulated using standard HTTP protocols, facilitating communication between different services and systems. Furthermore, it enables client-server interactions to be stateless, meaning each request from a client must contain all the information needed by the server to understand and process the request.\n\nLearn more from the following resources:",
"links": [
{
"title": "A specification for building APIs in JSON",
"title": "Specification for Building APIs in JSON",
"url": "https://jsonapi.org/",
"type": "article"
},
{
"title": "How to make a REST API",
"title": "How to Make a RESTful API",
"url": "https://www.integrate.io/blog/how-to-make-a-rest-api/",
"type": "article"
},
@@ -382,7 +398,7 @@
"description": "URI (Uniform Resource Identifier) is a string of characters used to identify a name or a resource on the Internet. Designing URIs carefully is a crucial part of creating a smooth API interface that is easy to understand, remember and use. Good URI design ensures that related resources are grouped together in a logical manner and can greatly impact the usability and maintainability of an API. It involves crafting standardised, intuitive HTTP paths that take advantage of the hierarchical nature of URLs to provide a better structure to the API. This hierarchy can then be used to expand the API over time without breaking existing clients' functionality.\n\nLearn more from the following resources:",
"links": [
{
"title": "Guidelines for URI design",
"title": "Guidelines for URI Design",
"url": "https://css-tricks.com/guidelines-for-uri-design/",
"type": "article"
},
@@ -398,12 +414,12 @@
"description": "API Versioning is a critical component of API Design and Management. As the APIs evolve over time to meet the new business requirements and functionality enhancements, it is crucial to manage the changes in a way that doesn't break the existing client applications. This calls for effective versioning strategies in API design. There are different versioning strategies like URI versioning, Request Header versioning, and Media Type versioning which are adopted based on the ease of implementation, client compatibility, and accessibility. Understanding each strategy and its pros and cons can lead to better API Design and maintainability.\n\nLearn more from the following resources:",
"links": [
{
"title": "What is API versioning?",
"title": "What is API Versioning?",
"url": "https://www.postman.com/api-platform/api-versioning/",
"type": "article"
},
{
"title": "4 API versioning best practices",
"title": "API Versioning Best Practices",
"url": "https://kodekloud.com/blog/api-versioning-best-practices/",
"type": "article"
},
@@ -437,8 +453,29 @@
},
"O7wjldZ3yTA2s_F-UnJw_": {
"title": "Rate Limiting",
"description": "Rate Limiting is a critical aspect of API Design that dictates the number of API calls a client can make within a specified timeframe. This helps in managing resource allocation, preventing abuse of the API, and maintaining the overall health of the API system. Proper rate limiting measures should be in place to ensure the API's stability, thereby delivering a consistent and reliable service to all consumers. It works primarily by setting a limit on the frequency of client requests, thereby preventing individual users from overloading the system. It is crucial to design and implement rate limiting carefully for maintaining API availability and performance.",
"links": []
"description": "Rate Limiting is a critical aspect of API Design that dictates the number of API calls a client can make within a specified timeframe. This helps in managing resource allocation, preventing abuse of the API, and maintaining the overall health of the API system. Proper rate limiting measures should be in place to ensure the API's stability, thereby delivering a consistent and reliable service to all consumers. It works primarily by setting a limit on the frequency of client requests, thereby preventing individual users from overloading the system. It is crucial to design and implement rate limiting carefully for maintaining API availability and performance.\n\nLearn more from the following resources:",
"links": [
{
"title": "Rate limit",
"url": "https://developer.mozilla.org/en-US/docs/Glossary/Rate_limit",
"type": "article"
},
{
"title": "Throttle",
"url": "https://developer.mozilla.org/en-US/docs/Glossary/Throttle",
"type": "article"
},
{
"title": "Debounce",
"url": "https://developer.mozilla.org/en-US/docs/Glossary/Debounce",
"type": "article"
},
{
"title": "What is rate limiting? | Rate limiting and bots",
"url": "https://www.cloudflare.com/en-gb/learning/bots/what-is-rate-limiting/",
"type": "article"
}
]
},
"20KEgZH6cu_UokqWpV-9I": {
"title": "Idempotency",
@@ -503,7 +540,7 @@
"description": "Error Handling is a crucial aspect of API design that ensures the stability, usability, and reliability of the API in production. APIs are designed to help systems communicate with each other. However, there can be instances where these systems might encounter exceptions or errors. The process of predicting, catching, and managing these error occurrences is what we refer to as 'Error Handling'. In the context of API Design, it involves defining and implementing specific strategies to detect, manage and inform consumers of any exception or error that occurs while executing requests. Configuring this appropriately provides a more robust and seamless communication experience, enabling developers to debug and rectify issues more efficiently.\n\nLearn more from the following resources:",
"links": [
{
"title": "Best practices for API error handling",
"title": "Best Practices for API Error Handling",
"url": "https://blog.postman.com/best-practices-for-api-error-handling/",
"type": "article"
},
@@ -548,18 +585,34 @@
"title": "Caching REST API Response",
"url": "https://restfulapi.net/caching/",
"type": "article"
},
{
"title": "HTTP caching",
"url": "https://developer.mozilla.org/en-US/docs/Web/HTTP/Caching",
"type": "article"
}
]
},
"cQnQ9v3mH27MGNwetz3JW": {
"title": "Authentication Methods",
"description": "Application Programming Interfaces (APIs) are critical components in software development that allow different software systems to communicate and share functionality. To ensure secure communication, it's essential to authenticate the parties involved in the API transactions. The authentication process confirms the identity of the API user. There are numerous authentication methods available when designing an API, each with its own pros and cons. This includes Basic Authentication, API Key Authentication, OAuth, and JWT among others. Understanding these different methods and their best use cases is fundamental to designing secure and effective APIs.",
"links": []
"description": "Application Programming Interfaces (APIs) are critical components in software development that allow different software systems to communicate and share functionality. To ensure secure communication, it's essential to authenticate the parties involved in the API transactions. The authentication process confirms the identity of the API user. There are numerous authentication methods available when designing an API, each with its own pros and cons. This includes Basic Authentication, API Key Authentication, OAuth, and JWT among others. Understanding these different methods and their best use cases is fundamental to designing secure and effective APIs.\n\nLearn more from the following resources:",
"links": [
{
"title": "API Authentication",
"url": "https://www.postman.com/api-platform/api-authentication/",
"type": "article"
}
]
},
"0FzHERK5AeYL5wv1FBJbH": {
"title": "Basic Auth",
"description": "Basic Auth, short for Basic Authentication, is a simple method often used in API design for handling user authentication. In this method, client credentials, consisting of a username and password pair, are passed to the API server in a field in the HTTP header. The server then verifies these credentials before granting access to protected resources. Although Basic Auth is straightforward to implement, it is less secure compared to more advanced methods since it involves transmitting credentials in an encoded, but not encrypted, format. It is often used in cases where simplicity is paramount, or High security levels are not required.\n\nLearn more from the following resources:",
"links": [
{
"title": "Basic Authentication",
"url": "https://roadmap.sh/guides/basic-authentication",
"type": "article"
},
{
"title": "Basic Auth Generation Header",
"url": "https://www.debugbear.com/basic-auth-header-generator",
@@ -581,6 +634,11 @@
"title": "Token Based Auth",
"description": "Token-based authentication is a crucial aspect of API design. It involves providing the user with a token that validates their identity after they have successfully logged in. Once the token is obtained, users can use it to access resources and services provided by the API. This token is usually passed in the headers of subsequent HTTP requests done by the client. One key advantage of token-based auth is that tokens can be created and checked by the server without storing them persistently, which can help to scale applications more easily. This authentication method enhances the security and scalability of web applications and it is mainly used in modern API strategies, including RESTful APIs.\n\nLearn more from the following resources:",
"links": [
{
"title": "Token Based Authentication",
"url": "https://roadmap.sh/guides/token-authentication",
"type": "article"
},
{
"title": "What Is Token-Based Authentication?",
"url": "https://www.okta.com/uk/identity-101/what-is-token-based-authentication/",
@@ -590,11 +648,6 @@
"title": "Session vs Token Authentication in 100 Seconds",
"url": "https://www.youtube.com/watch?v=UBUNrFtufWo",
"type": "video"
},
{
"title": "Token based auth",
"url": "https://www.youtube.com/watch?v=woNZJMSNbuo",
"type": "video"
}
]
},
@@ -602,6 +655,11 @@
"title": "JWT ",
"description": "JSON Web Tokens, or JWT, are a popular and secure method of transferring information between two parties in the domain of API design. As a compact, URL-safe means of representing claims to be transferred between two parties, they play a vital role in security and authorization in modern APIs. By encoding these claims, the information can be verified and trusted with a digital signature - ensuring that the API end-points can handle requests in a secure and reliable way. JWT is a relatively lightweight and scalable method that brings improved authentication and information exchange processes in API design.\n\nLearn more from the following resources:",
"links": [
{
"title": "JWT Authentication",
"url": "https://roadmap.sh/guides/jwt-authentication",
"type": "article"
},
{
"title": "Introduction to JSON Web Tokens",
"url": "https://jwt.io/introduction",
@@ -623,6 +681,11 @@
"title": "OAuth 2.0",
"description": "OAuth 2.0 is an authorization framework that allows applications to obtain limited access to user accounts on an HTTP service, such as Facebook, GitHub, DigitalOcean, and others. It works by delegating user authentication to the service that hosts the user account and authorizing third-party applications to access the user account. OAuth 2.0 defines four roles: resource owner, client, resource server and authorization server. With regards to API design, OAuth 2.0 can be used to protect API endpoints by ensuring that the client applications having valid access tokens can only interact with the API. It provides detailed workflow processes and a set of protocols for the client application to get authorization to access resources.\n\nLearn more from the following resources:",
"links": [
{
"title": "OAuth",
"url": "https://roadmap.sh/guides/oauth",
"type": "article"
},
{
"title": "OAuth Website",
"url": "https://oauth.net/2/",
@@ -645,7 +708,7 @@
"description": "Application Programming Interfaces (APIs) are critical for building software applications. Among several key considerations during API design, one is deciding how to implement authentication and security. Session Based Authentication is one popular way to apply security in API design.\n\nThis method revolves around the server creating a session for the user after they successfully log in, associating it with a session identifier. This Session ID is then stored client-side within a cookie. On subsequent requests, the server validates the Session ID before processing the API call. The server will destroy the session after the user logs out, thereby invalidating the Session ID.\n\nUnderstanding Session Based Authentication is crucial for secure API design, especially in scenarios where security is a top priority or in legacy systems where this method is prevalent.\n\nLearn more from the following resources:",
"links": [
{
"title": "Session Based Authentication - Roadmap.sh",
"title": "Session Based Authentication",
"url": "https://roadmap.sh/guides/session-based-authentication",
"type": "article"
},
@@ -663,8 +726,14 @@
},
"nHbn8_sMY7J8o6ckbD-ER": {
"title": "Authorization Methods",
"description": "In API design, authorization methods play a crucial role in ensuring the security and integrity of data transactions. They are the mechanisms through which an API identifies and validates a user, system, or application before granting them access to specific resources. These methods include Basic Authentication, OAuth, Token-based authentication, JSON Web Tokens (JWT), and API Key based, among others. So, understanding these methods enhances the ability to design APIs that effectively protect resources while allowing necessary access. Each method has its own pros and cons, usage scenarios and security features that make them more suitable for certain situations rather than others.",
"links": []
"description": "In API design, authorization methods play a crucial role in ensuring the security and integrity of data transactions. They are the mechanisms through which an API identifies and validates a user, system, or application before granting them access to specific resources. These methods include Basic Authentication, OAuth, Token-based authentication, JSON Web Tokens (JWT), and API Key based, among others. So, understanding these methods enhances the ability to design APIs that effectively protect resources while allowing necessary access. Each method has its own pros and cons, usage scenarios and security features that make them more suitable for certain situations rather than others.\n\nVisit the following resources to learn more:",
"links": [
{
"title": "API Authorization Methods",
"url": "https://www.pingidentity.com/en/resources/identity-fundamentals/authorization/authorization-methods.html",
"type": "article"
}
]
},
"wFsbmMi5Ey9UyDADdbdPW": {
"title": "Role Based Access Control (RBAC)",
@@ -676,12 +745,12 @@
"type": "article"
},
{
"title": "What is role-based access control (RBAC)?",
"title": "What is Role-based Access Control (RBAC)?",
"url": "https://www.redhat.com/en/topics/security/what-is-role-based-access-control",
"type": "article"
},
{
"title": "Role-based access control (RBAC) vs. Attribute-based access control (ABAC)",
"title": "Role-based Access Control (RBAC) vs. Attribute-based Access Control (ABAC)",
"url": "https://www.youtube.com/watch?v=rvZ35YW4t5k",
"type": "video"
}
@@ -708,12 +777,12 @@
"description": "API keys and management is an integral part of API design. An API key is a unique identifier used to authenticate a user, developer, or calling program to an API. This ensures security and control over API endpoints, as only those with a valid API key can make requests. API Management, on the other hand, refers to the practices and tools that enable an organization to govern and monitor its API usage. It involves all the aspects of managing APIs including design, deployment, documentation, security, versioning, and analytics. Both elements play crucial roles in securing and organizing API access for efficient and controlled data sharing and communication.\n\nLearn more from the following resources:",
"links": [
{
"title": "What is API key management?",
"title": "What is API Key Management?",
"url": "https://www.akeyless.io/secrets-management-glossary/api-key-management/",
"type": "article"
},
{
"title": "API Key Management | Definition and Best Practices",
"title": "API Key Management - Definition and Best Practices",
"url": "https://infisical.com/blog/api-key-management",
"type": "article"
}
@@ -750,13 +819,13 @@
"type": "article"
},
{
"title": "What is Swagger?",
"url": "https://blog.hubspot.com/website/what-is-swagger",
"title": "OpenAPI Inititive",
"url": "https://www.openapis.org/",
"type": "article"
},
{
"title": "OpenAPI Inititive",
"url": "https://www.openapis.org/",
"title": "What is Swagger?",
"url": "https://blog.hubspot.com/website/what-is-swagger",
"type": "article"
}
]
@@ -771,7 +840,12 @@
"type": "article"
},
{
"title": "Postman Api Testing Tutorial for beginners",
"title": "Postman Docs",
"url": "https://www.postman.com/api-documentation-tool/",
"type": "article"
},
{
"title": "Postman Tutorial for Beginners",
"url": "https://www.youtube.com/watch?v=MFxk5BZulVU",
"type": "video"
}
@@ -782,12 +856,12 @@
"description": "[Readme.com](http://Readme.com) is an invaluable tool in the realm of API Design, renowned for providing a collaborative platform for creating beautiful, dynamic and intuitive documentation. It's a tool which aids developers in outlining clear, comprehensive documentation for their API interfaces. The API documentation created with [Readme.com](http://Readme.com) is not just about the presentation of information, but enhances the reader's understanding by making it interactive. This interactive approach encourages practical learning and offers insights into how the API will behave under different circumstances. With [Readme.com](http://Readme.com), developers can create a user-focused documentation environment that streamlines the learning process and makes their APIs easier to consume and implement.\n\nLearn more from the following resources:",
"links": [
{
"title": "readmeio",
"url": "https://github.com/readmeio",
"title": "ReadMe",
"url": "https://github.com/orgs/readmeio/repositories?type=source",
"type": "opensource"
},
{
"title": "readme.com",
"title": "ReadMe Website",
"url": "https://readme.com",
"type": "article"
}
@@ -846,12 +920,12 @@
"description": "API design has rapidly emerged as a vital component of software development. When designing an API, it is crucial to follow best practices to ensure optimization, scalability, and efficiency. The best practices in API design revolve around principles such as simplicity, consistency, security, and proper documentation among others. These practices not only smoothens the development process but also makes the API more user-friendly, stable, and easily maintainable. Thus, following the best practices in API design is not an option but rather a must for developers and organizations looking to create APIs that last longer and perform better.\n\nLearn more from the following resources:",
"links": [
{
"title": "Best practices for REST API design",
"title": "Best Practices for REST API Design",
"url": "https://stackoverflow.blog/2020/03/02/best-practices-for-rest-api-design/",
"type": "article"
},
{
"title": "Best practices in API design",
"title": "Best Practices in API Design",
"url": "https://swagger.io/resources/articles/best-practices-in-api-design/",
"type": "article"
}
@@ -883,7 +957,7 @@
"type": "article"
},
{
"title": "How does API monitoring improve API performance?",
"title": "How does API Monitoring Improves API Performance?",
"url": "https://tyk.io/blog/api-product-metrics-what-you-need-to-know/",
"type": "article"
}
@@ -899,7 +973,7 @@
"type": "article"
},
{
"title": "Using caching strategies to improve API performance",
"title": "Using Caching Strategies to Improve API Performance",
"url": "https://www.lonti.com/blog/using-caching-strategies-to-improve-api-performance",
"type": "article"
},
@@ -915,17 +989,22 @@
"description": "Load Balancing plays a crucial role in the domain of API Design. It primarily revolves around evenly and efficiently distributing network traffic across a group of backend servers, also known as a server farm or server pool. When it comes to API design, implementing load balancing algorithms is of immense importance to ensure that no single server bears too much demand. This allows for high availability and reliability by rerouting the traffic in case of server failure, effectively enhancing application performance and contributing to a positive user experience. Therefore, it's a vital tactic in ensuring the scalability and robustness of system architectures which heavily rely on API interactions.\n\nLearn more from the following resources:",
"links": [
{
"title": "What is load balancing?",
"title": "What is Load Balancing?",
"url": "https://www.cloudflare.com/en-gb/learning/performance/what-is-load-balancing/",
"type": "article"
},
{
"title": "Load Balancers in API",
"url": "https://learn.microsoft.com/en-us/rest/api/load-balancer/",
"type": "article"
},
{
"title": "API Gateway vs Load Balancer: Which is Right for Your Application?",
"url": "https://konghq.com/blog/engineering/api-gateway-vs-load-balancer",
"type": "article"
},
{
"title": "What is a load balancer?",
"title": "What is a Load Balancer?",
"url": "https://www.youtube.com/watch?v=sCR3SAVdyCc",
"type": "video"
}
@@ -957,7 +1036,7 @@
"description": "Profiling and monitoring are critical aspects of API design and implementation. Profiling, in this context, refers to the process of analyzing the behavior of your API in order to understand various performance metrics including response times, request rates, error rates, and the overall health and functionality of your API. On the other hand, monitoring is the ongoing process of checking the status of your API to ensure it's functioning as expected while also providing an early warning system for potential issues and improvements. Together, profiling and monitoring your API can lead to a more reliable, efficient, and high-performing service.\n\nLearn more from the following resources:",
"links": [
{
"title": "Monitor health and performance of your APIs",
"title": "Monitor Health and Performance of your APIs",
"url": "https://learning.postman.com/docs/monitoring-your-api/intro-monitors/",
"type": "article"
},
@@ -994,7 +1073,7 @@
"type": "article"
},
{
"title": "API Integration Patterns",
"title": "API Integration Patterns - Devoteam",
"url": "https://uk.devoteam.com/expert-view/api-integration-patterns/",
"type": "article"
}
@@ -1026,12 +1105,12 @@
"description": "Event-driven architecture (EDA) is a software design concept that revolves around the production, interpretation, and consumption of events. With regards to API design, EDA grants systems the flexibility to decentralize analytics, microservices, and operations, thus promoting real-time information sharing and reaction. Event-driven APIs prioritize asynchronous communication, allowing applications to stay responsive even when tackling heavy data loads. For an effective API, adhering to EDA provides data reliability, maturity with a scalable structure, and efficient real-time data processing capabilities.\n\nLearn more form the following resources:",
"links": [
{
"title": "Event-driven architecture style",
"title": "Event Driven Architecture Style",
"url": "https://learn.microsoft.com/en-us/azure/architecture/guide/architecture-styles/event-driven",
"type": "article"
},
{
"title": "Event-driven architecture",
"title": "Event-driven Architecture",
"url": "https://aws.amazon.com/event-driven-architecture/",
"type": "article"
},
@@ -1073,7 +1152,7 @@
"type": "article"
},
{
"title": "Microservices explained in 5 minutes",
"title": "Microservices Explained in 5 Minutes",
"url": "https://www.youtube.com/watch?v=lL_j7ilk7rc",
"type": "video"
}
@@ -1084,12 +1163,12 @@
"description": "Messaging Queues play a fundamental role in API design, particularly in creating robust, decoupled, and efficient systems. These queues act like a buffer, storing messages or data sent from a sender (producer), allowing a receiver (consumer) to retrieve and process them at its own pace. In the context of API design, this concept enables developers to handle high-volume data processing requirements, providing an asynchronous communication protocol between multiple services. The benefits of messaging queues in API design include better system scalability, fault tolerance, and increased overall system resiliency.\n\nLearn more from the following resources:",
"links": [
{
"title": "What is a message queue?",
"title": "What is a Message Queue?",
"url": "https://aws.amazon.com/message-queue/",
"type": "article"
},
{
"title": "REST API message queues explained",
"title": "REST API Message Queues Explained",
"url": "https://www.youtube.com/watch?v=2idPgA6IN_Q",
"type": "video"
}
@@ -1116,12 +1195,12 @@
"description": "Batch Processing refers to the method of handling bulk data requests in API design. Here, multiple API requests are packed and processed as a single group or 'batch'. Instead of making numerous individual API calls, a user can make one batch request with numerous operations. This approach can increase performance and efficiency by reducing the overhead of establishing and closing multiple connections. The concept of 'batch processing' in API design is particularly useful in data-intensive applications or systems where the need for processing high volumes of data is prevalent.\n\nLearn more from the following resources:",
"links": [
{
"title": "API design guidance: bulk vs batch import",
"title": "API Design Guidance: Bulk vs Batch Import",
"url": "https://tyk.io/blog/api-design-guidance-bulk-and-batch-import/",
"type": "article"
},
{
"title": "Stream vs Batch processing explained with examples",
"title": "Stream vs Batch Processing Explained with Examples",
"url": "https://www.youtube.com/watch?v=1xgBQTF24mU",
"type": "video"
}
@@ -1129,7 +1208,7 @@
},
"H22jAI2W5QLL-b1rq-c56": {
"title": "Rabbit MQ",
"description": "RabbitMQ is an open-source message-broker software/system that plays a crucial role in API design, specifically in facilitating effective and efficient inter-process communication. It implements the Advanced Message Queuing Protocol (AMQP) to enable secure and reliable data transmission in various formats such as text, binary, or serialized objects.\n\nIn API design, RabbitMQ comes in handy in decoupling application processes for scalability and robustness, whilst ensuring that data delivery occurs safely and seamlessly. It introduces queuing as a way of handling multiple users or service calls at once hence enhancing responsiveness and performance of APIs. Its queue system elegantly digests API request loads, allowing services to evenly process data while preventing overloading.\n\nLearn more from the following resources:",
"description": "RabbitMQ is an open-source message-broker software/system that plays a crucial role in API design, specifically in facilitating effective and efficient inter-process communication. It implements the Advanced Message Queuing Protocol (AMQP) to enable secure and reliable data transmission in various formats such as text, binary, or serialized objects. RabbitMQ comes in handy in decoupling application processes for scalability and robustness, whilst ensuring that data delivery occurs safely and seamlessly. It introduces queuing as a way of handling multiple users or service calls at once hence enhancing responsiveness and performance of APIs. Its queue system elegantly digests API request loads, allowing services to evenly process data while preventing overloading.\n\nLearn more from the following resources:",
"links": [
{
"title": "RabbitMQ Website",
@@ -1169,7 +1248,7 @@
"description": "API Testing refers to the process of checking the functionality, reliability, performance, and security of Application Programming Interfaces (APIs). It plays a crucial role in API design as it ensures that the APIs work correctly and as expected. This kind of testing does not require a user interface and mainly focuses on the business logic layer of the software architecture. API Testing is integral to guarantee that the data communication and responses between different software systems are error-free and streamlined.\n\nLearn more from the following resources:",
"links": [
{
"title": "What is API testing?",
"title": "What is API Testing?",
"url": "https://www.postman.com/api-platform/api-testing/",
"type": "article"
},
@@ -1214,7 +1293,7 @@
},
"6lm3wy9WTAERTqXCn6pFt": {
"title": "Functional Testing",
"description": "Functional testing in the context of API design involves validating the endpoints and key-value pairs of an API. It ensures the server response works as expected and assesses the functionality of the API -- whether it is performing all the intended functions correctly. Various approaches like testing request-response pairs, error codes, and data accuracy are used. Functional testing can provide invaluable insights into how well an API meets the specified requirements and whether it is ready for integration into applications.\n\nLearn more from the following resources:",
"description": "Functional testing in the context of API design involves validating the endpoints and key-value pairs of an API. It ensures the server response works as expected and assesses the functionality of the API whether it is performing all the intended functions correctly. Various approaches like testing request-response pairs, error codes, and data accuracy are used. Functional testing can provide invaluable insights into how well an API meets the specified requirements and whether it is ready for integration into applications.\n\nLearn more from the following resources:",
"links": [
{
"title": "API Functional Testing Why Is It Important And How to Test",
@@ -1233,17 +1312,17 @@
"description": "Load testing is a crucial aspect of API design that ensures reliability, efficiency and performance under varying loads. It primarily focuses on identifying the maximum capacity of the API in terms of the volume of requests it can handle and its subsequent behavior when this threshold is reached or overloaded. By simulating varying degrees of user load, developers can identify and rectify bottlenecks or breakdown points in the system, hence enhancing overall API resilience.\n\nLearn more from the following resources:",
"links": [
{
"title": "API load testing - a beginners guide",
"title": "API Load Testing - Beginners Guide",
"url": "https://grafana.com/blog/2024/01/30/api-load-testing/",
"type": "article"
},
{
"title": "Test your APIs performance by simulating real-world traffic",
"title": "Test Your APIs Performance by Simulating Real-world Traffic",
"url": "https://blog.postman.com/postman-api-performance-testing/",
"type": "article"
},
{
"title": "Load testing your API's",
"title": "Load Testing API's",
"url": "https://www.youtube.com/watch?v=a5hWE4hMOoY",
"type": "video"
}
@@ -1275,12 +1354,12 @@
"description": "Contract Testing is a critical aspect of maintaining a robust and reliable API infrastructure. In the realm of API design, Contract Testing refers to the method of ensuring that APIs work as anticipated and that changes to them do not break their intended functionality. This approach validates the interaction between two different systems, typically consumer and provider ( API), ensuring they comply with their agreed-upon contract. By defining clear and concise contracts for our APIs, developers can avoid common deployment issues and enhance system integration processes.\n\nLearn more from the following resources:",
"links": [
{
"title": "A complete guide to Contract Testing",
"title": "Complete Guide to Contract Testing",
"url": "https://testsigma.com/blog/api-contract-testing/",
"type": "article"
},
{
"title": "Get started with API Contract Testing",
"title": "Geting Started with API Contract Testing",
"url": "https://saucelabs.com/resources/blog/getting-started-with-api-contract-testing",
"type": "article"
},
@@ -1293,7 +1372,7 @@
},
"XD1vDtrRQFbLyKJaD1AlA": {
"title": "Error Handling / Retries",
"description": "When creating effective API designs, addressing Error Handling and Retries forms an essential facet. This is primarily due to the fact that APIs aren't always error-free and instances of network hiccups or input inaccuracies from users can occur. Without robust error handling, such occurrences can easily lead to catastrophic application failure or unsatisfactory user experiences.\n\nIn this context, error handling can refer to validating inputs, managing exceptions, and returning appropriate error message or status codes to the user. Meanwhile, the concept of retries comes into play to ensure maximum request success amidst transient failures. Through correctly implemented retries, an API can repeatedly attempt to execute a request until it is successful, thus ensuring seamless operation. The criteria and mechanisms of retries, including the count, delay, and conditions for retries, are crucial aspects to solidify during the API design.\n\nLearn more from the following resources:",
"description": "When creating effective API designs, addressing Error Handling and Retries forms an essential facet. This is primarily due to the fact that APIs aren't always error-free and instances of network hiccups or input inaccuracies from users can occur. Without robust error handling, such occurrences can easily lead to catastrophic application failure or unsatisfactory user experiences. Error handling can refer to validating inputs, managing exceptions, and returning appropriate error message or status codes to the user. Meanwhile, the concept of retries comes into play to ensure maximum request success amidst transient failures. Through correctly implemented retries, an API can repeatedly attempt to execute a request until it is successful, thus ensuring seamless operation.\n\nLearn more from the following resources:",
"links": [
{
"title": "How To Improve Your Backend By Adding Retries to Your API Calls",
@@ -1301,7 +1380,7 @@
"type": "article"
},
{
"title": "How to make resilient web applications with retries",
"title": "How to Make Resilient Web Applications with Retries",
"url": "https://www.youtube.com/watch?v=Gly94hp3Eec",
"type": "video"
}
@@ -1333,12 +1412,12 @@
"type": "article"
},
{
"title": "What are websockets?",
"title": "What are Web Sockets?",
"url": "https://www.pubnub.com/guides/websockets/",
"type": "article"
},
{
"title": "How web sockets work",
"title": "How Web Sockets Work",
"url": "https://www.youtube.com/watch?v=pnj3Jbho5Ck",
"type": "video"
}
@@ -1362,20 +1441,20 @@
},
"yvdfoly5WHHTq2Puss355": {
"title": "Standards and Compliance",
"description": "When designing APIs, it's crucial to consider the concept of standards and compliance. Standards represent the set of rules and best practices that guide developers to create well-structured and easily maintainable APIs. They can range from the proper structure of the endpoints, the standardization of error responses, to naming conventions, and the usage of HTTP verbs.\n\nCompliance on the other hand, emphasizes on meeting protocol requirements or standards such as REST or SOAP. Furthermore, operating within regulated industries can also necessitate certain compliance measures like GDPR, HIPAA and others. Compliance in API Design ensures interoperability and safety of data transmission between systems.\n\nIn essence, Standards and Compliance in API Design contributes towards building more secure, robust, and efficient APIs that are user-friendly and universally understandable.\n\nLearn more from the following resources:",
"description": "When designing APIs, it's crucial to consider the concept of standards and compliance. Standards represent the set of rules and best practices that guide developers to create well-structured and easily maintainable APIs. They can range from the proper structure of the endpoints, the standardization of error responses, to naming conventions, and the usage of HTTP verbs. Compliance on the other hand, emphasizes on meeting protocol requirements or standards such as REST or SOAP. Furthermore, operating within regulated industries can also necessitate certain compliance measures like GDPR, HIPAA and others. Compliance in API Design ensures interoperability and safety of data transmission between systems.\n\nLearn more from the following resources:",
"links": [
{
"title": "What is API compliance?",
"title": "What is API Compliance?",
"url": "https://tyk.io/learning-center/api-compliance/",
"type": "article"
},
{
"title": "What is API compliance and why is it important?",
"title": "What is API Compliance and Why is it important?",
"url": "https://www.traceable.ai/blog-post/achieve-api-compliance",
"type": "article"
},
{
"title": "REST API standards",
"title": "REST API Standards",
"url": "https://www.integrate.io/blog/rest-api-standards/",
"type": "article"
}
@@ -1402,17 +1481,17 @@
"description": "API Lifecycle Management is a crucial aspect in API design that oversees the process of creating, managing, and retiring APIs. This involves various stages from initial planning, designing, testing, deployment, to eventual retirement of the API. Proper lifecycle management ensures that an API meets the requirements, is reliable, and that it evolves with the needs of end users and developers. Moreover, it helps in maintaining the security, performance, and accessibility of the API throughout its lifetime. This comprehensive approach enables organizations to make the most of their APIs, mitigate issues, and facilitate successful digital transformation.\n\nLearn more from the following resources:",
"links": [
{
"title": "What is the API lifecycle?",
"title": "What is the API Lifecycle?",
"url": "https://www.postman.com/api-platform/api-lifecycle/",
"type": "article"
},
{
"title": "What is API lifescycle management?",
"title": "What is API Lifecycle Management?",
"url": "https://swagger.io/blog/api-strategy/what-is-api-lifecycle-management/",
"type": "article"
},
{
"title": "Day in the lifecycle of an API",
"title": "Day in the Lifecycle of an API",
"url": "https://www.youtube.com/watch?v=VxY_cz0VQXE",
"type": "video"
}
@@ -1481,5 +1560,36 @@
"type": "article"
}
]
},
"1DrqtOwxCuFtWQXQ6ZALp": {
"title": "gRPC APIs",
"description": "gRPC is a platform agnostic serialization protocol that is used to communicate between services. Designed by Google in 2015, it is a modern alternative to REST APIs. It is a binary protocol that uses HTTP/2 as a transport layer. It is a high performance, open source, general-purpose RPC framework that puts mobile and HTTP/2 first. It's main use case is for communication between two different languages within the same application. You can use Python to communicate with Go, or Java to communicate with C#.\n\nVisit the following resources to learn more:",
"links": [
{
"title": "gRPC Website",
"url": "https://grpc.io/",
"type": "article"
},
{
"title": "gRPC Introduction",
"url": "https://grpc.io/docs/what-is-grpc/introduction/",
"type": "article"
},
{
"title": "gRPC Core Concepts",
"url": "https://grpc.io/docs/what-is-grpc/core-concepts/",
"type": "article"
},
{
"title": "Explore top posts about gRPC",
"url": "https://app.daily.dev/tags/grpc?ref=roadmapsh",
"type": "article"
},
{
"title": "Stephane Maarek - gRPC Introduction",
"url": "https://youtu.be/XRXTsQwyZSU",
"type": "video"
}
]
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,813 @@
{
"ofwdZm05AUqCIWmfgGHk8": {
"title": "Diamond Inheritance",
"description": "Diamond inheritance is a specific scenario in multiple inheritance where a class is derived from two or more classes, which in turn, are derived from a common base class. It creates an ambiguity that arises from duplicating the common base class, which leads to an ambiguous behavior while calling the duplicate members.\n\nTo resolve this ambiguity, you can use virtual inheritance. A virtual base class is a class that is shared by multiple classes using `virtual` keyword in C++. This ensures that only one copy of the base class is inherited in the final derived class, and thus, resolves the diamond inheritance problem.\n\n_Example:_\n\n #include <iostream>\n \n class Base {\n public:\n void print() {\n std::cout << \"Base class\\n\";\n }\n };\n \n class Derived1 : virtual public Base {\n public:\n void derived1Print() {\n std::cout << \"Derived1 class\\n\";\n }\n };\n \n class Derived2 : virtual public Base {\n public:\n void derived2Print() {\n std::cout << \"Derived2 class\\n\";\n }\n };\n \n class Derived3 : public Derived1, public Derived2 {\n public:\n void derived3Print() {\n std::cout << \"Derived3 class\\n\";\n }\n };\n \n int main() {\n Derived3 d3;\n d3.print(); // Now, there is no ambiguity in calling the base class function\n d3.derived1Print();\n d3.derived2Print();\n d3.derived3Print();\n \n return 0;\n }\n \n\nIn the code above, `Derived1` and `Derived2` are derived from the `Base` class using virtual inheritance. So, when we create an object of `Derived3` and call the `print()` function from the `Base` class, there is no ambiguity, and the code executes without any issues.",
"links": []
},
"ZHjU60uzJTezADRhDTESG": {
"title": "Forward Declaration",
"description": "Forward declaration is a way of declaring a symbol (class, function, or variable) before defining it in the code. It helps the compiler understand the type, size, and existence of the symbol. This declaration is particularly useful when we have cyclic dependencies or to reduce compilation time by avoiding unnecessary header inclusions in the source file.\n\nClass Forward Declaration\n-------------------------\n\nTo use a class type before it is defined, you can declare the class without defining its members, like this:\n\n class ClassA; // forward declaration\n \n\nYou can then use pointers or references to the class in your code before defining the class itself:\n\n void do_something (ClassA& obj);\n \n class ClassB {\n public:\n void another_function(ClassA& obj);\n };\n \n\nHowever, if you try to make an object of `ClassA` or call its member functions without defining the class, you will get a compilation error.\n\nFunction Forward Declaration\n----------------------------\n\nFunctions must be declared before using them, and a forward declaration can be used to declare a function without defining it:\n\n int add(int a, int b); // forward declaration\n \n int main() {\n int result = add(2, 3);\n return 0;\n }\n \n int add(int a, int b) {\n return a + b;\n }\n \n\nEnum and Typedef Forward Declaration\n------------------------------------\n\nFor `enum` and `typedef`, it is not possible to forward declare because they don't have separate declaration and definition stages.\n\nKeep in mind that forward declarations should be used cautiously, as they can make the code more difficult to understand.",
"links": []
},
"NvODRFR0DLINB0RlPSsvt": {
"title": "Introduction to Language",
"description": "C++ is a general-purpose, high-performance programming language. It was developed by Bjarne Stroustrup at Bell Labs starting in 1979. C++ is an extension of the C programming language, adding features such as classes, objects, and exceptions.\n\nBasics of C++ Programming\n-------------------------\n\nHere are some basic components and concepts in C++ programming:\n\nIncluding Libraries\n-------------------\n\nIn C++, we use the `#include` directive to include libraries or header files into our program. For example, to include the standard input/output library, we write:\n\n #include <iostream>\n \n\nMain Function\n-------------\n\nThe entry point of a C++ program is the `main` function. Every C++ program must have a `main` function:\n\n int main() {\n // Your code goes here\n return 0;\n }\n \n\nInput/Output\n------------\n\nTo perform input and output operations in C++, we can use the built-in objects `std::cin` for input and `std::cout` for output, available in the `iostream` library. Here's an example of reading an integer and printing its value:\n\n #include <iostream>\n \n int main() {\n int number;\n std::cout << \"Enter an integer: \";\n std::cin >> number;\n std::cout << \"You entered: \" << number << '\\n';\n return 0;\n }\n \n\nVariables and Data Types\n------------------------\n\nC++ has several basic data types for representing integer, floating-point, and character values:\n\n* `int`: integer values\n* `float`: single-precision floating-point values\n* `double`: double-precision floating-point values\n* `char`: single characters\n* `bool`: boolean values\n\nVariables must be declared with a data type before they can be used:\n\n int x;\n float y;\n double z;\n char c;\n bool b;\n \n\nControl Structures\n------------------\n\nC++ provides control structures for conditional execution and iteration, such as `if`, `else`, `while`, `for`, and `switch` statements.\n\n### If-Else Statement\n\n if (condition) {\n // Code to execute if the condition is true\n } else {\n // Code to execute if the condition is false\n }\n \n\n### While Loop\n\n while (condition) {\n // Code to execute while the condition is true\n }\n \n\n### For Loop\n\n for (initialization; condition; update) {\n // Code to execute while the condition is true\n }\n \n\n### Switch Statement\n\n switch (variable) {\n case value1:\n // Code to execute if variable == value1\n break;\n case value2:\n // Code to execute if variable == value2\n break;\n // More cases...\n default:\n // Code to execute if variable does not match any case value\n }\n \n\nFunctions\n---------\n\nFunctions are reusable blocks of code that can be called with arguments to perform a specific task. Functions are defined with a return type, a name, a parameter list, and a body.\n\n ReturnType functionName(ParameterType1 parameter1, ParameterType2 parameter2) {\n // Function body\n // ...\n return returnValue;\n }\n \n\nFor example, here's a function that adds two integers and returns the result:\n\n int add(int a, int b) {\n return a + b;\n }\n \n int main() {\n int result = add(3, 4);\n std::cout << \"3 + 4 = \" << result << '\\n';\n return 0;\n }\n \n\nThis basic introduction to C++ should provide you with a good foundation for further learning. Explore more topics such as classes, objects, inheritance, polymorphism, templates, and the Standard Template Library (STL) to deepen your understanding of C++ and start writing more advanced programs.\n\nLearn more from the following resources:",
"links": [
{
"title": "LearnC++",
"url": "https://www.learncpp.com/",
"type": "article"
},
{
"title": "C++ Full Course by freeCodeCamp",
"url": "https://youtu.be/vLnPwxZdW4Y",
"type": "video"
}
]
},
"x_28LiDVshqWns_aIBsdx": {
"title": "What is C++?",
"description": "C++ is a general-purpose programming language created by Bjarne Stroustrup as an extension of the C programming language. It was first introduced in 1985 and provides object-oriented features like classes and inheritance. C++ is widely used in various applications like game development, system programming, embedded systems, and high-performance computing.\n\nC++ is a statically-typed language, meaning that the type of a variable is determined during compilation, and has an extensive library called the C++ Standard Library, which provides a rich set of functions, algorithms, and data structures for various tasks.\n\nC++ builds upon the features of C, and thus, most C programs can be compiled and run with a C++ compiler.\n\nCode Example\n------------\n\nHere's a simple example of a C++ program that demonstrates some essential features of the language:\n\n #include <iostream>\n \n // A simple function to add two numbers\n int add(int a, int b) {\n return a + b;\n }\n \n class Calculator {\n public:\n // A member function to multiply two numbers\n int multiply(int a, int b) {\n return a * b;\n }\n };\n \n int main() {\n int x = 5;\n int y = 3;\n \n // Using the standalone function 'add'\n int sum = add(x, y);\n std::cout << \"Sum: \" << sum << '\\n';\n \n // Using a class and member function\n Calculator calc;\n int product = calc.multiply(x, y);\n std::cout << \"Product: \" << product << '\\n';\n \n return 0;\n }\n \n\nIn the above program, we define a simple function `add` and a class `Calculator` with a member function `multiply`. The `main` function demonstrates how to use these to perform basic arithmetic.\n\nLearn more from the following resources:",
"links": [
{
"title": "Learn C++",
"url": "https://www.learncpp.com/",
"type": "article"
},
{
"title": "Explore top posts about C++",
"url": "https://app.daily.dev/tags/c++?ref=roadmapsh",
"type": "article"
},
{
"title": "C++ Tutorial for Beginners - Full Course",
"url": "https://youtu.be/vLnPwxZdW4Y",
"type": "video"
}
]
},
"tl6VCQ5IEGDVyFcgj7jDm": {
"title": "Why use C++",
"description": "C++ is a popular and widely used programming language for various reasons. Here are some of the reasons why you might choose to utilize C++:\n\nPerformance\n-----------\n\nC++ is designed to provide high performance and efficiency. It offers fine-grained control over system resources, making it easier to optimize your software.\n\nPortability\n-----------\n\nC++ is supported on different computer architectures and operating systems, allowing you to write portable code that runs on various platforms without making major modifications.\n\nObject-Oriented Programming\n---------------------------\n\nC++ supports object-oriented programming (OOP) - a paradigm that allows you to design programs using classes and objects, leading to better code organization and reusability.\n\n class MyClass {\n public:\n void myFunction() {\n // Code here\n }\n };\n \n int main() {\n MyClass obj;\n obj.myFunction();\n }\n \n\nSupport for low-level and high-level programming\n------------------------------------------------\n\nC++ allows you to write both low-level code, like memory manipulation, as well as high-level abstractions, like creating classes and using the Standard Template Library (STL).\n\n #include <iostream>\n #include <vector>\n \n int main() {\n // Low-level programming\n int number = 42;\n int* ptr_number = &number;\n \n // High-level programming\n std::vector<int> myVector = {1, 2, 3};\n for (const auto &i: myVector) {\n std::cout << i << '\\n';\n }\n }\n \n\nExtensive Libraries\n-------------------\n\nC++ offers a vast range of libraries and tools, such as the Standard Template Library (STL), Boost, and Qt, among others, that can aid in the development of your projects and make it more efficient.\n\nCombination with C language\n---------------------------\n\nC++ can be combined with C, offering the capabilities of both languages and allowing you to reuse your existing C code. By incorporating C++ features, you can enhance your code and improve its functionality.\n\nActive Community\n----------------\n\nC++ has been around for a long time and has a large, active community of users who contribute to the growth of the language, express new ideas, and engage in discussions that help develop the language further. This makes finding solutions to any problems you experience much easier.\n\nIn summary, C++ offers a great balance of performance, portability, and feature set, making it a versatile and powerful programming language suitable for many applications. With its extensive libraries, active community, and continuous development, C++ is an excellent choice for any software development project.",
"links": []
},
"2Ag0t3LPryTF8khHLRfy-": {
"title": "C vs C++",
"description": "C and C++ are two popular programming languages with some similarities, but they also have key differences. C++ is an extension of the C programming language, with added features such as object-oriented programming, classes, and exception handling. Although both languages are used for similar tasks, they have their own syntax and semantics, which makes them distinct from each other.\n\nSyntax and Semantics\n--------------------\n\n### C\n\n* C is a procedural programming language.\n* Focuses on functions and structured programming.\n* Does not support objects or classes.\n* Memory management is manual, using functions like `malloc` and `free`.\n\n #include <stdio.h>\n \n void printHello() {\n printf(\"Hello, World!\\n\");\n }\n \n int main() {\n printHello();\n return 0;\n }\n \n\n### C++\n\n* C++ is both procedural and object-oriented.\n* Supports both functions and classes.\n* Incorporates different programming paradigms.\n* Memory management can be manual (like C) or rely on constructors/destructors and smart pointers.\n\n #include <iostream>\n \n class HelloWorld {\n public:\n void printHello() {\n std::cout << \"Hello, World!\\n\";\n }\n };\n \n int main() {\n HelloWorld obj;\n obj.printHello();\n return 0;\n }\n \n\nCode Reusability and Modularity\n-------------------------------\n\n### C\n\n* Code reusability is achieved through functions and modular programming.\n* High cohesion and low coupling are achieved via structured design.\n* Function libraries can be created and included through headers.\n\n### C++\n\n* Offers better code reusability with classes, inheritance, and polymorphism.\n* Code modularity is enhanced through namespaces and well-designed object-oriented hierarchy.\n\nError Handling\n--------------\n\n### C\n\n* Error handling in C is done primarily through return codes.\n* Lacks support for exceptions or any built-in error handling mechanism.\n\n### C++\n\n* Offers exception handling, which can be used to handle errors that may occur during program execution.\n* Enables catching and handling exceptions with `try`, `catch`, and `throw` keywords, providing more control over error handling.\n\nConclusion\n----------\n\nBoth C and C++ are powerful languages with unique features and capabilities. While C is simpler and focuses on procedural programming, C++ offers the versatility of using different programming paradigms and improved code organization. Understanding the differences between these two languages can help you decide which one is more suitable for your specific needs and programming style.",
"links": []
},
"Zc_TTzmM36yWsu3GvOy9x": {
"title": "Setting up your Environment",
"description": "Setting up C++ requires a few steps, including installing a compiler, configuring an Integrated Development Environment (IDE), and creating a new C++ project.\n\n1\\. Installing a Compiler\n-------------------------\n\nA compiler is required to convert C++ code into machine language. Some popular C++ compilers include:\n\n* GCC (GNU Compiler Collection) for Linux and macOS, but can also be used on Windows through MinGW\n* MSVC (Microsoft Visual C++) for Windows\n\nTo install a compiler, simply follow the instructions provided by the respective websites.\n\n2\\. Configuring an IDE\n----------------------\n\nAn IDE is a software application that provides facilities for programming, such as code editing, debugging, and building. Some popular C++ IDEs include:\n\n* [@article@Visual Studio](https://visualstudio.microsoft.com/vs/features/cplusplus/) (Windows, macOS)\n* [@article@Eclipse](https://eclipse.org) (Windows, macOS, Linux)\n* [@article@Code::Blocks](http://www.codeblocks.org) (Windows, macOS, Linux)\n\nAfter downloading and installing an IDE, you might need to configure it to use the installed compiler. Check the documentation of the respective IDE for instructions on how to do this.\n\n3\\. Creating a New C++ Project\n------------------------------\n\nOnce you have your IDE and compiler set up, you can create a new C++ project and start writing code. In general, follow these steps to create a new C++ project:\n\n* Open the IDE and create a new project.\n* Select the project type (C++ Application or Console Application).\n* Specify the project name and location.\n* Let the IDE generate the main.cpp and build files (such as Makefile or CMakeLists.txt) for you.\n\nExample: Hello World in C++\n---------------------------\n\nCreate a new file called `main.cpp` within your project and include this code:\n\n #include <iostream>\n \n int main() {\n std::cout << \"Hello, World!\\n\";\n return 0;\n }\n \n\nThen, follow the IDE's instructions to build and run your program. You should see \"Hello, World!\" displayed in the console.\n\nSummary\n-------\n\nSetting up C++ involves:\n\n* Installing a compiler (e.g. GCC, MinGW, or MSVC)\n* Configuring an IDE (e.g. Visual Studio, Eclipse, or Code::Blocks)\n* Creating a new C++ project and writing code\n\nBy following these steps, you'll be ready to start developing C++ applications!",
"links": []
},
"0J_ltQEJh2g28OE2ZEYJj": {
"title": "Installing C++",
"description": "Before you can start programming in C++, you will need to have a compiler installed on your system. A compiler is a program that converts the C++ code you write into an executable file that your computer can run. There are several popular C++ compilers to choose from, depending on your operating system and preference.\n\n### Windows\n\nFor Windows, one popular option is to install the [Microsoft Visual Studio IDE](https://visualstudio.microsoft.com/vs/), which includes the Microsoft Visual C++ compiler (MSVC).\n\nAlternatively, you can also install the [MinGW-w64](https://mingw-w64.org/) compiler system, which is a Windows port of the GNU Compiler Collection (GCC). To install MinGW-w64, follow these steps:\n\n* Download the installer from [here](https://sourceforge.net/projects/mingw-w64/files/).\n* Run the installer and select your desired architecture, version, and install location.\n* Add the `bin` folder inside the installation directory to your system's `PATH` environment variable.\n\n### macOS\n\nFor macOS, you can install the Apple LLVM `clang` compiler which is part of the Xcode Command Line Tools. To do this, open a terminal and enter:\n\n xcode-select --install\n \n\nThis will prompt a dialog to install the Command Line Tools, which includes the `clang` compiler.\n\n### Linux\n\nOn Linux, you can install the GNU Compiler Collection (GCC) through your distribution's package manager. Here are some examples for popular Linux distributions:\n\n* Ubuntu, Debian, and derivatives:\n\n sudo apt-get install g++ build-essential\n \n\n* Fedora, CentOS, RHEL, and derivatives:\n\n sudo dnf install gcc-c++ make\n \n\n* Arch Linux and derivatives:\n\n sudo pacman -S gcc make\n \n\n### Checking the Installation\n\nTo confirm that the compiler is installed and available on your system, open a terminal/command prompt, and enter the following command:\n\n g++ --version\n \n\nYou should see output displaying the version of your installed C++ compiler.\n\nNow you're ready to start writing and compiling your C++ code!",
"links": []
},
"ew0AfyadpXPRO0ZY3Z19k": {
"title": "Code Editors / IDEs",
"description": "Code editors and IDEs are programs specifically designed for editing, managing and writing source code. They offer a wide range of features that make the development process easier and faster. Here's a brief introduction to some of the most popular code editors and IDEs for C++:\n\n* **Visual Studio**: Visual Studio is an Integrated Development Environment (IDE) for Windows, developed by Microsoft. It includes its own integrated compiler known as Microsoft Visual C++ (MSVC).\n \n* **Visual Studio Code (VSCode)**: Visual Studio Code is a popular, free, open-source, and lightweight code editor developed by Microsoft. It offers an extensive library of extensions that enhance functionality for C++ development.\n \n* **Sublime Text**: Sublime Text is a cross-platform text editor that is quite popular among developers due to its speed and minimalist design. It supports C++ with the help of plugins and has a variety of themes and packages available for customization.\n \n* **CLion**: CLion is an Integrated Development Environment (IDE) developed by JetBrains specifically for C and C++ developers. It provides advanced features like code completion, refactoring support, debugging, and more. It's worth noting that CLion is a commercial IDE, but there is community version available.\n \n\nThese are just a few examples, and there are many other code editors available, including Atom, Notepad++, and Geany. They all have their features and may suit different developers' needs. Finding the right code editor is often a matter of personal preference and workflow.\n\nTo work with C++ in your chosen code editor, you often need to install some additional tools and add-ons, such as compilers, linters, and debugger support. Make sure to follow the instructions provided in the editor's documentation to set up C++ correctly.\n\nLearn more from the following resources:",
"links": [
{
"title": "Using C++ on Linux in VSCode",
"url": "https://code.visualstudio.com/docs/cpp/config-linux",
"type": "article"
},
{
"title": "Explore top posts about General Programming",
"url": "https://app.daily.dev/tags/general-programming?ref=roadmapsh",
"type": "article"
}
]
},
"SEq0D2Zg5WTsIDtd1hW9f": {
"title": "Running your First Program",
"description": "In this section, we'll discuss the basic structure of a C++ program, walk you through your first program (the \"Hello, World!\" example), and provide additional explanations of its syntax.\n\nHello, World!\n-------------\n\nThe first program that most people learn to write in any programming language is often a simple one that displays the message \"Hello, World!\" on the screen. Here's the classic \"Hello, World!\" program in C++:\n\n #include <iostream>\n \n int main() {\n std::cout << \"Hello, World!\\n\";\n return 0;\n }\n \n\nLet's break down the different components of this program:\n\nHeader Files & Preprocessor Directives\n--------------------------------------\n\nThe first line of the program `#include <iostream>` is a [preprocessor directive](https://en.cppreference.com/w/cpp/preprocessor) that tells the compiler to include the header file `iostream`. Header files provide function and class declarations that we can use in our C++ programs.\n\n #include <iostream>\n \n\n`main()` Function\n-----------------\n\nIn C++, the `main()` function serves as the entry point of your program. The operating system runs your program by calling this `main()` function. It should be defined only once in your program and must return an integer. The keyword `int` is the return type of this function which is an integer. Unlike C in C++ it is mandatory to have `int` as the return type for the `main` function.\n\n int main() {\n // Your code goes here.\n }\n \n\nOutput to the Console\n---------------------\n\nTo output text to the console, we use the `std::cout` object and the insertion operator `<<`. In the \"Hello, World!\" example, we used the following line to print \"Hello, World!\" to the console:\n\n std::cout << \"Hello, World!\\n\";\n \n\n* `std`: This is the namespace where C++ standard library entities (classes and functions) reside. It stands for \"standard\"\n* `std::cout`: The standard \"character output\" stream that writes to the console\n* `\"Hello, World!\"`: The string literal to print\n* `'\\n'`: The \"end line\" manipulator that inserts a newline character and flushes the output buffer\n\nReturn Statement\n----------------\n\nLastly, the `return 0;` statement informs the operating system that the program executed successfully. Returning any other integer value indicates that an error occurred:\n\n return 0;\n \n\nNow that you understand the basic components of a C++ program, you can write your first program, compile it, and run it to see the \"Hello, World!\" message displayed on the screen.",
"links": []
},
"kl2JI_Wl47c5r8SYzxvCq": {
"title": "Basic Operations",
"description": "Basic operations in C++ refer to the fundamental arithmetic, relational, and logical operations that can be performed using C++ programming language, which are essential for any kind of program or calculation in a real-world scenario.\n\nHere's a summary of the basic operations in C++\n\nArithmetic Operations\n---------------------\n\nThese operations are used for performing calculations in C++ and include the following:\n\n* **Addition (+)**: Adds two numbers.\n\n int a = 5;\n int b = 6;\n int sum = a + b; // sum is 11\n \n\n* **Subtraction (-)**: Subtracts one number from the other.\n\n int a = 10;\n int b = 6;\n int diff = a - b; // diff is 4\n \n\n* **Multiplication (\\*)**: Multiplies two numbers.\n\n int a = 3;\n int b = 4;\n int product = a * b; // product is 12\n \n\n* **Division (/)**: Divides one number by another, yields quotient.\n\n int a = 12;\n int b = 4;\n int quotient = a / b; // quotient is 3\n \n\n* **Modulus (%)**: Divides one number by another, yields remainder.\n\n int a = 15;\n int b = 4;\n int remainder = a % b; // remainder is 3\n \n\nRelational Operators\n--------------------\n\nThese operations compare two values and return a boolean value (true/false) depending on the comparison. The relational operations are:\n\n* **Equal to (==)**: Returns true if both operands are equal.\n\n 5 == 5 // true\n 3 == 4 // false\n \n\n* **Not equal to (!=)**: Returns true if operands are not equal.\n\n 5 != 2 // true\n 1 != 1 // false\n \n\n* **Greater than (>)**: Returns true if the first operand is greater than the second.\n\n 5 > 3 // true\n 2 > 3 // false\n \n\n* **Less than (<)**: Returns true if the first operand is less than the second.\n\n 3 < 5 // true\n 6 < 5 // false\n \n\n* **Greater than or equal to (>=)**: Returns true if the first operand is greater than or equal to the second.\n\n 5 >= 5 // true\n 6 >= 2 // true\n 3 >= 4 // false\n \n\n* **Less than or equal to (<=)**: Returns true if the first operand is less than or equal to the second.\n\n 4 <= 4 // true\n 2 <= 3 // true\n 5 <= 4 // false\n \n\nLogical Operators\n-----------------\n\nLogical operators are used for combining multiple conditions or boolean values.\n\n* **AND (&&)**: Returns true if both operands are true.\n\n true && true // true\n true && false // false\n \n\n* **OR (||)**: Returns true if any one of the operands is true.\n\n true || false // true\n false || false // false\n \n\n* **NOT (!)**: Returns true if the operand is false and vice versa.\n\n !true // false\n !false // true",
"links": []
},
"8aOSpZLWwZv_BEYiurhyR": {
"title": "Arithmetic Operators",
"description": "Arithmetic operators are used to perform mathematical operations with basic variables such as integers and floating-point numbers. Here is a brief summary of the different arithmetic operators in C++:\n\n1\\. Addition Operator (`+`)\n---------------------------\n\nIt adds two numbers together.\n\n int sum = a + b;\n \n\n2\\. Subtraction Operator (`-`)\n------------------------------\n\nIt subtracts one number from another.\n\n int difference = a - b;\n \n\n3\\. Multiplication Operator (`*`)\n---------------------------------\n\nIt multiplies two numbers together.\n\n int product = a * b;\n \n\n4\\. Division Operator (`/`)\n---------------------------\n\nIt divides one number by another. Note that if both operands are integers, it will perform integer division and the result will be an integer.\n\n int quotient = a / b; // integer division\n float quotient = float(a) / float(b); // floating-point division\n \n\n5\\. Modulus Operator (`%`)\n--------------------------\n\nIt calculates the remainder of an integer division.\n\n int remainder = a % b;\n \n\n6\\. Increment Operator (`++`)\n-----------------------------\n\nIt increments the value of a variable by 1. There are two ways to use this operator: prefix (`++x`) and postfix (`x++`). Prefix increments the value before returning it, whereas postfix returns the value first and then increments it.\n\n int x = 5;\n int y = ++x; // x = 6, y = 6\n int z = x++; // x = 7, z = 6\n \n\n7\\. Decrement Operator (`--`)\n-----------------------------\n\nIt decrements the value of a variable by 1. It can also be used in prefix (`--x`) and postfix (`x--`) forms.\n\n int x = 5;\n int y = --x; // x = 4, y = 4\n int z = x--; // x = 3, z = 4\n \n\nThese are the basic arithmetic operators in C++ that allow you to perform mathematical operations on your variables. Use them in combination with other control structures, such as loops and conditionals, to build more complex programs.",
"links": []
},
"Y9gq8WkDA_XGe68JkY2UZ": {
"title": "Logical Operators",
"description": "Logical operators are used to perform logical operations on the given expressions, mostly to test the relationship between different variables or values. They return a boolean value i.e., either true (1) or false (0) based on the result of the evaluation.\n\nC++ provides the following logical operators:\n\n* **AND Operator (&&)** The AND operator checks if both the operands/conditions are true, then the expression is true. If any one of the conditions is false, the whole expression will be false.\n \n (expression1 && expression2)\n \n \n Example:\n \n int a = 5, b = 10;\n if (a > 0 && b > 0) {\n std::cout << \"Both values are positive.\\n\";\n }\n \n \n* **OR Operator (||)** The OR operator checks if either of the operands/conditions are true, then the expression is true. If both the conditions are false, it will be false.\n \n (expression1 || expression2)\n \n \n Example:\n \n int a = 5, b = -10;\n if (a > 0 || b > 0) {\n std::cout << \"At least one value is positive.\\n\";\n }\n \n \n* **NOT Operator (!)** The NOT operator reverses the result of the condition/expression it is applied on. If the condition is true, the NOT operator will make it false and vice versa.\n \n !(expression)\n \n \n Example:\n \n int a = 5;\n if (!(a < 0)) {\n std::cout << \"The value is not negative.\\n\";\n }\n \n \n\nUsing these operators, you can create more complex logical expressions, for example:\n\n int a = 5, b = -10, c = 15;\n \n if (a > 0 && (b > 0 || c > 0)) {\n std::cout << \"At least two values are positive.\\n\";\n }\n \n\nThis covers the essential information about logical operators in C++.",
"links": []
},
"zE4iPSq2KsrDSByQ0sGK_": {
"title": "Bitwise Operators",
"description": "Bitwise operations are operations that directly manipulate the bits of a number. Bitwise operations are useful for various purposes, such as optimizing algorithms, performing certain calculations, and manipulating memory in lower-level programming languages like C and C++.\n\nHere is a quick summary of common bitwise operations in C++:\n\nBitwise AND (`&`)\n-----------------\n\nThe bitwise AND operation (`&`) is a binary operation that takes two numbers, compares them bit by bit, and returns a new number where each bit is set (1) if the corresponding bits in both input numbers are set (1); otherwise, the bit is unset (0).\n\nExample:\n\n int result = 5 & 3; // result will be 1 (0000 0101 & 0000 0011 = 0000 0001)\n \n\nBitwise OR (`|`)\n----------------\n\nThe bitwise OR operation (`|`) is a binary operation that takes two numbers, compares them bit by bit, and returns a new number where each bit is set (1) if at least one of the corresponding bits in either input number is set (1); otherwise, the bit is unset (0).\n\nExample:\n\n int result = 5 | 3; // result will be 7 (0000 0101 | 0000 0011 = 0000 0111)\n \n\nBitwise XOR (`^`)\n-----------------\n\nThe bitwise XOR (exclusive OR) operation (`^`) is a binary operation that takes two numbers, compares them bit by bit, and returns a new number where each bit is set (1) if the corresponding bits in the input numbers are different; otherwise, the bit is unset (0).\n\nExample:\n\n int result = 5 ^ 3; // result will be 6 (0000 0101 ^ 0000 0011 = 0000 0110)\n \n\nBitwise NOT (`~`)\n-----------------\n\nThe bitwise NOT operation (`~`) is a unary operation that takes a single number, and returns a new number where each bit is inverted (1 becomes 0, and 0 becomes 1).\n\nExample:\n\n int result = ~5; // result will be -6 (1111 1010)\n \n\nBitwise Left Shift (`<<`)\n-------------------------\n\nThe bitwise left shift operation (`<<`) is a binary operation that takes two numbers, a value and a shift amount, and returns a new number by shifting the bits of the value to the left by the specified shift amount. The vacated bits are filled with zeros.\n\nExample:\n\n int result = 5 << 1; // result will be 10 (0000 0101 << 1 = 0000 1010)\n \n\nBitwise Right Shift (`>>`)\n--------------------------\n\nThe bitwise right shift operation (`>>`) is a binary operation that takes two numbers, a value and a shift amount, and returns a new number by shifting the bits of the value to the right by the specified shift amount. The vacated bits are filled with zeros or sign bit depending on the input value being signed or unsigned.\n\nExample:\n\n int result = 5 >> 1; // result will be 2 (0000 0101 >> 1 = 0000 0010)\n \n\nThese were the most common bitwise operations in C++. Remember to use them carefully and understand their behavior when applied to specific data types and scenarios.\n\nLearn more from the following resources:",
"links": [
{
"title": "Intro to Binary and Bitwise Operators in C++",
"url": "https://youtu.be/KXwRt7og0gI",
"type": "video"
},
{
"title": "Bitwise AND (&), OR (|), XOR (^) and NOT (~) in C++",
"url": "https://youtu.be/HoQhw6_1NAA",
"type": "video"
}
]
},
"s5Gs4yF9TPh-psYmtPzks": {
"title": "Control Flow & Statements",
"description": "",
"links": []
},
"_IP_e1K9LhNHilYTDh7L5": {
"title": "for / while / do while loops",
"description": "Loops are an essential concept in programming that allow you to execute a block of code repeatedly until a specific condition is met. In C++, there are three main types of loops: `for`, `while`, and `do-while`.\n\nFor Loop\n--------\n\nA `for` loop is used when you know the number of times you want to traverse through a block of code. It consists of an initialization statement, a condition, and an increment/decrement operation.\n\nHere's the syntax for a `for` loop:\n\n for (initialization; condition; increment/decrement) {\n // block of code to execute\n }\n \n\nFor example:\n\n #include <iostream>\n \n int main() {\n for (int i = 0; i < 5; i++) {\n std::cout << \"Iteration: \" << i << '\\n';\n }\n return 0;\n }\n \n\nWhile Loop\n----------\n\nA `while` loop runs as long as a specified condition is `true`. The loop checks for the condition before entering the body of the loop.\n\nHere's the syntax for a `while` loop:\n\n while (condition) {\n // block of code to execute\n }\n \n\nFor example:\n\n #include <iostream>\n \n int main() {\n int i = 0;\n while (i < 5) {\n std::cout << \"Iteration: \" << i << '\\n';\n i++;\n }\n return 0;\n }\n \n\nDo-While Loop\n-------------\n\nA `do-while` loop is similar to a `while` loop, with the key difference being that the loop body is executed at least once, even when the condition is `false`.\n\nHere's the syntax for a `do-while` loop:\n\n do {\n // block of code to execute\n } while (condition);\n \n\nFor example:\n\n #include <iostream>\n \n int main() {\n int i = 0;\n do {\n std::cout << \"Iteration: \" << i << '\\n';\n i++;\n } while (i < 5);\n return 0;\n }\n \n\nIn summary, loops are an integral part of C++ programming that allow you to execute a block of code multiple times. The three types of loops in C++ are `for`, `while`, and `do-while`. Each type has its own specific use case and can be chosen depending on the desired behavior.\n\nLearn more from the following resources:",
"links": [
{
"title": "C++ For Loop",
"url": "https://www.w3schools.com/cpp/cpp_for_loop.asp",
"type": "article"
}
]
},
"bjpFWxiCKGz28E-ukhZBp": {
"title": "if else / switch / goto",
"description": "C++ provides you with tools which helps you to control the way your program behaves (logic flows) based on how the user interact with your program. Here we will discuss about `if-else`, `switch` and `goto` are three common ways to guide the flow of logic in your code.\n\nVisit the following resources to learn more:",
"links": [
{
"title": "The 'if-else' Statement in C++",
"url": "https://www.youtube.com/watch?v=9-BjXs1vMSc",
"type": "video"
},
{
"title": "Learn C++ With Me - Switch Statement",
"url": "https://www.youtube.com/watch?v=uOlLs1OYSSI",
"type": "video"
},
{
"title": "Why is it illegal to use \"goto\"?",
"url": "https://youtu.be/AKJhThyTmQw?si=gjEqAsDZVMDGVAT2",
"type": "video"
}
]
},
"oYi3YOc1GC2Nfp71VOkJt": {
"title": "Functions",
"description": "A **function** is a group of statements that perform a specific task, organized as a separate unit in a program. Functions help in breaking the code into smaller, manageable, and reusable blocks.\n\nThere are mainly two types of functions in C++:\n\n* **Standard library functions**: Pre-defined functions available in the C++ standard library, such as `sort()`, `strlen()`, `sqrt()`, and many more. These functions are part of the standard library, so you need to include the appropriate header file to use them.\n \n* **User-defined functions**: Functions created by the programmer to perform a specific task. To create a user-defined function, you need to define the function and call it in your code.\n \n\nDefining a Function\n-------------------\n\nThe general format for defining a function in C++ is:\n\n return_type function_name(parameter list) {\n // function body\n }\n \n\n* `return_type`: Data type of the output produced by the function. It can be `void`, indicating that the function doesn't return any value.\n* `function_name`: Name given to the function, following C++ naming conventions.\n* `parameter list`: List of input parameters/arguments that are needed to perform the task. It is optional, you can leave it blank when no parameters are needed.\n\nExample\n-------\n\n #include <iostream>\n \n // Function to add two numbers\n int addNumbers(int a, int b) {\n int sum = a + b;\n return sum;\n }\n \n int main() {\n int num1 = 5, num2 = 10;\n int result = addNumbers(num1, num2); // Calling the function\n std::cout << \"The sum is: \" << result << '\\n';\n return 0;\n }\n \n\nIn this example, the function `addNumbers` takes two integer parameters, `a` and `b`, and returns the sum of the numbers. We then call this function from the `main()` function and display the result.\n\nFunction Prototypes\n-------------------\n\nIn some cases, you might want to use a function before actually defining it. To do this, you need to declare a **function prototype** at the beginning of your code.\n\nA function prototype is a declaration of the function without its body, and it informs the compiler about the function's name, return type, and parameters.\n\n #include <iostream>\n \n // Function prototype\n int multiplyNumbers(int x, int y);\n \n int main() {\n int num1 = 3, num2 = 7;\n int result = multiplyNumbers(num1, num2); // Calling the function\n std::cout << \"The product is: \" << result << '\\n';\n return 0;\n }\n \n // Function definition\n int multiplyNumbers(int x, int y) {\n int product = x * y;\n return product;\n }\n \n\nIn this example, we use a function prototype for `multiplyNumbers()` before defining it. This way, we can call the function from the `main()` function even though it hasn't been defined yet in the code.\n\nLearn more from the following resources:",
"links": [
{
"title": "introduction to functions in c++",
"url": "https://www.learncpp.com/cpp-tutorial/introduction-to-functions/",
"type": "article"
}
]
},
"obZIxRp0eMWdG7gplNIBc": {
"title": "Static Polymorphism",
"description": "Static polymorphism, also known as compile-time polymorphism, is a type of polymorphism that resolves the types and method calls at compile time rather than at runtime. This is commonly achieved through the use of function overloading and templates in C++.\n\nFunction Overloading\n--------------------\n\nFunction overloading is a way to create multiple functions with the same name but different parameter lists. The compiler determines the correct function to call based on the types and number of arguments used when the function is called.\n\nExample:\n\n #include <iostream>\n \n void print(int i) {\n std::cout << \"Printing int: \" << i << '\\n';\n }\n \n void print(double d) {\n std::cout << \"Printing double: \" << d << '\\n';\n }\n \n void print(const char* s) {\n std::cout << \"Printing string: \" << s << '\\n';\n }\n \n int main() {\n print(5); // Calls print(int i)\n print(3.14); // Calls print(double d)\n print(\"Hello\"); // Calls print(const char* s)\n \n return 0;\n }\n \n\nTemplates\n---------\n\nTemplates are a powerful feature in C++ that allows you to create generic functions or classes. The actual code for specific types is generated at compile time, which avoids the overhead of runtime polymorphism. The use of templates is the main technique to achieve static polymorphism in C++.\n\nExample:\n\n #include <iostream>\n \n // Template function to print any type\n template<typename T>\n void print(const T& value) {\n std::cout << \"Printing value: \" << value << '\\n';\n }\n \n int main() {\n print(42); // int\n print(3.14159); // double\n print(\"Hello\"); // const char*\n \n return 0;\n }\n \n\nIn conclusion, static polymorphism achieves polymorphic behavior during compile time using function overloading and templates, instead of relying on runtime information like dynamic polymorphism does. This can result in more efficient code since method calls are resolved at compile time.",
"links": []
},
"sgfqb22sdN4VRJYkhAVaf": {
"title": "Function Overloading",
"description": "Function overloading in C++ allows multiple functions to share the same name, provided they differ in the number or types of parameters. This facilitates compile-time polymorphism, enhancing code readability and maintainability by enabling functions to perform similar operations on different data types or argument counts.\n\nVisit the following resources to learn more:",
"links": [
{
"title": "Function Overloading - Microsoft Learn",
"url": "https://learn.microsoft.com/en-us/cpp/cpp/function-overloading",
"type": "article"
}
]
},
"llCBeut_uc9IAe2oi4KZ9": {
"title": "Operator Overloading",
"description": "Operator overloading in C++ is a feature that allows you to redefine the way operators work for user-defined types (such as classes and structs). It lets you specify how operators like +, -, \\*, ==, etc., behave when applied to objects of your class. Visit the following resources to learn more:\n\nVisit the following resources to learn more:",
"links": [
{
"title": "Operator Overloading - Microsoft Learn",
"url": "https://learn.microsoft.com/en-us/cpp/cpp/operator-overloading",
"type": "article"
},
{
"title": "operator overloading - cppreference.com",
"url": "https://en.cppreference.com/w/cpp/language/operators",
"type": "article"
}
]
},
"xjiFBVe-VGqCqWfkPVGKf": {
"title": "Lambdas",
"description": "A lambda function, or simply \"lambda\", is an anonymous (unnamed) function that is defined in place, within your source code, and with a concise syntax. Lambda functions were introduced in C++11 and have since become a widely used feature, especially in combination with the Standard Library algorithms.\n\nSyntax\n------\n\nHere is a basic syntax of a lambda function in C++:\n\n [capture-list](parameters) -> return_type {\n // function body\n };\n \n\n* **capture-list**: A list of variables from the surrounding scope that the lambda function can access.\n* **parameters**: The list of input parameters, just like in a regular function. Optional.\n* **return\\_type**: The type of the value that the lambda function will return. This part is optional, and the compiler can deduce it in many cases.\n* **function body**: The code that defines the operation of the lambda function.\n\nUsage Examples\n--------------\n\nHere are a few examples to demonstrate the use of lambda functions in C++:\n\n* Lambda function with no capture, parameters, or return type.\n\n auto printHello = []() {\n std::cout << \"Hello, World!\\n\";\n };\n printHello(); // Output: Hello, World!\n \n\n* Lambda function with parameters.\n\n auto add = [](int a, int b) {\n return a + b;\n };\n int result = add(3, 4); // result = 7\n \n\n* Lambda function with capture-by-value.\n\n int multiplier = 3;\n auto times = [multiplier](int a) {\n return a * multiplier;\n };\n int result = times(5); // result = 15\n \n\n* Lambda function with capture-by-reference.\n\n int expiresInDays = 45;\n auto updateDays = [&expiresInDays](int newDays) {\n expiresInDays = newDays;\n };\n updateDays(30); // expiresInDays = 30\n \n\nNote that, when using the capture by reference, any change made to the captured variable _inside_ the lambda function will affect its value in the surrounding scope.\n\nLearn more from the following resources:",
"links": [
{
"title": "Lambda Expressions",
"url": "https://en.cppreference.com/w/cpp/language/lambda",
"type": "article"
},
{
"title": "Explore top posts about AWS Lambda",
"url": "https://app.daily.dev/tags/aws-lambda?ref=roadmapsh",
"type": "article"
},
{
"title": "Lambdas in C++",
"url": "https://youtu.be/MH8mLFqj-n8",
"type": "video"
}
]
},
"MwznA4qfpNlv6sqSNjPZi": {
"title": "Data Types",
"description": "In C++, data types are used to categorize different types of data that a program can process. They are essential for determining the type of value a variable can hold and how much memory space it will occupy. Some basic data types in C++ include integers, floating-point numbers, characters, and booleans.\n\nFundamental Data Types\n----------------------\n\nInteger (int)\n-------------\n\nIntegers are whole numbers that can store both positive and negative values. The size of `int` depends on the system architecture (usually 4 bytes).\n\nExample:\n\n int num = 42;\n \n\nThere are variants of `int` that can hold different ranges of numbers:\n\n* short (`short int`): Smaller range than `int`.\n* long (`long int`): Larger range than `int`.\n* long long (`long long int`): Even larger range than `long int`.\n\nFloating-Point (float, double)\n------------------------------\n\nFloating-point types represent real numbers, i.e., numbers with a decimal point. There are two main floating-point types:\n\n* **float**: Provides single-precision floating-point numbers. It typically occupies 4 bytes of memory.\n\nExample:\n\n float pi = 3.14f;\n \n\n* **double**: Provides double-precision floating-point numbers. It consumes more memory (usually 8 bytes) but has a higher precision than `float`.\n\nExample:\n\n double pi_high_precision = 3.1415926535;\n \n\nCharacter (char)\n----------------\n\nCharacters represent a single character, such as a letter, digit, or symbol. They are stored using the ASCII value of the symbol and typically occupy 1 byte of memory.\n\nExample:\n\n char letter = 'A';\n \n\nBoolean (bool)\n--------------\n\nBooleans represent logical values: `true` or `false`. They usually occupy 1 byte of memory.\n\nExample:\n\n bool is_cpp_great = true;\n \n\nDerived Data Types\n------------------\n\nDerived data types are types that are derived from fundamental data types. Some examples include:\n\nArrays\n------\n\nArrays are used to store multiple values of the same data type in consecutive memory locations.\n\nExample:\n\n int numbers[5] = {1, 2, 3, 4, 5};\n \n\nPointers\n--------\n\nPointers are used to store the memory address of a variable.\n\nExample:\n\n int num = 42;\n int* pNum = &num;\n \n\nReferences\n----------\n\nReferences are an alternative way to share memory locations between variables, allowing you to create an alias for another variable.\n\nExample:\n\n int num = 42;\n int& numRef = num;\n \n\nUser-Defined Data Types\n-----------------------\n\nUser-defined data types are types that are defined by the programmer, such as structures, classes, and unions.\n\nStructures (struct)\n-------------------\n\nStructures are used to store different data types under a single variable and accessibility of member variables and methods are public.\n\nExample:\n\n struct Person {\n std::string name;\n int age;\n float height;\n };\n \n Person p1 = {\"John Doe\", 30, 5.9};\n \n\nClasses (class)\n---------------\n\nClasses are similar to structures, but the accessibility of the member data and function are governed by access specifiers. By default access to members of a class is private.\n\nExample:\n\n class Person {\n public:\n std::string name;\n int age;\n \n void printInfo() {\n std::cout << \"Name: \" << name << \", Age: \" << age << '\\n';\n };\n };\n \n Person p1;\n p1.name = \"John Doe\";\n p1.age = 30;\n \n\nUnions (union)\n--------------\n\nUnions are used to store different data types in the same memory location.\n\nExample:\n\n union Data {\n int num;\n char letter;\n float decimal;\n };\n \n Data myData;\n myData.num = 42;",
"links": []
},
"f1djN0GxoeVPr_0cl6vMq": {
"title": "Static Typing",
"description": "In C++, static typing means that the data type of a variable is determined at compile time, before the program is executed. This means that a variable can only be used with data of a specific type, and the compiler ensures that the operations performed with the variable are compatible with its type. If there is a mismatch, the compiler will adjust the data type of variable to match another provided it's feasible. This process is known as `Type Conversion`. If the compiler is not able to achieve type conversion, an `Invalid Type Conversion` error will be raised during compilation of the code.\n\nC++ is a statically typed language, which means that it uses static typing to determine data types and perform type checking during compile time. This helps with ensuring type safety and can prevent certain types of errors from occurring during the execution of the program.\n\nHere's a simple code example to demonstrate static typing in C++:\n\n #include <iostream>\n \n int main() {\n int num = 65; // 'num' is statically typed as an integer\n double pi = 3.14159; // 'pi' is statically typed as a double\n char c = 'c'; // 'c' is statically typed as a char\n \n c = num; // This asssigment would convert num's value to ASCII equivalent character\n num = pi; // This assignment would convert pi's value from double type to int type\n \n std::cout << \"The value of num is: \" << num << '\\n';\n std::cout << \"The value of pi is: \" << pi << '\\n';\n std::cout << \"The value of c is: \"<< c << '\\n';\n return 0;\n }\n \n\nIn the code above, the variable `num` is statically typed as an `int`, `pi` is statically typed as a `double`, and `c` is statically typed as a `char`. If you attempt to assign the value of `pi` to `num`, the value `3.14159` will be converted to the integer `3` and assigned to `num`. Similarly, when the value of `num` is assigned to `c`, the compiler will convert the value `65` to its corresponding [ASCII](https://www.ascii-code.com) code, which is `A`.\n\nLearn more from the following resources:",
"links": [
{
"title": "Type-Coversion",
"url": "https://www.programiz.com/cpp-programming/type-conversion",
"type": "article"
},
{
"title": "Static Vs Dynamic",
"url": "https://www.techtarget.com/searchapparchitecture/tip/Static-vs-dynamic-typing-The-details-and-differences",
"type": "article"
}
]
},
"i0EAFEUB-F0wBJWOtrl1A": {
"title": "Dynamic Typing",
"description": "C++ is known as a statically-typed language, which means the data types of its variables are determined at compile time. However, C++ also provides concepts to have certain level of _dynamic typing_, which means determining the data types of variables at runtime.\n\nHere is a brief overview of two ways to achieve dynamic typing in C++:\n\n`void*` Pointers\n----------------\n\nA `void*` pointer is a generic pointer that can point to objects of any data type. They can be used to store a reference to any type of object without knowing the specific type of the object.\n\nExample:\n\n #include <iostream>\n \n int main() {\n int x = 42;\n float y = 3.14f;\n std::string z = \"Hello, world!\";\n \n void* void_ptr;\n \n void_ptr = &x;\n std::cout << \"int value: \" << *(static_cast<int*>(void_ptr)) << '\\n';\n \n void_ptr = &y;\n std::cout << \"float value: \" << *(static_cast<float*>(void_ptr)) << '\\n';\n \n void_ptr = &z;\n std::cout << \"string value: \" << *(static_cast<std::string*>(void_ptr)) << '\\n';\n \n return 0;\n }\n \n\n`std::any` (C++17)\n------------------\n\nC++17 introduced the `std::any` class which represents a generalized type-safe container for single values of any type.\n\nExample:\n\n #include <iostream>\n #include <any>\n \n int main() {\n std::any any_value;\n \n any_value = 42;\n std::cout << \"int value: \" << std::any_cast<int>(any_value) << '\\n';\n \n any_value = 3.14;\n std::cout << \"double value: \" << std::any_cast<double>(any_value) << '\\n';\n \n any_value = std::string(\"Hello, world!\");\n std::cout << \"string value: \" << std::any_cast<std::string>(any_value) << '\\n';\n \n return 0;\n }\n \n\nKeep in mind that both `void*` pointers and `std::any` have performance implications due to the additional type checking and casting that take place during runtime. They should be used carefully and only when absolutely necessary.",
"links": []
},
"r0yD1gfn03wTpEBi6zNsu": {
"title": "RTTI",
"description": "Run-Time Type Identification (RTTI) is a feature in C++ that allows you to obtain the type information of an object during program execution. This can be useful when using dynamic typing, where the type of an object can change at runtime.\n\nThere are two main mechanisms for RTTI in C++:\n\n* `typeid` operator\n* `dynamic_cast` operator\n\ntypeid operator\n---------------\n\n`typeid` is an operator that returns a reference to an object of type `std::type_info`, which contains information about the type of the object. The header file `<typeinfo>` should be included to use `typeid`.\n\nHere is an example:\n\n #include <iostream>\n #include <typeinfo>\n \n class Base { virtual void dummy() {} };\n class Derived : public Base { /* ... */ };\n \n int main() {\n Base* base_ptr = new Derived;\n \n // Using typeid to get the type of the object\n std::cout << \"Type: \" << typeid(*base_ptr).name() << '\\n';\n \n delete base_ptr;\n return 0;\n }\n \n\ndynamic\\_cast operator\n----------------------\n\n`dynamic_cast` is a type-casting operator that performs a runtime type check and safely downcasts a base pointer or reference to a derived pointer or reference. It returns null or throws a bad\\_cast exception (if casting references) when the casting fails.\n\nHere is an example:\n\n #include <iostream>\n \n class Base { virtual void dummy() {} };\n class Derived1 : public Base { /* ... */ };\n class Derived2 : public Base { /* ... */ };\n \n int main() {\n Base* base_ptr = new Derived1;\n \n // Using dynamic_cast to safely downcast the pointer\n Derived1* derived1_ptr = dynamic_cast<Derived1*>(base_ptr);\n if (derived1_ptr) {\n std::cout << \"Downcast to Derived1 successful\\n\";\n }\n else {\n std::cout << \"Downcast to Derived1 failed\\n\";\n }\n \n Derived2* derived2_ptr = dynamic_cast<Derived2*>(base_ptr);\n if (derived2_ptr) {\n std::cout << \"Downcast to Derived2 successful\\n\";\n }\n else {\n std::cout << \"Downcast to Derived2 failed\\n\";\n }\n \n delete base_ptr;\n return 0;\n }\n \n\nPlease note that the use of RTTI can have some performance overhead, as it requires additional compiler-generated information to be stored and processed during runtime.",
"links": []
},
"DWw8NxkLpIpiOSUaZZ1oA": {
"title": "Pointers and References",
"description": "A pointer is a variable that stores the memory address of another variable (or function). It points to the location of the variable in memory, and it allows you to access or modify the value indirectly. Here's a general format to declare a pointer:\n\n dataType *pointerName;\n \n\n**Initializing a pointer:**\n\n int num = 10;\n int *ptr = &num; // Pointer 'ptr' now points to the memory address of 'num'\n \n\n**Accessing value using a pointer:**\n\n int value = *ptr; // Value now contains the value of the variable that 'ptr' points to (i.e., 10)\n \n\n**Function pointer:**\n\n int add(int a, int b)\n {\n return a + b;\n }\n \n int main()\n {\n int (*funcptr) (int, int) = add; // Pointer 'funcptr' now points to the functions 'add'\n funcptr(4, 5); // Return 9\n }\n \n\nReferences\n----------\n\nA reference is an alias for an existing variable, meaning it's a different name for the same memory location. Unlike pointers, references cannot be null, and they must be initialized when they are declared. Once a reference is initialized, it cannot be changed to refer to another variable.\n\nHere's a general format to declare a reference:\n\n dataType &referenceName = existingVariable;\n \n\n**Example:**\n\n int num = 10;\n int &ref = num; // Reference 'ref' is now an alias of 'num'\n \n\nModifying the value of `ref` will also modify the value of `num` because they share the same memory location.\n\n**Note:** References are generally used when you want to pass a variable by reference in function arguments or when you want to create an alias for a variable without the need for pointer syntax.\n\nLearn more from the following resources:",
"links": [
{
"title": "Function Pointer in C++",
"url": "https://www.scaler.com/topics/cpp/function-pointer-cpp/",
"type": "article"
}
]
},
"uUzRKa9wGzdUwwmAg3FWr": {
"title": "References",
"description": "A reference can be considered as a constant pointer (not to be confused with a pointer to a constant value) which always points to (references) the same object. They are declared using the `&` (ampersand) symbol.\n\nDeclaration and Initialization\n------------------------------\n\nTo declare a reference, use the variable type followed by the `&` symbol and the reference's name. Note that you must initialize a reference when you declare it.\n\n int var = 10; // Declare an integer variable\n int& ref = var; // Declare a reference that \"points to\" var\n \n\nUsage\n-----\n\nYou can use the reference just like you'd use the original variable. When you change the value of the reference, the value of the original variable also changes, because they both share the same memory location.\n\n var = 20; // Sets the value of var to 20\n std::cout << ref << '\\n'; // Outputs 20\n \n ref = 30; // Sets the value of ref to 30\n std::cout << var << '\\n'; // Outputs 30\n \n\nFunction Parameters\n-------------------\n\nYou can use references as function parameters to create an alias for an argument. This is commonly done when you need to modify the original variable or when passing an object of considerable size to avoid the cost of copying.\n\n void swap(int& a, int& b) {\n int temp = a;\n a = b;\n b = temp;\n }\n \n int main() {\n int x = 5, y = 10;\n std::cout << \"Before Swap: x = \" << x << \" y = \" << y << '\\n'; // Outputs 5 10\n \n swap(x, y);\n std::cout << \"After Swap: x = \" << x << \" y = \" << y << '\\n'; // Outputs 10 5\n }",
"links": []
},
"mSFwsTYvmg-GwG4_DEIEf": {
"title": "Memory Model",
"description": "The memory model in C++ defines how the program stores and accesses data in computer memory. It consists of different segments, such as the Stack, Heap, Data and Code segments. Each of these segments is used to store different types of data and has specific characteristics.\n\nStack Memory\n------------\n\nStack memory is used for automatic storage duration variables, such as local variables and function call data. Stack memory is managed by the compiler, and it's allocation and deallocation are done automatically. The stack memory is also a LIFO (Last In First Out) data structure, meaning that the most recent data allocated is the first to be deallocated.\n\n void functionExample() {\n int x = 10; // x is stored in the stack memory\n }\n \n\nHeap Memory\n-----------\n\nHeap memory is used for dynamic storage duration variables, such as objects created using the `new` keyword. The programmer has control over the allocation and deallocation of heap memory using `new` and `delete` operators. Heap memory is a larger pool of memory than the stack, but has a slower access time.\n\n void functionExample() {\n int* p = new int; // dynamically allocated int in heap memory\n *p = 10;\n // more code\n delete p; // deallocate memory\n }\n \n\nData Segment\n------------\n\nThe Data segment is composed of two parts: the initialized data segment and the uninitialized data segment. The initialized data segment stores global, static, and constant variables with initial values, whereas the uninitialized segment stores uninitialized global and static variables.\n\n // Initialized data segment\n int globalVar = 10; // global variables\n static int staticVar = 10; // static local variables\n const int constVar = 10; // constant variables with value\n \n // Uninitialized data segment\n int globalVar; // uninitialized global variables\n \n\nCode Segment\n------------\n\nThe Code segment (also known as the Text segment) stores the executable code (machine code) of the program. It's usually located in a read-only area of memory to prevent accidental modification.\n\n void functionExample() {\n // The machine code for this function is stored in the code segment.\n }\n \n\nIn summary, understanding the memory model in C++ helps to optimize the usage of memory resources and improves overall program performance.",
"links": []
},
"9aA_-IfQ9WmbPgwic0mFN": {
"title": "Lifetime of Objects",
"description": "Object lifetime refers to the time during which an object exists, from the moment it is created until it is destroyed. In C++, an object's lifetime can be classified into four categories:\n\n* **Static Storage Duration**: Objects with static storage duration exist for the entire run of the program. These objects are allocated at the beginning of the program's run and deallocated when the program terminates. Global variables, static data members, and static local variables fall into this category.\n \n int global_var; // Static storage duration\n class MyClass {\n static int static_var; // Static storage duration\n };\n void myFunction() {\n static int local_var; // Static storage duration\n }\n \n \n* **Thread Storage Duration**: Objects with thread storage duration exist for the lifetime of the thread they belong to. They are created when a thread starts and destroyed when the thread exits. Thread storage duration can be specified using the `thread_local` keyword.\n \n thread_local int my_var; // Thread storage duration\n \n \n* **Automatic Storage Duration**: Objects with automatic storage duration are created at the point of definition and destroyed when the scope in which they are declared is exited. These objects are also known as \"local\" or \"stack\" objects. Function parameters and local non-static variables fall into this category.\n \n void myFunction() {\n int local_var; // Automatic storage duration\n }\n \n \n* **Dynamic Storage Duration**: Objects with dynamic storage duration are created at runtime, using memory allocation functions such as `new` or `malloc`. The lifetime of these objects must be managed manually, as they are not automatically deallocated when the scope is exited. Instead, it is the programmer's responsibility to destroy the objects using the `delete` or `free` functions when they are no longer needed, to avoid memory leaks.\n \n int* ptr = new int; // Dynamic storage duration\n delete ptr;\n \n \n\nUnderstanding object lifetimes is essential for managing memory efficiently in C++ programs and avoiding common issues like memory leaks and undefined behavior.\n\nKeep in mind that a proper understanding of constructors and destructors for classes is also essential when working with objects of varying lifetimes, as they allow you to control the behavior of object creation and destruction.",
"links": []
},
"ulvwm4rRPgkpgaqGgyH5a": {
"title": "Smart Pointers",
"description": "",
"links": []
},
"vUwSS-uX36OWZouO0wOcy": {
"title": "weak_ptr",
"description": "",
"links": []
},
"b5jZIZD_U_CPg-_bdndjz": {
"title": "shared_ptr",
"description": "",
"links": []
},
"k9c5seRkhgm_yHPpiz2X0": {
"title": "unique_ptr",
"description": "One of C++'s main features includes variants of the normal _raw_ C pointers. One of these is the `unique_ptr`, which is a type of smart pointer that claims exclusive ownership over a value.\n\nThese types of pointers **can be moved** (`std::move`), but not **copied** and are automatically deleted when out of scope. The recommended way to create a `unique_ptr` is using `std::make_unique`.\n\n #include <memory>\n #include <iostream>\n \n int main() {\n std::unique_ptr<int> uptr = std::make_unique<int>(10);\n std::cout << *uptr << std::endl;\n \n std::unique_ptr<int> uptr2 = uptr; // compile error\n std::unique_ptr<int> uptr2 = std::move(uptr); // transferring ownership\n }",
"links": [
{
"title": "std::unique_ptr - Detailed Reference",
"url": "https://en.cppreference.com/w/cpp/memory/unique_ptr",
"type": "article"
},
{
"title": "Smart Pointers unique_ptr",
"url": "https://www.learncpp.com/cpp-tutorial/unique-ptr/",
"type": "article"
},
{
"title": "When should you use std::unique_ptr? - StackOverflow Discussion",
"url": "https://stackoverflow.com/questions/13782051/when-should-you-use-stdunique-ptr",
"type": "video"
}
]
},
"uEGEmbxegATIrvGfobJb9": {
"title": "Raw Pointers",
"description": "",
"links": []
},
"Gld0nRs0sM8kRe8XmYolu": {
"title": "New/Delete Operators",
"description": "",
"links": []
},
"6w0WExQ4lGIGgok6Thq0s": {
"title": "Memory Leakage",
"description": "",
"links": []
},
"Zw2AOTK5uc9BoKEpY7W1C": {
"title": "Structuring Codebase",
"description": "Structuring codebase is an essential part of software development that deals with organizing and modularizing your code to make it more maintainable, efficient, and easier to understand. A well-structured codebase enhances collaboration, simplifies adding new features, and makes debugging faster. In C++, there are various techniques to help you structure your codebase effectively.\n\nNamespaces\n----------\n\nNamespaces are one of the tools in C++ to organize your code by providing a named scope for different identifiers you create, like functions, classes, and variables. They help avoid name clashes and make your code more modular.\n\n namespace MyNamespace {\n int aFunction() {\n // function implementation\n }\n }\n // to use the function\n MyNamespace::aFunction();\n \n\nInclude Guards\n--------------\n\nInclude guards are a tool for preventing multiple inclusions of a header file in your project. They consist of preprocessor directives that conditionally include the header file only once, even if it's included in multiple places.\n\n #ifndef MY_HEADER_FILE_H\n #define MY_HEADER_FILE_H\n \n // Your code here\n \n #endif // MY_HEADER_FILE_H\n \n\nHeader and Source Files\n-----------------------\n\nSeparating your implementation and declarations into header (_.h) and source (_.cpp) files is a key aspect of structuring your codebase in C++. Header files usually contain class and function declarations, while source files contain their definitions.\n\n// MyClass.h\n\n #ifndef MY_CLASS_H\n #define MY_CLASS_H\n \n class MyClass\n {\n public:\n MyClass();\n int myMethod();\n };\n \n #endif // MY_CLASS_H\n \n\n// MyClass.cpp\n\n #include \"MyClass.h\"\n \n MyClass::MyClass() {\n // constructor implementation\n }\n \n int MyClass::myMethod() {\n // method implementation\n }\n \n\nCode Formatting\n---------------\n\nConsistent code formatting and indentation play a crucial role in structuring your codebase, making it easier to read and understand for both you and other developers. A style guide such as the [Google C++ Style Guide](https://google.github.io/styleguide/cppguide.html) can help you maintain consistent formatting throughout your project.",
"links": []
},
"dKCYmxDNZubCVcR5rf8b-": {
"title": "Scope",
"description": "**Scope** refers to the visibility and accessibility of variables, functions, classes, and other identifiers in a C++ program. It determines the lifetime and extent of these identifiers. In C++, there are four types of scope:\n\n* **Global scope:** Identifiers declared outside any function or class have a global scope. They can be accessed from any part of the program (unless hidden by a local identifier with the same name). The lifetime of a global identifier is the entire duration of the program.\n\n #include <iostream>\n \n int globalVar; // This is a global variable\n \n int main() {\n std::cout << \"Global variable: \" << globalVar << '\\n';\n }\n \n\n* **Local scope:** Identifiers declared within a function or a block have a local scope. They can be accessed only within the function or the block they were declared in. Their lifetime is limited to the duration of the function/block execution.\n\n #include <iostream>\n \n void localExample() {\n int localVar; // This is a local variable\n localVar = 5;\n std::cout << \"Local variable: \" << localVar << '\\n';\n }\n \n int main() {\n localExample();\n // std::cout << localVar << '\\n'; //error: localVar was not declared in this scope\n }\n \n\n* **Namespace scope:** A namespace is a named scope that groups related identifiers together. Identifiers declared within a namespace have the namespace scope. They can be accessed using the namespace name and the scope resolution operator `::`.\n\n #include <iostream>\n \n namespace MyNamespace {\n int namespaceVar = 42;\n }\n \n int main() {\n std::cout << \"Namespace variable: \" << MyNamespace::namespaceVar << '\\n';\n }\n \n\n* **Class scope:** Identifiers declared within a class have a class scope. They can be accessed using the class name and the scope resolution operator `::` or, for non-static members, an object of the class and the dot `.` or arrow `->` operator.\n\n #include <iostream>\n \n class MyClass {\n public:\n static int staticMember;\n int nonStaticMember;\n \n MyClass(int value) : nonStaticMember(value) {}\n };\n \n int MyClass::staticMember = 7;\n \n int main() {\n MyClass obj(10);\n std::cout << \"Static member: \" << MyClass::staticMember << '\\n';\n std::cout << \"Non-static member: \" << obj.nonStaticMember << '\\n';\n }\n \n\nUnderstanding various types of scope in C++ is essential for effective code structuring and management of resources in a codebase.",
"links": []
},
"iIdC7V8sojwyEqK1xMuHn": {
"title": "Namespaces",
"description": "In C++, a namespace is a named scope or container that is used to organize and enclose a collection of code elements, such as variables, functions, classes, and other namespaces. They are mainly used to divide and manage the code base, giving developers control over name collisions and the specialization of code.\n\nSyntax\n------\n\nHere's the syntax for declaring a namespace:\n\n namespace identifier {\n // code elements\n }\n \n\nUsing Namespaces\n----------------\n\nTo access elements within a namespace, you can use the scope resolution operator `::`. Here are some examples:\n\n### Declaring and accessing a namespace\n\n #include <iostream>\n \n namespace animals {\n std::string dog = \"Bobby\";\n std::string cat = \"Lilly\";\n }\n \n int main() {\n std::cout << \"Dog's name: \" << animals::dog << '\\n';\n std::cout << \"Cat's name: \" << animals::cat << '\\n';\n \n return 0;\n }\n \n\n### Nesting namespaces\n\nNamespaces can be nested within other namespaces:\n\n #include <iostream>\n \n namespace outer {\n int x = 10;\n \n namespace inner {\n int y = 20;\n }\n }\n \n int main() {\n std::cout << \"Outer x: \" << outer::x << '\\n';\n std::cout << \"Inner y: \" << outer::inner::y << '\\n';\n \n return 0;\n }\n \n\n`using` Keyword\n---------------\n\nYou can use the `using` keyword to import namespaced elements into the current scope. However, this might lead to name conflicts if multiple namespaces have elements with the same name.\n\n### Using a single element from a namespace\n\n #include <iostream>\n \n namespace animals {\n std::string dog = \"Bobby\";\n std::string cat = \"Lilly\";\n }\n \n int main() {\n using animals::dog;\n \n std::cout << \"Dog's name: \" << dog << '\\n';\n \n return 0;\n }\n \n\n### Using the entire namespace\n\n #include <iostream>\n \n namespace animals {\n std::string dog = \"Bobby\";\n std::string cat = \"Lilly\";\n }\n \n int main() {\n using namespace animals;\n \n std::cout << \"Dog's name: \" << dog << '\\n';\n std::cout << \"Cat's name: \" << cat << '\\n';\n \n return 0;\n }\n \n\nIn conclusion, namespaces are a useful mechanism in C++ to organize code, avoid naming conflicts, and manage the visibility of code elements.",
"links": []
},
"CK7yf8Bo7kfbV6x2tZTrh": {
"title": "Headers / CPP Files",
"description": "Code splitting refers to the process of breaking down a large code base into smaller, more manageable files or modules. This helps improve the organization, maintainability, and readability of the code. In C++, code splitting is generally achieved through the use of separate compilation, header files, and source files.\n\n### Header Files (.h or .hpp)\n\nHeader files, usually with the `.h` or `.hpp` extension, are responsible for declaring classes, functions, and variables that are needed by multiple source files. They act as an interface between different parts of the code, making it easier to manage dependencies and reduce the chances of duplicated code.\n\nExample of a header file:\n\n // example.h\n #ifndef EXAMPLE_H\n #define EXAMPLE_H\n \n class Example {\n public:\n void printMessage();\n };\n \n #endif\n \n\n### Source Files (.cpp)\n\nSource files, with the `.cpp` extension, are responsible for implementing the actual functionality defined in the corresponding header files. They include the header files as needed and provide the function and class method definitions.\n\nExample of a source file:\n\n // example.cpp\n #include \"example.h\"\n #include <iostream>\n \n void Example::printMessage() {\n std::cout << \"Hello, code splitting!\\n\";\n }\n \n\n### Separate Compilation\n\nC++ allows for separate compilation, which means that each source file can be compiled independently into an object file. These object files can then be linked together to form the final executable. This provides faster build times when making changes to a single source file since only that file needs to be recompiled, and the other object files can be reused.\n\nExample of separate compilation and linking:\n\n # Compile each source file into an object file\n g++ -c main.cpp -o main.o\n g++ -c example.cpp -o example.o\n \n # Link object files together to create the executable\n g++ main.o example.o -o my_program\n \n\nBy following the code splitting technique, you can better organize your C++ codebase, making it more manageable and maintainable.",
"links": []
},
"CMlWNQwpywNhO9B6Yj6Me": {
"title": "Structures and Classes",
"description": "Structures and classes are user-defined data types in C++ that allow for the grouping of variables of different data types under a single name. They make it easier to manage and organize complex data by creating objects that have particular attributes and behaviors. The main difference between a structure and a class is their default access specifier: members of a structure are public by default, while members of a class are private.\n\nStructures\n----------\n\nA structure is defined using the `struct` keyword, followed by the structure's name and a set of curly braces `{}` enclosing the members (variables and/or functions) of the structure. The members can be of different data types. To create an object of the structure's type, use the structure name followed by the object name.\n\nHere's an example of defining a structure and creating an object:\n\n struct Employee {\n int id;\n std::string name;\n float salary;\n };\n \n Employee e1; // create an object of the 'Employee' structure\n \n\nYou can access the members of a structure using the dot operator `.`:\n\n e1.id = 1;\n e1.name = \"John Doe\";\n e1.salary = 40000;\n \n\nClasses\n-------\n\nA class is defined using the `class` keyword, followed by the class's name and a set of curly braces `{}` enclosing the members (variables and/or functions) of the class. Like structures, class members can be of different data types. You can create objects of a class using the class name followed by the object name.\n\nHere's an example of a class definition and object creation:\n\n class Student {\n int roll_no;\n std::string name;\n float marks;\n \n public:\n void set_data(int r, std::string n, float m) {\n roll_no = r;\n name = n;\n marks = m;\n }\n \n void display() {\n std::cout << \"Roll no: \" << roll_no\n << \"\\nName: \" << name\n << \"\\nMarks: \" << marks << '\\n';\n }\n };\n \n Student s1; // create an object of the 'Student' class\n \n\nSince the data members of a class are private by default, we cannot access them directly using the dot operator from outside the class. Instead, we use public member functions to set or get their values:\n\n s1.set_data(1, \"Alice\", 95.0);\n s1.display();\n \n\nThat's a brief summary of structures and classes in C++. Remember that while they may seem similar, classes provide more control over data encapsulation and can be used to implement more advanced features like inheritance and polymorphism.",
"links": []
},
"7sdEzZCIoarzznwO4XcCv": {
"title": "Rule of Zero, Five, Three",
"description": "**Rule of Zero, Three, and Five in C++**\n\nThe Rule of Zero, Three, and Five is a set of guidelines for managing object resources in modern C++, related to structures and classes. These rules deal with the default behavior of constructors, destructors, and other special member functions that are necessary for proper resource management.\n\n**Rule of Zero**\n\nThe Rule of Zero states that if a class or structure does not explicitly manage resources, it should not define any of the special member functions, i.e., destructor, copy constructor, copy assignment operator, move constructor, and move assignment operator. The compiler will automatically generate these functions, and the behavior will be correct for managing resources like memory and file handles.\n\n_Example:_\n\n struct MyResource {\n std::string name;\n int value;\n };\n \n\nIn this example, MyResource is a simple structure that does not manage any resources, so it does not define any special member functions. The compiler will generate them automatically, and the behavior will be correct.\n\n**Rule of Three**\n\nThe Rule of Three states that a class or structure that manages resources should define the following three special member functions:\n\n* Destructor\n* Copy constructor\n* Copy assignment operator\n\nThese functions are necessary for proper resource management, such as releasing memory or correctly handling deep copies.\n\n_Example:_\n\n class MyResource {\n public:\n // Constructor and destructor\n MyResource() : data(new int[100]) {} \n ~MyResource() { delete[] data; } \n \n // Copy constructor\n MyResource(const MyResource& other) : data(new int[100]) {\n std::copy(other.data, other.data + 100, data);\n }\n \n // Copy assignment operator\n MyResource& operator=(const MyResource& other) {\n if (&other == this) { return *this; }\n std::copy(other.data, other.data + 100, data);\n return *this;\n }\n \n private:\n int* data;\n };\n \n\nIn this example, MyResource is a class that manages a resource (an array of integers), so it defines the destructor, copy constructor, and copy assignment operator.\n\n**Rule of Five**\n\nThe Rule of Five extends the Rule of Three to include two additional special member functions:\n\n* Move constructor\n* Move assignment operator\n\nModern C++ introduces move semantics, which allows for more efficient handling of resources by transferring ownership without necessarily copying all the data.\n\n_Example:_\n\n class MyResource {\n public:\n // Constructors and destructor\n MyResource() : data(new int[100]) {}\n ~MyResource() { delete[] data; }\n \n // Copy constructor\n MyResource(const MyResource& other) : data(new int[100]) {\n std::copy(other.data, other.data + 100, data);\n }\n \n // Copy assignment operator\n MyResource& operator=(const MyResource& other) {\n if (&other == this) { return *this; }\n std::copy(other.data, other.data + 100, data);\n return *this;\n }\n \n // Move constructor\n MyResource(MyResource&& other) noexcept : data(other.data) {\n other.data = nullptr;\n }\n \n // Move assignment operator\n MyResource& operator=(MyResource&& other) noexcept {\n if (&other == this) { return *this; }\n delete[] data;\n data = other.data;\n other.data = nullptr;\n return *this;\n }\n \n private:\n int* data;\n };\n \n\nIn this example, MyResource is a class that manages a resource (an array of integers), so it defines all five special member functions for proper resource management and move semantics.",
"links": []
},
"WjHpueZDK-d3oDNMVZi9w": {
"title": "Multiple Inheritance",
"description": "Multiple inheritance is a feature in C++ where a class can inherit characteristics (data members and member functions) from more than one parent class. The concept is similar to single inheritance (where a class inherits from a single base class), but in multiple inheritance, a class can have multiple base classes.\n\nWhen a class inherits multiple base classes, it becomes a mixture of their properties and behaviors, and can override or extend them as needed.\n\nSyntax\n------\n\nHere is the syntax to declare a class with multiple inheritance:\n\n class DerivedClass : access-specifier BaseClass1, access-specifier BaseClass2, ...\n {\n // class body\n };\n \n\nThe `DerivedClass` will inherit members from both `BaseClass1` and `BaseClass2`. The `access-specifier` (like `public`, `protected`, or `private`) determines the accessibility of the inherited members.\n\nExample\n-------\n\nHere is an example of multiple inheritance in action:\n\n #include <iostream>\n \n // Base class 1\n class Animal\n {\n public:\n void eat()\n {\n std::cout << \"I can eat!\\n\";\n }\n };\n \n // Base class 2\n class Mammal\n {\n public:\n void breath()\n {\n std::cout << \"I can breathe!\\n\";\n }\n };\n \n // Derived class inheriting from both Animal and Mammal\n class Dog : public Animal, public Mammal\n {\n public:\n void bark()\n {\n std::cout << \"I can bark! Woof woof!\\n\";\n }\n };\n \n int main()\n {\n Dog myDog;\n \n // Calling members from both base classes\n myDog.eat();\n myDog.breath();\n \n // Calling a member from the derived class\n myDog.bark();\n \n return 0;\n }\n \n\nNote\n----\n\nIn some cases, multiple inheritance can lead to complications such as ambiguity and the \"diamond problem\". Ensure that you use multiple inheritance judiciously and maintain well-structured and modular classes to prevent issues.\n\nFor more information on C++ multiple inheritance and related topics, refer to C++ documentation or a comprehensive C++ programming guide.",
"links": []
},
"b3-QYKNcW3LYCNOza3Olf": {
"title": "Object Oriented Programming",
"description": "Object-oriented programming (OOP) is a programming paradigm that uses objects, which are instances of classes, to perform operations and interact with each other. In C++, you can achieve OOP through the use of classes and objects.\n\nClasses\n-------\n\nA class is a blueprint for creating objects. It defines the structure (data members) and behavior (member functions) for a type of object. Here's an example of a simple class:\n\n class Dog {\n public:\n std::string name;\n int age;\n \n void bark() {\n std::cout << name << \" barks!\\n\";\n }\n };\n \n\nThis `Dog` class has two data members: `name` and `age`, and one member function `bark`. You can create an object of this class and access its members like this:\n\n Dog myDog;\n myDog.name = \"Fido\";\n myDog.age = 3;\n myDog.bark(); // Output: Fido barks!\n \n\nEncapsulation\n-------------\n\nEncapsulation is the concept of bundling data and functions that operate on that data within a single unit, such as a class. It helps to hide the internal implementation details of a class and expose only the necessary information and functionalities. In C++, you can use access specifiers like `public`, `private`, and `protected` to control the visibility and accessibility of class members. For example:\n\n class Dog {\n private:\n std::string name;\n int age;\n \n public:\n void setName(std::string n) {\n name = n;\n }\n \n void setAge(int a) {\n age = a;\n }\n \n void bark() {\n std::cout << name << \" barks!\\n\";\n }\n };\n \n\nIn this example, we've made the `name` and `age` data members `private` and added public member functions `setName` and `setAge` to modify them. This way, the internal data of the `Dog` class is protected and only accessible through the provided functions.\n\nInheritance\n-----------\n\nInheritance is the concept of deriving new classes from existing ones, which enables code reusability and organization. In C++, inheritance is achieved by using a colon `:` followed by the base class' access specifier and the base class name. For example:\n\n class Animal {\n public:\n void breathe() {\n std::cout << \"I can breathe\\n\";\n }\n };\n \n class Dog : public Animal {\n public:\n void bark() {\n std::cout << \"Dog barks!\\n\";\n }\n };\n \n\nIn this example, the `Dog` class inherits from the `Animal` class, so the `Dog` class can access the `breathe` function from the `Animal` class. When you create a `Dog` object, you can use both `breathe` and `bark` functions.\n\n Dog myDog;\n myDog.breathe(); // Output: I can breathe\n myDog.bark(); // Output: Dog barks!\n \n\nPolymorphism\n------------\n\nPolymorphism allows you to use a single interface to represent different types. In C++, it's mainly achieved using function overloading, virtual functions, and overriding. For example:\n\n class Animal {\n public:\n virtual void makeSound() {\n std::cout << \"The Animal makes a sound\\n\";\n }\n };\n \n class Dog : public Animal {\n public:\n void makeSound() override {\n std::cout << \"Dog barks!\\n\";\n }\n };\n \n class Cat : public Animal {\n public:\n void makeSound() override {\n std::cout << \"Cat meows!\\n\";\n }\n };\n \n\nIn this example, we have an `Animal` base class with a virtual `makeSound` function. We then derive two classes, `Dog` and `Cat`, which override the `makeSound` function. This enables polymorphic behavior, where an `Animal` pointer or reference can be used to access the correct `makeSound` function depending on the derived class type.\n\n Animal *animals[2] = {new Dog, new Cat};\n animals[0]->makeSound(); // Output: Dog barks!\n animals[1]->makeSound(); // Output: Cat meows!\n \n\nThat's a brief overview of object-oriented programming concepts in C++.",
"links": []
},
"hNBErGNiegLsUJn_vgcOR": {
"title": "Virtual Methods",
"description": "Virtual functions enable runtime polymorphism in C++, allowing derived classes to override base class behavior. When called via a base pointer/reference, the _actual object's type_ determines which function is executed (dynamic dispatch). Non-virtual functions use compile-time resolution based on the pointer/reference type (static dispatch), which prevents overriding.\n\n // Base class with virtual function\n class Animal {\n public:\n virtual void speak() { std::cout << \"Generic sound\"; }\n };\n \n // Derived class override\n class Dog : public Animal {\n public:\n void speak() override { std::cout << \"Woof!\"; } // Dynamic dispatch\n };\n \n\nVisit the following resources to learn more:",
"links": [
{
"title": "C++ Virtual Functions Documentation",
"url": "https://en.cppreference.com/w/cpp/language/virtual",
"type": "article"
},
{
"title": "GeeksforGeeks Virtual Functions Guide",
"url": "https://www.geeksforgeeks.org/virtual-function-cpp/",
"type": "article"
},
{
"title": "Virtual Functions Explained (YouTube)",
"url": "https://www.youtube.com/watch?v=oIV2KchSyGQ&ab_channel=TheCherno",
"type": "video"
}
]
},
"s99ImazcwCgAESxZd8ksa": {
"title": "Virtual Tables",
"description": "",
"links": []
},
"7h1VivjCPDwriL7FirtFv": {
"title": "Dynamic Polymorphism",
"description": "Dynamic polymorphism is a programming concept in object-oriented languages like C++ where a derived class can override or redefine methods of its base class. This means that a single method call can have different implementations based on the type of object it is called on.\n\nDynamic polymorphism is achieved through **virtual functions**, which are member functions of a base class marked with the `virtual` keyword. When you specify a virtual function in a base class, it can be overridden in any derived class to provide a different implementation.\n\nExample\n-------\n\nHere's an example in C++ demonstrating dynamic polymorphism.\n\n #include <iostream>\n \n // Base class\n class Shape {\n public:\n virtual void draw() {\n std::cout << \"Drawing a shape\\n\"; \n }\n };\n \n // Derived class 1\n class Circle : public Shape {\n public:\n void draw() override {\n std::cout << \"Drawing a circle\\n\"; \n }\n };\n \n // Derived class 2\n class Rectangle : public Shape {\n public:\n void draw() override {\n std::cout << \"Drawing a rectangle\\n\";\n }\n };\n \n int main() {\n Shape* shape;\n Circle circle;\n Rectangle rectangle;\n \n // Storing the address of circle\n shape = &circle;\n \n // Call circle draw function\n shape->draw();\n \n // Storing the address of rectangle\n shape = &rectangle;\n \n // Call rectangle draw function\n shape->draw();\n \n return 0;\n }\n \n\nThis code defines a base class `Shape` with a virtual function `draw`. Two derived classes `Circle` and `Rectangle` both override the `draw` function to provide their own implementations. Then in the `main` function, a pointer of type `Shape` is used to call the respective `draw` functions of `Circle` and `Rectangle` objects. The output of this program will be:\n\n Drawing a circle\n Drawing a rectangle\n \n\nAs you can see, using dynamic polymorphism, we can determine at runtime which `draw` method should be called based on the type of object being used.",
"links": []
},
"B2SGBENzUMl0SAjG4j91V": {
"title": "Exception Handling",
"description": "Exception handling in C++ is a mechanism to handle errors, anomalies, or unexpected events that can occur during the runtime execution of a program. This allows the program to continue running or exit gracefully when encountering errors instead of crashing abruptly.\n\nC++ provides a set of keywords and constructs for implementing exception handling:\n\n* `try`: Defines a block of code that should be monitored for exceptions.\n* `catch`: Specifies the type of exception to be caught and the block of code that shall be executed when that exception occurs.\n* `throw`: Throws an exception that will be caught and handled by the appropriate catch block.\n* `noexcept`: Specifies a function that doesn't throw exceptions or terminates the program if an exception is thrown within its scope.\n\nExample\n-------\n\nHere's an example demonstrating the basic usage of exception handling:\n\n #include <iostream>\n \n int divide(int a, int b) {\n if (b == 0) {\n throw \"Division by zero!\";\n }\n return a / b;\n }\n \n int main() {\n int num1, num2;\n \n std::cout << \"Enter two numbers for division: \";\n std::cin >> num1 >> num2;\n \n try {\n int result = divide(num1, num2);\n std::cout << \"The result is: \" << result << '\\n';\n } catch (const char* msg) {\n std::cerr << \"Error: \" << msg << '\\n';\n }\n \n return 0;\n }\n \n\nIn this example, we define a function `divide` that throws an exception if `b` is zero. In the `main` function, we use a `try` block to call `divide` and output the result. If an exception is thrown, it is caught inside the `catch` block, which outputs an error message. This way, we can handle the error gracefully rather than letting the program crash when attempting to divide by zero.\n\nStandard Exceptions\n-------------------\n\nC++ provides a standard set of exception classes under the `<stdexcept>` library which can be used as the exception type for more specific error handling. Some of these classes include:\n\n* `std::exception`: Base class for all standard exceptions.\n* `std::logic_error`: Represents errors which can be detected statically by the program.\n* `std::runtime_error`: Represents errors occurring during the execution of a program.\n\nHere's an example showing how to use standard exceptions:\n\n #include <iostream>\n #include <stdexcept>\n \n int divide(int a, int b) {\n if (b == 0) {\n throw std::runtime_error(\"Division by zero!\");\n }\n return a / b;\n }\n \n int main() {\n int num1, num2;\n \n std::cout << \"Enter two numbers for division: \";\n std::cin >> num1 >> num2;\n \n try {\n int result = divide(num1, num2);\n std::cout << \"The result is: \" << result << '\\n';\n } catch (const std::exception& e) {\n std::cerr << \"Error: \" << e.what() << '\\n';\n }\n \n return 0;\n }\n \n\nIn this example, we modified the `divide` function to throw a `std::runtime_error` instead of a simple string. The catch block now catches exceptions derived from `std::exception` and uses the member function `what()` to display the error message.",
"links": []
},
"oWygnpwHq2poXQMTTSCpl": {
"title": "Exit Codes",
"description": "Exit codes, also known as \"return codes\" or \"status codes\", are numeric values that a program returns to the calling environment (usually the operating system) when it finishes execution. These codes are used to indicate the success or failure of a program's execution.\n\n0 is the standard exit code for a successful execution, while non-zero exit codes typically indicate errors or other exceptional situations. The actual meanings of non-zero exit codes can vary between different applications or systems.\n\nIn C++, you can return an exit code from the `main` function by using the `return` statement, or you can use the `exit()` function, which is part of the C++ Standard Library.\n\nExample: Using return in `main`\n-------------------------------\n\n #include <iostream>\n \n int main() {\n // Some code here...\n \n if (/*some error condition*/) {\n std::cout << \"An error occurred.\\n\";\n return 1;\n }\n \n // More code here...\n \n if (/*another error condition*/) {\n std::cout << \"Another error occurred.\\n\";\n return 2;\n }\n \n return 0; // Successful execution\n }\n \n\nExample: Using the `exit()` function\n------------------------------------\n\n #include <iostream>\n #include <cstdlib>\n \n void some_function() {\n // Some code here...\n \n if (/*some error condition*/) {\n std::cout << \"An error occurred.\\n\";\n std::exit(1);\n }\n \n // More code here...\n }\n \n int main() {\n some_function();\n \n // Some other code here...\n \n return 0; // Successful execution\n }\n \n\nIn both examples above, the program returns exit codes depending on different error conditions encountered during execution. The codes 1 and 2 are used to distinguish between the two error conditions.",
"links": []
},
"NJud5SXBAUZ6Sr78kZ7jx": {
"title": "Exceptions",
"description": "Exception handling is a method used to tackle runtime errors so that normal flow of the program can be maintained. In C++, this is accomplished using three keywords: `try`, `catch`, and `throw`.\n\ntry { ... }\n-----------\n\nIn the `try` block, you write the code that can possibly generate an exception. If an exception is encountered, the control is passed to the relevant `catch` block to handle the issue.\n\nExample:\n\n try {\n // code that might throw an exception\n }\n \n\ncatch (...) { ... }\n-------------------\n\nThe `catch` block follows the `try` block and is responsible for handling the exceptions thrown by the `try` block. There can be multiple `catch` blocks to handle different types of exceptions.\n\nExample:\n\n catch (int e) {\n // handle exception of type int\n }\n catch (char e) {\n // handle exception of type char\n }\n catch (...) {\n // handle any other exception\n }\n \n\nthrow ... ;\n-----------\n\nIn case an error occurs within the `try` block, you can use the `throw` keyword to generate an exception of the specific type. This will then be caught and handled by the corresponding `catch` block.\n\nExample:\n\n try {\n int num1 = 10, num2 = 0;\n if (num2 == 0) {\n throw \"Division by zero not allowed!\";\n } else {\n int result = num1 / num2;\n std::cout << \"Result: \" << result << '\\n';\n }\n }\n catch (const char* e) {\n std::cout << \"Error: \" << e << '\\n';\n }\n \n\nIn summary, exception handling in C++ is a technique to handle runtime errors while maintaining the normal flow of the program. The `try`, `catch`, and `throw` keywords are used together to create the structure to deal with exceptions as they occur.",
"links": []
},
"y4-P4UNC--rE1vni8HdTn": {
"title": "Access Violations",
"description": "An access violation is a specific type of error that occurs when a program attempts to access an illegal memory location. In C++, access violations are most commonly caused by:\n\n* **Dereferencing a null or invalid pointer.**\n* **Accessing an array out of bounds.**\n* **Reading or writing to memory freed by the user or the operating system.**\n\nIt is crucial to identify access violations because they can lead to unpredictable behavior, application crashes, or corruption of data.\n\nSome examples of access violations are:\n\nDereferencing null or invalid pointer\n-------------------------------------\n\n int *p = nullptr;\n int x = *p; // Access violation: trying to access null pointer's content\n \n\nAccessing an array out of bounds\n--------------------------------\n\n int arr[5] = {1, 2, 3, 4, 5};\n int y = arr[5]; // Access violation: index out of bounds (valid indices are 0-4)\n \n\nReading or writing to freed memory\n----------------------------------\n\n int* p2 = new int[10];\n delete[] p2;\n p2[3] = 42; // Access violation: writing to memory that has been freed\n \n\n### Debugging Access Violations\n\nTools like _debuggers_, _static analyzers_, and _profilers_ can help identify access violations in your code. For example:\n\n* **Microsoft Visual Studio**: Use the built-in debugger to identify the line of code responsible for the access violation error.\n \n* **Valgrind**: A popular Linux tool that detects memory leaks and access violations in your C++ programs.\n \n* **AddressSanitizer**: A runtime memory error detector for C++ that can detect out-of-bounds accesses, memory leaks, and use-after-free errors.",
"links": []
},
"-6fwJQOfsorgHkoQGp4T3": {
"title": "Language Concepts",
"description": "C++ is a powerful, high-level, object-oriented programming language that offers several key language concepts. These concepts provide the foundation upon which you can build efficient, reliable, and maintainable programs. Here's a brief summary of some important language concepts in C++.\n\nVariables and Data Types\n------------------------\n\nC++ provides various fundamental data types such as `int`, `float`, `double`, `char`, and `bool` to declare and manipulate variables in a program.\n\nExample:\n\n int age = 25;\n float height = 1.7f;\n double salary = 50000.0;\n char grade = 'A';\n bool isEmployed = true;\n \n\nControl Structures\n------------------\n\nControl structures enable you to control the flow of execution of a program. Key control structures in C++ include:\n\n* Conditional statement: `if`, `else`, and `else if`\n* Loop constructs: `for`, `while`, and `do-while`\n* Switch-case construct\n\nExample:\n\n // If-else statement\n if (age > 18) {\n std::cout << \"You are eligible to vote.\";\n } else {\n std::cout << \"You are not eligible to vote.\";\n }\n \n // For loop\n for (int i = 0; i < 5; i++) {\n std::cout << \"Hello World!\";\n }\n \n\nFunctions\n---------\n\nFunctions in C++ allow you to break down a large program into small, manageable, and reusable pieces of code.\n\nExample:\n\n int add(int a, int b) {\n return a + b;\n }\n \n int main() {\n int sum = add(10, 20);\n std::cout << \"The sum is: \" << sum;\n return 0;\n }\n \n\nArrays and Vectors\n------------------\n\nArrays and Vectors are commonly used data structures to store and manipulate a collection of elements of the same datatype.\n\nExample:\n\n // Array\n int marks[] = {90, 80, 95, 85};\n \n // Vector\n std::vector<int> scores = {10, 20, 30, 40};\n \n\nPointers\n--------\n\nPointers are variables that store memory addresses of other variables. They enable more efficient handling of memory, and are useful for working with dynamic data structures.\n\nExample:\n\n int num = 10;\n int* p = &num; // p stores the address of num\n \n\nStructures and Classes\n----------------------\n\nStructures and Classes are user-defined data types that allow grouping of variables and functions under a single name.\n\nExample:\n\n // Structure\n struct Student {\n std::string name;\n int age;\n };\n \n // Class\n class Employee {\n public:\n std::string name;\n int age;\n void displayInfo() {\n std::cout << \"Name: \" << name << \"\\nAge: \" << age;\n }\n };\n \n\nInheritance and Polymorphism\n----------------------------\n\nInheritance is a mechanism that allows a class to inherit properties and methods from a base class. Polymorphism enables you to use a base class type to represent derived class objects.\n\nExample:\n\n class Base {\n public:\n void display() {\n std::cout << \"This is the base class.\";\n }\n };\n \n class Derived : public Base {\n public:\n void display() {\n std::cout << \"This is the derived class.\";\n }\n };\n \n\nException Handling\n------------------\n\nC++ provides a mechanism to handle exceptions(runtime errors) gracefully using `try`, `catch`, and `throw` constructs.\n\nExample:\n\n try {\n // Code that might throw an exception\n int result = a / b;\n } catch (const exception &e) {\n std::cout << \"Caught an exception: \" << e.what();\n }\n \n\nThese are some of the key language concepts in C++, which will help you to understand the language better and develop efficient and maintainable applications.",
"links": []
},
"CG01PTVgHtjfKvsJkJLGl": {
"title": "auto (Automatic Type Deduction)",
"description": "**Auto**\n\n`auto` is a keyword in C++ language introduced in C++11, which is used for automatic type deduction. It automatically deduces the type of a variable from the type of its initializer expression at compile time.\n\nThe `auto` keyword is useful when you are dealing with complex types or when the type of a variable is hard to predict. It can help in writing cleaner and less error-prone code.\n\nHere's a simple example of using `auto` for type deduction:\n\n #include <iostream>\n #include <vector>\n \n int main() {\n // Traditional way of declaring a variable:\n int myInt = 5;\n \n // Using auto for type deduction:\n auto myAutoInt = 5; // Automatically deduces the type as 'int'\n \n // Example with more complex types:\n std::vector<int> myVector = {1, 2, 3, 4, 5};\n \n // Without auto, iterating the vector would look like this:\n for (std::vector<int>::iterator it = myVector.begin(); it != myVector.end(); ++it) {\n std::cout << *it << '\\n';\n }\n \n // With auto, the iterator declaration becomes simpler:\n for (auto it = myVector.begin(); it != myVector.end(); ++it) {\n std::cout << *it << '\\n';\n }\n }\n \n\nKeep in mind that `auto` deduces the type based on the initializer expression, so if you don't provide an initial value, you will get a compile-time error:\n\n auto myVar; // Error: Cannot deduce the type without initializer\n \n\nIn C++14, you can also use `auto` with function return types to let the compiler automatically deduce the return type based on the returned expression:\n\n auto add(int x, int y) {\n return x + y; // The compiler deduces the return type as 'int'\n }",
"links": []
},
"PiMhw1oP9-NZEa6I9u4lX": {
"title": "Type Casting",
"description": "Type casting is the process of converting a value from one data type to another. In C++, there are four different methods of type casting:\n\n* **C-style casting**: It is the syntax inherited from C, and it is done by simply putting the target data type in parentheses before the value to cast. Example:\n \n int a = 10;\n float b = (float)a; // C-style cast from int to float\n \n \n* **`static_cast`**: This is the most commonly used method for type casting in C++. It is performed at compile time, and you should use it when you have an explicit conversion between data types. Example:\n \n int a = 10;\n float b = static_cast<float>(a); // static_cast from int to float\n \n \n* **`dynamic_cast`**: This method is specifically used for safely converting pointers and references between base and derived classes in a class hierarchy. Example:\n \n class Base {};\n class Derived : public Base {};\n \n Base* base_ptr = new Derived();\n Derived* derived_ptr = dynamic_cast<Derived*>(base_ptr); // dynamic_cast from Base* to Derived*\n \n \n* **`reinterpret_cast`**: This cast changes the type of a pointer, reference, or an integer value. It is also called a bitwise cast because it changes how the compiler interprets the underlying bits. Use `reinterpret_cast` only when you have a deep understanding of what you're doing, as it does not guarantee that the resulting value will be meaningful. Example:\n \n int* a = new int(42);\n long b = reinterpret_cast<long>(a); // reinterpret_cast from int* to long\n \n \n* **`const_cast`**: This casting method is used to remove the `const` qualifier from a variable. It is generally not recommended, but can be useful in certain situations where you have no control over the constness of a variable. Example:\n \n const int a = 10;\n int* ptr = const_cast<int*>(&a); // const_cast from const int* to int*\n *ptr = 20; // Not recommended, use with caution\n \n \n\nRemember to use the right type of casting based on the specific situation and follow good programming practices in order to ensure a safe and efficient code.\n\nLearn more from the following resources:",
"links": [
{
"title": "Casting in C++",
"url": "https://youtu.be/pWZS1MtxI-A",
"type": "video"
}
]
},
"_XB2Imyf23-6AOeoNLhYQ": {
"title": "static_cast",
"description": "`static_cast` is one of the casting operators in C++ that allows you to convert between different data types, such as integer and float, or between pointer types. This type of cast performs a compile-time check and gives an error if there is no valid conversion possible between given types. `static_cast` is generally safer than C-style casts since it does not perform an unsafe reinterpretation of data and allows for better type checking.\n\nSyntax\n------\n\nThe syntax for `static_cast` is as follows:\n\n static_cast<new_type>(expression)\n \n\nExamples\n--------\n\n* Converting between basic data types:\n\n int i = 42;\n float f = static_cast<float>(i); // Converts integer i to float f\n \n\n* Casting pointers of different object types in an inheritance hierarchy:\n\n class Base { /* ... */ };\n class Derived : public Base { /* ... */ };\n \n Base *bPtr = new Derived;\n Derived *dPtr = static_cast<Derived *>(bPtr); // Converts Base pointer bPtr to Derived pointer dPtr\n \n\n* Converting an integer to an enumeration:\n\n enum Color { RED, GREEN, BLUE };\n int value = 1;\n Color color = static_cast<Color>(value); // Converts integer value to corresponding Color enumeration\n \n\nKeep in mind that `static_cast` should be used with caution when casting pointers between different object types. If the original type of the pointer does not match the target type, the result of the cast can be incorrect or cause unexpected behavior.",
"links": []
},
"5g22glc97siQOcTkHbwan": {
"title": "const_cast",
"description": "`const_cast` is a type of casting in C++ that allows you to remove or add constness to a variable. In other words, it enables you to modify a `const` or `volatile` object, or change a pointer or reference to a `const` or `volatile` type. This is useful in certain scenarios when you need to pass a `const` variable as an argument or when a function parameter requires a non-const type, but you want to make sure the variable remains constant throughout the code.\n\nKeep in mind that using `const_cast` to modify a truly `const` variable can lead to undefined behavior, so it is best to use this feature only when absolutely necessary.\n\nExample\n-------\n\nHere's a code example showing how to use `const_cast`:\n\n #include <cassert>\n #include <iostream>\n \n void modifyVariable(int* ptr) {\n *ptr = 42;\n }\n \n int main() {\n const int original_value = 10;\n int* non_const_value_ptr = const_cast<int*>(&original_value);\n std::cout << \"Original value: \" << original_value << '\\n';\n \n modifyVariable(non_const_value_ptr);\n std::cout << \"Modified value: \" << *non_const_value_ptr << \", original_value: \" << original_value << '\\n';\n \n assert(non_const_value_ptr == &original_value);\n \n return 0;\n }\n \n \n\nIn this example, we first create a `const` variable, `original_value`. Then we use `const_cast` to remove the constness of the variable and assign it to a non-const pointer, `non_const_value_ptr`. The `modifyVariable` function takes an `int*` as an argument and modifies the value pointed to by the pointer, which would not have been possible if we passed the original `const int` directly. Finally, we print the `original_value` and the `*non_const_value_ptr`, which shows that the value has been modified using `const_cast`.\n\nPlease note that this example comes with some risks, as it touches undefined behavior. \\*/",
"links": []
},
"4BdFcuQ5KNW94cu2jz-vE": {
"title": "dynamic_cast",
"description": "`dynamic_cast` is a type of casting operator in C++ that is used specifically for polymorphism. It safely converts pointers and references of a base class to its derived class and checks the validity of the conversion during runtime. If the conversion is not valid (i.e., the object is not of the target type), it returns a null pointer instead of producing undefined behavior. Therefore, `dynamic_cast` can prevent potential crashes and errors when using polymorphism.\n\nHere is a basic example of how `dynamic_cast` can be used:\n\n #include <iostream>\n \n class BaseClass {\n public:\n virtual void display() {\n std::cout << \"BaseClass\\n\";\n }\n };\n \n class DerivedClass : public BaseClass {\n public:\n void display() {\n std::cout << \"DerivedClass\\n\";\n }\n };\n \n int main() {\n BaseClass *basePtr = new DerivedClass(); // Upcasting\n DerivedClass *derivedPtr;\n \n derivedPtr = dynamic_cast<DerivedClass *>(basePtr); // Downcasting\n if (derivedPtr) {\n derivedPtr->display(); // Output: DerivedClass\n } else {\n std::cout << \"Invalid type conversion.\";\n }\n \n delete basePtr;\n return 0;\n }\n \n\nIn this example, a pointer to a `DerivedClass` object is assigned to a `BaseClass` pointer (`basePtr`). Then, we attempt to downcast it back to a `DerivedClass` pointer using `dynamic_cast`. If the casting is successful, we can access the `DerivedClass` functionality through the new pointer (`derivedPtr`).",
"links": []
},
"ZMyFDJrpCauGrY5NZkOwg": {
"title": "reinterpret_cast",
"description": "`reinterpret_cast` is a type of casting in C++ that allows you to change the type of a pointer or an integer without altering the representation of the data. It is generally used when the conversion required is too low-level or not supported by other casting methods, such as `static_cast`.\n\nUsing `reinterpret_cast` should be handled with care, as it can lead to undefined behavior and severe problems if used incorrectly.\n\nHere's an example of usage:\n\n #include <iostream>\n \n int main() {\n int num = 42;\n int *num_ptr = &num;\n \n // Disguise the integer pointer as a char pointer\n char *char_ptr = reinterpret_cast<char *>(num_ptr);\n \n for (size_t i = 0; i < sizeof(int); ++i) {\n // Print the individual bytes of the integer as characters\n std::cout << \"Byte \" << i << \": \" << char_ptr[i] << '\\n';\n }\n \n return 0;\n }\n \n\nIn this example, we're using `reinterpret_cast` to change the type of a pointer from `int *` to `char *`, effectively treating the integer as an array of characters and printing each byte.\n\nRemember that when using `reinterpret_cast`, you should be cautious about dereferencing the converted pointers. The behavior can be unpredictable, and it can lead to issues, such as accessing memory regions that are not intended to be accessed. `reinterpret_cast` should be used sparingly and only when a low-level conversion is necessary.",
"links": []
},
"IDOlquv6jlfecwQoBwkGZ": {
"title": "Undefined Behavior (UB)",
"description": "**Undefined Behavior**\n----------------------\n\nUndefined behavior in C++ refers to a situation where a program's behavior cannot be predicted due to any violation of the language rules. It is a result of various factors like uninitialized variables, using pointers to deallocated memory, out-of-bounds memory access, etc. The C++ standard does not define the behavior in such cases, which means the compiler or the runtime system is free to handle these situations in any way it wants.\n\nSome common examples of Undefined Behavior are:\n\n* **Uninitialized Variables**: Accessing the value of an uninitialized variable can lead to undefined behavior. The value of an uninitialized variable is arbitrary and depends on what was in the memory location before the variable was declared.\n \n int x;\n int y = x + 5; // Undefined behavior since x is uninitialized\n \n \n* **Out-of-bounds Memory Access**: Accessing memory outside the boundaries of an array or buffer may result in undefined behavior.\n \n int arr[5];\n int val = arr[5]; // Undefined behavior since the valid indices are 0 to 4\n \n \n* **Null Pointer Dereference**: Dereferencing a null pointer may lead to undefined behavior.\n \n int *ptr = nullptr;\n int val = *ptr; // Undefined behavior since ptr is a null pointer\n \n \n* **Division by Zero**: Performing a division operation by zero is undefined behavior in C++.\n \n int x = 5;\n int y = 0;\n int z = x / y; // Undefined behavior since division by zero is not allowed\n \n \n\nIt is crucial to detect and fix the root cause of undefined behavior in your programs since it can lead to unpredictable results, data corruption, and security vulnerabilities. To mitigate undefined behavior, you can utilize tools like static code analyzers, dynamic analysis tools, and compiler options that help detect potential issues.",
"links": []
},
"YSWN7nS8vA9nMldSUrZRT": {
"title": "Argument Dependent Lookup (ADL)",
"description": "Argument Dependent Lookup (ADL) or Koenig Lookup is a mechanism in C++ that allows the compiler to search for the appropriate function to call based on the types of arguments provided. It is particularly helpful when using overloaded functions or operators in a namespace.\n\nADL allows the compiler to find functions in the same namespace as the arguments, even if the function is not declared at the point of use or within the namespace provided. This is especially useful when working with templates or generic programming.\n\nExample\n-------\n\nConsider the following example using a namespace and overloaded `operator<<()`:\n\n namespace MyNamespace {\n class MyClass {\n public:\n int value;\n };\n \n std::ostream& operator<<(std::ostream& os, const MyClass& obj) {\n os << \"MyClass: \" << obj.value;\n return os;\n }\n }\n \n int main() {\n MyNamespace::MyClass obj;\n obj.value = 42;\n using std::cout; // Required to use 'cout' without fully qualifying it.\n cout << obj << '\\n'; // ADL is used to find the correct overloaded 'operator<<'.\n }\n \n\nIn this example, when you call `cout << obj;` in `main()`, ADL is used to find the correct `operator<<()` in the `MyNamespace` namespace because the argument `obj` is of type `MyNamespace::MyClass`.",
"links": []
},
"Lt7ss59KZw9Jwqj234jm2": {
"title": "Name Mangling",
"description": "Name mangling, also known as name decoration, is a technique used by compilers to encode additional information about the scope, type, linkage, or other identifying information of an identifier (function names, variable names, etc.) within its name. The primary purpose of name mangling is to support function overloading, which allows multiple functions with the same name but different parameter lists to coexist in a single program.\n\nIn C++, the compiler generates a mangled name for each function and variable based on their scopes and types. The mangled name is usually formed by concatenating the original name, parameter types, and other information, often using a prefix or suffix.\n\nFor example, suppose you have the following function:\n\n int add(int a, int b)\n {\n return a + b;\n }\n \n\nThe compiler might generate a mangled name such as `_Z3addii`, which encodes the function name `add` and its two `int` parameters.\n\nThe exact rules for name mangling are implementation and platform dependent. Different compilers may mangle names differently, which can lead to incompatibilities when attempting to link together object files or libraries compiled with different compilers.\n\nSome tools, such as c++filt (included in GCC and Clang), can be used to demangle a mangled name back to the original identifier, which can be useful when debugging or working with symbol tables.\n\n $ echo \"_Z3addii\" | c++filt\n add(int, int)\n \n\nIn general, it is not necessary for you to understand the details of name mangling when writing code in C++, as the compiler handles it automatically. However, it can affect program behavior in some cases, such as when using external libraries or linking object files from different compilers.",
"links": []
},
"zKdlfZTRHwjtmRUGW9z9-": {
"title": "Macros",
"description": "Macros are preprocessing directives in C++ used by the preprocessor to perform text substitution. They are defined using the `#define` directive, followed by the macro name and the value to be substituted.\n\nMacros can be used to define constants, create function-like macros, or perform conditional compilation.\n\nConstant Macros\n---------------\n\nConstant macros are used to define symbolic constants for use in code. They do not use any memory and are replaced by the preprocessor before the compilation process.\n\nExample:\n\n #define PI 3.14159\n \n\nThis macro defines a symbolic constant `PI`. You can use it in your code as if it were a regular variable.\n\n double circumference = 2 * PI * radius;\n \n\nFunction-like Macros\n--------------------\n\nFunction-like macros are similar to regular functions. They take a list of arguments and perform text substitution.\n\nExample:\n\n #define SQUARE(x) ((x) * (x))\n \n\nThis macro defines a function-like macro `SQUARE` that calculates the square of a number.\n\n int square_of_five = SQUARE(5); // expands to ((5) * (5))\n \n\nConditional Compilation\n-----------------------\n\nMacros can be used for conditional compilation using the `#ifdef`, `#ifndef`, `#if`, `#else`, `#elif`, and `#endif` directives.\n\nExample:\n\n #define DEBUG_MODE\n \n #ifdef DEBUG_MODE\n // Code to be compiled only in debug mode\n #else\n // Code to be compiled only if DEBUG_MODE is not defined\n #endif\n \n\nThis example demonstrates how you can use macros to control the parts of code that are being compiled, depending on the presence or absence of a macro definition.",
"links": []
},
"DHdNBP7_ixjr6h-dIQ7g6": {
"title": "Standard Library + STL",
"description": "The C++ Standard Template Library (STL) is a collection of header files that provide several data structures, algorithms, and functions to simplify your C++ coding experience. The primary purpose of the STL is to save time and increase efficiency by providing a ready-to-use set of useful tools. The most commonly used features of the STL can be divided into three main categories: containers, algorithms, and iterators.\n\nContainers\n----------\n\nContainers are the data structures used for data storage and manipulation in C++. They are classified into four types: sequence containers, associative containers, unordered associative containers, and container adaptors.\n\n* **Sequence Containers**: These are linear data structures that store elements in a sequential manner. Examples include:\n \n * `std::vector`: A dynamic array that grows and shrinks at runtime.\n \n std::vector<int> my_vector;\n \n \n * `std::list`: A doubly linked list.\n \n std::list<int> my_list;\n \n \n * `std::deque`: A double-ended queue allowing insertion and deletion at both ends.\n \n std::deque<int> my_deque;\n \n \n* **Associative Containers**: These containers store data in a sorted manner with unique keys. Examples include:\n \n * `std::set`: A collection of unique elements sorted by keys.\n \n std::set<int> my_set;\n \n \n * `std::map`: A collection of key-value pairs sorted by keys.\n \n std::map<std::string, int> my_map;\n \n \n* **Unordered Associative Containers**: These containers store data in an unordered manner using hash tables. Examples include:\n \n * `std::unordered_set`: A collection of unique elements in no specific order.\n \n std::unordered_set<int> my_unordered_set;\n \n \n * `std::unordered_map`: A collection of key-value pairs in no specific order.\n \n std::unordered_map<std::string, int> my_unordered_map;\n \n \n* **Container Adaptors**: These are containers based on other existing containers. Examples include:\n \n * `std::stack`: A LIFO data structure based on deque or list.\n \n std::stack<int> my_stack;\n \n \n * `std::queue`: A FIFO data structure based on deque or list.\n \n std::queue<int> my_queue;\n \n \n * `std::priority_queue`: A sorted queue based on vector or deque.\n \n std::priority_queue<int> my_priority_queue;\n \n \n\nAlgorithms\n----------\n\nThe STL provides several generic algorithms that can be used to perform various operations on the data stored in containers. They are divided into five categories: non-modifying sequence algorithms, modifying sequence algorithms, sorting algorithms, sorted range algorithms, and numeric algorithms.\n\nSome examples include `std::find`, `std::replace`, `std::sort`, and `std::binary_search`.\n\nFor example, to sort a vector, you can use the following code:\n\n std::vector<int> my_vec = {4, 2, 5, 1, 3};\n std::sort(my_vec.begin(), my_vec.end());\n \n\nIterators\n---------\n\nIterators are a fundamental concept in the STL, as they provide a unified way to access elements in containers. Iterators can be thought of as an advanced form of pointers.\n\nEach container has its own iterator type, which can be used to traverse elements and modify values. The most common iterator operations are `begin()` and `end()` for getting iterators pointing to the first and one past the last element of a container, respectively.\n\nFor example, to iterate through a vector and print its elements, you can use the following code:\n\n std::vector<int> my_vec = {1, 2, 3, 4, 5};\n for (auto it = my_vec.begin(); it != my_vec.end(); ++it) {\n std::cout << *it << \" \";\n }\n \n\nThis is just a brief overview of the C++ Standard Template Library. There are many other features and functions available in the STL, and familiarizing yourself with them is crucial for efficient C++ programming.\n\nLearn more from the following resources:",
"links": [
{
"title": "Mastering STL in C++23: New Features, Updates, and Best Practices",
"url": "https://simplifycpp.org/books/Mastering_STL.pdf",
"type": "article"
},
{
"title": "C++ Standard Template Library (STL) Short Overview",
"url": "https://www.youtube.com/watch?v=Id6ZEb_Lg58",
"type": "video"
}
]
},
"Ebu8gzbyyXEeJryeE0SpG": {
"title": "Iterators",
"description": "Iterators are objects in the C++ Standard Library (`STL`) that help us traverse containers like arrays, lists, and vectors. Essentially, they act as a bridge between container classes and algorithms. Iterators behave similar to pointers but provide a more generalized and abstract way of accessing elements in a container.\n\nThere are different types of iterators which you would encounter depending on their use cases:\n\n* **Input Iterator**: Used to read elements in a container only once, in a forward direction. They cannot modify elements.\n\nExample:\n\n std::vector<int> nums = {1, 2, 3, 4};\n std::istream_iterator<int> input(std::cin);\n std::copy(input, std::istream_iterator<int>(), std::back_inserter(nums));\n \n\n* **Output Iterator**: Used to write elements in a container only once, in a forward direction. They cannot re-write elements.\n\nExample:\n\n std::vector<int> nums = {1, 2, 3, 4};\n std::ostream_iterator<int> output(std::cout, \", \");\n std::copy(nums.begin(), nums.end(), output);\n \n\n* **Forward Iterator**: Similar to input iterators but can be used for multiple passes over the elements in a container. They cannot move backward.\n\nExample:\n\n std::forward_list<int> nums = {1, 2, 3, 4};\n std::forward_list<int>::iterator itr = nums.begin();\n while (itr != nums.end()) {\n std::cout << *itr << \" \";\n ++itr;\n }\n \n\n**Reverse Iterator**: Similar to input iterators but can be used for multiple passes over the elements in a container. They cannot move forward.\n\nExample:\n\n std::list<int> nums = {1, 2, 3, 4};\n std::list<int>::reverse_iterator itr = nums.rbegin();\n while (itr != nums.rend()) {\n std::cout << *itr << \" \";\n ++itr;\n }\n \n\n* **Bidirectional Iterator**: These iterators offer the ability to move both forward and backward in a container. List and set containers have bi-directional iterators.\n\nExample:\n\n std::list<int> nums = {1, 2, 3, 4};\n std::list<int>::iterator itr;\n for (itr = nums.begin(); itr != nums.end(); ++itr) {\n std::cout << *itr << \" \";\n }\n for (--itr; itr != nums.begin(); --itr) {\n std::cout << *itr << \" \";\n }\n \n\n* **Random Access Iterator**: These iterators provide the most flexible ways to access elements in a container. They can move forwards, backwards, jump directly to other elements, and access elements at a given index.\n\nExample:\n\n std::vector<int> nums = {1, 2, 3, 4};\n std::vector<int>::iterator itr;\n for (itr = nums.begin(); itr != nums.end(); ++itr) {\n std::cout << *itr << \" \";\n }\n for (itr -= 1; itr != nums.begin() - 1; --itr) {\n std::cout << *itr << \" \";\n }\n \n\nFor most cases, you would want to start with the `auto` keyword and the appropriate container methods (like `begin()` and `end()`) to work with iterators.\n\nExample:\n\n std::vector<int> nums = {1, 2, 3, 4};\n for (auto itr = nums.begin(); itr != nums.end(); ++itr) {\n std::cout << *itr << \" \";\n }\n \n\nWhen working with algorithms, remember that the C++ Standard Library provides various algorithms that already utilize iterators for tasks like searching, sorting, and manipulating elements.",
"links": []
},
"VeVxZ230xkesQsIDig8zQ": {
"title": "iostream",
"description": "`iostream` is a header in the C++ Standard Library that provides functionality for basic input and output (I/O) operations. The I/O streams facilitate communication between your program and various sources, such as the console, files, or other programs.\n\n`iostream` includes the following classes:\n\n* `istream`: for input operations from an input source.\n* `ostream`: for output operations to an output target.\n* `iostream`: a combination of `istream` and `ostream` for both input and output operations.\n\nThese classes inherit from base classes `ios` and `ios_base`.\n\nAdditionally, `iostream` defines several objects that are instances of these classes and represent the standard input and output streams:\n\n* `cin`: an `istream` object to read from the standard input, typically corresponding to the keyboard.\n* `cout`: an `ostream` object to write to the standard output, typically the console.\n* `cerr`: an `ostream` object to write to the standard error output, typically used for displaying error messages.\n* `clog`: an `ostream` object, similar to `cerr`, but its output can be buffered.\n\nHere are some code examples on using `iostream` for input and output operations:\n\n #include <iostream>\n \n int main() {\n int a;\n std::cout << \"Enter a number: \";\n std::cin >> a;\n std::cout << \"You entered: \" << a << '\\n';\n return 0;\n }\n \n\n #include <iostream>\n \n int main() {\n std::cerr << \"An error occurred.\\n\";\n std::clog << \"Logging information.\\n\";\n return 0;\n }\n \n\nRemember to include the `iostream` header when using these features:\n\n #include <iostream>",
"links": []
},
"whyj6Z4RXFsVQYRfYYn7B": {
"title": "Algorithms",
"description": "The Standard Template Library (STL) in C++ provides a collection of generic algorithms that are designed to work with various container classes. These algorithms are implemented as functions and can be applied to different data structures, such as arrays, vectors, lists, and others. The primary header file for algorithms is `<algorithm>`.\n\nKey Concepts\n------------\n\nSorting\n-------\n\nSorting refers to arranging a sequence of elements in a specific order. The STL provides several sorting algorithms, such as `std::sort`, `std::stable_sort`, and `std::partial_sort`.\n\n### std::sort\n\n`std::sort` is used to sort a range of elements \\[first, last) in non-descending order (by default). You can also use custom comparison functions or lambda expressions to change the sorting order.\n\nExample:\n\n #include <algorithm>\n #include <vector>\n #include <iostream>\n \n int main() {\n std::vector<int> nums = {10, 9, 8, 7, 6, 5};\n std::sort(nums.begin(), nums.end());\n \n for (int num : nums) {\n std::cout << num << ' ';\n }\n // Output: 5 6 7 8 9 10\n }\n \n\nSearching\n---------\n\nSearching refers to finding if a particular element is present within a given range of elements. STL provides various searching algorithms, such as `std::find`, `std::binary_search`, and `std::find_if`.\n\n### std::find\n\n`std::find` is used to find the iterator of the first occurrence of a given value within the range \\[first, last).\n\nExample:\n\n #include <algorithm>\n #include <vector>\n #include <iostream>\n \n int main() {\n std::vector<int> nums = {5, 6, 7, 8, 9, 10};\n auto it = std::find(nums.begin(), nums.end(), 9);\n \n if (it != nums.end()) {\n std::cout << \"Found 9 at position: \" << (it - nums.begin());\n } else {\n std::cout << \"9 not found\";\n }\n // Output: Found 9 at position: 4\n }\n \n\nModifying Sequences\n-------------------\n\nThe STL also provides algorithms for modifying sequences, such as `std::remove`, `std::replace`, and `std::unique`.\n\n### std::remove\n\n`std::remove` is used to remove all instances of a value from a container within the given range \\[first, last). Note that the function does not resize the container after removing elements.\n\nExample:\n\n #include <algorithm>\n #include <vector>\n #include <iostream>\n \n int main() {\n std::vector<int> nums = {5, 6, 7, 6, 8, 6, 9, 6, 10};\n nums.erase(std::remove(nums.begin(), nums.end(), 6), nums.end());\n \n for (int num : nums) {\n std::cout << num << ' ';\n }\n // Output: 5 7 8 9 10\n }\n \n\nSummary\n-------\n\nSTL algorithms in C++ provide a set of useful functions for key operations such as sorting, searching, and modifying sequences. The algorithms can be used with a variety of container classes, making them highly versatile and an essential part of C++ programming.",
"links": []
},
"yGvE6eHKlPMBB6rde0llR": {
"title": "Date / Time",
"description": "In C++, you can work with dates and times using the `chrono` library, which is part of the Standard Library (STL). The `chrono` library provides various data types and functions to represent and manipulate time durations, time points, and clocks.\n\nDuration\n--------\n\nA `duration` represents a span of time, which can be expressed in various units such as seconds, minutes, hours, etc. To create a duration, use the `std::chrono::duration` template class. Common predefined duration types are:\n\n* `std::chrono::seconds`\n* `std::chrono::minutes`\n* `std::chrono::hours`\n\n**Example:**\n\n #include <iostream>\n #include <chrono>\n \n int main() {\n std::chrono::seconds sec(5);\n std::chrono::minutes min(2);\n std::chrono::hours hr(1);\n return 0;\n }\n \n\nTime Point\n----------\n\nA `time_point` represents a specific point in time. It is usually created using a combination of duration and a clock. In C++, there are three clock types provided by the `chrono` library:\n\n* `std::chrono::system_clock`: Represents the system-wide real time wall clock.\n* `std::chrono::steady_clock`: Represents a monotonic clock that is guaranteed to never be adjusted.\n* `std::chrono::high_resolution_clock`: Represents the clock with the shortest tick period.\n\n**Example:**\n\n #include <iostream>\n #include <chrono>\n \n int main() {\n std::chrono::system_clock::time_point tp = std::chrono::system_clock::now();\n return 0;\n }\n \n\nClock\n-----\n\nA clock provides access to the current time. It consists of the following elements:\n\n* `time_point`: A specific point in time.\n* `duration`: The time duration between two time points.\n* `now()`: A static function that returns the current time point.\n\n**Example:**\n\n #include <iostream>\n #include <chrono>\n \n int main() {\n // Get the current time_point using system_clock\n std::chrono::system_clock::time_point now = std::chrono::system_clock::now();\n \n // Get the time_point 1 hour from now\n std::chrono::system_clock::time_point one_hour_from_now = now + std::chrono::hours(1);\n return 0;\n }\n \n\nConverting Time Points to Calendar Time\n---------------------------------------\n\nTo convert a time point to calendar representation, you can use the `std::chrono::system_clock::to_time_t` function.\n\n**Example:**\n\n #include <iostream>\n #include <chrono>\n #include <ctime>\n \n int main() {\n std::chrono::system_clock::time_point now = std::chrono::system_clock::now();\n std::time_t now_c = std::chrono::system_clock::to_time_t(now);\n std::cout << \"Current time: \" << std::ctime(&now_c) << '\\n';\n return 0;\n }\n \n\nThis summarizes the basic functionality of working with date and time in C++ using the `chrono` library. You can find more advanced features, such as casting durations and time arithmetic, in the [C++ reference](https://en.cppreference.com/w/cpp/chrono).",
"links": []
},
"OXQUPqxzs1-giAACwl3X1": {
"title": "Multithreading",
"description": "Multithreading is the concurrent execution of multiple threads within a single process or program. It improves the performance and efficiency of an application by allowing multiple tasks to be executed in parallel.\n\nIn C++, multithreading support is available through the `thread` library introduced in the C++11 standard.\n\nBasic Thread Creation\n---------------------\n\nTo create a new thread, include the `<thread>` header file and create an instance of `std::thread` that takes a function as an argument. The function will be executed in a new thread.\n\n #include <iostream>\n #include <thread>\n \n void my_function() {\n std::cout << \"This function is executing in a separate thread\\n\";\n }\n \n int main() {\n std::thread t(my_function);\n t.join(); // waits for the thread to complete\n return 0;\n }\n \n\nThread with Arguments\n---------------------\n\nYou can pass arguments to the thread function by providing them as additional arguments to the `std::thread` constructor.\n\n #include <iostream>\n #include <thread>\n \n void print_sum(int a, int b) {\n std::cout << \"The sum is: \" << a + b << '\\n';\n }\n \n int main() {\n std::thread t(print_sum, 3, 5);\n t.join();\n return 0;\n }\n \n\nMutex and Locks\n---------------\n\nWhen multiple threads access shared resources, there is a possibility of a data race. To avoid this, use mutex and locks to synchronize shared resource access.\n\n #include <iostream>\n #include <mutex>\n #include <thread>\n \n std::mutex mtx;\n \n void print_block(int n, char c) {\n {\n std::unique_lock<std::mutex> locker(mtx);\n for (int i = 0; i < n; ++i) {\n std::cout << c;\n }\n std::cout << '\\n';\n }\n }\n \n int main() {\n std::thread t1(print_block, 50, '*');\n std::thread t2(print_block, 50, '$');\n \n t1.join();\n t2.join();\n \n return 0;\n }\n \n\nThis short introduction should help you get started with basic multithreading techniques in C++. There is a lot more to learn, such as thread pools, condition variables, and atomic operations for advanced synchronization and performance tuning.",
"links": []
},
"1pydf-SR0QUfVNuBEyvzc": {
"title": "Containers",
"description": "C++ Containers are a part of the Standard Template Library (STL) that provide data structures to store and organize data. There are several types of containers, each with its own characteristics and use cases. Here, we discuss some of the commonly used containers:\n\n1\\. Vector\n----------\n\nVectors are dynamic arrays that can resize themselves as needed. They store elements in a contiguous memory location, allowing fast random access using indices.\n\nExample\n-------\n\n #include <iostream>\n #include <vector>\n \n int main() {\n std::vector<int> vec = {1, 2, 3, 4, 5};\n \n vec.push_back(6); // Add an element to the end\n \n std::cout << \"Vector contains:\";\n for (int x : vec) {\n std::cout << ' ' << x;\n }\n std::cout << '\\n';\n }\n \n\n2\\. List\n--------\n\nA list is a doubly-linked list that allows elements to be inserted or removed from any position in constant time. It does not support random access. Lists are better than vectors for scenarios where you need to insert or remove elements in the middle frequently.\n\nExample\n-------\n\n #include <iostream>\n #include <list>\n \n int main() {\n std::list<int> lst = {1, 2, 3, 4, 5};\n \n lst.push_back(6); // Add an element to the end\n \n std::cout << \"List contains:\";\n for (int x : lst) {\n std::cout << ' ' << x;\n }\n std::cout << '\\n';\n }\n \n\n3\\. Map\n-------\n\nA map is an associative container that stores key-value pairs. It supports the retrieval of values based on their keys. The keys are sorted in ascending order by default.\n\nExample\n-------\n\n #include <iostream>\n #include <map>\n \n int main() {\n std::map<std::string, int> m;\n \n m[\"one\"] = 1;\n m[\"two\"] = 2;\n \n std::cout << \"Map contains:\\n\";\n for (const auto &pair : m) {\n std::cout << pair.first << \": \" << pair.second << '\\n';\n }\n }\n \n\n4\\. Unordered\\_map\n------------------\n\nSimilar to a map, an unordered map stores key-value pairs, but it is implemented using a hash table. This means unordered\\_map has faster average-case performance compared to map, since it does not maintain sorted order. However, worst-case performance can be worse than map.\n\nExample\n-------\n\n #include <iostream>\n #include <unordered_map>\n \n int main() {\n std::unordered_map<std::string, int> um;\n \n um[\"one\"] = 1;\n um[\"two\"] = 2;\n \n std::cout << \"Unordered map contains:\\n\";\n for (const auto &pair : um) {\n std::cout << pair.first << \": \" << pair.second << '\\n';\n }\n }\n \n\nThese are just a few examples of C++ containers. There are other container types, such as `set`, `multiset`, `deque`, `stack`, `queue`, and `priority_queue`. Each container has its own use cases and unique characteristics. Learning about these containers and when to use them can greatly improve your efficiency and effectiveness in using C++.",
"links": []
},
"-6AOrbuOE7DJCmxlcgCay": {
"title": "Templates",
"description": "Templates in C++ are a powerful feature that allows you to write generic code, meaning that you can write a single function or class that can work with different data types. This means you do not need to write separate functions or classes for each data type you want to work with.\n\nTemplate Functions\n------------------\n\nTo create a template function, you use the `template` keyword followed by the type parameters or placeholders enclosed in angle brackets (`< >`). Then, you define your function as you normally would, using the type parameters to specify the generic types.\n\nHere's an example of a simple template function that takes two arguments and returns the larger of the two:\n\n template <typename T>\n T max(T a, T b) {\n return (a > b) ? a : b;\n }\n \n\nTo use this function, you can either explicitly specify the type parameter:\n\n int result = max<int>(10, 20);\n \n\nOr, you can let the compiler deduce the type for you:\n\n int result = max(10, 20);\n \n\nTemplate Classes\n----------------\n\nSimilarly, you can create template classes using the `template` keyword. Here's an example of a simple template class that represents a pair of values:\n\n template <typename T1, typename T2>\n class Pair {\n public:\n T1 first;\n T2 second;\n \n Pair(T1 first, T2 second) : first(first), second(second) {}\n };\n \n\nTo use this class, you need to specify the type parameters when creating an object:\n\n Pair<int, std::string> pair(1, \"Hello\");\n \n\nTemplate Specialization\n-----------------------\n\nSometimes, you may need special behavior for a specific data type. In this case, you can use template specialization. For example, you can specialize the `Pair` class for a specific type, like `char`:\n\n template <>\n class Pair<char, char> {\n public:\n char first;\n char second;\n \n Pair(char first, char second) : first(first), second(second) {\n // Special behavior for characters (e.g., convert to uppercase)\n this->first = std::toupper(this->first);\n this->second = std::toupper(this->second);\n }\n };\n \n\nNow, when you create a `Pair` object with `char` template arguments, the specialized behavior will be used:\n\n Pair<char, char> charPair('a', 'b');\n \n\nIn summary, templates in C++ allow you to write generic functions and classes that can work with different data types, reducing code duplication and making your code more flexible and reusable.",
"links": []
},
"w4EIf58KP-Pq-yc0HlGxc": {
"title": "Variadic Templates",
"description": "Variadic templates are a feature in C++11 that allows you to define a template with a variable number of arguments. This is especially useful when you need to write a function or class that can accept different numbers and types of arguments.\n\nSyntax\n------\n\nThe syntax for variadic templates is very simple. To define a variadic template, use the `...` (ellipsis) notation:\n\n template <typename... Args>\n \n\nThis notation represents a parameter pack, which can contain zero or more arguments. You can use this parameter pack as a variable list of template parameters in your template definition.\n\nExamples\n--------\n\n### Summing Multiple Arguments Using Variadic Templates\n\n #include <iostream>\n \n // Base case for recursion\n template <typename T>\n T sum(T t) {\n return t;\n }\n \n // Variadic template\n template <typename T, typename... Args>\n T sum(T t, Args... args) {\n return t + sum(args...);\n }\n \n int main() {\n int result = sum(1, 2, 3, 4, 5); // expands to 1 + 2 + 3 + 4 + 5\n std::cout << \"The sum is: \" << result << '\\n';\n \n return 0;\n }\n \n\n### Tuple Class Using Variadic Templates\n\n template <typename... Types>\n class Tuple;\n \n // Base case: empty tuple\n template <>\n class Tuple<> {};\n \n // Recursive case: Tuple with one or more elements\n template <typename Head, typename... Tail>\n class Tuple<Head, Tail...> : public Tuple<Tail...> {\n public:\n Tuple(Head head, Tail... tail) : Tuple<Tail...>(tail...), head_(head) {}\n \n Head head() const { return head_; }\n \n private:\n Head head_;\n };\n \n int main() {\n Tuple<int, float, double> tuple(1, 2.0f, 3.0);\n std::cout << \"First element: \" << tuple.head() << '\\n';\n return 0;\n }\n \n\nPlease note that the examples shown are for educational purposes and might not be the most efficient or production-ready implementations. With C++17 and onward, there are even more concise ways to handle variadic templates, like using fold expressions.",
"links": []
},
"sObOuccY0PDeGG-9GrFDF": {
"title": "Template Specialization",
"description": "Template specialization is a way to customize or modify the behavior of a template for a specific type or a set of types. This can be useful when you want to optimize the behavior or provide specific implementation for a certain type, without affecting the overall behavior of the template for other types.\n\nThere are two main ways you can specialize a template:\n\n* **Full specialization:** This occurs when you provide a specific implementation for a specific type or set of types.\n \n* **Partial specialization:** This occurs when you provide a more general implementation for a subset of types that match a certain pattern or condition.\n \n\nFull Template Specialization\n----------------------------\n\nFull specialization is used when you want to create a separate implementation of a template for a specific type. To do this, you need to use keyword `template<>` followed by the function template with the desired specialized type.\n\nHere is an example:\n\n #include <iostream>\n \n template <typename T>\n void printData(const T& data) {\n std::cout << \"General template: \" << data << '\\n';\n }\n \n template <>\n void printData(const char* const & data) {\n std::cout << \"Specialized template for const char*: \" << data << '\\n';\n }\n \n int main() {\n int a = 5;\n const char* str = \"Hello, world!\";\n printData(a); // General template: 5\n printData(str); // Specialized template for const char*: Hello, world!\n }\n \n\nPartial Template Specialization\n-------------------------------\n\nPartial specialization is used when you want to create a separate implementation of a template for a subset of types that match a certain pattern or condition.\n\nHere is an example of how you can partially specialize a template class:\n\n #include <iostream>\n \n template <typename K, typename V>\n class MyPair {\n public:\n MyPair(K k, V v) : key(k), value(v) {}\n \n void print() const {\n std::cout << \"General template: key = \" << key << \", value = \" << value << '\\n';\n }\n \n private:\n K key;\n V value;\n };\n \n template <typename T>\n class MyPair<T, int> {\n public:\n MyPair(T k, int v) : key(k), value(v) {}\n \n void print() const {\n std::cout << \"Partial specialization for int values: key = \" << key\n << \", value = \" << value << '\\n';\n }\n \n private:\n T key;\n int value;\n };\n \n int main() {\n MyPair<double, std::string> p1(3.2, \"example\");\n MyPair<char, int> p2('A', 65);\n p1.print(); // General template: key = 3.2, value = example\n p2.print(); // Partial specialization for int values: key = A, value = 65\n }\n \n\nIn this example, the `MyPair` template class is partially specialized to provide a different behavior when the second template parameter is of type `int`.",
"links": []
},
"WptReUOwVth3C9-AVmMHF": {
"title": "Type Traits",
"description": "Type Traits are a set of template classes in C++ that help in getting the information about the type's properties, behavior, or characteristics. They can be found in the `<type_traits>` header file. By using Type Traits, you can adapt your code depending on the properties of a given type, or even enforce specific properties for your type parameters in template code.\n\nSome common type traits are:\n\n* `std::is_pointer`: Checks if a given type is a pointer type.\n* `std::is_arithmetic`: Checks if the given type is an arithmetic type.\n* `std::is_function`: Checks if the given type is a function type.\n* `std::decay`: Applies decltype rules to the input type ( strips references, cv-qualifiers, etc. ).\n\nUsage\n-----\n\nYou can use type traits like this:\n\n #include <iostream>\n #include <type_traits>\n \n int main() {\n int a;\n int* a_ptr = &a;\n \n std::cout << \"Is 'a' a pointer? \" << std::boolalpha << std::is_pointer<decltype(a)>::value << '\\n';\n std::cout << \"Is 'a_ptr' a pointer? \" << std::boolalpha << std::is_pointer<decltype(a_ptr)>::value << '\\n';\n \n return 0;\n }\n \n\nComposing Type Traits\n---------------------\n\nSome type traits help you compose other traits or modify them, such as:\n\n* `std::conditional`: If a given boolean value is true, use type A; otherwise, use type B.\n* `std::enable_if`: If a given boolean value is true, use type A; otherwise, there is no nested type.\n\n #include <iostream>\n #include <type_traits>\n \n template <typename T>\n typename std::enable_if<std::is_arithmetic<T>::value, T>::type find_max(T a, T b) {\n return a > b ? a : b;\n }\n \n int main() {\n int max = find_max(10, 20);\n std::cout << \"Max: \" << max << '\\n';\n \n return 0;\n }\n \n\nIn this example, the `find_max` template function is only defined when T is an arithmetic type (e.g., int, float, double). This prevents unintended usage of the `find_max` function with non-arithmetic types.\n\nOverall, type traits are a powerful tool to create more generic, extensible, and efficient C++ code, providing a way to query and adapt your code based on type characteristics.",
"links": []
},
"3C5UfejDX-1Z8ZF6C53xD": {
"title": "SFINAE",
"description": "SFINAE is a principle in C++ template metaprogramming that allows the compiler to select the appropriate function or class when a specific template specialization fails during substitution. The term \"substitution failure\" refers to the process where the compiler tries to substitute template arguments into a function template or class template. If the substitution causes an error, the compiler won't consider that specific specialization as a candidate and will continue searching for a valid one.\n\nThe key idea behind SFINAE is that if a substitution error occurs, it is silently ignored, and the compiler continues to explore other template specializations or overloads. This allows you to write more flexible and generic code, as it enables you to have multiple specializations for different scenarios.\n\nCode Example\n------------\n\nHere's an example that demonstrates SFINAE in action:\n\n #include <iostream>\n #include <type_traits>\n \n template <typename T, typename = void>\n struct foo_impl {\n void operator()(T t) {\n std::cout << \"Called when T is not arithmetic\\n\";\n }\n };\n \n template <typename T>\n struct foo_impl<T, std::enable_if_t<std::is_arithmetic<T>::value>> {\n void operator()(T t) {\n std::cout << \"Called when T is arithmetic\\n\";\n }\n };\n \n template <typename T>\n void foo(T t) {\n foo_impl<T>()(t);\n }\n \n int main() {\n int a = 5;\n foo(a); // output: Called when T is arithmetic\n \n std::string s = \"example\";\n foo(s); // output: Called when T is not arithmetic\n }\n \n\nIn this example, we define two `foo_impl` functions are specialized based on the boolean value of `std::is_arithmetic<T>`. The first one is enabled when `T` is an arithmetic type, while the second one is enabled when `T` is not an arithmetic type. The `foo` function then calls the appropriate `foo_impl` specialization based on the result of the type trait.\n\nWhen calling `foo(a)` with an integer, the first specialization is selected, and when calling `foo(s)` with a string, the second specialization is selected. If there is no valid specialization, the code would fail to compile.",
"links": []
},
"6hTcmJwNnQstbWWzNCfTe": {
"title": "Full Template Specialization",
"description": "Full template specialization allows you to provide a specific implementation, or behavior, for a template when used with a certain set of type parameters. It is useful when you want to handle special cases or optimize your code for specific types.\n\nSyntax\n------\n\nTo create a full specialization of a template, you need to define the specific type for which the specialization should happen. The syntax looks as follows:\n\n template <> //Indicates that this is a specialization\n className<specificType> //The specialized class for the specific type\n \n\nExample\n-------\n\nConsider the following example to demonstrate full template specialization:\n\n // Generic template\n template <typename T>\n class MyContainer {\n public:\n void print() {\n std::cout << \"Generic container.\\n\";\n }\n };\n \n // Full template specialization for int\n template <>\n class MyContainer<int> {\n public:\n void print() {\n std::cout << \"Container for integers.\\n\";\n }\n };\n \n int main() {\n MyContainer<double> d;\n MyContainer<int> i;\n \n d.print(); // Output: Generic container.\n i.print(); // Output: Container for integers.\n \n return 0;\n }\n \n\nIn this example, we defined a generic `MyContainer` template class along with a full specialization for `int` type. When we use the container with the `int` type, the specialized implementation's `print` method is called. For other types, the generic template implementation will be used.",
"links": []
},
"1NYJtbdcdOB4-vIrnq4yX": {
"title": "Partial Template Specialization",
"description": "Partial template specialization is a concept in C++ templates, which allows you to specialize a template for a subset of its possible type arguments. It is particularly useful when you want to provide a customized implementation for a particular group of types without having to define separate specializations for all types in that group.\n\nPartial template specialization is achieved by providing a specialization of a template with a new set of template parameters. This new template will be chosen when the compiler deduces the types that match the partial specialization.\n\nHere is a code example that demonstrates partial template specialization:\n\n // Primary template\n template <typename T>\n struct MyTemplate {\n static const char* name() {\n return \"General case\";\n }\n };\n \n // Partial specialization for pointers\n template <typename T>\n struct MyTemplate<T*> {\n static const char* name() {\n return \"Partial specialization for pointers\";\n }\n };\n \n // Full specialization for int\n template <>\n struct MyTemplate<int> {\n static const char* name() {\n return \"Full specialization for int\";\n }\n };\n \n int main() {\n MyTemplate<double> t1; // General case\n MyTemplate<double*> t2; // Partial specialization for pointers\n MyTemplate<int> t3; // Full specialization for int\n \n std::cout << t1.name() << '\\n';\n std::cout << t2.name() << '\\n';\n std::cout << t3.name() << '\\n';\n \n return 0;\n }\n \n\nIn the example above, we have defined a primary template `MyTemplate` with a single type parameter `T`. We then provide a partial template specialization for pointer types by specifying `MyTemplate<T*>`. This means that the partial specialization will be chosen when the type argument is a pointer type.\n\nLastly, we provide a full specialization for the `int` type by specifying `MyTemplate<int>`. This will be chosen when the type argument is `int`.\n\nWhen running this example, the output will be:\n\n General case\n Partial specialization for pointers\n Full specialization for int\n \n\nThis demonstrates that the partial specialization works as expected, and is chosen for pointer types, while the full specialization is chosen for the `int` type.",
"links": []
},
"fb3bnfKXjSIjPAk4b95lg": {
"title": "Idioms",
"description": "C++ idioms are well-established patterns or techniques that are commonly used in C++ programming to achieve a specific outcome. They help make code efficient, maintainable, and less error-prone. Here are some of the common C++ idioms:\n\n1\\. Resource Acquisition is Initialization (RAII)\n-------------------------------------------------\n\nThis idiom ensures that resources are always properly acquired and released by tying their lifetime to the lifetime of an object. When the object gets created, it acquires the resources and when it gets destroyed, it releases them.\n\n class Resource {\n public:\n Resource() { /* Acquire resource */ }\n ~Resource() { /* Release resource */ }\n };\n \n void function() {\n Resource r; // Resource is acquired\n // ...\n } // Resource is released when r goes out of scope\n \n\n2\\. Rule of Three\n-----------------\n\nIf a class defines any one of the following, it should define all three: copy constructor, copy assignment operator, and destructor.\n\n class MyClass {\n public:\n MyClass();\n MyClass(const MyClass& other); // Copy constructor\n MyClass& operator=(const MyClass& other); // Copy assignment operator\n ~MyClass(); // Destructor\n };\n \n\n3\\. Rule of Five\n----------------\n\nWith C++11, the rule of three was extended to five, covering move constructor and move assignment operator.\n\n class MyClass {\n public:\n MyClass();\n MyClass(const MyClass& other); // Copy constructor\n MyClass(MyClass&& other); // Move constructor\n MyClass& operator=(const MyClass& other); // Copy assignment operator\n MyClass& operator=(MyClass&& other); // Move assignment operator\n ~MyClass(); // Destructor\n };\n \n\n4\\. PImpl (Pointer to Implementation) Idiom\n-------------------------------------------\n\nThis idiom is used to separate the implementation details of a class from its interface, resulting in faster compile times and the ability to change implementation without affecting clients.\n\n // header file\n class MyClass {\n public:\n MyClass();\n ~MyClass();\n void someMethod();\n \n private:\n class Impl;\n Impl* pImpl;\n };\n \n // implementation file\n class MyClass::Impl {\n public:\n void someMethod() { /* Implementation */ }\n };\n \n MyClass::MyClass() : pImpl(new Impl()) {}\n MyClass::~MyClass() { delete pImpl; }\n void MyClass::someMethod() { pImpl->someMethod(); }\n \n\n5\\. Non-Virtual Interface (NVI)\n-------------------------------\n\nThis enforces a fixed public interface and allows subclasses to only override specific private or protected virtual methods.\n\n class Base {\n public:\n void publicMethod() {\n // Common behavior\n privateMethod(); // Calls overridden implementation\n }\n \n protected:\n virtual void privateMethod() = 0; // Pure virtual method\n };\n \n class Derived : public Base {\n protected:\n virtual void privateMethod() override {\n // Derived implementation\n }\n };\n \n\nThese are just a few examples of the many idioms in C++ programming. They can provide guidance when designing and implementing your code, but it's essential to understand the underlying concepts to adapt them to different situations.",
"links": []
},
"xjUaIp8gGxkN-cp8emJ2M": {
"title": "Non-Copyable / Non-Moveable",
"description": "The non-copyable idiom is a C++ design pattern that prevents objects from being copied or assigned. It's usually applied to classes that manage resources, like file handles or network sockets, where copying the object could cause issues like resource leaks or double deletions.\n\nTo make a class non-copyable, you need to delete the copy constructor and the copy assignment operator. This can be done explicitly in the class declaration, making it clear to other programmers that copying is not allowed.\n\nHere's an example of how to apply the non-copyable idiom to a class:\n\n class NonCopyable {\n public:\n NonCopyable() = default;\n ~NonCopyable() = default;\n \n // Delete the copy constructor\n NonCopyable(const NonCopyable&) = delete;\n \n // Delete the copy assignment operator\n NonCopyable& operator=(const NonCopyable&) = delete;\n };\n \n\nTo use the idiom, simply inherit from the `NonCopyable` class:\n\n class MyClass : private NonCopyable {\n // MyClass is now non-copyable\n };\n \n\nThis ensures that any attempt to copy or assign objects of `MyClass` will result in a compilation error, thus preventing unwanted behavior.",
"links": []
},
"YvmjrZSAOmjhVPo05MJqN": {
"title": "Erase-Remove",
"description": "The erase-remove idiom is a common C++ technique to efficiently remove elements from a container, particularly from standard sequence containers like `std::vector`, `std::list`, and `std::deque`. It leverages the standard library algorithms `std::remove` (or `std::remove_if`) and the member function `erase()`.\n\nThe idiom consists of two steps:\n\n* `std::remove` (or `std::remove_if`) moves the elements to be removed towards the end of the container and returns an iterator pointing to the first element to remove.\n* `container.erase()` removes the elements from the container using the iterator obtained in the previous step.\n\nHere's an example:\n\n #include <algorithm>\n #include <vector>\n #include <iostream>\n \n int main() {\n std::vector<int> numbers = {1, 3, 2, 4, 3, 5, 3};\n \n // Remove all occurrences of 3 from the vector.\n numbers.erase(std::remove(numbers.begin(), numbers.end(), 3), numbers.end());\n \n for (int number : numbers) {\n std::cout << number << \" \";\n }\n \n return 0;\n }\n \n\nOutput:\n\n 1 2 4 5\n \n\nIn this example, we used the `std::remove` algorithm to remove all occurrences of the number 3 from the `std::vector<int> numbers`. After the removal, the vector contains only 1, 2, 4, and 5, as the output shows.",
"links": []
},
"lxAzI42jQdaofzQ5MXebG": {
"title": "Copy and Swap",
"description": "Copy-swap is a C++ idiom that leverages the copy constructor and swap function to create an assignment operator. It follows a simple, yet powerful paradigm: create a temporary copy of the right-hand side object, and swap its contents with the left-hand side object.\n\nHere's a brief summary:\n\n* **Copy**: Create a local copy of the right-hand side object. This step leverages the copy constructor, providing exception safety and code reuse.\n* **Swap**: Swap the contents of the left-hand side object with the temporary copy. This step typically involves swapping internal pointers or resources, without needing to copy the full contents again.\n* **Destruction**: Destroy the temporary copy. This happens upon the exit of the assignment operator.\n\nHere's a code example for a simple `String` class:\n\n class String {\n // ... rest of the class ...\n \n String(const String& other);\n \n friend void swap(String& first, String& second) {\n using std::swap; // for arguments-dependent lookup (ADL)\n swap(first.size_, second.size_);\n swap(first.buffer_, second.buffer_);\n }\n \n String& operator=(String other) {\n swap(*this, other);\n return *this;\n }\n };\n \n\nUsing the copy-swap idiom:\n\n* The right-hand side object is copied when passed by value to the assignment operator.\n* The left-hand side object's contents are swapped with the temporary copy.\n* The temporary copy is destroyed, releasing any resources that were previously held by the left-hand side object.\n\nThis approach simplifies the implementation and provides strong exception safety, while reusing the copy constructor and destructor code.",
"links": []
},
"O2Du5gHHxFxAI2u5uO8wu": {
"title": "Copy on Write",
"description": "The Copy-Write idiom, sometimes called the Copy-on-Write (CoW) or \"lazy copying\" idiom, is a technique used in programming to minimize the overhead of copying large objects. It helps in reducing the number of actual copy operations by using shared references to objects and only copying the data when it's required for modification.\n\nLet's understand this with a simple example:\n\n #include <iostream>\n #include <memory>\n \n class MyString {\n public:\n MyString(const std::string &str) : data(std::make_shared<std::string>(str)) {}\n \n // Use the same shared data for copying.\n MyString(const MyString &other) : data(other.data) { \n std::cout << \"Copied using the Copy-Write idiom.\\n\";\n }\n \n // Make a copy only if we want to modify the data.\n void write(const std::string &str) {\n // Check if there's more than one reference.\n if (data.use_count() > 1) {\n data = std::make_shared<std::string>(*data);\n std::cout << \"Copy is actually made for writing.\\n\";\n }\n *data = str;\n }\n \n private:\n std::shared_ptr<std::string> data;\n };\n \n int main() {\n MyString str1(\"Hello\");\n MyString str2 = str1; // No copy operation, just shared references.\n \n str1.write(\"Hello, World!\"); // This is where the actual duplication happens.\n return 0;\n }\n \n\nIn this example, we have a class `MyString` that simulates the Copy-Write idiom. When a `MyString` object is created, it constructs a `shared_ptr` pointing to a string. When a `MyString` object is copied, it does not perform any actual copy operation, but simply increases the reference count of the shared object. Finally, when the `write` function is called, it checks if there's more than one reference to the data and if so, it actually creates a new copy and updates the reference. This way, unnecessary copies can be avoided until they are actually needed for modification.",
"links": []
},
"OmHDlLxCnH8RDdu5vx9fl": {
"title": "RAII",
"description": "RAII is a popular idiom in C++ that focuses on using the object's life cycle to manage resources. It encourages binding the resource lifetime to the scope of a corresponding object so that it's automatically acquired when an object is created and released when the object is destroyed. This helps in simplifying the code, avoiding leaks and managing resources efficiently.\n\nCode Examples\n-------------\n\nHere's an example of using RAII to manage resources, specifically a dynamically allocated array:\n\n class ManagedArray {\n public:\n ManagedArray(size_t size) : size_(size), data_(new int[size]) {\n }\n \n ~ManagedArray() {\n delete[] data_;\n }\n \n // Access function\n int& operator [](size_t i) {\n return data_[i];\n }\n \n private:\n size_t size_;\n int* data_;\n };\n \n\nUsages:\n\n {\n ManagedArray arr(10);\n arr[0] = 42;\n \n // No need to explicitly free memory, it will be automatically released when arr goes out of scope.\n }\n \n\nAnother common use case is managing a mutex lock:\n\n class Lock {\n public:\n Lock(std::mutex& mtx) : mutex_(mtx) {\n mutex_.lock();\n }\n \n ~Lock() {\n mutex_.unlock();\n }\n \n private:\n std::mutex& mutex_;\n };\n \n\nUsages:\n\n std::mutex some_mutex;\n \n void protected_function() {\n Lock lock(some_mutex);\n \n // Do some work that must be synchronized\n \n // No need to explicitly unlock the mutex, it will be automatically unlocked when lock goes out of scope.\n }\n \n\nIn both examples, the constructor acquires the resource (memory for the array and the lock for the mutex), and the destructor takes care of releasing them. This way, the resource management is tied to the object's lifetime, and the resource is correctly released even in case of an exception being thrown.",
"links": []
},
"MEoWt8NKjPLVTeGgYf3cR": {
"title": "Pimpl",
"description": "Pimpl (Pointer-to-Implementation) idiom, also known as a private class data, compiler firewall, or handle classes, is a technique used in C++ to hide the implementation details of a class by using a forward declaration to a private structure or class, keeping the public interface of the class clean, and reducing compile-time dependencies.\n\nImplementation\n--------------\n\nHere is a simple example illustrating the Pimpl idiom:\n\n**my\\_class.h**\n\n class MyClass_Impl; // forward declaration\n \n class MyClass\n {\n public:\n MyClass();\n ~MyClass();\n void some_method();\n \n private:\n MyClass_Impl *pimpl; // pointer to the implementation\n };\n \n\n**my\\_class.cpp**\n\n #include \"my_class.h\"\n #include <iostream>\n \n class MyClass_Impl // the actual implementation\n {\n public:\n void some_method()\n {\n std::cout << \"Implementation method called!\\n\";\n }\n };\n \n MyClass::MyClass() : pimpl(new MyClass_Impl()) {} // constructor\n \n MyClass::~MyClass() { delete pimpl; } // destructor\n \n void MyClass::some_method()\n {\n pimpl->some_method(); // delegation to the implementation\n }\n \n\nNow, all the public methods of `MyClass` will delegate the calls to the corresponding methods of `MyClass_Impl`. By doing this, you can hide the details of class implementation, reduce the compile-time dependencies, and ease the maintenance of your code.",
"links": []
},
"ttt-yeIi4BPWrgvW324W7": {
"title": "CRTP",
"description": "**Curiously Recurring Template Pattern (CRTP)**\n\nThe Curiously Recurring Template Pattern (CRTP) is a C++ idiom that involves a class template being derived from its own specialization. This pattern allows for the creation of static polymorphism, which differs from regular runtime polymorphism that relies on virtual functions and inheritance.\n\nCRTP is usually employed when you want to customize certain behavior in the base class without adding the overhead of a virtual function call. In short, CRTP can be used for achieving compile-time polymorphism without the runtime performance cost.\n\nHere's an example demonstrating CRTP:\n\n template <typename Derived>\n class Base {\n public:\n void interface() {\n static_cast<Derived*>(this)->implementation();\n }\n \n void implementation() {\n std::cout << \"Default implementation in Base\\n\";\n }\n };\n \n class Derived1 : public Base<Derived1> {\n public:\n void implementation() {\n std::cout << \"Custom implementation in Derived1\\n\";\n }\n };\n \n class Derived2 : public Base<Derived2> {\n // No custom implementation, so Base::implementation will be used.\n };\n \n int main() {\n Derived1 d1;\n d1.interface(); // Output: \"Custom implementation in Derived1\"\n \n Derived2 d2;\n d2.interface(); // Output: \"Default implementation in Base\"\n \n return 0;\n }\n \n\nIn this example, the `Base` class is a template that takes a single type parameter. `Derived1` and `Derived2` are derived from their respective specialization of `Base`. CRTP is employed to allow custom implementations of the `implementation()` function in derived classes while providing a default behavior in the `Base` class. The `interface()` function in the `Base` class is a template for the derived class's behavior and calls the corresponding `implementation()` function based on the static type.\n\nThis pattern enables you to override certain behavior in derived classes with additional functionality, all while avoiding the overhead of virtual function calls and, in turn, achieving a higher degree of efficiency at runtime.",
"links": []
},
"vvE1aUsWbF1OFcmMUHbJa": {
"title": "Standards",
"description": "C++ standards are a set of rules and guidelines that define the language's features, syntax, and semantics. The International Organization for Standardization (ISO) is responsible for maintaining and updating the C++ standards. The main purpose of the standards is to ensure consistency, efficiency, and maintainability across multiple platforms and compilers.\n\nHere's a brief summary of the different C++ standards released to date:\n\n* **C++98/C++03**: The first standardized version of C++, which introduced many features like templates, exceptions, and the Standard Template Library (STL). C++03 is a minor update to C++98 with some bug fixes and performance improvements.\n \n* **C++11**: A major upgrade to the language, which introduced features such as:\n \n * Lambda expressions:\n \n auto sum = [](int a, int b) -> int { return a + b; };\n \n \n * Range-based for loops:\n \n std::vector<int> numbers = {1, 2, 3, 4};\n for (int num : numbers) {\n std::cout << num << '\\n';\n }\n \n \n * Smart pointers like `std::shared_ptr` and `std::unique_ptr`.\n* **C++14**: A minor update to C++11, which added features such as:\n \n * Generic lambda expressions:\n \n auto generic_sum = [](auto a, auto b) { return a + b; };\n \n \n * Binary literals:\n \n int binary_number = 0b1010;\n \n \n* **C++17**: Another major update that introduced features such as:\n \n * `if` and `switch` with initializers:\n \n if (auto it = my_map.find(key); it != my_map.end()) {\n // use 'it' here\n }\n \n \n * Structured bindings:\n \n std::map<std::string, int> my_map = {{\"A\", 1}, {\"B\", 2}};\n for (const auto& [key, value] : my_map) {\n // use 'key' and 'value' here\n }\n \n \n* **C++20**: The latest major update to the language, with features such as:\n \n * Concepts:\n \n template<typename T>\n concept Addable = requires(T a, T b) {\n { a + b } -> std::same_as<T>;\n };\n \n \n * Ranges:\n \n std::vector<int> numbers = {1, 2, 3, 4};\n auto doubled = numbers | std::views::transform([](int n) { return n * 2; });\n \n \n * Coroutines and more.\n\nRemember that to use these language features, you might need to configure your compiler to use the specific C++ standard version. For example, with GCC or Clang, you can use the `-std=c++11`, `-std=c++14`, `-std=c++17`, or `-std=c++20` flags.",
"links": []
},
"T6rCTv9Dxkm-tEA-l9XEv": {
"title": "C++ 11 / 14",
"description": "**C++11** The C++11 standard, also known as C++0x, was officially released in September 2011. It introduced several new language features and improvements, including:\n\n* **Auto**: Allows compiler to infer the variable type based on its initializing expression.\n \n auto integer = 42; // integer is of int type\n auto floating = 3.14; // floating is of double type\n \n \n* **Range-Based for Loop**: Provides foreach-like semantics for iterating through a container or array.\n \n std::vector<int> numbers {1, 2, 3, 4};\n for (int number : numbers) {\n std::cout << number << '\\n';\n }\n \n \n* **Lambda Functions**: Anonymous functions that allow the creation of function objects more easily.\n \n auto add = [](int a, int b) -> int { return a + b; };\n int sum = add(42, 13); // sum is equal to 55\n \n \n* **nullptr**: A new keyword to represent null pointers, more type-safe than using a literal '0' or \"NULL\".\n \n int *ptr = nullptr;\n \n \n* **Thread Support Library**: Provides a standard way to work with threads and synchronize data access across threads.\n \n std::thread t([]() { std::cout << \"Hello from another thread\\n\"; });\n t.join();\n \n \n\n**C++14** The C++14 standard was officially released in December 2014 as a small extension over C++11, focusing more on fine-tuning language features and fixing issues. Some of the new features introduced:\n\n* **Generic Lambdas**: Allows lambda function parameters to be declared with 'auto' type placeholders.\n \n auto add = [](auto a, auto b) { return a + b; };\n auto sum_i = add(42, 13); // Still works with integers\n auto sum_f = add(3.14, 2.72); // Now works with doubles too\n \n \n* **Binary Literals**: Allow you to input integers as binary literals for better readability.\n \n int b = 0b110101; // Decimal value is 53\n \n \n* **decltype(auto)**: Deduces the type of variable to match that of the expression it is initialized with.\n \n auto func = [](auto a, auto b) { return a * b; };\n decltype(auto) result = func(5, 3.14); // decltype(auto) deduces to \"double\"\n \n \n* **Variable Templates**: Allows you to define variables with template parameters.\n \n template <typename T>\n constexpr T pi = T(3.1415926535897932385);\n float r = pi<float>; // Instantiated as a float\n double d = pi<double>; // Instantiated as a double",
"links": []
},
"R2-qWGUxsTOeSHRuUzhd2": {
"title": "C++ 17",
"description": "C++17, also known as C++1z, is the version of the C++ programming language published in December 2017. It builds upon the previous standard, C++14, and adds various new features and enhancements to improve the language's expressiveness, performance, and usability.\n\nKey Features:\n-------------\n\n* If-init-statement: Introduces a new syntax for writing conditions with scope inside if and switch statements.\n\n if (auto it = map.find(key); it != map.end())\n {\n // Use it\n }\n \n\n* Structured Binding Declarations: Simplify the process of unpacking a tuple, pair, or other aggregate types.\n\n map<string, int> data;\n auto [iter, success] = data.emplace(\"example\", 42);\n \n\n* Inline variables: Enables `inline` keyword for variables and allows single definition of global and class static variables in header files.\n\n inline int globalVar = 0;\n \n\n* Folds expressions: Introduce fold expressions for variadic templates.\n\n template <typename... Ts>\n auto sum(Ts... ts)\n {\n return (ts + ...);\n }\n \n\n* constexpr if statement: Allows conditional compilation during compile time.\n\n template <typename T>\n auto get_value(T t)\n {\n if constexpr (std::is_pointer_v<T>)\n {\n return *t;\n }\n else\n {\n return t;\n }\n }\n \n\n* Improved lambda expression: Allows lambda to capture a single object without changing its type or constness.\n\n auto func = [x = std::move(obj)] { /* use x */ };\n \n\n* Standard file system library: `std::filesystem` as a standardized way to manipulate paths, directories, and files.\n \n* New Standard Library additions: `<string_view>` (non-owning string reference), `<any>` (type-erased container), `<optional>` (optional value wrapper), `<variant>` (type-safe discriminated union / sum type), and `<memory_resource>` (library for polymorphic allocators).\n \n* Parallel Algorithms: Adds support for parallel execution of Standard Library algorithms.\n \n\nThis is a brief summary of the key features of C++17; it includes more features and library updates. For a complete list, you can refer to the [full list of C++17 features and changes](https://en.cppreference.com/w/cpp/17).",
"links": []
},
"o3no4a5_iMFzEAGs56-BJ": {
"title": "C++ 20",
"description": "C++20 is the latest standard of the C++ programming language, which brings significant improvements and new features to the language. This version is aimed at facilitating better software development practices and enabling developers to write more efficient, readable, and maintainable code.\n\nHere are some of the key features introduced in C++20:\n\nConcepts\n--------\n\nConcepts are a way to enforce specific requirements on template parameters, allowing you to write more expressive and understandable code. They improve the error messages when using templates and ensure that the template parameters fulfill specific criteria.\n\n template <typename T>\n concept Addable = requires (T a, T b) {\n { a + b } -> std::same_as<T>;\n };\n \n template <Addable T>\n T add(T a, T b) {\n return a + b;\n }\n \n\nRanges\n------\n\nRanges provide a new way to work with sequences of values, enhancing the power and expressiveness of the Standard Library algorithms. The range-based algorithms make it easier and more convenient to work with sequences.\n\n #include <algorithm>\n #include <iostream>\n #include <ranges>\n #include <vector>\n \n int main() {\n std::vector<int> numbers = { 1, 2, 3, 4, 5 };\n \n auto even_numbers = numbers | std::views::filter([](int n) { return n % 2 == 0; });\n \n for (int n : even_numbers) {\n std::cout << n << ' ';\n }\n }\n \n\nCoroutines\n----------\n\nCoroutines are a new way to write asynchronous and concurrent code with improved readability. They allow functions to be suspended and resumed, enabling you to write more efficient, non-blocking code.\n\n #include <coroutine>\n #include <iostream>\n #include <future>\n \n std::future<int> async_value(int value) {\n co_await std::chrono::seconds(1);\n co_return value * 2;\n }\n \n int main() {\n auto result = async_value(42);\n std::cout << \"Result: \" << result.get() << '\\n';\n }\n \n\nThe `constexpr` and `consteval` Keywords\n----------------------------------------\n\nBoth `constexpr` and `consteval` are related to compile-time evaluation. Functions marked with `constexpr` can be executed at compile-time or runtime, while functions marked with `consteval` can only be executed at compile-time.\n\n constexpr int add(int a, int b) {\n return a + b;\n }\n \n consteval int square(int x) {\n return x * x;\n }\n \n int main() {\n constexpr int result1 = add(3, 4); // evaluated at compile-time\n int result2 = add(5, 6); // evaluated at runtime\n constexpr int result3 = square(7); // evaluated at compile-time\n }\n \n\nThese are just some of the highlights of the C++20 standard. It also includes many other features and improvements, like structured bindings, improved lambdas, and new standard library components. Overall, C++20 makes it easier for developers to write clean, efficient, and expressive code.",
"links": []
},
"sxbbKtg7kMNbkx7fXhjR9": {
"title": "Newest",
"description": "C++20 is the newest standard of the C++ programming language, which was officially published in December 2020. It introduces many new features, enhancements, and improvements over the previous standards. Here is a brief summary of some key features in C++20.\n\n* **Concepts**: Concepts provide a way to specify constraints on template parameters, ensuring that they meet a specific set of requirements. This allows for better compile-time error messages and code readability.\n \n Example:\n \n template<typename T>\n concept Printable = requires(T x) {\n {std::cout << x};\n };\n \n template<Printable T>\n void print(const T& x) {\n std::cout << x << '\\n';\n }\n \n \n* **Ranges**: Ranges build on the iterator concept and provide a more usable and composable framework for dealing with sequences of values. They simplify the way algorithms can be applied to collections of data.\n \n Example:\n \n #include <iostream>\n #include <vector>\n #include <ranges>\n \n int main() {\n std::vector<int> numbers{1, 2, 3, 4, 5};\n auto even_view = numbers | std::views::filter([](int n) { return n % 2 == 0; });\n \n for (int n : even_view) {\n std::cout << n << ' ';\n }\n }\n \n \n* **Coroutines**: Coroutines offer a way to split complex, long-running functions into smaller, more manageable chunks, allowing them to be suspended and resumed at specific points.\n \n Example:\n \n #include <iostream>\n #include <coroutine>\n \n std::generator<int> generator() {\n for (int i = 0; i < 5; ++i)\n co_yield i;\n }\n \n int main() {\n for (int value : generator())\n std::cout << value << ' ';\n }\n \n \n* **Lambdas with template parameters**: C++20 enables using `auto` as a lambda parameter, allowing for generic lambdas with templated parameters.\n \n Example:\n \n auto sum = [](auto a, auto b) {\n return a + b;\n };\n \n int res1 = sum(1, 2); // int\n double res2 = sum(1.0, 2.0); // double\n \n \n* **Constexpr enhancements**: `constexpr` support is extended with additional features, such as `constexpr` dynamic allocations, `constexpr` try-catch blocks, and `constexpr` lambdas.\n \n Example:\n \n struct Point {\n constexpr Point(int x, int y): x_{x}, y_{y} {}\n int x_, y_;\n };\n \n constexpr auto create_points() {\n Point points[3]{};\n \n for (int i = 0; i < 3; ++i) {\n points[i] = Point{i, i * i};\n }\n \n return points;\n }\n \n constexpr auto points = create_points();\n \n \n\nThere are many other features in C++20, such as new standard library improvements, `std::format`, improvements to compile-time programming, and more. These are just a few highlights that showcase the versatility and power of the newest standard of C++.",
"links": []
},
"PPg0V5EzGBeJsysg1215V": {
"title": "C++ 0x",
"description": "`cpp0x` refers to the working name for [C++11](https://en.cppreference.com/w/cpp/11), which was previously known as C++0x before its final release. C++11 is a major revision of the C++ language standard, published in 2011, and brought several new features and improvements to the language.\n\nSome of the notable features in C++11 include:\n\n* **Auto** keyword for automatic type inference.\n \n auto i = 42; // i is an int\n auto s = \"hello\"; // s is a const char*\n \n \n* **Range-based for loop** for easier iteration over containers.\n \n std::vector<int> vec = {1, 2, 3};\n for (int i : vec) {\n std::cout << i << '\\n';\n }\n \n \n* **Lambda functions** for creating anonymous functions.\n \n auto add = [](int a, int b) { return a + b; };\n int result = add(3, 4); // result is 7\n \n \n* **nullptr** for representing null pointer values, instead of using `NULL`.\n \n int* p = nullptr;\n \n \n* **Rvalue references and move semantics** to optimize the handling of temporary objects.\n \n std::string str1 = \"hello\";\n std::string str2 = std::move(str1); // move the content of str1 to str2\n \n \n* **Variadic templates** for creating templates that take a variable number of arguments.\n \n template <typename... Args>\n void printArgs(Args... args) {\n // function body\n }\n \n \n* **Static assertions** for compile-time assertions.\n \n static_assert(sizeof(int) == 4, \"This code requires int to be 4 bytes.\");\n \n \n* **Thread support** for multithreading programming.\n \n #include <thread>\n \n void my_function() {\n // thread function body\n }\n \n int main() {\n std::thread t(my_function);\n t.join();\n return 0;\n }\n \n \n\nThese are just a few examples of the many new features introduced in C++11. For a comprehensive list, you can refer to the [C++11 documentation](https://en.cppreference.com/w/cpp/11).",
"links": []
},
"qmHs6_BzND_xpMmls5YUH": {
"title": "Debuggers",
"description": "Debuggers are essential tools for any C++ programmer, as they help in detecting, diagnosing, and fixing bugs in the code. They serve as an invaluable resource in identifying and understanding potential errors in the program.\n\nTypes of Debuggers\n------------------\n\nThere are several debuggers available for use with C++:\n\n* **GDB (GNU Debugger):** This is the most widely used C++ debugger in the Linux environment. It can debug many languages, including C and C++.\n \n Example usage:\n \n g++ -g main.cpp -o main # compile the code with debug info\n gdb ./main # start gdb session\n b main # set a breakpoint at the start of the main function\n run # run the program\n next # step to the next line\n \n \n* **LLDB:** This is the debugger developed by LLVM. It supports multiple languages and is popular among macOS and iOS developers.\n \n Example usage:\n \n clang++ -g main.cpp -o main # compile the code with debug info\n lldb ./main # start lldb session\n breakpoint set --name main # set a breakpoint at the start of the main function\n run # run the program\n next # step to the next line\n \n \n* **Microsoft Visual Studio Debugger:** This debugger is built into Visual Studio and is typically used in a graphical interface on Windows systems.\n \n Example usage:\n \n Open your Visual Studio project and go to Debug > Start Debugging. Then use the step over (F10), step into (F11), or continue (F5) commands to navigate through the code.\n \n \n* **Intel Debugger (IDB):** This debugger is part of Intel's parallel development suite and is popular for high-performance applications.\n \n* **TotalView Debugger:** Developed by Rogue Wave Software, TotalView Debugger is a commercial debugger designed for parallel, high-performance, and enterprise applications.\n \n\nEach debugger has its advantages and unique features, so it's essential to choose the one that best suits your needs and works well with your development environment.",
"links": []
},
"VtPb8-AJKzhTB0QbMtoU4": {
"title": "Understanding Debugger Messages",
"description": "Debugger messages are notifications or alerts provided by a debugger to help you identify problems or errors in your C++ code. These messages can be warnings or error messages and can provide helpful information about the state of your program and specific issues encountered during the debugging process.\n\nTypes of Debugger Messages\n--------------------------\n\n* **Error Messages:** Notify you about issues in the code that prevent the program from running or compiling correctly. These messages typically include information about the file and the line number where the error is detected, followed by a description of the issue.\n \n Example:\n \n test.cpp: In function 'int main()':\n test.cpp:6:5: error: 'cout' was not declared in this scope\n cout << \"Hello World!\";\n ^~~~\n \n \n* **Warning Messages:** Inform you about potential issues or risky programming practices that may not necessarily cause errors but could lead to problems later on. Like error messages, warning messages usually include information about the file and line number where the issue is found, along with a description of the problem.\n \n Example:\n \n test.cpp: In function 'int main()':\n test.cpp:6:17: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]\n if (a < size)\n ^\n \n \n* **Informational Messages:** Provide general information about the execution of the program, such as breakpoints, watchpoints, and variable values. These messages can also reveal the current state of the program, including the call stack and the list of active threads.\n \n Example (_assuming you are using GDB as debugger_):\n \n (gdb) break main\n Breakpoint 1 at 0x40055f: file test.cpp, line 5.\n (gdb) run\n Starting program: /path/to/test\n Breakpoint 1, main () at test.cpp:5\n 5 int a = 5;\n \n \n\nCode Examples\n-------------\n\nTo make use of debugger messages, you need to employ a debugger, such as GDB or Visual Studio Debugger, and include specific flags during the compilation process.\n\nExample using GDB:\n\n // test.cpp\n \n #include <iostream>\n \n int main() {\n int num1 = 10;\n int num2 = 0;\n int result = num1 / num2;\n \n std::cout << \"Result: \" << result << '\\n';\n \n return 0;\n }\n \n\n $ g++ -g -o test test.cpp // Compile with -g flag to include debugging information\n $ gdb ./test // Run the GDB debugger\n (gdb) run // Execute the program inside GDB\n \n\nAt this point, the debugger will show an error message triggered by the division by zero:\n\n Program received signal SIGFPE, Arithmetic exception.\n 0x00005555555546fb in main () at test.cpp:7\n 7 int result = num1 / num2;\n \n\nNow you can make appropriate changes to fix the issue in your C++ code.",
"links": []
},
"sR_FxGZHoMCV9Iv7z2_SX": {
"title": "Debugging Symbols",
"description": "Debugger symbols are additional information embedded within the compiled program's binary code, that help debuggers in understanding the structure, source code, and variable representations at a particular point in the execution process.\n\nThere are generally two types of debugging symbols:\n\n* **Internal Debugging Symbols**: These symbols reside within the compiled binary code itself. When using internal debugging symbols, it is essential to note that the size of the binary increases, which may not be desirable for production environments.\n \n* **External Debugging Symbols**: The debugging symbols are kept in separate files apart from the binary code, usually with file extensions such as `.pdb` (Program Database) in Windows or `.dSYM` (DWARF Symbol Information) in macOS.\n \n\nGenerating Debugger Symbols\n---------------------------\n\nTo generate debugger symbols in C++, you need to specify specific options during the compilation process. We will use `g++` compiler as an example.\n\n**Internal Debugging Symbols (g++)**\n\nTo create a debug build with internal debugging symbols, use the `-g` flag:\n\n g++ -g -o my_program my_program.cpp\n \n\nThis command compiles `my_program.cpp` into an executable named `my_program` with internal debugging symbols.\n\n**External Debugging Symbols (g++)**\n\nIn case you want to generate a separate file containing debugging symbols, you can use the `-gsplit-dwarf` flag:\n\n g++ -g -gsplit-dwarf -o my_program my_program.cpp\n \n\nThis command compiles `my_program.cpp` into an executable named `my_program` and generates a separate file named `my_program.dwo` containing the debugging symbols.\n\nWhen sharing your compiled binary to end-users, you can remove the debugging symbols using the `strip` command:\n\n strip --strip-debug my_program\n \n\nThis command removes internal debug symbols, resulting in a smaller binary size while keeping the `.dwo` file for debugging purposes when needed.\n\nRemember that the availability and syntax of these options may vary between different compilers and platforms. Be sure to consult your compiler's documentation to ensure proper usage of the debugging options.",
"links": []
},
"y8VCbGDUco9bzGRfIBD8R": {
"title": "WinDBg",
"description": "WinDbg is a powerful debugger for Windows applications, which is included in the Microsoft Windows SDK. It provides an extensive set of features to help you analyze and debug complex programs, kernel mode, and user-mode code. With a user-friendly graphical interface, WinDbg can help in analyzing crash dumps, setting breakpoints, and stepping through code execution.\n\nGetting Started\n---------------\n\nTo begin using WinDbg, you first need to install it. You can download the [Windows SDK](https://developer.microsoft.com/en-us/windows/downloads/windows-10-sdk/) and install it to get the WinDbg.\n\nLoading Symbols\n---------------\n\nWinDbg relies on symbol files (\\*.pdb) to provide more useful information about a program's internal structures, functions, and variables. To load symbols properly, you may need to configure the symbol path:\n\n !sym noisy\n .sympath SRV*C:\\symbols*http://msdl.microsoft.com/download/symbols\n .reload /f\n \n\nOpening Executables and Crash Dumps\n-----------------------------------\n\nTo debug an executable using WinDbg, go to `File > Open Executable...`, then locate and open the target program. To analyze a crash dump, use `File > Open Crash Dump...` instead.\n\nBasic Commands\n--------------\n\nSome common commands you might use in WinDbg:\n\n* `g`: Execute the program until the next breakpoint or exception\n* `bp <address>`: Set a breakpoint at a given address\n* `bl`: List all breakpoints\n* `bd <breakpoint_id>`: Disable a breakpoint\n* `be <breakpoint_id>`: Enable a breakpoint\n* `bc <breakpoint_id>`: Clear a breakpoint\n* `t`: Single-step through instructions (trace)\n* `p`: Step over instructions (proceed)\n* `k`: Display call stack\n* `dd`: Display memory contents in 4-byte units (double words)\n* `da`: Display memory contents as ASCII strings\n* `!analyze -v`: Analyze the program state and provide detailed information\n\nExample Usage\n-------------\n\nDebugging a simple program:\n\n* Open the executable in WinDbg\n* Set a breakpoint using `bp <address>`\n* Run the program using `g`\n* Once the breakpoint is hit, use `t` or `p` to step through the code\n* Try `k` to view the call stack, or `dd`, `da` to inspect memory\n* Remove the breakpoint and continue debugging with other commands as needed\n\nRemember that WinDbg has a wealth of commands and functionality, so it's essential to get comfortable with the [documentation](https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/debugger-download-tools) and explore the wealth of available resources specific to your debugging tasks.",
"links": []
},
"BmWsoL9c_Aag5nVlMsKm2": {
"title": "GDB",
"description": "GDB, or the GNU Project Debugger, is a powerful command-line debugger used primarily for C, C++, and other languages. It can help you find runtime errors, examine the program's execution state, and manipulate the flow to detect and fix bugs easily.\n\nGetting started with GDB\n------------------------\n\nTo start using GDB, you first need to compile your code with the `-g` flag, which includes debugging information in the executable:\n\n g++ -g myfile.cpp -o myfile\n \n\nNow, you can load your compiled program into GDB:\n\n gdb myfile\n \n\nBasic GDB Commands\n------------------\n\nHere are some common GDB commands you'll find useful when debugging:\n\n* `run`: Start your program.\n* `break [function/line number]`: Set a breakpoint at the specified function or line.\n* `continue`: Continue the program execution after stopping on a breakpoint.\n* `next`: Execute the next line of code, stepping over function calls.\n* `step`: Execute the next line of code, entering function calls.\n* `print [expression]`: Evaluate an expression in the current context and display its value.\n* `backtrace`: Show the current call stack.\n* `frame [frame-number]`: Switch to a different stack frame.\n* `quit`: Exit GDB.\n\nExample Usage\n-------------\n\nSuppose you have a simple `cpp` file called `example.cpp`:\n\n #include <iostream>\n \n void my_function(int i) {\n std::cout << \"In my_function with i = \" << i << '\\n';\n }\n \n int main() {\n for (int i = 0; i < 5; ++i) {\n my_function(i);\n }\n return 0;\n }\n \n\nFirst, compile the code with debugging symbols:\n\n g++ -g example.cpp -o example\n \n\nStart GDB and load the `example` program:\n\n gdb example\n \n\nSet a breakpoint in the `my_function` function and run the program:\n\n (gdb) break my_function\n (gdb) run\n \n\nOnce stopped at the breakpoint, use `next`, `print`, and `continue` to examine the program's state:\n\n (gdb) next\n (gdb) print i\n (gdb) continue\n \n\nFinally, exit GDB with the `quit` command.\n\nThis was just a brief summary of GDB; you can find more details in the [official GDB manual](https://sourceware.org/gdb/current/onlinedocs/gdb/).",
"links": []
},
"FTMHsUiE8isD_OVZr62Xc": {
"title": "Compilers",
"description": "A compiler is a computer program that translates source code written in one programming language into a different language, usually machine code or assembly code, that can be executed directly by a computer's processor. In the context of C++, compilers take your written C++ source code and convert it into an executable program.\n\nPopular C++ Compilers\n---------------------\n\nThere are several popular C++ compilers available, here's a short list of some common ones:\n\n* **GNU Compiler Collection (GCC)**: Developed by the GNU Project, GCC is an open-source compiler that supports multiple programming languages, including C++.\n \n* **Clang**: As part of the LLVM project, Clang is another open-source compiler that supports C++ and is known for its fast compilation times and extensive diagnostics.\n \n* **Microsoft Visual C++ (MSVC)**: MSVC is a commercial compiler provided by Microsoft as part of Visual Studio, and it's widely used on Windows platforms.\n \n* **Intel C++ Compiler (ICC)**: ICC is a commercial compiler provided by Intel and is known for its ability to optimize code for the latest Intel processors.\n \n\nExample of a Simple C++ Compilation\n-----------------------------------\n\nLet's say you have a simple C++ program saved in a file called `hello.cpp`:\n\n #include <iostream>\n \n int main() {\n std::cout << \"Hello, World!\\n\";\n return 0;\n }\n \n\nYou can compile this program using the GCC compiler by executing the following command in a command-line/terminal:\n\n g++ hello.cpp -o hello\n \n\nThis will generate an executable file called `hello` (or `hello.exe` on Windows) which you can run to see the output \"Hello, World!\".\n\nNote\n----\n\nWhen learning about compilers, it's essential to know that they work closely with the linker and the standard library. The linker takes care of combining compiled object files and libraries into a single executable, while the standard library provides implementations for common functionalities used in your code.",
"links": []
},
"DVckzBUMgk_lWThVkLyAT": {
"title": "Compiler Stages",
"description": "The process of compilation in C++ can be divided into four primary stages: Preprocessing, Compilation, Assembly, and Linking. Each stage performs a specific task, ultimately converting the source code into an executable program.\n\nPreprocessing\n-------------\n\nThe first stage is the preprocessing of the source code. Preprocessors modify the source code before the actual compilation process. They handle directives that start with a `#` (hash) symbol, like `#include`, `#define`, and `#if`. In this stage, included header files are expanded, macros are replaced, and conditional compilation statements are processed.\n\n**Code Example:**\n\n #include <iostream>\n #define PI 3.14\n \n int main() {\n std::cout << \"The value of PI is: \" << PI << '\\n';\n return 0;\n }\n \n\nCompilation\n-----------\n\nThe second stage is the actual compilation of the preprocessed source code. The compiler translates the modified source code into an intermediate representation, usually specific to the target processor architecture. This step also involves performing syntax checking, semantic analysis, and producing error messages for any issues encountered in the source code.\n\n**Code Example:**\n\n int main() {\n int a = 10;\n int b = 20;\n int sum = a + b;\n return 0;\n }\n \n\nAssembly\n--------\n\nThe third stage is converting the compiler's intermediate representation into assembly language. This stage generates assembly code using mnemonics and syntax that is specific to the target processor architecture. Assemblers then convert this assembly code into object code (machine code).\n\n**Code Example (x86 Assembly):**\n\n mov eax, 10\n mov ebx, 20\n add eax, ebx\n \n\nLinking\n-------\n\nThe final stage is the linking of the object code with the necessary libraries and other object files. In this stage, the linker merges multiple object files and libraries, resolves external references from other modules or libraries, allocates memory addresses for functions and variables, and generates an executable file that can be run on the target platform.\n\n**Code Example (linking objects and libraries):**\n\n $ g++ main.o -o main -lm\n \n\nIn summary, the compilation process in C++ involves four primary stages: preprocessing, compilation, assembly, and linking. Each stage plays a crucial role in transforming the source code into an executable program.",
"links": []
},
"hSG6Aux39X0cXi6ADy2al": {
"title": "Compilers and Features",
"description": "Different C++ compilers have different features. Some of the most common features of C++ compilers are:\n\n* **Optimization:** Compilers can optimize the code to improve the performance of the program. For example, they can remove redundant code, inline functions, and perform loop unrolling.\n* **Debugging:** Compilers can generate debugging information that can be used to debug the program.\n* **Warnings:** Compilers can generate warnings for suspicious code that may cause errors.\n\nSome of the most popular C++ compilers are:\n\n* **GNU Compiler Collection (GCC):** GCC is a free and open-source compiler that supports many programming languages, including C++.\n* **Clang:** Clang is a C++ compiler that is part of the LLVM project. It is designed to be compatible with GCC.\n* **Microsoft Visual C++:** Microsoft Visual C++ is a C++ compiler that is part of the Microsoft Visual Studio IDE.\n* **Intel C++ Compiler:** Intel C++ Compiler is a C++ compiler that is part of the Intel Parallel Studio XE suite.\n\nYou should go through the documentation of your compiler to learn more about its features.",
"links": []
},
"jVXFCo6puMxJ_ifn_uwim": {
"title": "Build Systems",
"description": "A build system is a collection of tools and utilities that automate the process of compiling, linking, and executing source code files in a project. The primary goal of build systems is to manage the complexity of the compilation process and produce a build (executable or binary files) in the end. In C++ (cpp), some common build systems are:\n\n* **GNU Make**: It is a popular build system that uses `Makefile` to define the build process. It checks the dependencies and timestamps of source files to determine which files need to be compiled and linked.\n \n Code example:\n \n # Makefile\n CXX = g++\n CPPFLAGS = -Wall -std=c++11\n TARGET = HelloWorld\n \n all: $(TARGET)\n \n $(TARGET): main.cpp\n $(CXX) $(CPPFLAGS)main.cpp -o $(TARGET)\n \n clean:\n rm $(TARGET)\n \n \n* **CMake**: It is a cross-platform build system that focuses on defining project dependencies and managing build environments. CMake generates build files (like Makefiles) for different platforms and allows developers to write source code once and then compile it for different target platforms.\n \n Code example:\n \n # CMakeLists.txt\n cmake_minimum_required(VERSION 3.10)\n project(HelloWorld)\n \n set(CMAKE_CXX_STANDARD 11)\n \n add_executable(HelloWorld main.cpp)\n \n \n* **Autotools**: Also known as GNU Build System, consists of the GNU Autoconf, Automake, and Libtool tools that enable developers to create portable software across different Unix-based systems. For a C++ project, you will need to create `configure.ac`, `Makefile.am` files with specific rules, and then run the following commands in the terminal to build the project:\n \n autoreconf --install\n ./configure\n make\n make install\n \n \n* **SCons**: This build system uses Python for build scripts, making it more expressive than GNU Make. It can also build for multiple platforms and configurations simultaneously.\n \n Code example:\n \n # SConstruct\n env = Environment()\n env.Program(target=\"HelloWorld\", source=[\"main.cpp\"])\n \n \n* **Ninja**: A small and focused build system that takes a list of build targets specified in a human-readable text file and builds them as fast as possible.\n \n Code example:\n \n # build.ninja\n rule cc\n command = g++ -c $in -o $out\n \n rule link\n command = g++ $in -o $out\n \n build main.o: cc main.cpp\n build HelloWorld: link main.o\n default HelloWorld\n \n \n\nThese are some of the popular build systems in C++, each with their own syntax and capabilities. While Make is widely used, CMake is a cross-platform build system that generates build files for other build systems like Make or Ninja. Autotools is suitable for creating portable software, SCons leverages Python for its build scripts, and Ninja focuses on fast build times.",
"links": []
},
"ysnXvSHGBMMozBJyXpHl5": {
"title": "CMAKE",
"description": "CMake is a powerful cross-platform build system that generates build files, Makefiles, or workspaces for various platforms and compilers. Unlike the others build systems, CMake does not actually build the project, it only generates the files needed by build tools. CMake is widely used, particularly in C++ projects, for its ease of use and flexibility.\n\nCMakeLists.txt\n--------------\n\nCMake uses a file called `CMakeLists.txt` to define settings, source files, libraries, and other configurations. A typical `CMakeLists.txt` for a simple project would look like:\n\n cmake_minimum_required(VERSION 3.0)\n \n project(MyProject)\n \n set(SRC_DIR \"${CMAKE_CURRENT_LIST_DIR}/src\")\n set(SOURCES \"${SRC_DIR}/main.cpp\" \"${SRC_DIR}/file1.cpp\" \"${SRC_DIR}/file2.cpp\")\n \n add_executable(${PROJECT_NAME} ${SOURCES})\n \n target_include_directories(${PROJECT_NAME} PRIVATE \"${CMAKE_CURRENT_LIST_DIR}/include\")\n \n set_target_properties(${PROJECT_NAME} PROPERTIES\n CXX_STANDARD 14\n CXX_STANDARD_REQUIRED ON\n CXX_EXTENSIONS OFF\n )\n \n\nBuilding with CMake\n-------------------\n\nHere is an example of a simple build process using CMake:\n\n* Create a new directory for the build.\n\n mkdir build\n cd build\n \n\n* Generate build files using CMake.\n\n cmake ..\n \n\nIn this example, `..` indicates the parent directory where `CMakeLists.txt` is located. The build files will be generated in the `build` directory.\n\n* Build the project using the generated build files.\n\n make\n \n\nOr, on Windows with Visual Studio, you may use:\n\n msbuild MyProject.sln\n \n\nCMake makes it easy to manage large projects, define custom build configurations, and work with many different compilers and operating systems. Making it a widely chosen tool for managing build systems in C++ projects.",
"links": []
},
"t6rZLH7l8JQm99ax_fEJ9": {
"title": "Makefile",
"description": "A Makefile is a configuration file used by the `make` utility to automate the process of compiling and linking code in a C++ project. It consists of a set of rules and dependencies that help in building the target executable or library from source code files.\n\nMakefiles help developers save time, reduce errors, and ensure consistency in the build process. They achieve this by specifying the dependencies between different source files, and providing commands that generate output files (such as object files and executables) from input files (such as source code and headers).\n\nStructure of a Makefile\n-----------------------\n\nA typical Makefile has the following structure:\n\n* **Variables**: Define variables to store commonly used values, such as compiler flags, directories, or target names.\n* **Rules**: Define how to generate output files from input files using a set of commands. Each rule has a _target_, a set of _prerequisites_, and a _recipe_.\n* **Phony targets**: Targets that do not represent actual files in the project but serve as a way to group related rules and invoke them using a single command.\n\nExample\n-------\n\nConsider a basic C++ project with the following directory structure:\n\n project/\n |-- include/\n | |-- header.h\n |-- src/\n | |-- main.cpp\n |-- Makefile\n \n\nA simple Makefile for this project could be as follows:\n\n # Variables\n CXX = g++\n CXXFLAGS = -Wall -Iinclude\n SRC = src/main.cpp\n OBJ = main.o\n EXE = my_program\n \n # Rules\n $(EXE): $(OBJ)\n \t$(CXX) $(CXXFLAGS) -o $(EXE) $(OBJ)\n \n $(OBJ): $(SRC)\n \t$(CXX) $(CXXFLAGS) -c $(SRC)\n \n # Phony targets\n .PHONY: clean\n clean:\n \trm -f $(OBJ) $(EXE)\n \n\nWith this Makefile, you can simply run `make` in the terminal to build the project, and `make clean` to remove the output files. The Makefile specifies the dependencies between the source code, object files, and the final executable, as well as the commands to compile and link them.\n\nSummary\n-------\n\nMakefiles provide a powerful way to automate building C++ projects using the `make` utility. They describe the dependencies and commands required to generate output files from source code, saving time and ensuring consistency in the build process.",
"links": []
},
"HkUCD5A_M9bJxJRElkK0x": {
"title": "Ninja",
"description": "Ninja is a small build system with a focus on speed. It is designed to handle large projects by generating build files that implement the minimal amount of work necessary to build the code. This results in faster build times, especially for large codebases. Ninja is often used in conjunction with other build systems like CMake, which can generate Ninja build files for you.\n\nNinja build files are typically named `build.ninja` and contain rules, build statements, and variable declarations. Here's a simple example of a Ninja build file for a C++ project:\n\n # Variable declarations\n cxx = g++\n cflags = -Wall -Wextra -std=c++17\n \n # Rule for compiling the C++ files\n rule cxx_compile\n command = $cxx $cflags -c $in -o $out\n \n # Build statements for the source files\n build main.o: cxx_compile main.cpp\n build foo.o: cxx_compile foo.cpp\n \n # Rule for linking the object files\n rule link\n command = $cxx $in -o $out\n \n # Build statement for the final executable\n build my_program: link main.o foo.o\n \n\nTo build the project using this `build.ninja` file, simply run `ninja` in the terminal:\n\n $ ninja\n \n\nThis will build the `my_program` executable by first compiling the `main.cpp` and `foo.cpp` files into object files, and then linking them together.",
"links": []
},
"h29eJG1hWHa7vMhSqtfV2": {
"title": "Package Managers",
"description": "Package managers are tools that automate the process of installing, upgrading, and managing software (libraries, frameworks, and other dependencies) for a programming language, such as C++.\n\nSome popular package managers used in the C++ ecosystem include:\n\n* **Conan**\n* **vcpkg**\n* **C++ Archive Network (cppan)**\n\nConan\n-----\n\n[Conan](https://conan.io/) is an open-source, decentralized, cross-platform package manager for C and C++ developers. It simplifies managing dependencies and reusing code, which benefits multi-platform development projects.\n\nFor example, installing a library using Conan:\n\n conan install poco/1.9.4@\n \n\nvcpkg\n-----\n\n[vcpkg](https://github.com/microsoft/vcpkg) is a cross-platform package manager created by Microsoft. It is an open-source library management system for C++ developers to build and manage their projects.\n\nFor example, installing a package using vcpkg:\n\n ./vcpkg install boost:x64-windows\n \n\nC++ Archive Network (cppan)\n---------------------------\n\n[cppan](https://cppan.org/) is a package manager and software repository for C++ developers, simplifying the process of managing and distributing C++ libraries and tools. It's now part of [build2](https://build2.org/), a build toolchain that provides a package manager.\n\nAn example of a `cppan.yml` file:\n\n #\n # cppan.yml\n #\n \n project:\n api_version: 1\n \n depend:\n - pvt.cppan.demo.sqlite3\n - pvt.cppan.demo.xz_utils.lzma\n \n\nWith these package managers, you can streamline your development process and easily manage dependencies in your C++ projects. In addition, you can easily reuse the code in your projects to improve code quality and accelerate development.",
"links": []
},
"PKG5pACLfRS2ogfzBX47_": {
"title": "vcpkg",
"description": "`vcpkg` is a cross-platform, open-source package manager for C and C++ libraries. Developed by Microsoft, it simplifies the process of acquiring and building open-source libraries for your projects. `vcpkg` supports various platforms including Windows, Linux, and macOS, enabling you to easily manage and integrate external libraries into your projects.\n\nInstallation\n------------\n\nTo install `vcpkg`, follow these steps:\n\n* Clone the repository:\n \n git clone https://github.com/Microsoft/vcpkg.git\n \n \n* Change to the `vcpkg` directory and run the bootstrap script:\n \n * On Windows:\n \n .\\bootstrap-vcpkg.bat\n \n \n * On Linux/macOS:\n \n ./bootstrap-vcpkg.sh\n \n \n* (Optional) Add the `vcpkg` executable to your `PATH` environment variable for easy access.\n \n\nBasic usage\n-----------\n\nHere are some basic examples of using `vcpkg`:\n\n* Search for a package:\n \n vcpkg search <package_name>\n \n \n* Install a package:\n \n vcpkg install <package_name>\n \n \n* Remove a package:\n \n vcpkg remove <package_name>\n \n \n* List installed packages:\n \n vcpkg list\n \n \n* Integrate `vcpkg` with Visual Studio (Windows only):\n \n vcpkg integrate install\n \n \n\nFor additional documentation and advanced usage, you can refer to the [official GitHub repository](https://github.com/microsoft/vcpkg).",
"links": []
},
"g0s0F4mLV16eNvMBflN2e": {
"title": "NuGet",
"description": "[NuGet](https://www.nuget.org/) is a Microsoft-supported package manager for the .NET framework, mainly used in C# and other .NET languages, but also supports C++ projects with `PackageReference`. It allows you to easily add, update, and manage dependencies in your projects.\n\n### Installation\n\nYou can use NuGet either as a command-line tool or integrated in your preferred IDE like Visual Studio or Visual Studio Code. If you're using Visual Studio, it comes pre-installed. For other editors, you may need to download the command-line tool `nuget.exe`.\n\n### Usage\n\nYou can use NuGet to manage your C++ dependencies using the PackageReference format in vcxproj files:\n\n* Tools > NuGet Package Manager > Manage NuGet Packages for Solution…\n* Package source should be set to \"[nuget.org](http://nuget.org)\"\n* Select the Projects tab\n* Use the search box to find packages\n\nFor example, to install a package called \"PackageName\" for all configurations:\n\n <Project>\n <ItemGroup>\n <PackageReference Include=\"PackageName\" Version=\"1.0.0\" />\n </ItemGroup>\n ...\n </Project>\n \n\n### NuGet Command-Line\n\nYou can also use the command-line tool `nuget.exe` for more advanced scenarios or for specific needs.\n\nHere's an example of installing a package using the command line:\n\n nuget install PackageName\n \n\nAnd updating a package:\n\n nuget update PackageName\n \n\nFor more information and detailed examples on using NuGet in your projects, please refer to the [official documentation](https://docs.microsoft.com/en-us/nuget/guides/native-packages).",
"links": []
},
"ky_UqizToTZHC_b77qFi2": {
"title": "Conan",
"description": "[Conan](https://conan.io/) is a popular package manager for C and C++ languages and is designed to be cross-platform, extensible, and easy to use. It allows developers to declare, manage, and fetch dependencies while automating the build process. Conan supports various build systems, such as CMake, Visual Studio, MSBuild, and more.\n\nInstallation\n------------\n\nTo install Conan, you can use pip, the Python package manager:\n\n pip install conan\n \n\nBasic Usage\n-----------\n\n* Create a `conanfile.txt` file in your project root directory, specifying dependencies you need for your project:\n\n [requires]\n boost/1.75.0\n \n [generators]\n cmake\n \n\n* Run the `conan install` command to fetch and build required dependencies:\n\n mkdir build && cd build\n conan install ..\n \n\n* Now build your project using your build system, for example CMake:\n\n cmake .. -DCMAKE_BUILD_TYPE=Release\n cmake --build .\n \n\nCreating Packages\n-----------------\n\nTo create a package in Conan, you need to write a `conanfile.py` file with package information and build instructions.\n\nHere's an example:\n\n from conans import ConanFile, CMake\n \n \n class MyLibraryConan(ConanFile):\n name = \"MyLibrary\"\n version = \"0.1\"\n license = \"MIT\"\n url = \"https://github.com/username/mylibrary\"\n description = \"A simple example library\"\n settings = \"os\", \"compiler\", \"build_type\", \"arch\"\n generators = \"cmake\"\n \n def build(self):\n cmake = CMake(self)\n cmake.configure(source_folder=\"src\")\n cmake.build()\n \n def package(self):\n self.copy(\"*.hpp\", dst=\"include\", src=\"src/include\")\n self.copy(\"*.lib\", dst=\"lib\", keep_path=False)\n self.copy(\"*.dll\", dst=\"bin\", keep_path=False)\n self.copy(\"*.so\", dst=\"lib\", keep_path=False)\n self.copy(\"*.a\", dst=\"lib\", keep_path=False)\n \n def package_info(self):\n self.cpp_info.libs = [\"MyLibrary\"]\n \n\nWith that setup, you can create a package by running:\n\n conan create . username/channel\n \n\nThis will compile the package and store it in your Conan cache. You can now use this package as a dependency in other projects.",
"links": []
},
"3ehBc2sKVlPj7dn4RVZCH": {
"title": "Spack",
"description": "[Spack](https://spack.io/) is a flexible package manager designed to support multiple versions, configurations, platforms, and compilers. It is particularly useful in High Performance Computing (HPC) environments and for those who require fine control over their software stack. Spack is a popular choice in scientific computing due to its support for various platforms such as Linux, macOS, and many supercomputers. It is designed to automatically search for and install dependencies, making it easy to build complex software.\n\nKey Features\n------------\n\n* **Multi-Version Support**: Spack allows for the installation of multiple versions of packages, enabling users to work with different configurations depending on their needs.\n* **Compiler Support**: Spack supports multiple compilers, including GCC, Clang, Intel, PGI, and others, allowing users to choose the best toolchain for their application.\n* **Platform Support**: Spack can run on Linux, macOS, and various supercomputers, and it can even target multiple architectures within a single package.\n* **Dependencies**: Spack takes care of dependencies, providing automatic installation and management of required packages.\n\nBasic Usage\n-----------\n\n* To install Spack, clone its Git repository and set up your environment:\n \n git clone https://github.com/spack/spack.git\n cd spack\n . share/spack/setup-env.sh\n \n \n* Install a package using Spack:\n \n spack install <package-name>\n \n \n For example, to install `hdf5`:\n \n spack install hdf5\n \n \n* Load a package in your environment:\n \n spack load <package-name>\n \n \n For example, to load `hdf5`:\n \n spack load hdf5\n \n \n* List installed packages:\n \n spack find\n \n \n* Uninstall a package:\n \n spack uninstall <package-name>\n \n \n\nFor more advanced usage, like installing specific versions or using different compilers, consult the [Spack documentation](https://spack.readthedocs.io/).",
"links": []
},
"4kkX5g_-plX9zVqr0ZoiR": {
"title": "Working with Libraries",
"description": "When working with C++, you may need to use external libraries to assist in various tasks. Libraries are precompiled pieces of code that can be reused in your program to perform a specific task or provide a certain functionality. In C++, libraries can be either static libraries (.lib) or dynamic libraries (.dll in Windows, .so in Unix/Linux).\n\n**1\\. Static Libraries**\n\nStatic libraries are incorporated into your program during compile time. They are linked with your code, creating a larger executable file, but it does not require any external files during runtime.\n\nTo create a static library, you'll need to compile your source files into object files, then bundle them into an archive. You can use the following commands:\n\n g++ -c sourcefile.cpp -o objectfile.o\n ar rcs libmystaticlibrary.a objectfile.o\n \n\nTo use a static library, you need to include the header files in your source code and then link the library during the compilation process:\n\n g++ main.cpp -o myprogram -L/path/to/your/library/ -lmystaticlibrary\n \n\nReplace `/path/to/your/library/` with the path where your `libmystaticlibrary.a` file is located.\n\n**2\\. Dynamic Libraries**\n\nDynamic libraries are loaded during runtime, which means that your executable file only contains references to these libraries. The libraries need to be available on the system where your program is running.\n\nTo create a dynamic library, you'll need to compile your source files into object files, then create a shared library:\n\n g++ -c -fPIC sourcefile.cpp -o objectfile.o\n g++ -shared -o libmydynamiclibrary.so objectfile.o\n \n\nTo use a dynamic library, include the library's header files in your source code and then link the library during the compilation process:\n\n g++ main.cpp -o myprogram -L/path/to/your/library/ -lmydynamiclibrary\n \n\nReplace `/path/to/your/library/` with the path where your `libmydynamiclibrary.so` file is located.\n\n**NOTE:** When using dynamic libraries, make sure the library is in the system's search path for shared libraries. You may need to update the `LD_LIBRARY_PATH` environment variable on Unix/Linux systems or the `PATH` variable on Windows.\n\nIn conclusion, using libraries in C++ involves creating or obtaining a library (static or dynamic), including the library's header files in your source code, and linking the library during the compilation process. Be aware of the differences between static and dynamic libraries, and choose the right approach to suit your needs.",
"links": []
},
"5mNqH_AEiLxUmgurNW1Fq": {
"title": "Library Inclusion",
"description": "In C++ programming, inclusion refers to incorporating external libraries, header files, or other code files into your program. This process allows developers to access pre-built functions, classes, and variable declarations that can be used in their own code. There are two types of inclusion in C++:\n\n* Header Inclusion\n* Source Inclusion\n\n### Header Inclusion\n\nHeader inclusion involves including header files using the preprocessor directive `#include`. Header files are typically used to provide function prototypes, class declarations, and constant definitions that can be shared across multiple source files. There are two ways to include header files in your program:\n\n* Angle brackets `<>`: Used for including standard library headers, like `iostream`, `vector`, or `algorithm`.\n\nExample:\n\n #include <iostream>\n #include <vector>\n \n\n* Double quotes `\"\"`: Used for including user-defined headers or headers provided by third-party libraries.\n\nExample:\n\n #include \"myHeader.h\"\n #include \"thirdPartyLibrary.h\"\n \n\n### Source Inclusion\n\nSource inclusion refers to including the content of a source file directly in another source file. This approach is generally not recommended as it can lead to multiple definitions and increased compile times but it can occasionally be useful for certain tasks (e.g., templates or simple small programs). To include a source file, you can use the `#include` directive with double quotes, just like with header files:\n\nExample:\n\n #include \"mySourceFile.cpp\"\n \n\nRemember, using source inclusion for large projects or in situations where it's not necessary can lead to unexpected issues and should be avoided.",
"links": []
},
"sLVs95EOeHZldoKY0L_dH": {
"title": "Licensing",
"description": "Licensing is a crucial aspect of working with libraries in C++ because it determines the rights and limitations on how you can use, modify, and distribute a given library. There are various types of licenses applied to open-source libraries. Below is a brief overview of three common licenses:\n\nMIT License\n-----------\n\nThe MIT License is a permissive license that allows users to do whatever they want with the software code. They only need to include the original copyright, license notice, and a disclaimer of warranty in their copies.\n\nExample: Including the MIT License into your project can be done by simply adding the license file and a notice at the top of your source code files like:\n\n /* Copyright (C) [year] [author]\n * SPDX-License-Identifier: MIT\n */\n \n\nGNU General Public License (GPL)\n--------------------------------\n\nThe GPL is a copyleft license that grants users the rights to use, study, share, and modify the software code. However, any changes made to the code or any software that uses GPL licensed code must also be distributed under the GPL license.\n\nExample: To include a GPL license in your project, include a `COPYING` file with the full text of the license and place a notice in your source code files like:\n\n /* Copyright (C) [year] [author]\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n \n\nApache License 2.0\n------------------\n\nThe Apache License is a permissive license similar to the MIT license and allows users to do virtually anything with the software code. The primary difference is that it requires that any changes to the code are documented, and it provides specific terms for patent protection.\n\nExample: To include the Apache License in your project, add a `LICENSE` file with the full text of the license. Add a notice to your source code files like:\n\n /* Copyright (C) [year] [author]\n * SPDX-License-Identifier: Apache-2.0\n */\n \n\nPlease note that these are brief summaries of the licenses, and there are many other licenses available for use in software projects. When using third-party libraries, it is crucial to understand and adhere to the terms of their respective licenses to avoid legal complications.",
"links": []
},
"1d7h5P1Q0RVHryKPVogQy": {
"title": "Boost",
"description": "",
"links": []
},
"Eq3TKSFJ2F2mrTHAaU2J4": {
"title": "OpenCV",
"description": "",
"links": []
},
"nOkniNXfXwPPlOEJHJoGl": {
"title": "POCO",
"description": "",
"links": []
},
"jpMCIWQko7p3ndezYHL4D": {
"title": "protobuf",
"description": "",
"links": []
},
"621J9W4xCofumNZGo4TZT": {
"title": "gRPC",
"description": "",
"links": []
},
"j_eNHhs0J08Dt7HVbo4Q2": {
"title": "Tensorflow",
"description": "",
"links": []
},
"tEkvlJPAkD5fji-MMODL7": {
"title": "pybind11",
"description": "",
"links": []
},
"q64qFxoCrR38RPsN2lC8x": {
"title": "spdlog",
"description": "",
"links": []
},
"GGZJaYpRENaqloJzt0VtY": {
"title": "opencl",
"description": "",
"links": []
},
"1CqQgmHDeo1HlPdpUJS7H": {
"title": "fmt",
"description": "",
"links": []
},
"et-dXKPYuyVW6eV2K3CM8": {
"title": "ranges_v3",
"description": "",
"links": []
},
"MrAM-viRaF8DSxB6sVdD9": {
"title": "gtest / gmock",
"description": "",
"links": []
},
"gAZ9Dqgj1_UkaLzVgzx1t": {
"title": "Qt",
"description": "",
"links": []
},
"s13jQuaC6gw0Lab3Cbyy6": {
"title": "Catch2",
"description": "",
"links": []
},
"O0lVEMTAV1pq9sYCKQvh_": {
"title": "Orbit Profiler",
"description": "",
"links": []
},
"88pr5aN7cctZfDVVo-2ns": {
"title": "PyTorch C++",
"description": "",
"links": []
}
}

Some files were not shown because too many files have changed in this diff Show More