๐ˆ๐“๐‚๐Ž๐ƒ๐„
85 subscribers
57 photos
14 videos
8 files
38 links
ุซู‚ุงูุฉ ุจุฑู…ุฌูŠุฉ ุŒ ู…ุนู„ูˆู…ุงุช ุชู‚ู†ูŠุฉ ุŒ ุฑูˆุงุจุท ู„ู„ุงุญุชุฑุงู ููŠ ุงู„ุจุฑู…ุฌุฉ.
ุญุณุงุจูŠ ุชู„ุฌุฑุงู…: @Q_s_i0.
Download Telegram
ุฃูŠู† ุงู„ุฎุทุฃ ููŠ ุงู„ูƒูˆุฏุŸ

abstract class Device {
// ุฎุทุฃ ูƒูˆุฏ ู‡ู†ุงุŒ ู…ุง ู‡ูˆ ุงู„ุณุจุจุŸ
abstract final void boot();
}
ุฃูŠู† ุงู„ุฎุทุฃ ููŠ ุงู„ูƒูˆุฏุŸ

interface Printable { void print(); }
class Document implements Printable {
// ุฎุทุฃ ูƒูˆุฏ ููŠ ู‡ุฐุง ุงู„ุณุทุฑุŒ ู„ู…ุงุฐุงุŸ
void print() { System.out.print("Doc"); }
}
ุฃูŠู† ุงู„ุฎุทุฃ ููŠ ุงู„ูƒูˆุฏุŸ

interface MathConfig {
// ุฎุทุฃ ูƒูˆุฏ ููŠ ู‡ุฐุง ุงู„ุณุทุฑุŒ ู„ู…ุงุฐุงุŸ
double PI;
}
ุฃูŠู† ุงู„ุฎุทุฃ ููŠ ุงู„ูƒูˆุฏุŸ

interface Flyable { void fly(); }
// ุฎุทุฃ ูƒูˆุฏ ููŠ ุงู„ุณุทุฑ ุงู„ุชุงู„ูŠุŒ ู…ุง ู‡ูˆุŸ
interface Swimmable implements Flyable {

}
โ€‹๐Ÿš€ ุงุณุชุถุงูุฉ ู…ุดุงุฑูŠุนูƒู… ู…ุฌุงู†ุงู‹ ูˆุจุซูˆุงู†ูŠ!


โ€‹ูŠุง ุฌู…ุงุนุฉุŒ ุจู…ุง ุฅู† ูƒุซูŠุฑ ู…ู†ูƒู… ูŠุณุฃู„ู†ูŠ ูˆูŠู† ุฃูุถู„
ูˆุฃุณู‡ู„ ู…ูƒุงู† ุชุฑูุนูˆู† ููŠู‡ ู…ุดุงุฑูŠุนูƒู… ูˆู…ูˆุงู‚ุนูƒู… ุนุดุงู† ุชุดุงุฑูƒูˆู‡ุง ู…ุน ุงู„ู†ุงุณ ุฃูˆ ุชุญุทูˆู‡ุง ููŠ ู…ุนุฑุถ ุฃุนู…ุงู„ูƒู… (Portfolio)ุŒ ุฌุจุช ู„ูƒู… ุงู„ุญู„ ุงู„ู…ุฎุชุตุฑ ูˆุงู„ุณุฑูŠุน:
โ€‹๐ŸŒ ู…ูˆู‚ุน Netlify
๐Ÿ”— netlify.app

โ€‹ุงู„ู…ูˆู‚ุน ู‡ุฐุง ุฑู‡ูŠุจ ู„ุฑูุน ู…ุดุงุฑูŠุน ุงู„ู€ Front-endุŒ
ูˆู…ู† ุฃู‡ู… ู…ู…ูŠุฒุงุชู‡:
โ€‹ุณู‡ู„ ูˆุณุฑูŠุน: ุญุฑููŠุงู‹ ุจุณ ุชุณุญุจ ู…ุฌู„ุฏ ู…ุดุฑูˆุนูƒ ูˆุชุฑู…ูŠู‡ ููŠ ุงู„ู…ูˆู‚ุน (Drag & Drop) ูˆูŠุตูŠุฑ ู…ูˆู‚ุนูƒ ุดุบุงู„ ุจุฑุงุจุท ุฑุณู…ูŠ ุจุซูˆุงู†ูŠ.
โ€‹ูŠุฑุจุท ู…ุน GitHub: ุฅุฐุง ุชุนุฏู„ ุงู„ูƒูˆุฏ ุนู†ุฏูƒุŒ ูŠุชุญุฏุซ ุงู„ู…ูˆู‚ุน ุชู„ู‚ุงุฆูŠุงู‹ ุจุฏูˆู† ู…ุง ุชุนูŠุฏ ุฑูุนู‡.

