DevGuide ๐Ÿ‡ต๐Ÿ‡ธ
10.9K subscribers
2.46K photos
17 videos
127 files
3.51K 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
ู…ูู‡ูˆู… ุงู„ู€ Dependency Inversion Principle ๐Ÿ’ก
.
.
ููŠู‡ ู…ุจุฏุฃ ู…ู† ู…ุจุงุฏุฆ SOLID ุจูŠุบูŠู‘ุฑ ุทุฑูŠู‚ุฉ ุชููƒูŠุฑูƒ ููŠ ุชุตู…ูŠู… ุงู„ูƒูˆุฏ ุจุดูƒู„ ูƒุจูŠุฑ ุฌุฏู‹ุง...
ู…ุจุฏุฃ ุฃูˆู„ ู…ุง ุชูู‡ู…ู‡ ูƒูˆูŠุณ ูˆุชุทุจู‘ู‚ู‡ ุตุญุŒ ู‡ุชุญุณ ุฅู† ุงู„ู…ุดุฑูˆุน ุจู‚ู‰ modular ุฃูƒุชุฑุŒ ูˆุงู„ู€ testing ุจู‚ู‰ ุฃุณู‡ู„ุŒ ูˆุงู„ู€ bugs ุจู‚ุช ู‚ู„ูŠู„ุฉ ุฅู„ู‰ ุญุฏ ู…ุง...

ุชุนุงู„ ู†ุฏุฑุฏุด ุดูˆูŠุฉ ุนู† ู…ุจุฏุฃ ุงู„ู€ Dependency Inversion...

โ€”โ€”โ€”

๐Ÿ“Œ ูŠุนู†ูŠ ุฅูŠู‡ Dependency Inversion PrincipleุŸ

ุงู„ู…ุจุฏุฃ ุฏู‡ ุจูŠู‚ูˆู„:

"High-level modules should not depend on low-level modules. Both should depend on abstractions."

ูˆ

"Abstractions should not depend on details. Details should depend on abstractions."

ูŠุนู†ูŠ ู„ู…ุง ุชูŠุฌูŠ ุชุจู†ูŠ ุฌุฒุก ูƒุจูŠุฑ ู…ู† ุงู„ุณูŠุณุชู… (ุฒูŠ ู…ุซู„ุงู‹ order service ููŠ ุชุทุจูŠู‚ ุชุฌุงุฑุฉ ุฅู„ูƒุชุฑูˆู†ูŠุฉ)ุŒ ุงู„ู…ูุฑูˆุถ ู…ูŠูƒู†ุด ุงู„ู€ high-level logic (ุฒูŠ ุฅุฒุงูŠ ุงู„ู€ order ุจูŠุชู…) ุจูŠุนุชู…ุฏ ู…ุจุงุดุฑุฉ ุนู„ู‰ ุงู„ู€ details ุฒูŠ ู…ุซู„ุง API ู…ุนูŠู† ุฃูˆ database ู…ุนูŠู†ุฉ ุฃูˆ class ุจุชุจุนุช ุฅูŠู…ูŠู„ุงุช.

ุจุฏู„ ูƒุฏู‡ุŒ ุงู„ู…ูุฑูˆุถ ูŠูƒูˆู† ุจูŠุนุชู…ุฏ ุนู„ู‰ abstraction (interface ุฃูˆ contract)ุŒ ุจุญูŠุซ ุงู„ุชูุงุตูŠู„ ุฏูŠ ุชู‚ุฏุฑ ุชุชุบูŠุฑ ุจุณู‡ูˆู„ุฉ ุจุนุฏ ูƒุฏู‡ ู…ู† ุบูŠุฑ ู…ุง ุชุบูŠู‘ุฑ ููŠ ุงู„ู€ business logic ู†ูุณู‡.

โ€”โ€”โ€”

๐Ÿ“ฆ ู…ุซุงู„ ุจุณูŠุท:


[ ูƒู„ ุงู„ุฃูƒูˆุงุฏ ููŠ ุงู„ุชุนู„ูŠู‚ุงุช ๐Ÿ‘‡ ]

class EmailService {
sendEmail(to: string, body: string) {
// logic to send email
}
}

class OrderService {
private emailService = new EmailService();

placeOrder(orderData: any) {
// logic to place order
this.emailService.sendEmail(orderData.customerEmail, "Order placed!");
}
}


