Ninja Learn | نینجا لرن
1.26K subscribers
96 photos
36 videos
11 files
307 links
یادگیری برنامه نویسی به سبک نینجا 🥷
اینجا چیزایی یاد میگیری که فقط نینجاهای وب‌ بلدن 🤫

📄 Send me post: https://t.iss.one/NoronChat_bot?start=sec-fdggghgebe

👥 ɢʀᴏᴜᴘ: https://t.iss.one/+td1EcO_YfSphNTlk
Download Telegram
اگه تجربه ای دارید یا چیزی دوست دارید به برنامه نویسای کشورتون بگید میتونید به پیوی من بفرستید تو کانال قرار بدم 👇

@mohammad_strout

🔆 CHANNEL | GROUP
👍41
دوره ها ازت برنامه نویس نمی سازن بلکه پروژه هایی که میزنی ازت برنامه نویس در میاره.

⬅️ «از اشکان»


🔆 CHANNEL | GROUP
👍323
باقیمت مفت کار نکن، هزینه زحمتاتو بگیر

«از آرش»


🔆 CHANNEL | GROUP
👌19👍92👎1
از شنبه شروع نکنید.

«از مرد کامپیوتری»


🔆 CHANNEL | GROUP
9👏2👌1
سه نفر بشید هر روز برید دیسکورد مایک رو ببندید و تمرین کنید دوره ببینید داکیومنت یا هر کاری که میخواید رو بکنید

تکی سخته یکم پیش بردن، نسبت به چند نفری، برای اول کار
اینجوری اگه یه روز کار نکنی آبروی آدم پیش اون 2 نفر میره و اون دو نفر زوری میارنت اون روز

«از خسرو»


🔆 CHANNEL | GROUP
🤣155
Ninja Learn | نینجا لرن
سه نفر بشید هر روز برید دیسکورد مایک رو ببندید و تمرین کنید دوره ببینید داکیومنت یا هر کاری که میخواید رو بکنید تکی سخته یکم پیش بردن، نسبت به چند نفری، برای اول کار اینجوری اگه یه روز کار نکنی آبروی آدم پیش اون 2 نفر میره و اون دو نفر زوری میارنت اون روز…
حقیقتا بنظر خود من روش بهتری وجود داره. چه روش بهتری؟
بااون تیمی که داری یا دوستایی که دارید یه منبع اموزشی مثل کتاب ، داکیومنت هرچی مشخص کنید و بگید تا جمعه هفته بعد تا اینجاشو بخونید همگی تا وقتی که تموم شه.
اخر هفته هم میاید توی یه میتینگی نکاتی که فهمیدی رو میگید به هم و درواقع share Knowledge میکنید.
اخر سرهم میتونید با توجه به چیزایی که یاد گرفتید یه پروژه بیارید بالا یا اصلا مقاله بنویسید که خیلی برای رزومتون خوبه.


🔆 CHANNEL | GROUP
8👍3
Forwarded from Python BackendHub (Mani)
هیچوقت جنس پیچیدگی که دیزاین پترن به کد شما اضافه میکنه رو عمیقا متوجه نشده بودم (یعنی نمیتونستم توضیحش بدم)، تا اینکه این ویدیو رو دیدم:

https://youtu.be/SEp0NrXWwoo?si=mBy7nitVakta-SNz

پیچیدگی که به برنامه شما اضافه میکنه اسم گذاری هست😄. با دیدن این ویدیو متوجه این جملم میشین. حتما توصیه میکنم ببینید خیلی جالبه.

@PyBackendHub
🔥51
Ninja Learn | نینجا لرن pinned «اگه تجربه ای دارید یا چیزی دوست دارید به برنامه نویسای کشورتون بگید میتونید به پیوی من بفرستید تو کانال قرار بدم 👇 @mohammad_strout 🔆 CHANNEL | GROUP»
Ai will take all our jobs it so over 😔