โ€‹ุงุจุฏุฃูˆุง ุงุฑูุนูˆุง ุฃุนู…ุงู„ูƒู… ุงู„ุญูŠู†ุŒ ูˆุดุงุฑูƒูˆู†ูŠ ุฑูˆุงุจุท ู…ูˆุงู‚ุนูƒู… ููŠ ุงู„ุชุนู„ูŠู‚ุงุช ุฎู„ูˆู†ุง ู†ุดูˆู ุฅุจุฏุงุนุงุชูƒู… ูˆู†ุชุนู„ู… ู…ู† ุจุนุถ! ๐Ÿ”ฅ๐Ÿ‘‡
๐Ÿ”ฅ2
ูˆุงุฌู‡ุฉ ุงู„ู…ุณุชุฎุฏู… (UI) ู…ู‚ุงุจู„ ุชุฌุฑุจุฉ ุงู„ู…ุณุชุฎุฏู… (UX): ุงู„ุชูˆุฃู… ุงู„ู…ู„ุชุตู‚ ููŠ ุนุงู„ู… ุงู„ุชุตู…ูŠู… ๐ŸŽจ๐Ÿ’ป

ูƒุซูŠุฑ ู…ู† ุงู„ู†ุงุณ (ูˆุญุชู‰ ุจุนุถ ุงู„ู…ุทูˆุฑูŠู† ุงู„ู…ุจุชุฏุฆูŠู†) ูŠุฎู„ุทูˆู† ุจูŠู† ุงู„ู…ุตุทู„ุญูŠู†ุŒ ูˆูŠุนุชู‚ุฏูˆู† ุฃู† UI ูˆ UX ู‡ู…ุง ุดูŠุก ูˆุงุญุฏ. ู„ูƒู† ุงู„ุญู‚ูŠู‚ุฉุŸ ู‡ู…ุง ุชุฎุตุตุงู† ู…ุฎุชู„ูุงู† ุชู…ุงู…ุงู‹ุŒ ู„ูƒู† ู„ุง ูŠู…ูƒู† ู„ุฃุญุฏู‡ู…ุง ุงู„ู†ุฌุงุญ ุจุฏูˆู† ุงู„ุขุฎุฑ!
โ€‹ุฏุนูˆู†ุง ู†ู„ุฎุต ุงู„ูุฑู‚ ุจุฐูƒุงุก ูˆุงุฎุชุตุงุฑุŒ ุจุฃุณู„ูˆุจ "IT Code" ุงู„ู…ุนุชุงุฏ:
๐Ÿ’Ž ุงูˆู„ุงู‹: ู…ุง ู‡ูŠ ุชุฌุฑุจุฉ ุงู„ู…ุณุชุฎุฏู… (UX - User Experience)ุŸ ๐Ÿค”
โ€‹ุงู„ู€ UX ูŠุฑูƒุฒ ุนู„ู‰ "ูƒูŠู ูŠุนู…ู„ ุงู„ู…ู†ุชุฌุŸ" ูˆูƒูŠู ูŠุดุนุฑ ุงู„ู…ุณุชุฎุฏู… ุฃุซู†ุงุก ุงู„ุชุนุงู…ู„ ู…ุนู‡. ู‡ูˆ ุงู„ุฌุงู†ุจ ุงู„ุชุญู„ูŠู„ูŠ ูˆุงู„ู†ูุณูŠ ูˆุงู„ู‡ู†ุฏุณูŠ ู„ู„ุชุตู…ูŠู….

๐Ÿ“Œ โ€‹ุงู„ู‡ุฏู ุงู„ุฃุณุงุณูŠ: ุฌุนู„ ุฑุญู„ุฉ ุงู„ู…ุณุชุฎุฏู… ุฏุงุฎู„ ุงู„ู…ูˆู‚ุน ุฃูˆ ุงู„ุชุทุจูŠู‚ ุณู‡ู„ุฉุŒ ู…ู†ุทู‚ูŠุฉุŒ ูˆุณุฑูŠุนุฉ ุจุฏูˆู† ุฃูŠ ุชุนู‚ูŠุฏ.

ู…ุงุฐุง ูŠูุนู„ ู…ุตู…ู… ุงู„ู€ UXุŸ

โ€ข โ€‹ ุฏุฑุงุณุฉ ุณู„ูˆูƒ ุงู„ู…ุณุชุฎุฏู…ูŠู† ูˆุจู†ุงุก ุดุฎุตูŠุงุชู‡ู… (User Personas).
โ€ข โ€‹ ุฑุณู… ุงู„ู‡ูŠูƒู„ูŠุฉ ุงู„ุณู„ูƒูŠุฉ (Wireframes) ูˆุงู„ู…ุฎุทุทุงุช ุงู„ุงู†ุณูŠุงุจูŠุฉ (User Flows).
โ€ขโ€‹ ุงุฎุชุจุงุฑ ุณู‡ูˆู„ุฉ ุงู„ุงุณุชุฎุฏุงู… ูˆุชุนุฏูŠู„ ุงู„ุฃุฎุทุงุก ู‚ุจู„ ูƒุชุงุจุฉ ูƒูˆุฏ ูˆุงุญุฏ.

๐Ÿ’ก โ€‹ุจุงู„ู…ุฎุชุตุฑ: ุงู„ู€ UX ู‡ูˆ ุงู„ุนู‚ู„ ูˆุงู„ู…ู†ุทู‚ ุฎู„ู ุฃูŠ ู†ุธุงู….
--------------------------------------------------------------------------------

