DevGuide ๐Ÿ‡ต๐Ÿ‡ธ
10.9K subscribers
2.56K photos
17 videos
127 files
3.54K links
Join our channel for top-notch programming hacks, epic discussions, and brilliant career moves. ๐Ÿš€

โšก๏ธ Stay connected with me: linktr.ee/AliSamir

๐Ÿ“ To advertise on the channel: https://telega.io/c/the_developer_guide
Download Telegram
Understanding Clean Code: Systems โšก๏ธ

ู„ุง ุชู†ุณูˆุง ุฃู‡ู„ู†ุง ููŠ ูู„ู€ู€ุณุทู€ู€ูŠู† ูˆููŠ ุณู€ู€ูˆุฑูŠุง ูˆููŠ ุงู„ุณู€ู€ูˆุฏุงู† ูˆููŠ ุงู„ูŠู€ู€ู…ู† ูˆููŠ ูƒู„ ุฏูˆู„ ุงู„ุนุงู„ู… ู…ู† ุงู„ู…ุณู„ู…ูŠู† ู…ู† ุงู„ุฏุนุงุก. ๐Ÿค


- When building software systems, it's crucial to manage codebase complexity.

- Clean Code's Chapter 11 discusses designing modular systems that are easier to maintain and adapt over time.

https://dev.to/alisamir/understanding-clean-code-systems-53da
ุงู„ู€ Git ๐Ÿ”ป

ู„ุง ุชู†ุณูˆุง ุฃู‡ู„ู†ุง ููŠ ูู„ู€ู€ุณุทู€ู€ูŠู† ูˆููŠ ุณู€ู€ูˆุฑูŠุง ูˆููŠ ุงู„ุณู€ู€ูˆุฏุงู† ูˆููŠ ุงู„ูŠู€ู€ู…ู† ูˆููŠ ูƒู„ ุฏูˆู„ ุงู„ุนุงู„ู… ู…ู† ุงู„ู…ุณู„ู…ูŠู† ู…ู† ุงู„ุฏุนุงุก. ๐Ÿค


ุงู„ู€ Git ู‡ูˆ ูˆุงุญุฏ ู…ู† ุฃู‡ู… ุงู„ุฃุฏูˆุงุช ุงู„ู„ูŠ ู„ุงุฒู… ุชุชุนู„ู…ู‡ุง ูˆุชูู‡ู…ู‡ุง ูƒูˆูŠุณ ุฌุฏู‹ุง ููŠ ู…ุฌุงู„ ุงู„ุณูˆูุชูˆูŠุฑุŒ ูˆุฏู‡ ู„ุฃู†ู‡ ุจูŠุณุงุนุฏูƒ ููŠ ุฅุฏุงุฑุฉ ุงู„ุฃูƒูˆุงุฏ ุจุชุงุนุชูƒ ูˆุชู†ุธูŠู…ู‡ุง ุจุดูƒู„ ู…ุญุชุฑู ู…ู† ุบูŠุฑ ู…ุง ุชุถูŠุน ูˆู‚ุชูƒ ูˆู…ุฌู‡ูˆุฏูƒ.

ุจุงุฎุชุตุงุฑุŒ Git ู‡ูˆ ู†ุธุงู… ู„ุฅุฏุงุฑุฉ ุงู„ุฅุตุฏุงุฑุงุช (Version Control System) ุงู„ู„ูŠ ุจูŠุฎู„ูŠูƒ ุชู‚ุฏุฑ ุชุญุชูุธ ุจู†ุณุฎ ู…ุฎุชู„ูุฉ ู…ู† ุงู„ูƒูˆุฏ ุจุชุงุนูƒ ูˆุชู‚ุฏุฑ ุชุฑุฌุน ู„ุฃูŠ ู†ุณุฎุฉ ููŠ ุฃูŠ ูˆู‚ุช.

ูƒู…ุงู† ุจูŠุณู‡ู„ ุนู„ูŠูƒ ุชุดุชุบู„ ู…ุน ูุฑูŠู‚ ู„ุฃู†ูƒ ุชู‚ุฏุฑ ุชุฏู…ุฌ ุดุบู„ูƒ ู…ุน ุดุบู„ ุจุงู‚ูŠ ุงู„ูุฑูŠู‚ ุจุฏูˆู† ู…ุดุงูƒู„.

โ€”โ€”โ€”

๐Ÿ“Œ ุทูŠุจ ุฅูŠู‡ ู‡ูŠ ุฃู‡ู… ุฃูˆุงู…ุฑ Git ุงู„ู„ูŠ ู„ุงุฒู… ุชุนุฑูู‡ุงุŸ

โšก๏ธ ุงู„ู€ git init


ุฏู‡ ุงู„ุฃู…ุฑ ุงู„ู„ูŠ ุจูŠุนู…ู„ ุชู‡ูŠุฆุฉ (initialize) ู„ู…ุดุฑูˆุนูƒ ุนุดุงู† ูŠุชุญูˆู„ ู„ู…ุดุฑูˆุน GitุŒ ูŠุนู†ูŠ ุจูŠุนู…ู„ ู…ู„ู ู…ุฎููŠ ููŠ ุงู„ู…ุดุฑูˆุน ุจุชุงุนูƒ ุงุณู…ู‡ (git.) ุงู„ู„ูŠ ุจูŠุญุชูˆูŠ ุนู„ู‰ ูƒู„ ุงู„ุชูุงุตูŠู„ ุงู„ุฎุงุตุฉ ุจุงู„ุฅุตุฏุงุฑุงุช.

โ€”โ€”โ€”

โšก๏ธ ุงู„ู€ git clone


ุงู„ุฃู…ุฑ ุฏู‡ ุจูŠุณุชุฎุฏู… ู„ู…ุง ุชุญุจ ุชู†ุณุฎ ู…ุดุฑูˆุน ู…ู† GitHub ุฃูˆ ุฃูŠ ู…ุณุชูˆุฏุน (repository) ุฎุงุฑุฌูŠ ูˆุชุดุชุบู„ ุนู„ูŠู‡ ู…ุญู„ูŠู‹ุง (locally) ุนู„ู‰ ุฌู‡ุงุฒูƒ.