🔆 CHANNEL | GROUP
🥰5🤣21
خب خب JWT چیه؟

ـJWT یا JSON Web Token یک استاندارد برای انتقال امن و فشرده اطلاعات بین کلاینت و سروره. این توکن‌ها معمولاً برای احراز هویت و مجوز دسترسی استفاده می‌شن.

از چه بخش‌هایی تشکیل شده؟
ـJWT از سه بخش اصلی تشکیل شده:

ـHeader 🧾
شامل نوع توکن (معمولاً JWT) و الگوریتم امضا مثل HS256 یا RS256.
{ 
"alg": "HS256",
"typ": "JWT"
}

ـPayload 🎒
شامل اطلاعاتی که باید منتقل بشه (Claims). این Claims ها می‌تونن عمومی باشن (مثل sub یا iat) یا سفارشی (مثل username).
{ 
"sub": "1234567890", "name": "John Doe", "admin": true
}

ـSignature
ترکیبی از Header و Payload که با استفاده از یک کلید خصوصی یا secret امضا شده. این بخش تضمین می‌کنه که توکن دستکاری نشده.
ـJWT این سه بخش رو با نقطه (.) جدا می‌کنه، مثلاً:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

هر بخش چطور ساخته می‌شه؟
ـHeader:
به فرمت JSON نوشته و سپس با Base64Url رمزگذاری می‌شه.

ـPayload:
دقیقاً مثل Header با Base64Url رمزگذاری می‌شه.

ـSignature:

از الگوریتم تعریف‌شده در Header استفاده می‌کنه و ترکیب base64(Header) + "." + base64(Payload) رو امضا می‌کنه.

نکته: در Base64Url، کاراکترهای "+" و "/" به "-" و "_" تبدیل میشن و "=" حذف می‌شه تا توکن برای استفاده در URL مناسب بشه.
چطور اعتبارسنجی می‌شه؟
برای اعتبارسنجی JWT:
ـHeader و Payload دیکد می‌شن
و محتوا با استفاده از Base64Url خونده می‌شه.

امضا بررسی می‌شه
سرور با استفاده از secret key یا public key امضا رو بررسی می‌کنه. اگه امضا درست باشه، یعنی توکن دستکاری نشده.

ـClaims ها چک می‌شن

ـExpiration (exp):
بررسی می‌شه که توکن منقضی نشده باشه. پیشنهاد می‌کنم exp Access Token بین ۱۵ دقیقه تا ۱ ساعت باشه.

ـIssuer (iss):
مطمئن می‌شه که توکن از سرور معتبری صادر شده.


ـAudience (aud):
بررسی می‌کنه که توکن برای اپلیکیشن درستی صادر شده باشه.
این فرآیند به طور خودکار توسط کتابخونه‌های JWT انجام می‌شه و نیازی نیست برنامه‌نویس کاری انجام بده.


اشتباهات رایج در استفاده از JWT 🚨
ذخیره توکن در LocalStorage
این روش ناامنه و ممکنه در برابر حملات XSS آسیب‌پذیر باشه. بهتره به جای اون از Secure Cookies استفاده بشه.

نکته تکمیلی: برای امنیت بیشتر، کوکی‌ها رو با ویژگی‌های HttpOnly و SameSite تنظیم کن.
استفاده نادرست از JWT
ـJWT بیشتر برای احراز هویت و انتقال اطلاعات و دادن دسترسی با عمر محدود مناسبه. استفاده از اون برای مواردی مثل مدیریت طولانی‌مدت Session توصیه نمی‌شه.

نداشتن Expiration (exp)
توکن‌های بدون تاریخ انقضا خطرناک هستن چون هیچ‌وقت منقضی نمی‌شن و ممکنه به دست افراد اشتباه بیفتن. برای Refresh Token پیشنهاد می‌کنم ۷ تا ۳۰ روز exp در نظر بگیرید تا کاربرانی که از سیستم خارج نشده‌اند، تجربه بهتری داشته باشند.