ูƒุฏู‡ ุงู„ู€ OrderService ู…ุนุชู…ุฏ ุจุดูƒู„ ู…ุจุงุดุฑ ุนู„ู‰ ุงู„ู€ EmailService.

ู„ูˆ ุญุจูŠุช ุชุบูŠุฑ ูˆุณูŠู„ุฉ ุฅุฑุณุงู„ ุงู„ุฅูŠู…ูŠู„ ุฃูˆ ุชุจุนุชู‡ุง ุนุจุฑ SMS ุฃูˆ push notificationุŒ ู‡ุชุถุทุฑ ุชุบูŠู‘ุฑ ููŠ ุงู„ูƒูˆุฏ ุจุชุงุน OrderService ู†ูุณู‡โ€ฆ ูˆุฏู‡ ุถุฏ ู…ุจุฏุฃ open/closed principle ูƒู…ุงู†.

โ€”โ€”โ€”

โœ… ุงู„ุญู„ุŸ


interface Notifier {
notify(to: string, message: string): void;
}

class EmailService implements Notifier {
notify(to: string, message: string) {
// send email
}
}

class SMSService implements Notifier {
notify(to: string, message: string) {
// send sms
}
}

class OrderService {
constructor(private notifier: Notifier) {}

placeOrder(orderData: any) {
// logic to place order
this.notifier.notify(orderData.customerContact, "Order placed!");
}
}


ูƒุฏู‡ ุงู„ู€ OrderService ู…ูŠุนุฑูุด ุฃูŠ ุญุงุฌุฉ ุนู† ุงู„ู€ implementation ุจุชุงุน ุงู„ู€ notifierุŒ ุณูˆุงุก ูƒุงู† email ุฃูˆ sms.

ู‡ูˆ ุจุณ ุจูŠุชุนุงู…ู„ ู…ุน abstraction (interface ุงุณู…ู‡ุง Notifier).
ูˆุจุงู„ุชุงู„ูŠ ุชู‚ุฏุฑ ุชุบูŠุฑ ุงู„ู€ implementation ููŠ ุฃูŠ ูˆู‚ุช ู…ู† ุบูŠุฑ ู…ุง ุชู„ู…ุณ ุงู„ู€ OrderService.

โ€”โ€”โ€”

๐Ÿ’ก ุฅุฒุงูŠ ุฏู‡ ู‡ูŠูุฑู‚ ู…ุนุงูƒุŸ


- ุงู„ูƒูˆุฏ ุจุชุงุนูƒ ุจู‚ู‰ loosely coupled.
- ุจู‚ู‰ modular ูˆุฃุณู‡ู„ ููŠ ุงู„ุชุนุฏูŠู„ ูˆุงู„ุตูŠุงู†ุฉ.
- ุงู„ู€ testing ุจู‚ู‰ ุฃุจุณุท ู„ุฃู†ูƒ ุชู‚ุฏุฑ ุชุนู…ู„ mock ู„ู€ Notifier ุจุณู‡ูˆู„ุฉ.
- ุจู‚ูŠุช ุชู‚ุฏุฑ ุชุจุฏู‘ู„ ุงู„ู€ implementation ู…ู† ุบูŠุฑ ู…ุง ุชุนู…ู„ refactor ุชู‚ูŠู„.

โ€”โ€”โ€”

ุงู„ู€ Dependency Inversion ุจูŠุฎู„ูŠูƒ ุฏุงูŠู…ู‹ุง ุชููƒุฑ ููŠ dependencies ุนู„ู‰ ุฅู†ู‡ุง ุดูŠุก ู…ู…ูƒู† ูŠุชุบูŠุฑโ€ฆ ูุจุฏู„ ู…ุง ุชุจู†ูŠ ุนู„ูŠู‡ุง ุจุดูƒู„ ู…ุจุงุดุฑุŒ ุงุณุชุฎุฏู… abstraction ุชูุตู„ ุจู‡ ุจูŠู† high-level logic ูˆ low-level details.

โ€”โ€”โ€”