โ€”โ€”โ€”

โšก๏ธ ุงู„ู€ git status


ู…ู† ุฃู‡ู… ุงู„ุฃูˆุงู…ุฑ ุงู„ู„ูŠ ู„ุงุฒู… ุชุณุชุฎุฏู…ู‡ุง ูƒุชูŠุฑุŒ ุจูŠุนุฑุถ ู„ูƒ ุญุงู„ุฉ ุงู„ู…ู„ูุงุช ุงู„ู„ูŠ ุงุดุชุบู„ุช ุนู„ูŠู‡ุง ูˆู‡ู„ ู‡ูŠ ุฌุงู‡ุฒุฉ ู„ู„ุฅุถุงูุฉ ูˆู„ุง ู„ุงุŒ ูˆูƒู…ุงู† ุจูŠูˆุฑูŠูƒ ุฃูŠ ุชุนุฏูŠู„ุงุช ุชู…ุช ุนู„ู‰ ุงู„ู…ุดุฑูˆุน.

โ€”โ€”โ€”

โšก๏ธ ุงู„ู€ git add


ู„ู…ุง ุชุนุฏู„ ููŠ ุฃูŠ ู…ู„ู ูˆุนุงูˆุฒ ุชุถูŠูู‡ ู„ู„ุงุณุชุนุฏุงุฏ ู„ุนู…ู„ูŠุฉ ุงู„ุญูุธ (commit)ุŒ ุจุชุณุชุฎุฏู… ุงู„ุฃู…ุฑ ุฏู‡. ู…ุซู„ู‹ุง:

git add .

ุฏู‡ ุจูŠุถูŠู ูƒู„ ุงู„ู…ู„ูุงุช ุงู„ู„ูŠ ุชู… ุชุนุฏูŠู„ู‡ุง.

โ€”โ€”โ€”

โšก๏ธ ุงู„ู€ git commit -m "commit message"


ู‡ู†ุง ุจุชูŠุฌูŠ ุงู„ุฎุทูˆุฉ ุงู„ุฃู‡ู…ุŒ ุงู„ู„ูŠ ู‡ูŠ ุฅู†ูƒ ุชุญูุธ ุงู„ุชุนุฏูŠู„ุงุช ุงู„ู„ูŠ ุนู…ู„ุชู‡ุง ุจุดูƒู„ ุฏุงุฆู…ุŒ ูˆุจุงุณุชุฎุฏุงู… ุงู„ู€ -m ุชู‚ุฏุฑ ุชุถูŠู ุฑุณุงู„ุฉ ุชูˆุถุญ ุงู„ุชุนุฏูŠู„ุงุช ุงู„ู„ูŠ ุนู…ู„ุชู‡ุง. ุงู„ุฑุณุงู„ุฉ ุฏูŠ ุจุชุณุงุนุฏูƒ ุจุนุฏูŠู† ุชูู‡ู… ุฅูŠู‡ ุงู„ู„ูŠ ุญุตู„ ููŠ ูƒู„ ู…ุฑุญู„ุฉ.

โ€”โ€”โ€”

โšก๏ธ ุงู„ู€ git push


ุฏู‡ ุงู„ุฃู…ุฑ ุงู„ู„ูŠ ุจูŠุจุนุช ุงู„ุชุนุฏูŠู„ุงุช ุงู„ู„ูŠ ุนู…ู„ุชู‡ุง ู„ู„ู…ุณุชูˆุฏุน ุงู„ู„ูŠ ุดุบุงู„ ุนู„ูŠู‡ ุนู„ู‰ GitHub ุฃูˆ ุฃูŠ ุฎุฏู…ุฉ ุชุงู†ูŠุฉ. ูˆุฏู‡ ู…ู‡ู… ุฌุฏู‹ุง ู„ูˆ ุดุบุงู„ ุถู…ู† ูุฑูŠู‚ ุฃูˆ ู„ูˆ ุนุงูˆุฒ ุชุนู…ู„ ู†ุณุฎุฉ ุงุญุชูŠุงุทูŠุฉ ู„ู„ูƒูˆุฏ ุจุชุงุนูƒ.

โ€”โ€”โ€”

โšก๏ธ ุงู„ู€ git pull


ู„ูˆ ููŠู‡ ุชุนุฏูŠู„ุงุช ุฌุฏูŠุฏุฉ ุนู„ู‰ ุงู„ู…ุณุชูˆุฏุน ุงู„ุฑุฆูŠุณูŠ ูˆุนุงูˆุฒ ุชุณุญุจู‡ุง ุนู†ุฏูƒุŒ ุจุชุณุชุฎุฏู… ุงู„ุฃู…ุฑ ุฏู‡. ุจูŠุญุฏุซ ุงู„ูƒูˆุฏ ุนู†ุฏูƒ ุนุดุงู† ูŠูƒูˆู† ู…ุญุฏุซ ุฏุงูŠู…ู‹ุง ุจุงู„ุชุนุฏูŠู„ุงุช ุงู„ู„ูŠ ุชู…ุช ู…ู† ุจุงู‚ูŠ ุงู„ูุฑูŠู‚.

โ€”โ€”โ€”

โšก๏ธ ุงู„ู€ git branch


ุนุดุงู† ุชุนู…ู„ ูุฑุน ุฌุฏูŠุฏ ู„ู„ูƒูˆุฏ ุจุชุงุนูƒ (branch) ูˆุชุดุชุบู„ ุนู„ู‰ ู…ูŠุฒุฉ ู…ุนูŠู†ุฉ ู…ู† ุบูŠุฑ ู…ุง ุชุนุฏู„ ุนู„ู‰ ุงู„ูุฑุน ุงู„ุฑุฆูŠุณูŠ (main branch)ุŒ ุจุชุณุชุฎุฏู… ุงู„ุฃู…ุฑ ุฏู‡. ู…ุซู„ู‹ุง:

git branch feature-xyz

ู‡ูŠุนู…ู„ ูุฑุน ุฌุฏูŠุฏ ุงุณู…ู‡ feature-xyz.

โ€”โ€”โ€”

โšก๏ธ ุงู„ู€ git merge