๐Ÿ’Ž ุซุงู†ูŠุงู‹: ู…ุง ู‡ูŠ ูˆุงุฌู‡ุฉ ุงู„ู…ุณุชุฎุฏู… (UI - User Interface)ุŸ ๐ŸŽจ
ุงู…ุง ุจุงู„ู†ุณุจุฉ โ€‹ุงู„ู€ UI ูู‡ูˆ ูŠุฑูƒุฒ ุนู„ู‰ "ูƒูŠู ูŠุจุฏูˆ ุงู„ู…ู†ุชุฌุŸ" ูˆู‡ูˆ ุงู„ุฌุงู†ุจ ุงู„ุจุตุฑูŠ ูˆุงู„ุฌู…ุงู„ูŠ ุงู„ุฐูŠ ูŠุชูุงุนู„ ู…ุนู‡ ุงู„ู…ุณุชุฎุฏู… ุจุดูƒู„ ู…ุจุงุดุฑ.

๐Ÿ“Œ ุงู„ู‡ุฏู ุงู„ุฃุณุงุณูŠ: ุฌุฐุจ ุนูŠู† ุงู„ู…ุณุชุฎุฏู… ูˆุฌุนู„ ุงู„ูˆุงุฌู‡ุฉ ู…ุฑูŠุญุฉ ุจุตุฑูŠุงู‹ ูˆู…ุชู†ุงุณู‚ุฉ ู…ุน ุงู„ู‡ูˆูŠุฉ ุงู„ุฑู‚ู…ูŠุฉ.

โ€‹
ู…ุงุฐุง ูŠูุนู„ ู…ุตู…ู… ุงู„ู€ UIุŸ๐ŸŒŸ

โ€ข โ€‹ ุงุฎุชูŠุงุฑ ุงู„ุฃู„ูˆุงู† ุงู„ู…ุชู†ุงุณู‚ุฉ (Color Palettes) ูˆุชู†ุณูŠู‚ ุงู„ุฎุทูˆุท (Typography).
โ€ขโ€‹ ุชุตู…ูŠู… ุงู„ุฃุฒุฑุงุฑุŒ ุงู„ุฃูŠู‚ูˆู†ุงุชุŒ ุงู„ุญู‚ูˆู„ุŒ ูˆุชุฃุซูŠุฑุงุช ุงู„ุญุฑูƒุฉ (Animations).
โ€ข โ€‹ ุชุทุจูŠู‚ ุตูŠุญุงุช ุงู„ุชุตู…ูŠู… ุงู„ุญุฏูŠุซุฉ (ู…ุซู„: Dark Mode, Glassmorphism).

๐Ÿ’ก โ€‹ุจุงู„ู…ุฎุชุตุฑ: ุงู„ู€ UI ู‡ูˆ ุงู„ุฌุณุฏ ูˆุงู„ู…ุธู‡ุฑ ุงู„ุฎุงุฑุฌูŠ ู„ู„ู†ุธุงู….

ุชุดุจูŠู‡ ู‡ู†ุฏุณูŠ ู„ุชู‚ุฑูŠุจ ุงู„ุตูˆุฑุฉ ๐Ÿ—๏ธ
ุชุฎูŠู„ ุงู† ุจู†ุงุก ุงู„ุตูุญุฉ ู…ุซู„ ุจู†ุงุก ุงู„ู…ู†ุฒู„ :
โ€‹ุงู„ู€ UX: ู‡ูˆ ุงู„ู…ู‡ู†ุฏุณ ุงู„ู…ุนู…ุงุฑูŠ ุงู„ุฐูŠ ูŠุญุฏุฏ ู…ูƒุงู† ุงู„ุบุฑูุŒ ู…ุณุงุญุฉ ุงู„ู…ุทุจุฎุŒ ูˆู…ูƒุงู† ุงู„ุฃุจูˆุงุจ ู„ุถู…ุงู† ุญุฑูƒุฉ ู…ุฑูŠุญุฉ ูˆุณู‡ู„ุฉ ุฏุงุฎู„ ุงู„ุจูŠุช.
โ€‹ุงู„ู€ UI: ู‡ูˆ ู…ุตู…ู… ุงู„ุฏูŠูƒูˆุฑ ุงู„ุฏุงุฎู„ูŠ ุงู„ุฐูŠ ูŠุฎุชุงุฑ ุฃู„ูˆุงู† ุงู„ุฌุฏุฑุงู†ุŒ ู†ูˆุน ุงู„ุฅุถุงุกุฉุŒ ูˆุงู„ุณุฌุงุฏ ู„ูŠุตุจุญ ุงู„ุจูŠุช ุฌู…ูŠู„ุงู‹ ูˆู…ุฑูŠุญุงู‹ ู„ู„ุนูŠู†.