ูˆูู‚ูƒู… ุงู„ู„ู‡ ู„ูƒู„ ุฎูŠุฑ ๐ŸŒฟ
โค10
ู…ูู‡ูˆู… ุงู„ู€ Atomicity ๐Ÿ’ฏ
.
.
ุชุฎูŠู„ ุฅู†ูƒ ุดุบุงู„ ุนู„ู‰ ุณูŠุณุชู… ุชุญูˆูŠู„ ูู„ูˆุณ. ุงู„ุนู…ูŠู„ ุญูˆู„ 1000 ุฌู†ูŠู‡ ู…ู† ุญุณุงุจู‡ุŒ ุงู„ุณูŠุณุชู… ุฎุตู… ุงู„ูู„ูˆุณโ€ฆ
ูˆู‚ุจู„ ู…ุง ูŠุญุทู‡ู… ููŠ ุญุณุงุจ ุงู„ุดุฎุต ุงู„ุชุงู†ูŠุŒ ุงู„ูƒู‡ุฑุจุงุก ู‚ุทุนุช.
ูƒุฏู‡ ุงู„ูู„ูˆุณ ุทุงุฑุชุŸ ูˆู„ุง ู‡ุชุฑุฌุนุŸ ูˆู„ุง ู‡ุชุชุญูˆู„ุŸ

ุงู„ุณุคุงู„ ุฏู‡ ุจูŠุฌุงูˆุจ ุนู„ูŠู‡ ู…ูู‡ูˆู… ู…ู‡ู… ุฌุฏู‹ุง ููŠ ุงู„ุจุฑู…ุฌุฉ ูˆุงู„ู€ Databasese ูˆู‡ูˆ ุงู„ู€ Atomicity

ูŠุง ุฅู…ุง ูƒู„ ุงู„ุฎุทูˆุงุช ุชุชู… ุจุงู„ูƒุงู…ู„...ูŠุง ู…ููŠุด ูˆู„ุง ุฎุทูˆุฉ ุชุชู….

โ€”โ€”โ€”

๐Ÿค” ูŠุนู†ูŠ ุฅูŠู‡ AtomicityุŸ

ุชุฎูŠู„ ุฅู†ูƒ ุจุชุณุญุจ ูู„ูˆุณ ู…ู† ุงู„ู€ ATM.

ุงู„ุนู…ู„ูŠุฉ ุฏูŠ ููŠู‡ุง ุฎุทูˆุชูŠู†:
1- ุงู„ุจู†ูƒ ูŠุฎุตู… ุงู„ู…ุจู„ุบ ู…ู† ุญุณุงุจูƒ.
2- ุงู„ู…ุงูƒูŠู†ุฉ ุชุทู„ุน ู„ูƒ ุงู„ูู„ูˆุณ.

ู„ูˆ ุญุตู„ ุฅู† ุงู„ุณูŠุณุชู… ุนู…ู„ ุงู„ุฎุทูˆุฉ ุงู„ุฃูˆู„ู‰ ุจุณุŒ ูˆูˆู‚ู ูุฌุฃุฉ ู‚ุจู„ ู…ุง ูŠูˆุตู„ูƒ ุงู„ูู„ูˆุณโ€ฆ
ุฃู†ุช ูƒุฏู‡ ุฎุณุฑุช ูู„ูˆุณูƒุŸ

ู‡ู†ุง ุจู‚ู‰ ูŠูŠุฌูŠ ุฏูˆุฑ ุงู„ู€ Atomicity.

ุงู„ู€ Atomicity ู…ุนู†ุงู‡ุง ุฅู† ุงู„ุนู…ู„ูŠุฉ ูƒู„ู‡ุง ุชุชู†ูุฐ ุจุงู„ูƒุงู…ู„ ู…ู† ุฃูˆู„ู‡ุง ู„ุขุฎุฑู‡ุงุŒ ุฃูˆ ู…ุง ุชุชู†ูุฐ ุฎุงู„ุต.
ูŠุนู†ูŠ All or Nothing.

ููŠ ู…ุซุงู„ ุงู„ู€ ATM: ูŠุง ุงู„ุจู†ูƒ ูŠุฎุตู… ูˆุชุงุฎุฏ ุงู„ูู„ูˆุณุŒ ูŠุง ู…ูŠุญุตู„ุด ุฃูŠ ุญุงุฌุฉ ุฃุตู„ู‹ุง.
ู…ููŠุด ู†ุต ุนู…ู„ูŠุฉ.

โ€”โ€”โ€”

๐Ÿ’ก ุฅุฒุงูŠ ุฏู‡ ุจูŠุชู…ุŸ