عدم اعتبارسنجی Claims ها
حتماً Claims مثل iss یا aud رو بررسی کن تا مطمئن بشی توکن از منبع معتبری صادر شده.

جمع‌بندی
ـJWT یه ابزار قدرتمند و امنه که اگه به درستی استفاده بشه، می‌تونه سرعت و امنیت سیستم رو بهبود بده. با این حال، بی‌دقتی در استفاده ازش می‌تونه مشکلات امنیتی بزرگی ایجاد کنه. حتماً به نکات گفته‌شده دقت کن تا از مزایای این ابزار به بهترین شکل بهره ببری.

امید وارم مفید بوده باشه :)

#programming #برنامه_نویسی #jwt



🔆 CHANNEL | GROUP
🔥14👍92
خب خب خب gRPC چیه؟ 🛰

اگه تاحالا با سیستم‌های توزیع‌شده کار کرده باشی، احتمالاً فهمیدی که یکی از چالش‌هاش ارتباط بین سرویس‌هاست. اینجا gRPC میاد وسط. یه فریم‌ورکه برای ارتباط سریع و بهینه بین سرویس‌ها.
gRPC (Google Remote Procedure Call)

یه سیستم Remote Procedure Call یا همون RPC مدرنه که گوگل توسعه داده. تو این مدل، می‌تونی توابعی رو از یه سرویس صدا بزنی انگار که دارن تو همون سرویس لوکال اجرا می‌شن.

چرا gRPC؟

دلیل‌هاش زیاده:

سرعت بالا 🚀
ـgRPC از HTTP/2 استفاده می‌کنه که خیلی سریع‌تر از HTTP/1.1 عادیه. این یعنی درخواست‌ها موازی می‌شن، فشرده‌سازی هدرها انجام می‌شه و ارتباطات پایدار (persistent connections) دارن.
استفاده از Protocol Buffers 📦
ـgrpc به جای JSON یا XML، از ProtoBuf استفاده می‌کنه که فشرده‌تر، سریع‌تر و بهینه‌تره. این باعث کاهش پهنای باند مورد نیاز می‌شه که برای سیستم‌های توزیع‌شده فوق‌العاده مهمه.
پشتیبانی از استریم 📡
ـgRPC بهت اجازه می‌ده ارتباط دوطرفه (bidirectional streaming) داشته باشی. این یعنی هم کلاینت و هم سرور می‌تونن هم‌زمان داده بفرستن و دریافت کنن.
زبان‌باز بودن 🌍
ـgRPC از خیلی زبان‌ها مثل Go، Python، Java، C# و... پشتیبانی می‌کنه.


قابلیت مقیاس‌پذیری 🔄
ـgRPC به دلیل طراحی کارآمد و استفاده از HTTP/2 برای سیستم‌هایی که قراره در آینده بزرگ بشن، انتخاب خیلی خوبیه.


ـgRPC چطور کار می‌کنه؟
برای استفاده از gRPC، باید با مفهوم Protocol Buffers (یا همون ProtoBuf) آشنا باشی. ProtoBuf یه فرمت برای تعریف داده‌ها و توابعه. یه فایل .proto می‌نویسی و توش مشخص می‌کنی که چه متدهایی داری و ورودی و خروجی‌هاش چیه. بعدش gRPC این فایل رو به کدی برای زبان دلخواهت تبدیل می‌کنه.

مثلاً:
syntax = "proto3";  

service Greeter {
rpc SayHello (HelloRequest) returns (HelloResponse);
}

message HelloRequest {
string name = 1;
}

message HelloResponse {
string message = 1;
}

اینجا یه متد SayHello داریم که یه درخواست می‌گیره و یه پاسخ برمی‌گردونه.

کجاها از gRPC استفاده کنیم؟
ـgRPC معمولاً تو سیستم‌های توزیع‌شده استفاده می‌شه، مثل:

