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
نظرتون درمورد کانال؟ 🤔
Anonymous Poll
84%
خوب
11%
بد
4%
تو کامنتا میگم
10
Forwarded from Python BackendHub (Mani)
خیلیا منظور این متن رو متوجه نشدن، قرار نیست شما انجین دیتابیس بنویسی. ولی همین که بدونی چیه و بتونی راجبش ۵ دقیقه حرف بزنی خیلی مهمه چون بیشتر روز باهاش درگیری. یا بهتره خوده raw sql رو یاد بگیری تا اینکه orm django رو بدون یاد گرفتن sql استفاده کنی ازش.
ایا میشه بدون دونستن sql از جنگو استفاده کرد؟ بله. آیا در این صورت شما skilled worker محسوب‌میشین؟ نه.

خیلی وقتا ممکنه بخاطر دانش بیشترتون، یک راهکار بهتر به ذهنتون برسه که برد بزرگی رو برای بیزنس رقم بزنه. به خاطر دانش بیشترتون، کدتون ممکنه باگ کمتری داشته باشه که براتون پروموشن خواهد داشت. و …

نقل قول ازنظرر Kurt Guntheroth، با ۴۰ سال سابقه و نویسنده چند کتاب معروف:

Some software jobs you can get after a 2-year Associate’s Degree from a community college, or a 9-month boot camp, just like a blue-collar job.
Some software jobs don’t require much independent thought and analysis. How hard is it to arrange content on a web site? (Yes, I know, as hard as you want to make it. But not always).
Some software jobs are done in assembly-line fashion. Pull the next feature card off the stack and start coding, pull the next bug report off the list and start looking for a fix. Your job has no beginning and no end, just an endless stream of little tasks (called sprints), with no time to rest in between, just like a blue-collar job.
Some bosses of software people are Dickensian horrors, driving their team to work long, uncompensated hours. Never a word of praise, but the sure prospect of getting fired for not toeing the mark, just like a blue-collar job.
But those same bosses will insist software is a white collar job, because if it ever did become a blue-collar job, they would have to pay time-and-a-half for overtime (in the US).
I think what’s true is that the software profession is diverging into two levels of skill, professional software developers, and programmers. Once upon a time it was like this, but the original reason for programmers (typing code onto punch cards and running it on batch terminals) went away. Now we’ve got easy problems solved by programmers with limited education, and really hard problems, solved by highly educated and trained professionals.



@PyBackendHub
4👍1
دوستان گرامیم
یلداتون مبارک باشه ❤️🍉
امید وارم پیش خانواده خوش و خورم باشید ☺️
17❤‍🔥7
برنامه تون برای امشب چیه؟ 🤔
5
از Redis کجاها استفاده کنیم؟ کجاها استفاده نکنیم؟ 🤔

ـRedis یکی از سریع‌ترین و محبوب‌ترین ابزارهای in-memory data store تو دنیاست. این ابزار هم به عنوان database، هم cache و هم message broker استفاده می‌شه . اما این که هرجایی ازش استفاده کنی، اصلا کار درستی نیست. تو این پست می‌خوایم بررسی کنیم کجا Redis انتخاب خوبیه و کجا بهتره سراغش نری.

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

1⃣ ـCaching 🗃️
وقتی یه داده رو مدام از دیتابیس اصلی می‌خونی و نیاز به سرعت بالا داری، Redis می‌تونه به عنوان یه کش عالی عمل کنه. مثلا:
کش کردن نتایج کوئری‌های سنگین 🔍
ذخیره صفحات رندر شده 📄
ذخیره session data برای کاربرها 👤

2⃣ـ Real-Time Analytics 📊
اگه می‌خوای یه داشبورد real-time بسازی که اطلاعات رو لحظه‌ای نشون بده، Redis با ساختارهای داده سریعش (مثل sorted sets) می‌تونه خیلی کمک‌کننده باشه.

3⃣ ـRate Limiting 🚦
وقتی می‌خوای تعداد درخواست‌های کاربرها رو محدود کنی، مثلا برای جلوگیری از حملات DDoS یا اسپم، Redis یه گزینه عالیه.

4⃣ Pub/Sub Systems 📩
برای ارتباط بین سرویس‌ها یا ارسال پیام در سیستم‌های real-time مثل چت‌ها، Redis با قابلیت publish/subscribe خیلی خوب عمل می‌کنه.

5⃣ـ Leaderboard ها و سیستم‌های امتیازدهی 🏆
ساختار داده sorted sets برای ساختن رتبه‌بندی‌های real-time (مثل امتیاز بازیکن‌ها) ایده‌آله.

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

1⃣ ذخیره‌سازی داده‌های پایدار 🛠
ـRedis یه in-memory database هست. یعنی داده‌ها رو تو حافظه ذخیره می‌کنه، نه روی دیسک. اگه برق بره یا سیستم ری‌استارت بشه، داده‌ها ممکنه از دست برن. برای داده‌هایی که نمی‌خوای از دست برن، از دیتابیس‌هایی SQL مثل PostgreSQL یا Mysql یا ... استفاده کن.

2⃣ حجم‌های بالا 📦
اگه حجم داده‌هات خیلی زیاده و رم کافی نداری، Redis انتخاب خوبی نیست. مثلا ذخیره‌سازی داده‌های سنگین مثل فایل‌ها یا لاگ‌ها.

3⃣ آنالیزهای پیچیده 🤔
اگه نیاز به کوئری‌های پیچیده داری (مثل join یا aggregation)، بهتره از دیتابیس‌های relation-based مثل MySQL یا PostgreSQL استفاده کنی.

اشتباهات رایج در استفاده از Redis ‼️

1⃣ استفاده از Redis برای همه‌چیز ⚠️
خیلیا وقتی Redis رو یاد می‌گیرن، فکر می‌کنن باید همه‌چیز رو توش ذخیره کنن. ولی این ابزار برای همه نوع داده مناسب نیست. مثلا برای ذخیره تراکنش‌های مالی یا داده‌های حساس، بهتره از دیتابیس‌های دیگه استفاده کنی.

2⃣ تنظیم نکردن TTL
اگه از Redis به عنوان کش استفاده می‌کنی ولی TTL (زمان انقضای داده‌ها) رو تنظیم نکنی، ممکنه حافظه پر بشه و سیستم کرش کنه.

3⃣ نادیده گرفتن محدودیت رم 🧠
ـRedis همه داده‌ها رو تو رم ذخیره می‌کنه. اگه حجم داده‌هات از ظرفیت رم بیشتر بشه، سیستم به مشکل می‌خوره.

4⃣ مدیریت نکردن replication 🔄
برای سیستم‌های حساس، باید replication رو تنظیم کنی تا در صورت خرابی سرور اصلی، داده‌ها از بین نرن.

5⃣ عدم مانیتورینگ 📡
خیلی‌ها Redis رو راه می‌ندازن ولی هیچ وقت مانیتور نمی‌کنن که چقدر حافظه مصرف می‌شه یا چقدر latency داره. این اشتباه می‌تونه باعث مشکلات جدی بشه.

پیشنهاد: قبل از استفاده از Redis، نیازمندی‌هات رو مشخص کن و مطمئن شو این ابزار برای پروژه‌ت مناسبه.

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

#برنامه_نویسی #db #redis


🔆 CHANNEL | GROUP
🔥15👍63
پست بعدی چی باشه دوستان ؟
(پیشنهاد خفن بدید)
5
اگه تجربه ای دارید یا چیزی دوست دارید به برنامه نویسای کشورتون بگید میتونید به پیوی من بفرستید تو کانال قرار بدم 👇

@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