ุงู„ู€ Atomicity ู‡ูŠ ูˆุงุญุฏุฉ ู…ู† ุงู„ู€ ACID Properties ุงู„ู„ูŠ ุจุชุถู…ู† ุณู„ุงู…ุฉ ุงู„ุจูŠุงู†ุงุช ุฎุตูˆุตู‹ุง ููŠ ุงู„ู€ Databases.
ุนู„ุดุงู† ุชุญู‚ู‚ ุงู„ู€ AtomicityุŒ ุงู„ุณูŠุณุชู… ุจูŠุณุชุฎุฏู… ุญุงุฌุฉ ุงุณู…ู‡ุง Transactions.

ูƒู„ Transaction ุจุชุชูƒูˆู† ู…ู† ู…ุฌู…ูˆุนุฉ ุนู…ู„ูŠุงุช (ุฒูŠ insertุŒ updateุŒ delete)ุŒ
ูˆุงู„ู…ูุฑูˆุถ ุฅู† ูƒู„ ุงู„ุนู…ู„ูŠุงุช ุฏูŠ ูŠุญุตู„ู‡ุง commit ููŠ ู†ูุณ ุงู„ูˆู‚ุชุŒ ุฃูˆ ูŠุญุตู„ู‡ุง rollback ู„ูˆ ุญุตู„ ุฃูŠ ุฎุทุฃ.

ู…ุซุงู„:

BEGIN TRANSACTION;

UPDATE accounts SET balance = balance - 100 WHERE id = 1;
UPDATE accounts SET balance = balance + 100 WHERE id = 2;

COMMIT;


ู„ูˆ ุฃูŠ ูˆุงุญุฏุฉ ู…ู† ุงู„ู€ 2 updates ูุดู„ุชุŒ ุงู„ู€ transaction ูƒู„ู‡ุง ู‡ุชุชููƒุŒ ูˆุงู„ุฏุงุชุง ุชุฑุฌุน ุฒูŠ ู…ุง ูƒุงู†ุช ูƒุฃู† ู…ููŠุด ุญุงุฌุฉ ุญุตู„ุช.

โ€”โ€”โ€”

โš ๏ธ ุฅูŠู‡ ุงู„ู„ูŠ ู…ู…ูƒู† ูŠุจูˆู‘ุธ ุงู„ู€ AtomicityุŸ

- ู‚ุทุน ุงู„ูƒู‡ุฑุจุงุก ุฃูˆ ุฃูŠ Crash ููŠ ุงู„ู†ุต.
- ุงู„ู€ Exceptions ุฃูˆ ุงู„ู€ Errors ููŠ ุฌุฒุก ู…ู† ุงู„ู€ transaction.
- ุฅู†ูƒ ุชู†ูุฐ queries ู…ู† ุบูŠุฑ transaction ุฃุตู„ู‹ุง

ูˆู„ูˆ ุงู„ุณูŠุณุชู… ู…ุด ุจูŠุทุจู‚ ุงู„ู€ Atomicity ุตุญุŒ ุงู„ุฏุงุชุง ู…ู…ูƒู† ุชุจู‚ู‰ corruptedุŒ ูˆุณุงุนุชู‡ุง ุฑุจู†ุง ูŠุณุชุฑ.

โ€”โ€”โ€”

๐Ÿ“Œ ุฅูŠู‡ ุงู„ูุฑู‚ ุจูŠู† ุงู„ู€ Atomicity ูˆุจูŠู† ุงู„ู€ ConsistencyุŸ

ุงู„ู€ Atomicity ุจุชุชูƒู„ู… ุนู† ู‡ู„ ุงู„ุนู…ู„ูŠุฉ ูƒู„ู‡ุง ุชู…ุช ุฃูˆ ู„ุงุŸ
ุงู„ู€ Consistency ุจุชุณุฃู„ ู‡ู„ ุงู„ุฏุงุชุง ุจุนุฏ ุงู„ุนู…ู„ูŠุฉ ููŠ ุญุงู„ุฉ ุตุญูŠุญุฉุŸ

ูŠุนู†ูŠ:

- ุงู„ู€ Atomicity = ุญุตู„ commit ูƒุงู…ู„ ูˆู„ุง ู„ุงุŸ
- ุงู„ู€ Consistency = ู„ูˆ ุญุตู„ุŒ ุงู„ุฏุงุชุง ุจู‚ุช consistent ูˆู„ุง ู„ุงุŸ