ู…ู† ุงู„ุฃู‡ู…ุŸ ๐Ÿค
โ€‹ู„ุง ูŠูˆุฌุฏ ุฑุงุจุญ ู‡ู†ุง!
โ€ข โ€‹ ุฅุฐุง ุตู…ู…ุช ุชุทุจูŠู‚ุงู‹ ุจู€ UI ุฃุณุทูˆุฑูŠ ูˆู„ูƒู† UX ุณูŠุกุŒ ุณูŠู†ุจู‡ุฑ ุงู„ู…ุณุชุฎุฏู… ุจุงู„ู…ุธู‡ุฑ ุฃูˆู„ 5 ุซูˆุงู†ูุŒ ุซู… ูŠุบู„ู‚ ุงู„ุชุทุจูŠู‚ ููˆุฑุงู‹ ู„ุฃู†ู‡ ู„ู… ูŠุนุฑู ูƒูŠู ูŠุณุชููŠุฏ ู…ู†ู‡!
โ€ข โ€‹ูˆุฅุฐุง ุตู…ู…ุช ุชุทุจูŠู‚ุงู‹ ุจู€ UX ุนุจู‚ุฑูŠ ูˆู„ูƒู† UI ุจุฏุงุฆูŠุŒ ูู„ู† ูŠู‚ุชุฑุจ ุฃุญุฏ ู„ุชุฌุฑุจุชู‡ ู„ุฃู† ุงู„ู…ุธู‡ุฑ ู…ู†ูุฑ.


๐Ÿ–‡ โ€‹ุงู„ุฎู„ุงุตุฉ ู„ู„ู€ Developers:
ุงู„ู€ UX ูŠุฌุนู„ ุงู„ู…ู†ุชุฌ ู†ุงุฌุญุงู‹ ูˆู…ุฑูŠุญุงู‹ุŒ ูˆุงู„ู€ UI ูŠุฌุนู„ู‡ ู…ุญุจูˆุจุงู‹ ูˆุฌุฐุงุจุงู‹. ูƒู„ุงู‡ู…ุง ูŠูƒู…ู„ุงู† ุจุนุถู‡ู…ุง ู„ูŠุฎุฑุฌุง ู„ู†ุง ุจู…ู†ุชุฌ ุฑู‚ู…ูŠ ู…ุชูƒุงู…ู„ ูˆุฑุงุฆุน!

@ITCode #UX_UI
โค2๐Ÿ‘1๐Ÿ”ฅ1๐Ÿ‘1
โค2
๐Ÿ”ฅ1
๐ˆ๐“๐‚๐Ž๐ƒ๐„
ู‡ู„ ุชุนุฑู React ุŸ
ุงุฌุงุจุฉ ุนู„ู‰ ุณุคุงู„ ุงู„ู…ู†ุดูˆุฑ ุงู„ุณุงุจู‚ ุณูˆู ู†ุงุฎุฐ ุงู„ูŠูˆู… ู†ุจุฐู‡ ุจุณูŠุทุฉ ุนู† React

ู…ุงู‡ูŠ React:

ู‡ูŠ ุฃุดู‡ุฑ ู…ูƒุชุจุฉ ุจุฑู…ุฌูŠุฉ ุจู„ุบุฉ JavaScript ูˆุชุณุชุฎุฏู… ู„ุจู†ุงุก ูˆุงุฌู‡ุงุช ุงู„ู…ุณุชุฎุฏู… ูˆุชุญุฏูŠุฏุงู‹ ู„ุชุทุจูŠู‚ุงุช ูˆูŠุจ ุงู„ุฌูˆุงู„ ูˆุงู„ู…ูˆุงู‚ุน ุงู„ุฅู„ูƒุชุฑูˆู†ูŠุฉ
ุทูˆุฑุชู‡ุง ุดุฑูƒุฉ Meta ุงูˆ ููŠุณุจูˆูƒ ุณุงุจู‚ุงู‹.

ู„ู…ุงุฐุง ูŠูุถู„ู‡ุง ุงู„ู…ุจุฑู…ุฌูˆู†ุŸ

1-โ€‹ ุจู†ุงุก ุงู„ู…ูƒูˆู†ุงุช (Components): ุชู‚ุณู… ุงู„ุตูุญุฉ ุฅู„ู‰ ุฃุฌุฒุงุก ุตุบูŠุฑุฉ ูˆู…ุณุชู‚ู„ุฉ (ู…ุซู„ ุฒุฑุŒ ู‚ุงุฆู…ุฉุŒ ุฃูˆ ู†ู…ูˆุฐุฌ)ุŒ ู…ู…ุง ูŠุณู‡ู„ ุงุนุงุฏุฉ ุงุณุชุฎุฏุงู…ู‡ ูˆุตูŠุงู†ุชู‡.
2-โ€‹ ุงู„ุณุฑุนุฉ ูˆุงู„ุฃุฏุงุก: ุชุนุชู…ุฏ ุนู„ู‰ ุชู‚ู†ูŠุฉ ุชุฏุนู‰ Virtual DOM ู…ู…ุง ูŠุฌุนู„ ุชุญุฏูŠุซ ุงู„ุตูุญุฉ ูุงุฆู‚ ุงู„ุณุฑุนุฉ ุฏูˆู† ุงู„ุญุงุฌุฉ ู„ุฅุนุงุฏุฉ ุชุญู…ูŠู„ู‡ุง ูƒุงู…ู„ุฉ.
3- โ€‹ุงู„ู…ุฑูˆู†ุฉ: ุชุฏุนู…ู‡ุง ุดุฑูƒุฉ Meta ูˆ ู…ุฌุชู…ุน ุถุฎู… ุฌุฏุง ู…ู† ุงู„ู…ุทูˆุฑูŠู† ุญูˆู„ ุงู„ุนุงู„ู…