ุจุนุฏ ู…ุง ุชุฎู„ุต ุดุบู„ูƒ ุนู„ู‰ ุงู„ูุฑุน (branch) ุงู„ู„ูŠ ูƒู†ุช ุดุบุงู„ ุนู„ูŠู‡ ูˆุนุงูˆุฒ ุชุฏู…ุฌู‡ ู…ุน ุงู„ูุฑุน ุงู„ุฑุฆูŠุณูŠุŒ ุจุชุณุชุฎุฏู… git merge. ุฏู‡ ุจูŠุณู…ุญ ู„ูƒ ุชุฌู…ุน ุงู„ุชุนุฏูŠู„ุงุช ูƒู„ู‡ุง ููŠ ู…ูƒุงู† ูˆุงุญุฏ.

โ€”โ€”โ€”

ุฃู…ุง GitHub ูู‡ูˆ ู…ู†ุตุฉ ุจุชุฑูุน ุนู„ูŠู‡ุง ุงู„ูƒูˆุฏ ุจุชุงุนูƒ ุงู„ู„ูŠ ู…ุณุชุฎุฏู… ููŠู‡ Git ุนุดุงู† ุชู‚ุฏุฑ ุชุฎุฒู†ู‡ ุฃูˆู†ู„ุงูŠู†ุŒ ูˆุชุดุชุบู„ ุนู„ูŠู‡ ู…ุน ุจุงู‚ูŠ ุงู„ุชูŠู… ูˆูƒู…ุงู† ุชูˆุตู„ู‡ ู…ู† ุฃูŠ ุฌู‡ุงุฒ ุจู†ูุณ ุงู„ุฃูƒูˆู†ุช ุจุชุงุนูƒ.

ูŠุนู†ูŠ ุชุฎูŠู„ ุฅู†ูƒ ุดุบุงู„ ููŠ ู…ุดุฑูˆุน ูƒุจูŠุฑ ูˆู…ุนุงูƒ ุชูŠู…ุŒ ูƒู„ ูˆุงุญุฏ ู…ู…ูƒู† ูŠุดุชุบู„ ุนู„ู‰ ุฌุฒุก ู…ุนูŠู† ู…ู† ุงู„ูƒูˆุฏุŒ ูˆุจุนุฏูŠู† ุชุฏู…ุฌูˆุง ุดุบู„ูƒู… ูƒู„ู‡ ู…ุน ุจุนุถ ู…ู† ุบูŠุฑ ู…ุง ูŠุญุตู„ ุฃูŠ ู„ุฎุจุทุฉ.

ุจุงู„ู†ุณุจุฉ ู„ู€ GitLab ูู‡ูˆ ู…ู†ุตุฉ ุฒูŠ GitHub ู…ู† ุญูŠุซ ุงู„ูˆุธูŠูุฉ ูˆุงู„ุงุณุชุฎุฏุงู…. ูˆู„ูƒู† ู‡ุชู„ุงู‚ูŠ ุดูƒู„ู‡ุง ู…ุฎุชู„ู ุดูˆูŠุฉ.

โ€”โ€”โ€”

ุงู„ู€ Git ู‡ูŠูˆูุฑ ู„ูƒ ูˆู‚ุช ูƒุจูŠุฑ ูˆู‡ูŠุฌู†ุจูƒ ูƒุชูŠุฑ ู…ู† ุงู„ุฃุฎุทุงุก ุงู„ู„ูŠ ู…ู…ูƒู† ุชุญุตู„ ู„ูˆ ุงุดุชุบู„ุช ุนู„ู‰ ุงู„ูƒูˆุฏ ุจุดูƒู„ ุบูŠุฑ ู…ู†ุธู…. ูƒู„ ุงู„ุฃูˆุงู…ุฑ ุงู„ู„ูŠ ููˆู‚ ุฏูŠ ู‡ูŠ ุงู„ุฃุณุงุณูŠุงุช ุงู„ู„ูŠ ู‡ุชุณุงุนุฏูƒ ุชุจุฏุฃุŒ ูˆุทุจุนู‹ุง ููŠู‡ ุฃูˆุงู…ุฑ ุฃูƒุชุฑ ู…ุชู‚ุฏู…ุฉ ู…ู…ูƒู† ุชุชุนู„ู…ู‡ุง ุจุนุฏ ูƒุฏู‡. โœ…
โค11๐Ÿ‘6
ู‚ู€ูˆุงุนู€ุฏ ุงู„ุจูŠุงู†ุงุช (Databases) ๐Ÿ”ป

ู„ุง ุชู†ุณูˆุง ุฃู‡ู„ู†ุง ููŠ ูู„ู€ู€ุณุทู€ู€ูŠู† ูˆููŠ ุณู€ู€ูˆุฑูŠุง ูˆููŠ ุงู„ุณู€ู€ูˆุฏุงู† ูˆููŠ ุงู„ูŠู€ู€ู…ู† ูˆููŠ ูƒู„ ุฏูˆู„ ุงู„ุนุงู„ู… ู…ู† ุงู„ู…ุณู„ู…ูŠู† ู…ู† ุงู„ุฏุนุงุก. ๐Ÿค


ุงู„ุฏุงุชุงุจูŠุฒ (Database) ู‡ูŠ ุฌุฒุก ุฃุณุงุณูŠ ููŠ ุฃูŠ ุณูˆูุชูˆูŠุฑ ุณูˆุงุก ู…ูˆู‚ุน ุฃูˆ ุชุทุจูŠู‚ุŒ ู„ุฃู†ู‡ุง ุจุชุฎุฒู† ูˆุจุชุชุนุงู…ู„ ู…ุน ุงู„ุจูŠุงู†ุงุช ุงู„ู„ูŠ ุจูŠุณุชุฎุฏู…ู‡ุง ุงู„ุชุทุจูŠู‚.

https://www.linkedin.com/posts/dev-alisamir_database-sql-nosql-activity-7240785181274451968-jp_6
ุงู„ู€ Asynchronous Programming ููŠ JavaScript ๐Ÿ’ฏ