ุงู„ุงุชู†ูŠู† ู…ูƒู…ู„ูŠู† ุจุนุถุŒ ุจุณ ู…ุด ู†ูุณ ุงู„ุญุงุฌุฉ.

โ€”โ€”โ€”

ูˆูู‚ูƒู… ุงู„ู„ู‡ ู„ูƒู„ ุฎูŠุฑ ๐ŸŒฟ
โค10
The Most Confused Concepts in Engineering

https://youtu.be/z5lpHsl8qQ4

โ€”โ€”โ€”

๐Ÿ’ก ุฅู† ุดุงุก ุงู„ู„ู‡ ู‚ุฑูŠุจ ู†ุดุฑุญ ุงู„ูุฑู‚ ุจูŠู†ู‡ู… ุจุงู„ุนุฑุจูŠ
โค4
16 Coding Patterns That Make Interviews Easy ๐Ÿ’ฏ

1- Two-Pointer Technique
2- HashMaps
3- Linked Lists
4- Fast and Slow Pointers
5- Sliding Window Technique
6- Binary Search
7- Stacks
8- Heaps
9- Prefix Sum
10- Trees
11- Tries
12- Graphs
13- Backtracking
14- Dynamic Programming
15- Greedy Algorithms
16- Intervals
โค7
How to Learn Databases? ๐Ÿค”

1- Database Fundamentals
2- Data Models and Types
3- Querying and Language
4- Indexing and Optimization
5- Security, Backups, and Scaling
6- Tools and Ecosystem
โค7
ุงู„ูุฑู‚ ุจูŠู† Hashing ูˆ Encoding ูˆ Encryption ๐Ÿ”
.
.
ู„ูˆ ุจุชุดุชุบู„ ููŠ ุงู„ุจุงูƒ ุฅู†ุฏุŒ ุฃูˆ ุจุชุชุนุงู…ู„ ู…ุน APIsุŒ ุฃูˆ ุญุชู‰ ุจุชุดุชุบู„ ุนู„ู‰ ุชุทุจูŠู‚ ุจุณูŠุท ููŠู‡ ุนู…ู„ูŠุฉ ุชุณุฌูŠู„ ุฏุฎูˆู„โ€ฆ
ุฃูƒูŠุฏ ู‚ุงุจู„ุช ู…ุตุทู„ุญุงุช ุฒูŠ Hashing ูˆ Encoding ูˆ Encryption.

ูˆู…ู…ูƒู† ุชูุชูƒุฑ ุฅู†ู‡ู… ุดุจู‡ ุจุนุถุŒ ุฃูˆ ุฅู† ุฃูŠ ูˆุงุญุฏ ููŠู‡ู… "ุจูŠุฃู…ู† ุงู„ุจูŠุงู†ุงุช ูˆุฎู„ุงุต".
ู„ูƒู† ุงู„ุญู‚ูŠู‚ุฉ ุฅู† ูƒู„ ูˆุงุญุฏ ู„ู‡ ู‡ุฏู ู…ุฎุชู„ู ุชู…ุงู…ู‹ุงุŒ ูˆู„ูˆ ุงุณุชุฎุฏู…ุช ุญุงุฌุฉ ุบู„ุท ู…ู…ูƒู† ุชูุชุญ ุซุบุฑุงุช ุฃู…ู†ูŠุฉ ูˆุฃู†ุช ู…ุด ูˆุงุฎุฏ ุจุงู„ูƒ.

ุชุนุงู„ ู†ุฏุฑุฏุด ุดูˆูŠุฉ ุนู† ุงู„ูุฑู‚ ุจูŠู†ู‡ู…...

โ€”โ€”โ€”

โœ… ุฃูˆู„ู‹ุง: ุงู„ู€ Hashing:


ุชุฎูŠู„ ุฅู†ูƒ ุจุชุนู…ู„ ุจุตู…ุฉ ู„ุฃูŠ ู…ุนู„ูˆู…ุฉโ€ฆ
ู…ุด ุนู„ุดุงู† ุชุฑุฌุน ู„ู‡ุง ุจุนุฏูŠู†ุŒ ู„ูƒู† ุนู„ุดุงู† ุชุชุฃูƒุฏ ุฅู†ู‡ุง ู…ุชุบูŠุฑุชุด.