@ITCode_0
#React #meta
โค3๐Ÿ”ฅ1
ู‚ุจู„ ูุชุฑุฉ ุจุฏุงุช ุฑุญู„ุฉ ุชุนู„ู… ReactุŒ ูˆูƒู…ุง ุนูˆุฏุชูƒู… ุงู† ุงุดุงุฑูƒูƒู… ูƒู„ ุฎุทูˆุฉ ููŠ ู…ุฑุญู„ุชูŠ ุงู„ุชุนู„ูŠู…ูŠุฉุŒ ูˆุงุชู…ู†ู‰ ุงู† ู†ุชุนู„ู… ู…ุนุง ูƒู„ ุฌุฏูŠุฏ ูˆู†ุณุชููŠุฏ ุณูˆูŠุงู‹ ุฎุทูˆุฉ ุจุฎุทูˆุฉ.

โ€‹ูˆู‡ุฐุง ุงูˆู„ ู…ุดุฑูˆุน ุฃุนู…ู„ ุนู„ูŠู‡ ูˆู‡ูˆ ุดุจู‡ ู…ูƒุชู…ู„ุŒ ูŠุณุนุฏู†ูŠ ุฌุฏู‹ุง ู…ุดุงุฑูƒุชู‡ ู…ุนูƒู…!
๐Ÿ”ฅ3โค2
ุนู†ุฏ ุงุณุชู†ุณุงุฎ ู…ุณุชูˆุฏุน ุฌูŠุชุŒ ูŠูู†ุฒู‘ูŽู„ ูƒุงู…ู„ ุณุฌู„ ุงู„ุชุนุฏูŠู„ุงุช (Commits) ู…ู†ุฐ ุฅู†ุดุงุก ุงู„ู…ุดุฑูˆุนุŒ ูˆู‚ุฏ ูŠูƒูˆู† ุถุฎู…ู‹ุง ูˆูŠุณุชู‡ู„ูƒ ูˆู‚ุชู‹ุง ูˆุญุฌู…ู‹ุง ุฏูˆู† ุญุงุฌุฉ.

ู‡ู†ุง ูŠุจุฑุฒ ุฎูŠุงุฑ
--depth 1
ูŠุฌุนู„ ุฌูŠุช ูŠู†ุฒู‘ู„ ุขุฎุฑ ู†ุณุฎุฉ ูู‚ุท ู…ู† ุงู„ู…ุดุฑูˆุน ู…ุชุฌุงู‡ู„ู‹ุง ุงู„ุณุฌู„ ุงู„ู‚ุฏูŠู…ุŒ ููŠูƒูˆู† ุงู„ุงุณุชู†ุณุงุฎ ุฃุณุฑุน ูˆูŠุณุชู‡ู„ูƒ ู…ุณุงุญุฉ ูˆุจูŠุงู†ุงุช ุฃู‚ู„.

ู…ุซุงู„:
git clone --depth 1 https://github.com/username/repo

#git #ุฌูŠุช
โค2
Forwarded from Mohcin Bounouara's Space (Mohcin)
ู„ุง ุชู†ุชุธุฑ ุฃู† ุชูู‡ู… ูƒู„ ุดูŠุก ู„ุชุจุฏุฃ..

ู…ู† ุฎู„ุงู„ ุนุฏุฉ ู…ุดุงุฑูŠุน ุจุฑู…ุฌูŠุฉ ูƒู†ุช ููŠู‡ุงุŒ ูƒุงู†ุช ุจุฏุงูŠุงุชูŠ ููŠ ูู‡ู… ุงู„ู…ุดุงุฑูŠุน ุชุฌุนู„ู†ูŠ ุฃุฎุดู‰ ู…ู† ุงู„ู†ุชุงุฆุฌุŒ ูˆุฃุชุณุงุกู„ุ› ู‡ู„ ุณุฃุชู…ูƒู† ู…ู† ุฅู†ุฌุงุฒ ู…ุง ู‡ูˆ ู…ุทู„ูˆุจ ู…ู†ูŠุŸ

ู„ูƒู† ู…ุน ุงู„ูˆู‚ุชุŒ ุชุจุฏุฃ ุจูู‡ู… ุงู„ู…ุดุฑูˆุน ุฃูƒุซุฑุŒ ูˆุชูู‡ู… ุงู„ codebase ุจุดูƒู„ ุฃุนู…ู‚ุŒ ูˆุชุตุจุญ ู…ุฎุฑุฌุงุชูƒ ููŠู‡ ุฃูุถู„ุŒ ูˆู‡ูƒุฐุง ุชุชุทูˆุฑ ู…ุน ุชุทูˆุฑ ุงู„ู…ุดุฑูˆุน.

