Forwarded from دستاوردهای یادگیری عمیق(InTec)
چند روز قبل Elon Musk یک توییت زد که، Grok-3 بهترین AI ایی خواد بود که دیدید.
همینطوری که ملت در حالی خوشگذرانی با Gemini 2.0 Flash Thinking بودند (اتفاقاً خیلی از شرکتها هم رفتند سراغش بخصوص اونایی که در زمینه RAG کار میکنند)
نسخه Early Release مدل Grok-3 منتشر شد، و رتبه اول رو تا اینجا کار به خودش اختصاص داده
توی اکثر بنچمارکهای معروف مثل lmarena حتی اختلاف با مدل دوم حدود 20 امتیاز هست.
نظر کاربرا راجب این مدل هم بسیار مثبت هست.
پینوشت: توی تمام زمینههای lmarena رتبه اول رو داره این مدل (یادم رفت بگم)
همینطوری که ملت در حالی خوشگذرانی با Gemini 2.0 Flash Thinking بودند (اتفاقاً خیلی از شرکتها هم رفتند سراغش بخصوص اونایی که در زمینه RAG کار میکنند)
نسخه Early Release مدل Grok-3 منتشر شد، و رتبه اول رو تا اینجا کار به خودش اختصاص داده
توی اکثر بنچمارکهای معروف مثل lmarena حتی اختلاف با مدل دوم حدود 20 امتیاز هست.
نظر کاربرا راجب این مدل هم بسیار مثبت هست.
پینوشت: توی تمام زمینههای lmarena رتبه اول رو داره این مدل (یادم رفت بگم)
Forwarded from کانال مهرداد لینوکس (Mehrdad Linux)
✅ انتخاب یک توزیع لینوکس ( #linux distro) مناسب برای شروع 😎
⁉️ بهترین توزیع گنو/لینوکس مناسب برای شروع ؟
🗓 جامعه :
نسخه لینوکسی که جامعه کاربری بزرکتری دارد یعنی فراوانی آموزش و رفع مشکلات بیشتر
🔥 مربی:
از اطرافیان شما #لینوکس کار هستند توزیع هایی که انها استفاده میکنند باعث میشود مشکلات شما زود تر حل شود
😎 تخصص :
چک کنید جامعه کاربری تخصص شما از کدام توزیع بیشتر استفاده میکند
🤩 نیاز خواسته:
ببینید از لینوکس چه میخواهید و نیاز شما چیست تمرکز جامعه روی نیاز شما است
💠 چند توزیع معروف که اگر سردرگم هستید فقط نصب کنید 😍
1️⃣مینت Linux Mint
2️⃣ابونتو Linux Ubuntu
3️⃣المنتری او-اس elementary OS
4️⃣منجارو Arch Manjaro
5️⃣فيدورا Fedora
⁉️ با چه توزیعی #linux شروع کردید ؟ الان با چی کار میکنید؟
⁉️ بهترین توزیع گنو/لینوکس مناسب برای شروع ؟
🗓 جامعه :
نسخه لینوکسی که جامعه کاربری بزرکتری دارد یعنی فراوانی آموزش و رفع مشکلات بیشتر
🔥 مربی:
از اطرافیان شما #لینوکس کار هستند توزیع هایی که انها استفاده میکنند باعث میشود مشکلات شما زود تر حل شود
😎 تخصص :
چک کنید جامعه کاربری تخصص شما از کدام توزیع بیشتر استفاده میکند
🤩 نیاز خواسته:
ببینید از لینوکس چه میخواهید و نیاز شما چیست تمرکز جامعه روی نیاز شما است
توصیه مهردادلینوکس:
در لینوکس دنبال ویندوز نگردید،کنترل پنلش کجاست درایو C کو ؟ رجیستری کجاست و ...
برای ویندوز وقت گذاشتید که تسلط دارید برای لینوکس هم باید وقت بگذارید
یک شبه نمیشه
از اشتباه کردن نترسید، ۱۰۰ بار ویندوز را خراب کردید دوباره نصب کردید
فقط شروع کنید ، اندروید گوشی یک لینوکسه ولی شما مسلط هستید
💠 چند توزیع معروف که اگر سردرگم هستید فقط نصب کنید 😍
1️⃣مینت Linux Mint
2️⃣ابونتو Linux Ubuntu
3️⃣المنتری او-اس elementary OS
4️⃣منجارو Arch Manjaro
5️⃣فيدورا Fedora
⁉️ با چه توزیعی #linux شروع کردید ؟ الان با چی کار میکنید؟
Forwarded from Ninja Learn | نینجا لرن
خب خب خب جلوگیری از Race Condition در جنگو با select_for_update 🔒🚀
توی این پست در مورد Race Condition صحبت کردیم و گفتیم چطور ممکنه چندتا درخواست همزمان بیان و دیتا رو خراب کنن. حالا بریم ببینیم جنگو چه ترفندهایی برای کنترل این مشکل داره و چطور میتونیم از select_for_update استفاده کنیم.
مشکل چیه؟ 🤔
فرض کن یه سیستم بانکی داری و کاربرا دارن پول جابهجا میکنن. حالا دو نفر همزمان میخوان از حسابشون پول بردارن و موجودی حساب فقط 100 تومنه. اگه این درخواستها بدون قفل کردن دیتا پردازش بشن، ممکنه هر دو برداشت موفق بشن و سیستم بدهکار بشه 😬
چطوری select_for_update مشکل رو حل میکنه؟ 🔐
وقتی از select_for_update استفاده میکنی، رکورد دیتابیس قفل میشه تا هیچ درخواست دیگهای نتونه همزمان تغییرش بده. این یعنی هر درخواستی که بعد از اولین درخواست بیاد، باید منتظر بمونه تا قفل آزاد بشه و بعد پردازش بشه.
مثال 1: جلوگیری از برداشت همزمان از حساب بانکی 🏦
✅ این کد مطمئن میشه که وقتی یه درخواست داره موجودی رو چک میکنه و کم میکنه، هیچ درخواست دیگهای همزمان وارد عمل نشه.
مثال 2: انتقال وجه بین دو حساب 💳
حالا یه چالش سختتر انتقال پول از یه حساب به حساب دیگه. باید هر دو حساب همزمان قفل بشن تا مشکلات همزمانی پیش نیاد.
✅ اینجا هر دو حساب رو قفل میکنیم تا حتی اگه دو درخواست انتقال پول به صورت همزمان بیاد، هیچکدوم نتونن وسط کار رو همدیگه تأثیر بذارن.
چندتا نکته 🚀
🔹 انتخاب نوع قفل (select_for_update(nowait=True))
اگه بخوای درخواستهای معطل رو سریع رد کنی، میتونی nowait=True بذاری که اگه رکورد قفل بود، درخواست جدید منتظر نمونه و مستقیم خطا بده.
☝️ این باعث میشه که اگه رکورد قفل باشه، جنگو بلافاصله یه DatabaseError بده و منتظر نمونه.
🔹 قفل کردن رکوردها بدون مسدود کردن خواندن (select_for_update(skip_locked=True))
اگه درخواستهای زیادی داری و نمیخوای که یک درخواست کل سیستم رو بلاک کنه، میتونی از skip_locked=True استفاده کنی که درخواستهای دیگه بتونن رکوردهای آزاد رو پردازش کنن.
☝️ این کار باعث میشه که اگه یه رکورد قفل بود، درخواست بیخیال اون رکورد بشه و فقط رکوردهایی که قفل نیستن رو انتخاب کنه.
🔹 مدیریت تایماوت قفل (set statement_timeout)
اگه نمیخوای که درخواستها مدت زیادی بلاک بشن، توی PostgreSQL میتونی یه تایماوت برای قفل تعیین کنی:
☝️ این یعنی اگه یه درخواست بیشتر از ۵ ثانیه قفل بمونه، بهش خطا داده میشه و میره بیرون.
جمعبندی ✍
select_for_update یکی از قویترین ابزارها برای جلوگیری از Race Condition توی جنگوئه. مهمترین نکاتش اینان:
✅ قفل کردن رکوردهای دیتابیس موقع آپدیت برای جلوگیری از دستکاری همزمان
✅ استفاده از nowait=True برای جلوگیری از انتظار بیش از حد
✅ استفاده از skip_locked=True برای رد کردن رکوردهای قفلشده و ادامه پردازش.
➖➖➖➖➖➖➖➖➖
توی این پست در مورد Race Condition صحبت کردیم و گفتیم چطور ممکنه چندتا درخواست همزمان بیان و دیتا رو خراب کنن. حالا بریم ببینیم جنگو چه ترفندهایی برای کنترل این مشکل داره و چطور میتونیم از select_for_update استفاده کنیم.
مشکل چیه؟ 🤔
فرض کن یه سیستم بانکی داری و کاربرا دارن پول جابهجا میکنن. حالا دو نفر همزمان میخوان از حسابشون پول بردارن و موجودی حساب فقط 100 تومنه. اگه این درخواستها بدون قفل کردن دیتا پردازش بشن، ممکنه هر دو برداشت موفق بشن و سیستم بدهکار بشه 😬
اینجا همون جاییه که select_for_update میاد وسط و دیتا رو از فاجعه نجات میده.
چطوری select_for_update مشکل رو حل میکنه؟ 🔐
وقتی از select_for_update استفاده میکنی، رکورد دیتابیس قفل میشه تا هیچ درخواست دیگهای نتونه همزمان تغییرش بده. این یعنی هر درخواستی که بعد از اولین درخواست بیاد، باید منتظر بمونه تا قفل آزاد بشه و بعد پردازش بشه.
مثال 1: جلوگیری از برداشت همزمان از حساب بانکی 🏦
from django.db import transaction
from myapp.models import Account
def withdraw_money(account_id, amount):
with transaction.atomic(): # شروع تراکنش
account = Account.objects.select_for_update().get(pk=account_id) # قفل کردن رکورد
if account.balance >= amount:
account.balance -= amount
account.save()
print("برداشت موفقیتآمیز بود!")
else:
print("موجودی کافی نیست!") # جلوگیری از برداشت بیش از حد
✅ این کد مطمئن میشه که وقتی یه درخواست داره موجودی رو چک میکنه و کم میکنه، هیچ درخواست دیگهای همزمان وارد عمل نشه.
مثال 2: انتقال وجه بین دو حساب 💳
حالا یه چالش سختتر انتقال پول از یه حساب به حساب دیگه. باید هر دو حساب همزمان قفل بشن تا مشکلات همزمانی پیش نیاد.
from django.db import transaction
from myapp.models import Account
def transfer_money(from_id, to_id, amount):
with transaction.atomic():
accounts = Account.objects.select_for_update().filter(pk__in=[from_id, to_id]).order_by("id")
sender = accounts[0]
receiver = accounts[1]
if sender.balance >= amount:
sender.balance -= amount
receiver.balance += amount
sender.save()
receiver.save()
print("انتقال وجه موفقیتآمیز بود!")
else:
print("موجودی کافی نیست!") # جلوگیری از انتقال اشتباه
✅ اینجا هر دو حساب رو قفل میکنیم تا حتی اگه دو درخواست انتقال پول به صورت همزمان بیاد، هیچکدوم نتونن وسط کار رو همدیگه تأثیر بذارن.
چندتا نکته 🚀
🔹 انتخاب نوع قفل (select_for_update(nowait=True))
اگه بخوای درخواستهای معطل رو سریع رد کنی، میتونی nowait=True بذاری که اگه رکورد قفل بود، درخواست جدید منتظر نمونه و مستقیم خطا بده.
account = Account.objects.select_for_update(nowait=True).get(pk=1)
☝️ این باعث میشه که اگه رکورد قفل باشه، جنگو بلافاصله یه DatabaseError بده و منتظر نمونه.
🔹 قفل کردن رکوردها بدون مسدود کردن خواندن (select_for_update(skip_locked=True))
اگه درخواستهای زیادی داری و نمیخوای که یک درخواست کل سیستم رو بلاک کنه، میتونی از skip_locked=True استفاده کنی که درخواستهای دیگه بتونن رکوردهای آزاد رو پردازش کنن.
account = Account.objects.select_for_update(skip_locked=True).get(pk=1)
☝️ این کار باعث میشه که اگه یه رکورد قفل بود، درخواست بیخیال اون رکورد بشه و فقط رکوردهایی که قفل نیستن رو انتخاب کنه.
🔹 مدیریت تایماوت قفل (set statement_timeout)
اگه نمیخوای که درخواستها مدت زیادی بلاک بشن، توی PostgreSQL میتونی یه تایماوت برای قفل تعیین کنی:
SET statement_timeout = '5s';
☝️ این یعنی اگه یه درخواست بیشتر از ۵ ثانیه قفل بمونه، بهش خطا داده میشه و میره بیرون.
جمعبندی ✍
select_for_update یکی از قویترین ابزارها برای جلوگیری از Race Condition توی جنگوئه. مهمترین نکاتش اینان:
✅ قفل کردن رکوردهای دیتابیس موقع آپدیت برای جلوگیری از دستکاری همزمان
✅ استفاده از nowait=True برای جلوگیری از انتظار بیش از حد
✅ استفاده از skip_locked=True برای رد کردن رکوردهای قفلشده و ادامه پردازش.
#️⃣ #python #programming #db
➖➖➖➖➖➖➖➖➖
🥷 CHANNEL | GROUP
Forwarded from کانال مهرداد لینوکس
🔥 مناظرهٔ تاننباوم–توروالدز «LINUX منسوخ شده است»
🗓بین اندرو اس. تاننباوم، خالق سیستمعامل آموزشی مینیکس
🗓 و لینوس توروالدز، خالق هستهٔ لینوکس، بود.
💠این مناظره در گروه خبری Usenet به نام comp.os.minix در سال ۱۹۹۲ رخ داد
✅ موضوع سر معماری هستههای سیستمعامل، بهویژه مقایسهٔ هستههای یکپارچه (monolithic) و ریزهستهها (microkernel)، تمرکز داشت.
🔥 تاننباوم بحث را با استدلال اینکه طراحی هستهٔ یکپارچهٔ لینوکس از نظر مفهومی قدیمی و ریزهستهها به دلیل قابلیت حمل و پایداری، برتر هستند آغاز کرد
و گفت معماری پردازندههای x86 که لینوکس بر پایهٔ آن توسعه یافته، در آینده جای خود را به معماریهای RISC خواهد داد.
🔥 توروالدز در پاسخ، ضمن اذعان به مزایای نظری ریزهستهها، از تصمیم خود برای استفاده از هستهٔ یکپارچه دفاع کرد.
او اشاره کرد که مینیکس دارای محدودیتهایی مانند نبود پشتیبانی از چندنخی (multithreading) و هدف او از توسعهٔ لینوکس، ایجاد یک سیستمعامل کاربردی برای استفادهٔ شخصی بوده است.
✅ با گذشت زمان،
هر دو مدل هسته در حوزههای مختلف به کار گرفته شدند
منبع wikipedia
#linux
🗓بین اندرو اس. تاننباوم، خالق سیستمعامل آموزشی مینیکس
🗓 و لینوس توروالدز، خالق هستهٔ لینوکس، بود.
💠این مناظره در گروه خبری Usenet به نام comp.os.minix در سال ۱۹۹۲ رخ داد
✅ موضوع سر معماری هستههای سیستمعامل، بهویژه مقایسهٔ هستههای یکپارچه (monolithic) و ریزهستهها (microkernel)، تمرکز داشت.
🔥 تاننباوم بحث را با استدلال اینکه طراحی هستهٔ یکپارچهٔ لینوکس از نظر مفهومی قدیمی و ریزهستهها به دلیل قابلیت حمل و پایداری، برتر هستند آغاز کرد
و گفت معماری پردازندههای x86 که لینوکس بر پایهٔ آن توسعه یافته، در آینده جای خود را به معماریهای RISC خواهد داد.
🔥 توروالدز در پاسخ، ضمن اذعان به مزایای نظری ریزهستهها، از تصمیم خود برای استفاده از هستهٔ یکپارچه دفاع کرد.
او اشاره کرد که مینیکس دارای محدودیتهایی مانند نبود پشتیبانی از چندنخی (multithreading) و هدف او از توسعهٔ لینوکس، ایجاد یک سیستمعامل کاربردی برای استفادهٔ شخصی بوده است.
✅ با گذشت زمان،
هر دو مدل هسته در حوزههای مختلف به کار گرفته شدند
منبع wikipedia
#linux
Forwarded from Laravel News
Working with JSON Column Updates in Laravel https://laravel-news.com/json-column-updates
Laravel News
Working with JSON Column Updates in Laravel - Laravel News
Master Laravel's JSON column update capabilities using the arrow syntax. Learn to efficiently modify specific portions of JSON data in your database while maintaining data integrity and structure.
Forwarded from 🎄 DevTwitter | توییت برنامه نویسی
This media is not supported in your browser
VIEW IN TELEGRAM
یه اکستنشن نوشتم برای جابهای لینکدین، خودش show more رو کلیک میکنه و لیست کلیدواژههایی که بهش میدی رو سبز یا قرمز میکنه. میشه سریعتر با یه نگاه متوجه شد جاب چقدر به مهارتهای آدم نزدیکه.
https://github.com/ArmanJR/LinkedIn-Job-Skills-Highlighter
@DevTwitter | <Arman/>
https://github.com/ArmanJR/LinkedIn-Job-Skills-Highlighter
@DevTwitter | <Arman/>
Forwarded from Python Hints
وقتی ChatGPT 3.5 معرفی شد گفتم که نیروهای جونیور بسیار کار سختی برای یافتن شغل خواهند داشت.
الان به اون وضعیت رسیده؛ طوری که نیروی جونیور توی خیلی از زمینهها تبدیل شده به سنگ جلوی پای نیروهای سنیور متاسفانه.
اما یک ویژگی خیلی خوب داشت وجود جونیورها؛ اونم معرفی استکهای جدید تکنولوژیهای بهتر و تکنیکهای بهبود یافته بود.
متأسفانه این موضوع توی ایران دیگه صادق نیست؛ ندیدم (از کسی هم نشنیدم) جونیوری که
با این وضعیت قطعاً موقعیتهای شغلی
الان به اون وضعیت رسیده؛ طوری که نیروی جونیور توی خیلی از زمینهها تبدیل شده به سنگ جلوی پای نیروهای سنیور متاسفانه.
اما یک ویژگی خیلی خوب داشت وجود جونیورها؛ اونم معرفی استکهای جدید تکنولوژیهای بهتر و تکنیکهای بهبود یافته بود.
متأسفانه این موضوع توی ایران دیگه صادق نیست؛ ندیدم (از کسی هم نشنیدم) جونیوری که
experiment های شخصی با ابزارهای مختلف که شاید مرسوم هم نباشند انجام داده باشه (علاوه بر استک اصلی) همگی همون استک اصلی رو یاد میگیرند و به محض استخدام دیگه حتی برای پیشرفت خودشون هم زحمت نمیکشند.با این وضعیت قطعاً موقعیتهای شغلی
Junior ها حذف خواهد شد؛ حتی در ایران.Forwarded from IRCF | اینترنت آزاد برای همه
اسکریپت راهاندازی تانل RTX-VPN، یک راهحل برای راهاندازی سرور L2TP/OpenVPN در کشورهایی با محدودیت اینترنت مثل ایران و چین هست.
ایناسکریپت با ایجاد یک تانل Reverse با استفاده از Xray-Core و Rathole، باعث میشه ترافیک L2TP/OpenVPN بهعنوان یک اتصال عادی دیده بشه و بهسادگی قابل شناسایی نباشه.
همچنین این روش امکان استفاده از اینترنت آزاد روی مودمها و دستگاههایی که نیاز به L2TP/OpenVPN دارن رو فراهم میکنه، درحالیکه اتصال کاربر امن باقی میمونه.
👉 github.com/Sir-MmD/RTX-VPN
🔍 ircf.space
@ircfspace
ایناسکریپت با ایجاد یک تانل Reverse با استفاده از Xray-Core و Rathole، باعث میشه ترافیک L2TP/OpenVPN بهعنوان یک اتصال عادی دیده بشه و بهسادگی قابل شناسایی نباشه.
همچنین این روش امکان استفاده از اینترنت آزاد روی مودمها و دستگاههایی که نیاز به L2TP/OpenVPN دارن رو فراهم میکنه، درحالیکه اتصال کاربر امن باقی میمونه.
👉 github.com/Sir-MmD/RTX-VPN
🔍 ircf.space
@ircfspace
Forwarded from ASafaeirad
YouTube
Is this the world's WEIRDEST Largest Contentful Paint element?
We take a look at a bizarre performance regression and investigate how the Largest Contentful metric is defined.
00:00 Initial clues
00:41 Change in the LCP element between tests
01:41 Investigating LCP development
02:37 Checking for changes in the image…
00:00 Initial clues
00:41 Change in the LCP element between tests
01:41 Investigating LCP development
02:37 Checking for changes in the image…
Forwarded from 🎄 DevTwitter | توییت برنامه نویسی
This media is not supported in your browser
VIEW IN TELEGRAM
مایکروسافت ورژن جدید مدل OmniParser داد بیرون. این یک مدل برای فهمیدن اسکرین شات هست. برای مواقعی که ایجنت قراره با browser کار کنه و تسکی را انجام بده، به کار میاد. خیلی هم عالی کار میکنه. ویدیو رو ببینید حتما
@DevTwitter | <Mehdi Allahyari/>
@DevTwitter | <Mehdi Allahyari/>
Forwarded from Laravel News
Documenting API authentication in Laravel with Scramble https://laravel-news.com/documenting-api-authentication-in-laravel-with-scramble
Laravel News
Documenting API authentication in Laravel with Scramble - Laravel News
With Scramble, you can document your API’s authentication setup and even automate authentication requirements based on middleware, avoiding manual annotations.
Forwarded from نوشتههای ترمینالی
هرچیزی که برنامهنویس های سی در مورد رفتار غیرقطعی باید بدانند:
http://blog.llvm.org/2011/05/what-every-c-programmer-should-know.html
http://blog.llvm.org/2011/05/what-every-c-programmer-should-know.html
The LLVM Project Blog
What Every C Programmer Should Know About Undefined Behavior #1/3
People occasionally ask why LLVM-compiled code sometimes generates SIGTRAP signals when the optimizer is turned on. After digging in, they find that Clang generated a "ud2" instruction (assuming X86 code) - the same as is generated by __builtin_trap().
Forwarded from ASafaeirad
Today I Learned:
Scheduler.postTask: Adds a task to the scheduler as a callback, optionally specifying a priority, delay, and/or a signal for aborting the task.
Scheduler.yield:
Yields control of the main thread back to the browser, returning a promise that resolves to continue execution where it left off.
Read more on MDN
#mdn #webapi
Scheduler.postTask: Adds a task to the scheduler as a callback, optionally specifying a priority, delay, and/or a signal for aborting the task.
Scheduler.yield:
Yields control of the main thread back to the browser, returning a promise that resolves to continue execution where it left off.
Read more on MDN
#mdn #webapi
MDN Web Docs
Scheduler - Web APIs | MDN
The Scheduler interface of the Prioritized Task Scheduling API provides methods for scheduling prioritized tasks.
Forwarded from IRCF | اینترنت آزاد برای همه
کلودفلر مدتیه برنامه ریفرال خودش رو به پایان رسونده و دسترسیهای مربوط به WARP+ به طرح رایگان #وارپ انتقال پیدا کردن و دیگه اعتبار ریفرال جدیدی داده نمیشه.
اینتغییرات روی کدهای #لایسنس که از طریق ابزارها و کانالها تهیه میشدن اثر گذاشته؛ روی همینحساب برگه لایسنس از #oblivionDesktop حذف شده و در نسخه بعدی از #oblivion هم به همینصورت خواهد شد.
گفتهشده لایسنسهای وارپ+ خریداری شده همچنان معتبر هستن، اما تلاش خودم برای خرید لایسنس تابحال موفق نبوده.
🔍 ircf.space
@ircfspace
اینتغییرات روی کدهای #لایسنس که از طریق ابزارها و کانالها تهیه میشدن اثر گذاشته؛ روی همینحساب برگه لایسنس از #oblivionDesktop حذف شده و در نسخه بعدی از #oblivion هم به همینصورت خواهد شد.
گفتهشده لایسنسهای وارپ+ خریداری شده همچنان معتبر هستن، اما تلاش خودم برای خرید لایسنس تابحال موفق نبوده.
🔍 ircf.space
@ircfspace
Forwarded from IRCF | اینترنت آزاد برای همه
Forwarded from 🎄 DevTwitter | توییت برنامه نویسی
سلام به همه
تا حالا شده تو یه مصاحبه فنی ازتون دربارهی JWT بپرسن و شما با یه جواب ساده کار رو راه بندازین؟
من خودم این تجربه رو داشتم! یه بار توی یه مصاحبه، مصاحبهکننده پرسید: JWT چیه و چرا ازش استفاده میکنیم؟» و من با یه جواب ساده گفتم: «یه توکن امنیه که اطلاعات رو بین کلاینت و سرور جابهجا میکنه و دیگه سرور نیازی نداره حالتها رو ذخیره کنه.
مصاحبه کننده ازم میخواست که بیشتر توضیح بدم که خب من اطلاعات کاملی نداشتم
یکم بیشتر با JWT آشنا بشیم اول: JWT یک استاندارد باز (RFC 7519) برای ایجاد توکنهای امن و قابل اعتماد است که به صورت JSON تعریف میشه. این توکنها معمولاً برای احراز هویت کاربران و انتقال اطلاعات بین سرویسها استفاده میشن
ساختار JWT:
یک JWT از سه بخش اصلی تشکیل شده:
بخش Header: شامل اطلاعاتی مانند نوع توکن و الگوریتم رمزنگاری.
بخش Payload: دادههایی که میخواهیم انتقال دهیم، مثل اطلاعات کاربر یا نقشها.
بخش Signature: برای تأیید اصالت توکن و جلوگیری از دستکاری.
مزایا استفاده از JWT چیه؟
حالت (Stateless) هست، یعنی سرور نیازی نداره اطلاعات توکن رو ذخیره کنه.
امن هست و با یه امضای دیجیتال (Signature) از دستکاری جلوگیری میکنه.
توی سیستمهای بزرگ و میکروسرویسها خیلی به درد میخوره.
این موضوع هم یادمون باشه که اگه JWT درست استفاده نشه، میتونه خطرناک باشه. مثلاً اگه توکنها رو به درستی expire نکنیم یا اطلاعات حساس رو داخلش ذخیره کنیم، ممکنه دردسرساز بشه!
@DevTwitter | <Soheil Seyyedi/>
تا حالا شده تو یه مصاحبه فنی ازتون دربارهی JWT بپرسن و شما با یه جواب ساده کار رو راه بندازین؟
من خودم این تجربه رو داشتم! یه بار توی یه مصاحبه، مصاحبهکننده پرسید: JWT چیه و چرا ازش استفاده میکنیم؟» و من با یه جواب ساده گفتم: «یه توکن امنیه که اطلاعات رو بین کلاینت و سرور جابهجا میکنه و دیگه سرور نیازی نداره حالتها رو ذخیره کنه.
مصاحبه کننده ازم میخواست که بیشتر توضیح بدم که خب من اطلاعات کاملی نداشتم
یکم بیشتر با JWT آشنا بشیم اول: JWT یک استاندارد باز (RFC 7519) برای ایجاد توکنهای امن و قابل اعتماد است که به صورت JSON تعریف میشه. این توکنها معمولاً برای احراز هویت کاربران و انتقال اطلاعات بین سرویسها استفاده میشن
ساختار JWT:
یک JWT از سه بخش اصلی تشکیل شده:
بخش Header: شامل اطلاعاتی مانند نوع توکن و الگوریتم رمزنگاری.
بخش Payload: دادههایی که میخواهیم انتقال دهیم، مثل اطلاعات کاربر یا نقشها.
بخش Signature: برای تأیید اصالت توکن و جلوگیری از دستکاری.
مزایا استفاده از JWT چیه؟
حالت (Stateless) هست، یعنی سرور نیازی نداره اطلاعات توکن رو ذخیره کنه.
امن هست و با یه امضای دیجیتال (Signature) از دستکاری جلوگیری میکنه.
توی سیستمهای بزرگ و میکروسرویسها خیلی به درد میخوره.
این موضوع هم یادمون باشه که اگه JWT درست استفاده نشه، میتونه خطرناک باشه. مثلاً اگه توکنها رو به درستی expire نکنیم یا اطلاعات حساس رو داخلش ذخیره کنیم، ممکنه دردسرساز بشه!
@DevTwitter | <Soheil Seyyedi/>
Forwarded from Sudoer (Morteza Bashsiz)
ایلان ماسک اومده رنج سنی مردم آمریکا رو داده
جالبه که بالای ۲۰ میلیون نفر بالای ۱۰۰ سال دارن که زنده هستند
حتی بالای ۳۰۰ سال هم دارن
😂😂😂
من خیلی تحقیق نکردم ولی خودتون برید بتحقیقید
https://x.com/elonmusk/status/1891350795452654076/photo/1
جالبه که بالای ۲۰ میلیون نفر بالای ۱۰۰ سال دارن که زنده هستند
حتی بالای ۳۰۰ سال هم دارن
😂😂😂
من خیلی تحقیق نکردم ولی خودتون برید بتحقیقید
https://x.com/elonmusk/status/1891350795452654076/photo/1