ู„ุง ุชู†ุณูˆุง ุฃู‡ู„ู†ุง ููŠ ูู„ู€ู€ุณุทู€ู€ูŠู† ูˆููŠ ุณู€ู€ูˆุฑูŠุง ูˆููŠ ุงู„ุณู€ู€ูˆุฏุงู† ูˆููŠ ุงู„ูŠู€ู€ู…ู† ูˆููŠ ูƒู„ ุฏูˆู„ ุงู„ุนุงู„ู… ู…ู† ุงู„ู…ุณู„ู…ูŠู† ู…ู† ุงู„ุฏุนุงุก. ๐Ÿค


ูˆุฃู†ุช ุดุบุงู„ ุจู„ุบุฉ JavaScript ุฃูƒูŠุฏ ุณู…ุนุช ุนู† ู…ุตุทู„ุญ ุงู„ู€ Asynchronous Programming ูˆุงู„ู„ูŠ ูŠุนุชุจุฑ ุญุงุฌุฉ ู…ู‡ู…ุฉ ู„ุงุฒู… ุชูƒูˆู† ูุงู‡ู…ู‡ุง ูƒูˆูŠุณ.

ุงู„ุจุฑู…ุฌุฉ ููŠู‡ุง ู†ูˆุนูŠู† ุฃุณุงุณูŠูŠู†: Synchronous ูˆAsynchronousุŒ ูˆู„ู…ุง ู†ูู‡ู… ุงู„ูุฑู‚ ุจูŠู†ู‡ู…ุŒ ู‡ูŠุจู‚ู‰ ุฃุณู‡ู„ ู†ุนุฑู ู„ูŠู‡ ุงู„ู€ Asynchronous ู…ู‡ู… ุฌุฏู‹ุง.

โ€”โ€”โ€”

๐Ÿ“Œ ุงู„ู€ Synchronous Programming (ุงู„ุชู†ููŠุฐ ุงู„ู…ุชุณู„ุณู„):

ุฏู‡ ูŠุนู†ูŠ ุฅู† ุงู„ูƒูˆุฏ ุจูŠุชู†ูุฐ ุฎุทูˆุฉ ุจุฎุทูˆุฉุŒ ุจู…ุนู†ู‰ ุฅู† ุงู„ูƒูˆุฏ ู…ุจูŠูƒู…ู„ุด ุชู†ููŠุฐ ุฃูŠ ุฎุทูˆุฉ ุชุงู†ูŠุฉ ุฅู„ุง ู„ู…ุง ุงู„ุฎุทูˆุฉ ุงู„ู„ูŠ ู‚ุจู„ู‡ุง ุชุฎู„ุต. ูŠุนู†ูŠ ู„ูˆ ุนู†ุฏูƒ ุนู…ู„ูŠุฉ ุจุชุงุฎุฏ ูˆู‚ุช ุฒูŠ ุฅู†ูƒ ุจุชุญู…ู„ ุจูŠุงู†ุงุช ู…ู† ุงู„ุณุฑูุฑ ุนู† ุทุฑูŠู‚ ุงู„ู€ APIุŒ ุงู„ูƒูˆุฏ ู‡ูŠูุถู„ ู…ุณุชู†ูŠ ู„ุญุฏ ู…ุง ุงู„ุจูŠุงู†ุงุช ุชุชุญู…ู„ ู‚ุจู„ ู…ุง ูŠูƒู…ู„ ุจุงู‚ูŠ ุงู„ุชู†ููŠุฐ.

โ€”โ€”โ€”

๐Ÿ“Œ ุงู„ู€ Asynchronous Programming (ุงู„ุชู†ููŠุฐ ุบูŠุฑ ุงู„ู…ุชุณู„ุณู„):

ุฃู…ุง ููŠ ุงู„ุจุฑู…ุฌุฉ AsynchronousุŒ ุงู„ูƒูˆุฏ ูŠู‚ุฏุฑ ูŠู†ูุฐ ุญุงุฌุงุช ูƒุชูŠุฑ ููŠ ู†ูุณ ุงู„ูˆู‚ุช ู…ู† ุบูŠุฑ ู…ุง ูŠุณุชู†ู‰ ุงู„ุนู…ู„ูŠุฉ ุงู„ุทูˆูŠู„ุฉ ุชุฎู„ุต. ูŠุนู†ูŠ ู„ูˆ ุนู†ุฏูƒ ุนู…ู„ูŠุฉ ุฒูŠ ุชุญู…ูŠู„ ุงู„ุจูŠุงู†ุงุช ู…ู† ุงู„ุณุฑูุฑุŒ ุงู„ูƒูˆุฏ ู…ู…ูƒู† ูŠุณุชู…ุฑ ููŠ ุชู†ููŠุฐ ุฃูƒูˆุงุฏ ุชุงู†ูŠุฉุŒ ูˆู„ู…ุง ุงู„ุจูŠุงู†ุงุช ุชุชุญู…ู„ุŒ ุงู„ูƒูˆุฏ ู‡ูŠุนุฑู ูˆูŠุชุนุงู…ู„ ู…ุน ุงู„ู†ุชูŠุฌุฉ.

โ€”โ€”โ€”

๐Ÿ“Œ ุฅุฒุงูŠ ุงู„ูƒู„ุงู… ุฏู‡ ุจูŠุญุตู„ ููŠ JavaScriptุŸ

ููŠ JavaScriptุŒ ุนู†ุฏู†ุง ุทุฑูŠู‚ุชูŠู† ุฑุฆูŠุณูŠุชูŠู† ู„ู„ุชุนุงู…ู„ ู…ุน ุงู„ู€ asynchronous programming

๐Ÿ”ป ุงู„ู€ Callbacks
๐Ÿ”ป ุงู„ู€ Promises

(ูˆุทุจุนู‹ุง async/await ุงู„ู„ูŠ ู‡ูˆ ุชุญุณูŠู† ู„ู„ู€ Promises)

โ€”โ€”โ€”

๐Ÿ“Œ ุงู„ู€ Callbacks