ู„ุง ุชู†ุชุธุฑ ุฃู† ุชูู‡ู… ูƒู„ ุดูŠุก ุญุชู‰ ุชุจุฏุฃุŒ ุงุจุฏุฃุŒ ุชุนู„ู‘ู…ุŒ ุฃุฎุทุฆุŒ ูˆุญุณู‘ู† ู…ุฎุฑุฌุงุชูƒ ู…ุน ุงู„ูˆู‚ุช..

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

ุงู„ู„ู‡ู… ุฅู†ุง ู†ุณุฃู„ูƒ ู‡ุฐุง.
๐Ÿšฆ ู…ุง ู‡ูˆ Rate Limiting ููŠ ุงู„ู€ APIุŸ


ุชุฎูŠู„ ุฃู† ุนู†ุฏูƒ API ุจุณูŠุทุฉุŒ ูˆุงู„ู…ุณุชุฎุฏู… ุงู„ุทุจูŠุนูŠ ูŠุฑุณู„ Request ุฃูˆ ุงุซู†ุชูŠู† ูู‚ุท.

ู„ูƒู† ูุฌุฃุฉ Client ูˆุงุญุฏ ุจุฏุฃ ูŠุฑุณู„ 1000 Request ููŠ ุงู„ุซุงู†ูŠุฉ! ๐Ÿ˜ต

ู‚ุฏ ูŠูƒูˆู†:

- Bot
- ู…ุญุงูˆู„ุฉ Brute Force
- Bug ููŠ ุงู„ู€ Frontend
- ุฃูˆ ุญุชู‰ ุงุณุชุฎุฏุงู… ุณูŠุฆ ู„ู„ู€ API

ูƒู„ Request ุชุณุชู‡ู„ูƒ ู…ู† ู…ูˆุงุฑุฏ ุงู„ู€ ServerุŒ ู„ุฐู„ูƒ ุงู„ุณู…ุงุญ ู„ุฃูŠ Client ุจุฅุฑุณุงู„ ุนุฏุฏ ุบูŠุฑ ู…ุญุฏูˆุฏ ู…ู† Requests ู‚ุฏ ูŠุคุซุฑ ุนู„ู‰ ุฌู…ูŠุน ุงู„ู…ุณุชุฎุฏู…ูŠู†.

ูˆู‡ู†ุง ูŠุฃุชูŠ ุฏูˆุฑ Rate Limiting.


๐Ÿ”’ ู…ุง ู‡ูˆ Rate LimitingุŸ


ู‡ูˆ ูˆุถุน ุญุฏ ู„ุนุฏุฏ ุงู„ู€ Requests ุงู„ุชูŠ ูŠุณุชุทูŠุน Client ุชู†ููŠุฐู‡ุง ุฎู„ุงู„ ูุชุฑุฉ ุฒู…ู†ูŠุฉ ู…ุนูŠู†ุฉ.

ู…ุซู„ุงู‹:

100 Requests / Minute

ุฃูˆู„ 100 Request ูŠุชู… ู‚ุจูˆู„ู‡ุงุŒ ุฃู…ุง ุงู„ู€ Request ุฑู‚ู… 101 ููŠุชู… ุฑูุถู‡ุง ุบุงู„ุจุงู‹ ุจู€:

HTTP 429 โ€” Too Many Requests


โฑ๏ธ ุฃุดู‡ุฑ ุทุฑู‚ Rate Limiting


1๏ธโƒฃ Fixed Window

ู†ู‚ุณู… ุงู„ูˆู‚ุช ุฅู„ู‰ ูุชุฑุงุช ุซุงุจุชุฉ:

12:00 โ†’ 12:01

ู…ุซู„ุงู‹ 100 Request ู„ูƒู„ ุฏู‚ูŠู‚ุฉ.

ุณู‡ู„ุฉ ูˆุจุณูŠุทุฉุŒ ู„ูƒู† ู„ุฏูŠู‡ุง ู…ุดูƒู„ุฉ: ูŠู…ูƒู† ู„ู„ู…ุณุชุฎุฏู… ุฅุฑุณุงู„ 100 Request ููŠ ุขุฎุฑ ุซุงู†ูŠุฉ ู…ู† ุงู„ุฏู‚ูŠู‚ุฉ ูˆ100 ุฃุฎุฑู‰ ููŠ ุฃูˆู„ ุซุงู†ูŠุฉ ู…ู† ุงู„ุฏู‚ูŠู‚ุฉ ุงู„ุชุงู„ูŠุฉ.


2๏ธโƒฃ Sliding Window

ุจุฏู„ุงู‹ ู…ู† ุงู„ุงุนุชู…ุงุฏ ุนู„ู‰ ุฏู‚ุงุฆู‚ ุซุงุจุชุฉุŒ ู†ุญุณุจ ุฏุงุฆู…ุงู‹ ุขุฎุฑ ุฏู‚ูŠู‚ุฉ ู…ู† ุงู„ู„ุญุธุฉ ุงู„ุญุงู„ูŠุฉ.