ุงู„ู€ Hashing ุจูŠุงุฎุฏ ู‚ูŠู…ุฉ (ุฒูŠ password ู…ุซู„ู‹ุง)ุŒ ูˆูŠุทู„ุน ู…ู†ู‡ุง ุณู„ุณู„ุฉ ุซุงุจุชุฉ ุงู„ุทูˆู„ ุดูƒู„ู‡ุง ุนุดูˆุงุฆูŠ โ€“ ุงุณู…ู‡ุง Hash โ€“ ูˆุงู„ู„ูŠ ุจุชุณุชุฎุฏู…ู‡ุง ุนุดุงู† ุชุทุงุจู‚ ุฃูˆ ุชุชุญู‚ู‚ ู…ู† ุงู„ุจูŠุงู†ุงุช ู…ู† ุบูŠุฑ ู…ุง ุชุญุชุงุฌ ุชุฎุฒู† ุงู„ุฃุตู„.

๐ŸŽฏ ุงู„ู…ู‡ู… ู‡ู†ุง:

- ุงู„ุนู…ู„ูŠุฉ ุฏูŠ One Way (ู…ููŠุด ุฑุฌูˆุน).
- ู„ูˆ ุบูŠุฑุช ุญุฑู ูˆุงุญุฏุŒ ุงู„ู€ Hash ูƒู„ู‡ ุจูŠุชุบูŠุฑ.
- ูˆุฏู‡ ุงู„ู„ูŠ ุจู†ุณุชุฎุฏู…ู‡ ู…ุซู„ู‹ุง ู„ู…ุง ู†ุฎุฒู† ุงู„ู€ Passwords ููŠ ู‚ูˆุงุนุฏ ุงู„ุจูŠุงู†ุงุช.

โš ๏ธ ู„ูˆ ุญุฏ ุนุฑู ุงู„ู€ HashุŒ ู…ุด ู‡ูŠุนุฑู ูŠุทู„ุน ู…ู†ู‡ ุงู„ุจุงุณูˆุฑุฏ ุงู„ุฃุตู„ูŠ (ุจุณ ู…ู…ูƒู† ูŠุนู…ู„ Brute Force ูˆูŠุญุงูˆู„ ูŠุฎู…ู†ู‡).

โ€”โ€”โ€”

โœ… ุซุงู†ูŠู‹ุง: ุงู„ู€ Encoding:


ุฏู‡ ู…ู„ูˆุด ุฃูŠ ุนู„ุงู‚ุฉ ุจุงู„ุณุฑูŠุฉ...
ุงู„ู€ Encoding ู‡ูˆ ุทุฑูŠู‚ุฉ ุจู†ุญูˆู„ ุจู‡ุง ุงู„ุจูŠุงู†ุงุช ู„ุดูƒู„ ุชุงู†ูŠ ุนู„ุดุงู† ูŠุณู‡ู„ ุชุฎุฒูŠู†ู‡ุง ุฃูˆ ู†ู‚ู„ู‡ุง.

ุฒูŠ Base64ุŒ ุงู„ู„ูŠ ุจุชุญูˆู„ ู…ุซู„ู‹ุง ุตูˆุฑุฉ ุฃูˆ ู†ุต ูŠุญุชูˆูŠ ุฑู…ูˆุฒ ุบุฑูŠุจุฉ ู„ุดูƒู„ ู…ูู‡ูˆู… ู„ุฃูŠ ู†ุธุงู….

๐ŸŽฏ ุงู„ู…ู‡ู… ู‡ู†ุง:

- ุงู„ุนู…ู„ูŠุฉ ุฏูŠ Two Way (ุชู‚ุฏุฑ ุชุฑุฌู‘ุน ุงู„ุจูŠุงู†ุงุช ุงู„ุฃุตู„ูŠุฉ).
- ู…ููŠุด ุฃูŠ ุญู…ุงูŠุฉ ุฃูˆ ุชุดููŠุฑุŒ ุฃูŠ ุญุฏ ูŠุนุฑู ู†ูˆุน ุงู„ู€ encoding ูŠู‚ุฏุฑ ูŠููƒู‡ ุจุณู‡ูˆู„ุฉ.
- ุงู„ู‡ุฏู ู…ู†ู‡ ุจุณ ุฅู†ูƒ ุชู†ู‚ู„ ุงู„ุฏุงุชุง ุจุฏูˆู† ู…ุง ุชุถูŠุน ุฃูˆ ุชุจูˆุธ.