ุฃูˆู„ ุทุฑูŠู‚ุฉ ู„ู„ุชุนุงู…ู„ ู…ุน ุงู„ู€ asynchronous programming ูƒุงู†ุช ุนู† ุทุฑูŠู‚ ุงู„ู€ Callbacks. ุงู„ููƒุฑุฉ ุจุจุณุงุทุฉ ุฅู†ูƒ ุจุชู…ุฑุฑ ุฏุงู„ุฉ ู…ุนูŠู†ุฉ ูƒู€ "callback" ู„ู„ูƒูˆุฏ ุงู„ู„ูŠ ุจูŠุชู†ูุฐุŒ ูˆู„ู…ุง ุงู„ูƒูˆุฏ ุฏู‡ ูŠุฎู„ุตุŒ ุงู„ุฏุงู„ุฉ ุฏูŠ ุจุชุดุชุบู„.

ู„ูƒู† ุงู„ู€ callbacks ุจุชุชุญูˆู„ ุจุณุฑุนุฉ ู„ูƒูˆุฏ ู…ุนู‚ุฏ ุฌุฏู‹ุง ู„ู…ุง ูŠูƒูˆู† ุนู†ุฏูƒ ุนู…ู„ูŠุงุช ูƒุชูŠุฑ ูˆุจุชุญุชุงุฌ ุชูƒุชุจ ุญุงุฌุงุช ูƒุชูŠุฑ ุฌูˆุฉ ุจุนุถู‡ุงุŒ ูˆุฏู‡ ุงู„ู„ูŠ ุจู†ุณู…ูŠู‡ Callback Hell.

โ€”โ€”โ€”

๐Ÿ“Œ ุงู„ุญู„: ุงู„ู€ Promises

ู‡ู†ุง ุจูŠุฌูŠ ุฏูˆุฑ ุงู„ู€ PromisesุŒ ุงู„ู„ูŠ ู‡ูŠ ุทุฑูŠู‚ุฉ ุฌุฏูŠุฏุฉ ูˆุฃูƒุซุฑ ุชู†ุธูŠู…ู‹ุง ู„ู„ุชุนุงู…ู„ ู…ุน ุงู„ุนู…ู„ูŠุงุช ุงู„ู€ asynchronous. ุงู„ู€ Promise ู‡ูˆ ููŠ ุงู„ุฃุณุงุณ "ูˆุนุฏ" ุฅู† ุงู„ุนู…ู„ูŠุฉ ู‡ุชุฎู„ุต ููŠ ุงู„ู…ุณุชู‚ุจู„.

ุงู„ู€ Promise ุจูŠูƒูˆู† ู„ูŠู‡ 3 ุญุงู„ุงุช:

๐Ÿ”ป ุญุงู„ุฉ ุงู„ู€ Pending: ูŠุนู†ูŠ ุงู„ุนู…ู„ูŠุฉ ู„ุณู‡ ู…ุฎู„ุตุชุด.
๐Ÿ”ป ุญุงู„ุฉ ุงู„ู€ Fulfilled: ูŠุนู†ูŠ ุงู„ุนู…ู„ูŠุฉ ู†ุฌุญุช ูˆุทู„ุนุช ุงู„ู†ุชูŠุฌุฉ.
๐Ÿ”ป ุญุงู„ุฉ ุงู„ู€ Rejected: ูŠุนู†ูŠ ุงู„ุนู…ู„ูŠุฉ ูุดู„ุช ูˆููŠู‡ ุฎุทุฃ ุญุตู„.


ู„ู…ุง ุงู„ุนู…ู„ูŠุฉ ุชุฎู„ุต ุจู†ุฌุงุญุŒ ุงู„ู€ Promise ุจูŠุชุญูˆู„ ู„ุญุงู„ุฉ "fulfilled"ุŒ ูˆู„ูˆ ุงู„ุนู…ู„ูŠุฉ ูุดู„ุช ุจูŠุชุญูˆู„ ู„ุญุงู„ุฉ "rejected".

โ€”โ€”โ€”

ุฎู„ูŠู†ุง ู†ุดูˆู ู…ุซุงู„ ุนุดุงู† ู†ูู‡ู… ุงู„ูƒู„ุงู… ุฏู‡ ุจุดูƒู„ ุฃูˆุถุญ. ู‡ู†ูุชุฑุถ ุฅู†ู†ุง ุนุงูŠุฒูŠู† ู†ุญุงูƒูŠ ุนู…ู„ูŠุฉ ุงุณุชุฑุฌุงุน ุจูŠุงู†ุงุช ู…ู† ุงู„ู€ API.

const fetchData = () => {
return new Promise((resolve, reject) => {
setTimeout(() => {
const dataAvailable = true;

if (dataAvailable) {
resolve("Data retrieved successfully!");
} else {
reject("Error: Unable to retrieve data.");
}
}, 3000);
});
};

fetchData()
.then(result => console.log(result))
.catch(error => console.log(error));


ููŠ ุงู„ูƒูˆุฏ ุฏู‡ุŒ ุงู„ูู†ูƒุดู† fetchData ุจุชุฑุฌุน Promise. ุฏุงุฎู„ ุงู„ู€ PromiseุŒ ุจู†ุณุชุฎุฏู… ุฅู…ุง resolve ู„ูˆ ุงู„ุนู…ู„ูŠุฉ ู†ุฌุญุช ุฃูˆ reject ู„ูˆ ุญุตู„ ุฎุทุฃ.

ุจุงุณุชุฎุฏุงู… thenุŒ ุจู†ู‚ุฏุฑ ู†ุชุนุงู…ู„ ู…ุน ุงู„ู†ุชูŠุฌุฉ ู„ูˆ ุงู„ุนู…ู„ูŠุฉ ู†ุฌุญุชุŒ ูˆู„ูˆ ุญุตู„ ุฎุทุฃุŒ ุงู„ู€ catch ุจุชุณุงุนุฏู†ุง ููŠ ุงู„ุชุนุงู…ู„ ู…ุนุงู‡.

โ€”โ€”โ€”

๐Ÿ“Œ ุงู„ู€ Async/Await