ุฃุฏู‚ ู…ู† Fixed WindowุŒ ู„ูƒู† ูŠุญุชุงุฌ Tracking ูˆResources ุฃูƒุซุฑ.


3๏ธโƒฃ Token Bucket ๐Ÿชฃ

ู„ูƒู„ Client Bucket ุชุญุชูˆูŠ ุนู„ู‰ Tokens.

ูƒู„ Request ุชุณุชู‡ู„ูƒ TokenุŒ ูˆุงู„ู€ Tokens ุชุชุฌุฏุฏ ุชุฏุฑูŠุฌูŠุงู‹ ู…ุน ุงู„ูˆู‚ุช.

ู…ุซู„ุงู‹ Bucket ุชุญุชูˆูŠ ุนู„ู‰ 10 Tokens ูˆูŠู…ูƒู† ุฅุถุงูุฉ Token ูƒู„ ุซุงู†ูŠุฉ.

ูˆู‡ุฐุง ูŠุณู…ุญ ุจู€ Burst ุตุบูŠุฑ ู…ู† RequestsุŒ ู„ูƒู† ูŠู…ู†ุน ุงู„ุงุณุชู…ุฑุงุฑ ููŠ ุฅุฑุณุงู„ ุนุฏุฏ ุถุฎู… ู…ู† Requests.


๐ŸŽฏ ุนู„ู‰ ู…ุงุฐุง ู†ุทุจู‚ ุงู„ู€ LimitุŸ


ู„ูŠุณ ุจุงู„ุถุฑูˆุฑุฉ ุนู„ู‰ User ูู‚ุท.

ูŠู…ูƒู† ุฃู† ูŠูƒูˆู† ุญุณุจ:

- IP Address
- User ID
- API Key
- Account
- Organization
- Endpoint

ูˆูŠู…ูƒู† ุฃู† ุชุฎุชู„ู ุงู„ุญุฏูˆุฏ ุญุณุจ ุงู„ู€ Endpoint.

ู…ุซู„ุงู‹:

"GET /products" โ†’ 1000 Request/minute

"POST /login" โ†’ 10 Requests/minute

ู„ุฃู† ุงู„ู€ Login ุฃูƒุซุฑ ุญุณุงุณูŠุฉ ูˆูŠุญุชุงุฌ ุญู…ุงูŠุฉ ุฃูƒุจุฑ.


๐ŸŒ ู…ุงุฐุง ูŠุญุฏุซ ุนู†ุฏ ูˆุฌูˆุฏ ุนุฏุฉ ServersุŸ


ู„ูˆ ุนู†ุฏูƒ:

Client โ†’ Load Balancer โ†’ Server A / B / C

ูˆูˆุถุน ูƒู„ Server Counter ุฎุงุต ุจู‡ุŒ ูู„ู† ุชูƒูˆู† ุงู„ุตูˆุฑุฉ ูƒุงู…ู„ุฉุ› ู„ุฃู† ูƒู„ Server ูŠุฑู‰ ุฌุฒุกุงู‹ ู…ู† Requests ูู‚ุท.

ู„ุฐู„ูƒ ููŠ ุงู„ุฃู†ุธู…ุฉ ุงู„ู…ูˆุฒุนุฉ ู†ุญุชุงุฌ ุบุงู„ุจุงู‹ ุฅู„ู‰ Shared State ู…ุซู„ RedisุŒ ุจุญูŠุซ ุชุดุชุฑูƒ ุฌู…ูŠุน ุงู„ู€ Servers ููŠ ู†ูุณ ุจูŠุงู†ุงุช ุงู„ู€ Rate Limiting.

ูˆู‡ู†ุง ูŠุฌุจ ุงู„ุงู†ุชุจุงู‡ ุฃูŠุถุงู‹ ุฅู„ู‰ Race ConditionsุŒ ู„ุฐู„ูƒ ูŠุฌุจ ุฃู† ุชูƒูˆู† ุนู…ู„ูŠุงุช ุชุญุฏูŠุซ ุงู„ู€ Counter ุฃูˆ ุงู„ู€ Tokens Atomic.


๐Ÿ—๏ธ ูˆุฃูŠู† ู†ุถุน Rate LimitingุŸ


ูŠู…ูƒู† ูˆุถุนู‡ ุฏุงุฎู„ ุงู„ู€ ApplicationุŒ ู„ูƒู† ููŠ ุงู„ุฃู†ุธู…ุฉ ุงู„ูƒุจูŠุฑุฉ ู‚ุฏ ูŠูƒูˆู† ู…ู† ุงู„ุฃูุถู„ ูˆุถุนู‡ ุฃู…ุงู… ุงู„ุชุทุจูŠู‚:

Client โ†’ API Gateway โ†’ Rate Limiter โ†’ Application โ†’ Database

ุจู‡ุฐู‡ ุงู„ุทุฑูŠู‚ุฉ ูŠุชู… ุฑูุถ ุงู„ู€ Traffic ุงู„ุฒุงุฆุฏ ู…ุจูƒุฑุงู‹ุŒ ู‚ุจู„ ุฃู† ูŠุณุชู‡ู„ูƒ ู…ูˆุงุฑุฏ ุงู„ู€ Application.