ู…ุซุงู„ ุจุณูŠุท: ู„ูˆ ุนู†ุฏูƒ some text
ู…ู…ูƒู† ูŠุชุญูˆู„ ุจู€ Base64 ุฅู„ู‰: c29tZSB0ZXh0

โ€”โ€”โ€”

โœ… ุซุงู„ุซู‹ุง: ุงู„ู€ Encryption:


ุฃู†ุช ุนุงูŠุฒ ุชุจุนุช ุฏุงุชุง ุณุฑูŠุฉ ู„ุญุฏุŒ ูˆู…ุด ุนุงูŠุฒ ุฃูŠ ุญุฏ ููŠ ุงู„ู†ุต ูŠูู‡ู…ู‡ุง.
ูุจุชุนู…ู„ ู„ู‡ุง ุชุดููŠุฑ ุจุงุณุชุฎุฏุงู… ู…ูุชุงุญ (Key)ุŒ ูˆุงู„ู…ุณุชู„ู… ุงู„ู„ูŠ ู…ุนุงู‡ ุงู„ู…ูุชุงุญ ูŠู‚ุฏุฑ ูŠููƒู‡ุง.

๐ŸŽฏ ุงู„ู…ู‡ู… ู‡ู†ุง:

- ุงู„ุนู…ู„ูŠุฉ ุฏูŠ Two WayุŒ ุจุณ ู„ุงุฒู… ุงู„ู…ูุชุงุญ.
- ู„ูˆ ุงู„ู…ูุชุงุญ ุงุชุณุฑู‘ุจ ุฃูˆ ุถุงุนุŒ ุฃูŠ ุญุฏ ูŠู‚ุฏุฑ ูŠููƒ ุงู„ุจูŠุงู†ุงุช.
- ุจุชุณุชุฎุฏู…ู‡ุง ููŠ ุฅุฑุณุงู„ ู…ุนู„ูˆู…ุงุช ุญุณุงุณุฉ ุฒูŠ ุจุทุงู‚ุงุช ุงู„ุฏูุน ุฃูˆ ุจูŠุงู†ุงุช ุงู„ู…ุณุชุฎุฏู…ูŠู†.

ููŠู‡ ู†ูˆุนูŠู† ู…ู† ุงู„ู€ Encryption:

- ุงู„ู€ Symmetric: ู†ูุณ ุงู„ู…ูุชุงุญ ุจูŠุดูู‘ุฑ ูˆูŠููƒ (ุฒูŠ AES).
- ุงู„ู€ Asymmetric: ู…ูุชุงุญูŠู†ุŒ ูˆุงุญุฏ ุจูŠุดูู‘ุฑ (public) ูˆุงู„ุชุงู†ูŠ ุจูŠููƒ (private) โ€“ ุฒูŠ ุงู„ู„ูŠ ุจูŠุณุชุฎุฏู… ููŠ HTTPS.

โ€”โ€”โ€”

๐Ÿ’ก ุฅู…ุชู‰ ุชุณุชุฎุฏู… ู…ูŠู†ุŸ

- ุจุชุฎุฒู† passwordsุŸ ูŠุจู‚ู‰ Hashing
- ุจุชุจุนุช ุตูˆุฑุฉ ุฃูˆ ุฏุงุชุง ุนุจุฑ APIุŸ ูŠุจู‚ู‰ Encoding
- ุจุชุจุนุช ู…ุนู„ูˆู…ุงุช ุญุณุงุณุฉ ุฒูŠ tokens ุฃูˆ ุจูŠุงู†ุงุช ู…ุณุชุฎุฏู…ุŸ ูŠุจู‚ู‰ Encryption

โ€”โ€”โ€”

ูˆูู‚ูƒู… ุงู„ู„ู‡ ู„ูƒู„ ุฎูŠุฑ ๐ŸŒฟ
โค17
API Design ๐Ÿ’ฏ
โค3
ุญุงุจุจ ุชุชู†ุงู‚ุด ููŠ ููƒุฑุฉ ุฃูˆ ุนู†ุฏูƒ ุงุณุชูุณุงุฑุŸ
ุงุณุฃู„ู†ูŠ ููŠ ุฃูŠ ูˆู‚ุช ู…ู† ุฎู„ุงู„ ุญุณุงุจูŠ ุนู„ู‰ ู…ู†ุตุฉ ู‚ุจูŠู„ุฉ ๐Ÿ‘‡

https://qabilah.com/profile/alisamir
โค1