ุนู„ุดุงู† ู†ุฎู„ูŠ ุงู„ูƒูˆุฏ ุฃุจุณุท ูˆุฃูˆุถุญุŒ ุธู‡ุฑ ุญุงุฌุฉ ุงุณู…ู‡ุง async/await ุงู„ู„ูŠ ุจุชุดุชุบู„ ุนู„ู‰ ุงู„ู€ Promises ุจุณ ุจุดูƒู„ ู…ุจุณุท ุฌุฏู‹ุง ูˆุจุชุฎู„ูŠ ุงู„ูƒูˆุฏ ูŠุจุงู† ูƒุฃู†ู‡ synchronous.


ู†ูุณ ุงู„ู…ุซุงู„ ุงู„ู„ูŠ ููˆู‚ ู†ู‚ุฏุฑ ู†ูƒุชุจู‡ ุจุทุฑูŠู‚ุฉ async/await ุจุงู„ุดูƒู„ ุฏู‡:

const fetchData = async () => {
try {
const result = await new Promise((resolve, reject) => {
setTimeout(() => {
const dataAvailable = true;
if (dataAvailable) {
resolve("Data retrieved successfully!");
} else {
reject("Error: Unable to retrieve data.");
}
}, 3000);
});
console.log(result);
} catch (error) {
console.log(error);
}
};

fetchData();


ุงู„ู…ูŠุฒุฉ ู‡ู†ุง ุฅู†ู†ุง ุงุณุชุฎุฏู…ู†ุง await ุนุดุงู† ู†ุณุชู†ู‰ ุงู„ู†ุชูŠุฌุฉ ู…ู† ุงู„ู€ Promise ูˆูƒุฃู† ุงู„ุนู…ู„ูŠุฉ ุฏูŠ synchronousุŒ ู„ูƒู† ููŠ ุงู„ุญู‚ูŠู‚ุฉ ุงู„ูƒูˆุฏ ุดุบุงู„ ุจุทุฑูŠู‚ุฉ asynchronous.

ูˆุจุฏู„ ู…ุง ู†ุณุชุฎุฏู… then ูˆ catchุŒ ุงุณุชุฎุฏู…ู†ุง try ูˆ catch ุนู„ุดุงู† ู†ุชุนุงู…ู„ ู…ุน ุงู„ู†ุฌุงุญ ุฃูˆ ุงู„ุฎุทุฃ.

โ€”โ€”โ€”

๐Ÿ“Œ ู„ูŠู‡ ุฃุณุชุฎุฏู… ุงู„ู€ Promises ูˆุงู„ู€ Async/AwaitุŸ

โœ… ุชู†ุธูŠู… ุงู„ูƒูˆุฏ: ุงู„ูƒูˆุฏ ุจูŠุจู‚ู‰ ุฃู†ุถู ูˆุฃุจุณุท ููŠ ุงู„ูู‡ู… ู…ู‚ุงุฑู†ุฉ ุจุงู„ู€ Callbacks.
โœ… ุงู„ู€ Error Handling ุฃูุถู„: ุงู„ุชุนุงู…ู„ ู…ุน ุงู„ุฃุฎุทุงุก ุจู‚ู‰ ุฃุณู‡ู„ ุจุงุณุชุฎุฏุงู… try/catch.
โœ… ู„ู…ุง ูŠูƒูˆู† ุนู†ุฏูƒ ู…ุดุฑูˆุน ูƒุจูŠุฑุŒ ุงู„ู€ async/await ู‡ูŠุณุงุนุฏูƒ ููŠ ุฅุฏุงุฑุฉ ุงู„ุฃูƒูˆุงุฏ ุงู„ุทูˆูŠู„ุฉ ูˆุงู„ู…ุนู‚ุฏุฉ ุจุณู‡ูˆู„ุฉ.

โ€”โ€”โ€”

ุจุงู„ุชูˆููŠู‚ ูŠุง ุจุทู„ ๐Ÿ’ช๐Ÿป
๐Ÿ‘9
ุณู†ุงูƒ ูุฑูˆู†ุช ุงู†ุฏ ุน ุงู„ุณุฑูŠุน...โšก๏ธ

ู„ุง ุชู†ุณูˆุง ุฃู‡ู„ู†ุง ููŠ ูู„ู€ู€ุณุทู€ู€ูŠู† ูˆููŠ ุณู€ู€ูˆุฑูŠุง ูˆููŠ ุงู„ุณู€ู€ูˆุฏุงู† ูˆููŠ ุงู„ูŠู€ู€ู…ู† ูˆููŠ ูƒู„ ุฏูˆู„ ุงู„ุนุงู„ู… ู…ู† ุงู„ู…ุณู„ู…ูŠู† ู…ู† ุงู„ุฏุนุงุก. ๐Ÿค



ุชุญุณูŠู† ุงู„ุฃุฏุงุก (Performance) ุนู†ุตุฑ ู…ู‡ู… ุฌุฏู‹ุง ููŠ ู†ุฌุงุญ ุฃูŠ ู…ูˆู‚ุน. ู„ู…ุง ุงู„ู…ูˆู‚ุน ูŠูƒูˆู† ุฃุณุฑุน ูˆุฃูƒุซุฑ ุงุณุชุฌุงุจุฉุŒ ู‡ุชู„ุงู‚ูŠ ุชุฌุฑุจุฉ ุงู„ู…ุณุชุฎุฏู… ุฃุญุณู† ูˆุชุฑุชูŠุจ ุงู„ู…ูˆู‚ุน ููŠ ู…ุญุฑูƒุงุช ุงู„ุจุญุซ ุฃุนู„ู‰. ๐Ÿ’ฏ

โ€”โ€”โ€”

โšก๏ธ Tutorial Video:
https://youtu.be/GlR0lzwDKD8
Proven Tips to Optimize Performance in Your Next.js App โšก๏ธ

- Optimizing performance in web applications is crucial for delivering fast, smooth user experiences.

- With Next.js, a powerful React framework, you can leverage many built-in features to enhance the speed and efficiency of your app.

https://dev.to/alisamir/proven-tips-to-optimize-performance-in-your-nextjs-app-lpc
ุงู„ูุฑู‚ ุจูŠู† useMemo ูˆ useCallback ููŠ React ๐Ÿ”ป

ุจุงุฎุชุตุงุฑ ุงู„ูุฑู‚ ููŠ ุฅูŠู‡ ุงู„ู„ูŠ ุจูŠุชู… ุชุญุณูŠู†ู‡.