๐Ÿ’ก ุงู„ุฎู„ุงุตุฉ


Rate Limiting ู„ูŠุณ ู…ุฌุฑุฏ:

"if requests > 100 โ†’ reject"

ุจู„ ู‡ูˆ ู‚ุฑุงุฑ Architecture ูƒุงู…ู„:

ู…ู† ู†ุญุฏู‘ู‡ุŸ
IP ุฃู… User ุฃู… API KeyุŸ

ูƒูŠู ู†ุญุณุจู‡ุŸ
Fixed Window ุฃู… Sliding Window ุฃู… Token BucketุŸ

ุฃูŠู† ู†ุฎุฒู† ุงู„ุญุงู„ุฉุŸ
ูˆุฎุตูˆุตุงู‹ ุนู†ุฏ ูˆุฌูˆุฏ ุนุฏุฉ Servers.

ูƒูŠู ู†ุชุนุงู…ู„ ู…ุน ุงู„ุชุฒุงู…ู†ุŸ
ุญุชู‰ ู„ุง ุชุญุฏุซ Race Conditions.

ูˆููŠ ุงู„ู†ู‡ุงูŠุฉุŒ ุงู„ู€ 429 Too Many Requests ู…ุฌุฑุฏ Response ุจุณูŠุทุฉุŒ ู„ูƒู† ุฎู„ูู‡ุง ู†ุธุงู… ูƒุงู…ู„ ู‡ุฏูู‡ ุญู…ุงูŠุฉ ุงู„ู€ API ูˆุถู…ุงู† ุชูˆุฒูŠุน ู…ูˆุงุฑุฏ ุงู„ู€ Server ุจุดูƒู„ ุนุงุฏู„. ๐Ÿš€
๐Ÿ”ฅ1
ุณู„ุงู… ุนู„ูŠูƒู… ูˆุฑุญู…ู‡ ุงู„ู„ู‡ ูˆุจุฑูƒุงุชู‡


t.me/Manager_ITCodebot

ู…ู†ุฐ ูุชุฑู‡ ู‚ู…ุช ุจุนู…ู„ ู‡ุฐุง ุงู„ุจูˆุช ูˆู‡ูˆ ุนุจุงุฑู‡ ุนู† ุจูˆุช ูŠู‚ูˆู… ุจุชุญู…ูŠู„ ุงูŠ ููŠุฏูŠูˆ ู…ู† ุงูŠ ู…ู†ุตุฉ ุนู† ุทุฑูŠู‚ ุงุฑุณุงู„ ุฑุงุจุท ุงู„ููŠุฏูŠูˆ ูู‚ุท.

ุงุฑุฌูˆุง ู…ู† ุงู„ุฌู…ูŠุน ุชุฌุฑุจุชู‡ ูˆุงู„ุชุญู‚ู‚ ู…ู† ุงู†ู‡ ูŠุนู…ู„ ุจุดูƒู„ ุตุญูŠุญ ูˆุงุฐุง ูˆุงุฌู‡ุชูƒ ุงูŠ ู…ุดูƒู„ุฉ ูŠู…ูƒู†ูƒ ุงู„ุฅุจู„ุงุบ ุนู† ุงู„ู…ุดูƒู„ุฉ ุนุจุฑ ุงู„ุจูˆุช ุนู† ุทุฑูŠู‚ ู‡ุฐุง ุงู„ุงู…ุฑ ๐Ÿ‘‡๐Ÿป

โš ๏ธ ูŠุฑุฌู‰ ูƒุชุงุจุฉ ุงู„ู…ุดูƒู„ุฉ ุจุนุฏ ุงู„ุฃู…ุฑ.
ู…ุซุงู„:
/report ุงู„ุจูˆุช ู„ุง ูŠุนู…ู„

๏ปฟ
#ุงุชู…ู†ู‰_ู„ูƒู…_ุชุฌุฑุจู‡_ู…ู…ุชุนู‡
#ITCode_0
ุฃุฏุงุฉ ู‚ูˆูŠุฉ ู„ุชุญู…ูŠู„ ุงู„ู…ูˆุงู‚ุน ุงู„ุฅู„ูƒุชุฑูˆู†ูŠุฉ ุจุงู„ูƒุงู…ู„ุ› ุชุชูŠุญ ู„ูƒ ุญูุธ ุงู„ุตูุญุงุช ู…ุน ูƒุงูุฉ ุงู„ู…ู„ุญู‚ุงุช ู…ู† ุตูˆุฑุŒ ู…ู„ูุงุช CSSุŒ ูˆุณูƒุฑูŠุจุชุงุชุŒ ู…ู…ุง ูŠุณู…ุญ ุจุชุตูุญู‡ุง ู„ุงุญู‚ุงู‹ ุฏูˆู† ุงู„ุญุงุฌุฉ ู„ุงุชุตุงู„ ุจุงู„ุฅู†ุชุฑู†ุช.
ุฑุงุจุท ุงู„ู…ุดุฑูˆุน:
https://github.com/AhmadIbrahiim/Website-Downloader