ارتباط بین میکروسرویس‌ها 🔗
اگه داری میکروسرویس‌ها رو مدیریت می‌کنی، gRPC می‌تونه ارتباط بینشون رو سریع‌تر و ساده‌تر کنه.


سیستم‌هایی با نیاز به استریم 🎥
مثل چت‌روم‌ها، بازی‌های آنلاین یا هر جایی که داده‌ها باید به‌صورت زنده رد و بدل بشن.


سیستم‌های چندزبانه 🌐
چون gRPC از زبان‌های مختلف پشتیبانی می‌کنه، تو سیستم‌های چندزبانه عالیه.


کجاها از gRPC استفاده نکنیم؟

وب اپلیکیشن‌های عمومی 🌍:
اگه می‌خوای چیزی مثل REST API برای کلاینت‌های مرورگر بسازی، gRPC خیلی انتخاب مناسبی نیست چون مرورگرها به طور مستقیم با gRPC سازگار نیستن. البته می‌تونی از gRPC-Web استفاده کنی تا این محدودیت رو رفع کنی.
وقتی که نیاز به دیباگ ساده داری 🛠️:
ـJSON رو راحت می‌تونی تو مرورگر یا ابزارهای مختلف دیباگ کنی، ولی ProtoBuf این‌طور نیست و نیاز به ابزارهای خاص خودش داره.
پروژه‌های کوچیک 🪶:
برای پروژه‌هایی که سرعت یا مقیاس‌پذیری خیلی مهم نیست، پیچیدگی gRPC ممکنه بیش از حد باشه. REST API یا حتی JSON-RPC می‌تونه ساده‌تر و کافی باشه.

اشتباهات رایج در استفاده از gRPC 🚨
نادیده گرفتن محدودیت مرورگرها:
مرورگرها مستقیم gRPC رو ساپورت نمی‌کنن و باید از gRPC-Web استفاده کنی.

بی‌توجهی به اندازه پیام‌ها:
اگه پیام‌های بزرگ یا سنگین می‌فرستی، ممکنه gRPC بهینه نباشه.

عدم استفاده از استریم وقتی لازمه:
بعضی وقت‌ها دولوپرها استریم رو نادیده می‌گیرن و همین باعث می‌شه از پتانسیل gRPC کامل استفاده نکنن.

تنظیم نکردن Timeouts و Retries⏱️:
فراموش کردن تنظیم timeouts و retries می‌تونه باعث مشکلات بزرگی در ارتباط بین سرویس‌ها بشه.

جمع‌بندی 🎯
ـgRPC یه ابزار قدرتمنده که سرعت و کارایی بالایی به ارتباط بین سرویس‌ها می‌ده. ولی باید دقیق و هوشمندانه ازش استفاده کنی. اگه تو جای درست به کارش بگیری، می‌تونه کلی از مشکلات سیستم‌های توزیع‌شده رو برات حل کنه.

یادت باشه: هر ابزاری جای خودش رو داره. با انتخاب هوشمندانه، می‌تونی بهترین نتیجه رو بگیری.


#programming #web #grpc



🔆 CHANNEL | GROUP
👍1610🔥31👏1
دوستان اگه تاالان محتوای کانال براتون مفید بوده و تونستم به علمتون کمی اضافه کنم.
ممنون میشم با بوست کردن یا استار زدن از منو پستام حمایت کنید :) ❤️

🔗 لینک بوست 👇
https://t.iss.one/boost/ninja_learn_ir


🔆 CHANNEL | GROUP
18👌4
خیلی ممنون که تابه امروز کنارم بودید :)❤️

اگه نمیدونید چیه امار چنلمونه تواین مدتی که فعالیت میکنم

اینم لینک رباته برای گرفتن امار 👇
@telemetr_io_bot


🔆 CHANNEL | GROUP
17🤩1
😂😂


🔆 CHANNEL | GROUP
🤣161👍1🔥1