๐Ÿ“Œ ุงู„ู€ useMemo:

- ุจุชุญูุธ ู†ุชูŠุฌุฉ ุงู„ุฏุงู„ุฉ (ุฒูŠ ู‚ูŠู…ุฉ ุฃูˆ ุญุณุงุจ ู…ุนูŠู†) ุนุดุงู† ู…ุด ูƒู„ ู…ุฑุฉ ูŠุชู… ุญุณุงุจู‡ ู„ู…ุง ุงู„ุตูุญุฉ ูŠุชุนู…ู„ู‡ุง ุฅุนุงุฏุฉ ุชุญู…ูŠู„.

- ู…ููŠุฏุฉ ู„ูˆ ุนู†ุฏูƒ ุนู…ู„ูŠุฉ ุญุณุงุจูŠุฉ ุชู‚ูŠู„ุฉ ูˆุนุงูŠุฒู‡ุง ุชุชู†ูุฐ ุจุณ ู„ู…ุง ุญุงุฌุงุช ู…ุนูŠู†ุฉ ุชุชุบูŠุฑ.

const memoizedValue = useMemo(() => computeExpensiveValue(a, b), [a, b]);


ู‡ู†ุง ุงู„ุฏุงู„ุฉ computeExpensiveValue ู‡ุชุดุชุบู„ ุจุณ ู„ูˆ a ุฃูˆ b ุงุชุบูŠุฑูˆุง.

โ€”โ€”โ€”

๐Ÿ“Œ ุงู„ู€ useCallback:

- ุจุชุญูุธ ุงู„ุฏุงู„ุฉ ู†ูุณู‡ุง ุนุดุงู† ู…ุด ูƒู„ ู…ุฑุฉ ูŠุชู… ุฅู†ุดุงุฆู‡ุง ู„ู…ุง ุงู„ุตูุญุฉ ูŠุญุตู„ู‡ุง ุฅุนุงุฏุฉ ุชุญู…ูŠู„ุŒ ูˆุฏู‡ ุจูŠุณุงุนุฏ ููŠ ู…ู†ุน ุฅุนุงุฏุฉ ุชุญู…ูŠู„ ุงู„ู€ Components ุงู„ูุฑุนูŠุฉ ุงู„ู„ูŠ ู…ุนุชู…ุฏุฉ ุนู„ู‰ ุงู„ุฏุงู„ุฉ ุฏูŠ.

const memoizedCallback = useCallback(() => doSomething(a, b), [a, b]);


ุงู„ุฏุงู„ุฉ ู‡ูŠุชุนู…ู„ู‡ุง ุฅุนุงุฏุฉ ุฅู†ุดุงุก ุจุณ ู„ูˆ a ุฃูˆ b ุงุชุบูŠุฑูˆุง.

โ€”โ€”โ€”

ุจู…ุนู†ู‰ ุฃุจุณุท:

โšก๏ธ ุงู„ู€ useMemo ุจุชุญูุธ ุงู„ู‚ูŠู….
โšก๏ธ ุงู„ู€ useCallback ุจุชุญูุธ ุงู„ุฏูˆุงู„.

โ€”โ€”โ€”

ุงู„ู…ู‚ุงู„ ุฏู‡ ู…ูˆุถุญ ุงู„ูุฑู‚ ุจุงู„ุชูุตูŠู„:
https://www.freecodecamp.org/news/difference-between-usememo-and-usecallback-hooks
โค4
ุงู„ุญู„ ู‡ูˆ ุงู„ุชุทุจูŠู‚ ุงู„ุนู…ู„ูŠ...๐Ÿ’ฏ

ู„ุง ุชู†ุณูˆุง ุฃู‡ู„ู†ุง ููŠ ูู„ู€ู€ุณุทู€ู€ูŠู† ูˆููŠ ุณู€ู€ูˆุฑูŠุง ูˆููŠ ุงู„ุณู€ู€ูˆุฏุงู† ูˆููŠ ุงู„ูŠู€ู€ู…ู† ูˆููŠ ูƒู„ ุฏูˆู„ ุงู„ุนุงู„ู… ู…ู† ุงู„ู…ุณู„ู…ูŠู† ู…ู† ุงู„ุฏุนุงุก. ๐Ÿค


ููŠ ุงู„ู€ FrontendุŒ ู…ู…ูƒู† ุชุจุฏุฃ ุจู…ุดุงุฑูŠุน ุจุณูŠุทุฉ ุฒูŠ ุตูุญุฉ ูˆูŠุจ ุดุฎุตูŠุฉ ุฃูˆ ุขู„ุฉ ุญุงุณุจุฉุŒ ูˆุจุนุฏูŠู† ุชุทูˆุฑ ู†ูุณูƒ ุจู…ุดุงุฑูŠุน ุฒูŠ ุชุทุจูŠู‚ ุฅุฏุงุฑุฉ ู…ู‡ุงู… ุฃูˆ ู…ูˆู‚ุน ุฅุฎุจุงุฑูŠ ุจูˆุงุฌู‡ุฉ ุงุญุชุฑุงููŠุฉ.

ุฃู…ุง ููŠ ุงู„ู€ BackendุŒ ุงุจุฏุฃ ุจู…ุดุงุฑูŠุน ุฒูŠ API ุจุณูŠุทุฉุŒ ูˆู…ุน ุงู„ูˆู‚ุช ุงุดุชุบู„ ุนู„ู‰ ุญุงุฌุงุช ุฒูŠ ู†ุธุงู… ุฅุฏุงุฑุฉ ู…ุณุชุฎุฏู…ูŠู† ุฃูˆ ุชุทุจูŠู‚ ุดุงุช ู…ุชูƒุงู…ู„.

โ€”โ€”โ€”

https://www.linkedin.com/posts/dev-guide_frontend-backend-frontenddeveloper-activity-7241452113187274752-llWk
โค4
ุนุงูŠุฒ ุชูู‡ู… ุงู„ู€ Hooks ููŠ React ุจุดูƒู„ ูˆุงุถุญ ูˆุจุณูŠุทุŸ

ู„ุง ุชู†ุณูˆุง ุฃู‡ู„ู†ุง ููŠ ูู„ู€ู€ุณุทู€ู€ูŠู† ูˆููŠ ุณู€ู€ูˆุฑูŠุง ูˆููŠ ุงู„ุณู€ู€ูˆุฏุงู† ูˆููŠ ุงู„ูŠู€ู€ู…ู† ูˆููŠ ูƒู„ ุฏูˆู„ ุงู„ุนุงู„ู… ู…ู† ุงู„ู…ุณู„ู…ูŠู† ู…ู† ุงู„ุฏุนุงุก. ๐Ÿค


ููŠ ูƒูˆุฑุณ React Hooks Simplified ู‡ุชุชุนู„ู… ูƒู„ ุญุงุฌุฉ ุนู† ุงู„ู€ Hooks ุงู„ุฃุณุงุณูŠุฉ ุงู„ู„ูŠ ู‡ุชุญุชุงุฌู‡ุง ููŠ ุชุทูˆูŠุฑ ุฃูŠ ุชุทุจูŠู‚ ุจู€ React. ูˆู‡ุชุชุนู„ู… ุฅุฒุงูŠ ุชุนู…ู„ Custom Hook ุฎุงุตุฉ ุจูŠูƒ โœ…

https://www.linkedin.com/posts/dev-alisamir_react-reactdeveloper-reactjs-activity-7241493457658105856-Ce_4
๐Ÿ‘2
An Interactive Guide to CSS Container Queries ๐Ÿ”ป

- Learn how to use CSS container queries today.

https://ishadeed.com/article/css-container-query-guide
JavaScript: 5 Useful Web APIs ๐Ÿ”ฅ

https://www.instagram.com/p/DABMND6iraN/
๐Ÿ’ก Bye Bye Try/Catch, Meet New ECMAScript Operator ๐Ÿ’ก

Benefits of using ?= operator instead of try/catch:

โœ… Simplified Error Handling: Streamline error management by eliminating the need for try-catch blocks.

โœ… Enhanced Readability: Improve code clarity by reducing nesting and making error handling flow more intuitive.

โœ… Consistency Across APIs: Establish a uniform approach to error handling across various APIs, ensuring predictable behavior.

โœ… Improved Security: Reduce the risk of overlooking error handling, thereby enhancing the overall security of the code.
โค4๐Ÿ‘2๐Ÿ”ฅ1
ุฑุญู„ุฉ ุงู„ุจุญุซ ุนู† ูˆุธูŠูุฉ ูƒู€ ู…ู‡ู†ุฏุณ ุจุฑู…ุฌูŠุงุช ๐Ÿ”ป

ุฑุญู„ุฉ ุงู„ุจุญุซ ุนู† ูˆุธูŠูุฉ ููŠ ู…ุฌุงู„ ุงู„ุจุฑู…ุฌุฉ ู…ุด ู…ู‚ุชุตุฑุฉ ูู‚ุท ุนู„ู‰ ุฅู†ูƒ ุชุฏุฎู„ ุนู„ู‰ ุฃูŠ ู…ู†ุตุฉ ูˆุธุงุฆู ุณูˆุงุก LinkedIn ุฃูˆ Indeed ุฃูˆ ุบูŠุฑู‡ู… ูˆุชูุถู„ ุชุจุนุช ุงู„ู€ CV ููŠ ุฃูŠ ูˆุธูŠูุฉ ุชู‚ุงุจู„ูƒุŒ ูˆููŠ ุงู„ุขุฎุฑ ู‡ุชูƒุชุดู ุฅู† ู…ููŠุด ุฑุฏ ุฎุงู„ุต ูˆู„ุง ุญุชู‰ ุจุงู„ุฑูุถ!

https://www.linkedin.com/posts/dev-alisamir_softwareengineer-softwareengineering-softwaredeveloper-activity-7242215176932868096-96dV
โค1๐Ÿ”ฅ1
11 steps to go from Junior to Senior Developer โœ…

1- Collaboration Tools

Software development is a social activity. Learn to use collaboration tools like Jira, Confluence, Slack, MS Teams, Zoom, etc.

2- Programming Languages

Pick and master one or two programming languages. Choose from options like Java, Python, JavaScript, C#, Go, etc.

3- API Development

Learn the ins and outs of API Development approaches such as REST, GraphQL, and gRPC.

4- Web Servers and Hosting

Know about web servers as well as cloud platforms like AWS, Azure, GCP, and Kubernetes

5- Authentication and Testing

Learn how to secure your applications with authentication techniques such as JWTs, OAuth2, etc. Also, master testing techniques like TDD, E2E Testing, and Performance Testing

6- Databases

Learn to work with relational (Postgres, MySQL, and SQLite) and non-relational databases (MongoDB, Cassandra, and Redis).

7- CI/CD

Pick tools like GitHub Actions, Jenkins, or CircleCI to learn about continuous integration and continuous delivery.

8- Data Structures and Algorithms

Master the basics of DSA with topics like Big O Notation, Sorting, Trees, and Graphs.

9- System Design

Learn System Design concepts such as Networking, Caching, CDNs, Microservices, Messaging, Load Balancing, Replication, Distributed Systems, etc.

10- Design patterns

Master the application of design patterns such as dependency injection, factory, proxy, observers, and facade.

11- AI Tools

To future-proof your career, learn to leverage AI tools like GitHub Copilot, ChatGPT, Langchain, and Prompt Engineering.
๐Ÿ‘6
900+ Free Developer and IT Certifications ๐Ÿ”ฅ

- Massive list of free certificates and badges for developers in data science, software development, and more.

https://www.classcentral.com/report/free-developer-it-certifications

ุจุงู„ุชูˆููŠู‚ ูŠุง ุจุทู„ ๐Ÿ’ช๐Ÿป
โค11
The Ultimate Software Architect Knowledge Map โšก๏ธ

- Master a Programming Language
- Tools
- Design Principles
- Architectural Principles
- Platform Knowledge
- Data Analytics
- Networking and Security
- Supporting Skills

https://blog.bytebytego.com/p/ep128-the-ultimate-software-architect