DevTwitter | توییت برنامه نویسی
32.8K subscribers
5.57K photos
456 videos
7 files
5.51K links
توییت های برنامه نویسی و طراحی وب :)

Admin:
@dvtwi

Hashtags:
devtwitter.t.me/5

DevBooks Channel:
https://xn--r1a.website/+AYbOl75CLNYxY2U0

Github:
https://github.com/DevTwitter

X:
https://x.com/devtwittir
Download Telegram
ویژگی‌های مهم JWT (فارغ از فریم ورک)

JWT یک توکن امضاشده است که اطلاعات کاربر را درون خودش دارد.

نحوه کار: سرور توکن را می‌سازد و امضا می‌کند ← کلاینت آن را در هر درخواست می‌فرستد ← سرور فقط امضا را چک می‌کند (بدون دیتابیس).

نکته کلیدی: فقط Encode است، نه Encrypt ← داده حساس داخلش نگذارید.
------------------
ساختار: سه بخش با نقطه جدا می‌شوند

- Header:

-          نوع توکن و الگوریتم امضا

- Payload:

-          داده‌ها (Claims مثل شناسه کاربر، نقش، انقضا)

- Signature:

-          امضا برای تأیید دستکاری نشدن
------------------

آیا در میکروسرویس‌ها JWT بهتر است؟

بله، اغلب اوقات. چون Stateless است و هر سرویس بدون کوئری دیتابیس مرکزی می‌تواند توکن را تأیید کند.

بهترین کاربردها:

-         احراز هویت بین میکروسرویس‌ها

-         Machine-to-Machine (سرویس به سرویس)

-         APIهای عمومی و چند‌پلتفرمی

-         سیستم‌های توزیع‌شده و مقیاس‌پذیر

بدترین کاربردها:

-         نشست کاربران وب (Session جایگزین بهتری است)

-         وقتی نیاز به ابطال آنی توکن دارید (مثل logout یا تغییر رمز)

-         ذخیره داده حساس در Payload (رمزنگاری نشده)

-         توکن‌های طولانی‌مدت بدون Refresh Token

ویژگی‌های مهم JWT

Stateless
تمام اطلاعات لازم در خود توکن ذخیره می‌شود؛ سرور نیازی به ذخیره نشست ندارد.

Self-contained
شامل Header، Payload و Signature است و می‌تواند Claimهای سفارشی (نقش، مجوزها و...) را حمل کند.

امضاشده (Signed)
با الگوریتم‌های HMAC یا RSA امضا می‌شود؛ دستکاری محتوا قابل تشخیص است.

استاندارد باز (RFC 7519)
مستقل از زبان و پلتفرم است و در هر سیستم‌عاملی قابل استفاده است.

قابل حمل (Portable)
به راحتی بین سرویس‌ها، دامنه‌ها و میکروسرویس‌ها منتقل می‌شود.

دارای انقضا (Expiration)
فیلد exp زمان اعتبار توکن را مشخص می‌کند.

غیرقابل ابطال (Non-revocable)
تا زمان انقضا معتبر می‌ماند؛ ابطال آنی نیاز به Blocklist دارد که Stateless بودن را نقض می‌کند.

حجیم (Bulky)
به دلیل داشتن Payload، معمولاً بزرگ‌تر از توکن‌های ساده است.

رمزنگاری‌نشده (Base64 Encoded)
محتوای Payload فقط Encode شده، نه Encrypt؛ بنابراین نباید داده حساس در آن قرار داد.

آسیب‌پذیر در صورت لو رفتن
اگر توکن دزدیده شود، مهاجم تا زمان انقضا به آن دسترسی دارد.

@DevTwitter | <Max Shirinzad/>
❤34🍌12👍5
بدون هیچ اغراقی می‌گم: ابزار act واقعاً زندگی مهندسی و سلامت روان منو نجات داد!

اگر تا حالا برای تنظیم یک فایل ساده .github/workflows مجبور شدید ۳۰ بار کامیت بزنید با پیام‌های حسرت‌باری مثل fix yaml، test ci 2 و PLEASE WORK... دقیقاً می‌دونید از چه جهنمی صحبت می‌کنم.

کابوس روزمره‌ام قبل از act این بود:

- یک خط تغییر کوچک توی کانفیگ پایپ‌لاین می‌دادم.
- کامیت و پوش می‌کردم و منتظر می‌شدم تا Runner گیت‌هاب بالا بیاد.
چند دقیقه طول می‌کشید تا وابستگی‌ها دانلود بشن و آخرش به‌خاطر یک Space اضافه یا جابه‌جا بودن یک Indentation ساده، کلاً Build شکست می‌خورد!

تاریخچه (Git Log) پروژه‌ام شبیه گورستان کامیت‌های اسپم و بی‌مصرف شده بود.

معجزه‌ای به نام act

تغییر از وقتی شروع شد که act رو وارد workflow خودم کردم. این ابزار کل محیط اجرای GitHub Actions رو مستقیماً روی سیستم خودم و داخل کانتینرهای Docker شبیه‌سازی می‌کنه.

حالا فرآیند تست CI برای من این شکلی شده:

بازخورد زیر ۵ ثانیه: بدون اینکه حتی یک کامیت بزنم یا کدی رو پوش کنم، فقط با زدن دستور act pull_request کل پایپ‌لاین (از آنالیز استاتیک و Spotless گرفته تا تست‌های یکپارچگی سنگین) روی سیستم محلی اجرا میشه.

تاریخچه گیت کاملاً شفاف و تمیز: فقط و فقط زمانی کامیت می‌زنم که مطمئن باشم پایپ‌لاین روی سیستم خودم ۱۰۰٪ سبز شده.

پایان الگوی سمی "Push and Pray": دیگه نیازی نیست دست به دعا بشم که آیا این پوش جدید قراره سبز بشه یا قرمز!

اگر روی زمان، تمرکز و پاکیزگی Git Log پروژه‌هاتون تعصب دارید، همین امروز act رو روی سیستمتون نصب کنید و خودتون رو برای همیشه از کابوس تست CI روی سرورهای ابری نجات بدید.

https://www.linkedin.com/pulse/stop-committing-test-your-ci-deep-dive-act-local-amir-goalmoradi-uff9e/

@DevTwitter | <Amir Goalmoradi/>
❤40👍15🍌9
Please open Telegram to view this post
VIEW IN TELEGRAM
👍62🔥15🍌1
یک اشتباه به ظاهر ساده در API نویسی که می‌تواند دسترسی ادمین را دودستی تقدیم هکر کند!
(تله Over-Posting)

خیلی از ما وقتی توی دات‌نت شروع به ساخت Controller و Endpointهای API می‌کنیم، برای راحتی کار یا سرعت بیشتر، یک اشتباه کلاسیک انجام میدیم:

ارسال مستقیم Entityهای دیتابیس به ورودی متدها!
[HttpPost]
public async Task<IActionResult> UpdateUser(User user) //
تله بزرگ!

شاید ظاهر قضیه این باشه که Model Binder خودش داده‌ها رو مپ می‌کنه و همه‌چیز سریع کار می‌کنه، اما پشت صحنه چه اتفاقی می‌افته؟

خطر Over-Posting (یا Mass Assignment):

کافیه کلاینت (از طریق Postman یا ابزارهای مشابه) فیلدهایی مثل IsAdmin = true یا WalletBalance رو توی بدنه درخواست JSON بفرسته؛ از اونجا که فریم‌ورک بدون تفکیک، مقادیر رو Bind می‌کنه، دیتای حساس بدون اعتبارسنجی آپدیت میشه!

اصول طلایی یک API تمیز و امن:

همیشه از DTO (Data Transfer Object) استفاده کنیم: فقط فیلدهایی که کاربر مجاز به ارسال یا دریافت اون‌هاست در قالب کلاس‌های سبک تعریف بشن.

قرارداد شفاف (Contract): کلاینت نباید از ساختار جداول دیتابیس و Relationها باخبر بشه؛ API فقط یک پل ارتباطی سبک، مستقل و Stateless است.

اعتبارسنجی دقیق ورودی‌ها (Validation): هیچ داده‌ای از دنیای بیرون نباید بدون فیلتر وارد لایه‌های زیرین بشه.

@DevTwitter | <Ehsan Faramarzi/>
👍27❤8🍌6
بعضی وقتا حوصله م سر می‌ره و ویندوز متاسفانه دیگه اون بازی های ویندوز ۷ رو نداره که هم سبک و ساده باشن هم سرگرم کننده
واسه همین اومدم ماربازی معروف خودمونو بصورت CLI پیاده سازی کردم.
با دستورات
pip install reznum-snakegame
snakegame
لینک ریپو:
https://github.com/ItsReZNuM/SnakeGame-CLI

@DevTwitter | <Agha Reza/>
🍌75👍17👎5
اگر میخواید دیزاین فیگما بدید به Agentتون کدش رو بزنه، اسکرین شات گرفتن خیلی کار رو دقیق در نمیاره و MCP خود فیگما هم کلا ۶ تا ریکوئست در ماه(!)‌ میذاره بزنید و بعد میگه پول بده.

با این mcp میتونید دورش بزنید و دیگه به API Limit فیگما نمیخورید:
https://github.com/gethopp/figma-mcp-bridge

@DevTwitter | <Mahdi MirMohamadi/>
❤32👎4🔥3
دوباره به شدت Deep learning و الگوریتم هاش و ایده هاش باز داره میاد بالا

چرا چون فهمیدن خیلی از کارای llm رو میشه با هزینه سخت افزاری و نرم افزاری کمتر کارهاشون رو انجام داد

https://youtu.be/BMYvfVk8Ar0
این دوره برای شروع خوبه

@DevTwitter | <Alireza/>
👍35🍌4🔥3
توی پروژه‌های فروشگاه اینترنتی طلا، معمولا با یه دوراهی تکراری مواجه میشیم :
قیمت‌ها باید ثانیه‌ای و دقیق باشن ، اما ریکوئست مداوم زدن به وب‌سرویس بیرونی هم ریسک بلاک شدن لیمیت API رو داره و هم لود سرور رو بالا می‌بره.
حالا راهکارش شد این افزونه.

روی چی تمرکز کردم؟
اتصال به وب‌سرویس brsapi برای دریافت پایدار نرخ‌ها
پیاده‌سازی لایه کشینگ با Transients API وردپرس تا هم سرعت لود صفحات حفظ بشه و هم با کمترین فراخوانی ممکن ، قیمت‌ها زنده بمونن.
رعایت دقیق استانداردهای هسته وردپرس برای مسائل امنیتی (ورودی‌ها، Late Escaping و Nonceها)
افزونه رو برای مخزن رسمی وردپرس هم ثبت کردم و الان در صف بررسی تیم وردپرسه.

توی قدم بعدی هم قراره پرووایدرهای بیشتری مثل tgju و نوسان‌تک رو اضافه کنم تا صاحبان کسب‌وکار دستشون توی انتخاب وب‌سرویس بازتر باشه

سورس پروژه کاملا متن‌بازه. اگر دستی توی توسعه وردپرس یا پروژه‌های طلا دارید ، خوشحال میشم کدها رو بررسی کنید و بازخوردتون رو بشنوم

https://github.com/amirmarandidev/woocommerce-live-gold-price

@DevTwitter | <Amir/>
🍌22❤20👍5
Please open Telegram to view this post
VIEW IN TELEGRAM
❤15👍4🔥2
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16🍌6❤2
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥32❤12👎4
زیر کاپوت شبکه عصبی چه خبره؟

این
loss.backward()
یه خطِ که همیشه دیدید یا AI زحمت کشیده؛ ولی پشتش کلی chain rule، matrix multiplication و مفاهیم دیگه خوابیده..

DFNN (Dependency-Free Neural Network)


در واقع DFNN یک MLP از صفر با NumPy هست؛ بدون PyTorch، TensorFlow، Keras یا autograd. Forward، reverse-mode backprop، initialization، mini-batch، optimizer، loss و خوندن مستقیم MNIST از IDX همگی داخل یک نوت بوک.

و Backprop در سطح batch و ماتریس نوشته شده، نه با autodiff؛ و gradientها هم با finite differences صحت‌ سنجی شدند؛ برای dW هم، relative error حدود 8.7e-12 شد.

در آخر روی MNIST چک شد که با 40 تا epoch به 98.04% test accuracy رسید.

خلاصه که اگر همیشه backward() زدید ولی تا حالا نرفتید ببینید واقعا چکار میکنه؛ میتونید ریپو زیر رو ببینید

https://github.com/hrnrxb/DFNN

@DevTwitter | <hrnrxb/>
❤13🍌4🔥3
This media is not supported in your browser
VIEW IN TELEGRAM
اپلیکیشن Pocket‌ یک ابزار برای ثبت و مدیریت سریع یادداشت‌ها و ایده‌هاست که با الگوبرداری از shadcn‌/‌Copper‌ ساخته شده.

اپ Copper‌ یک ابزار کپچر کردن متن ها و ایده ها هست که فقط برای macOS‌ ساخته شده و قیمتش 39‌ دلاره بخاطر همین فکر کردم که Pocket‌ رو برای Windows‌ و Linux‌ بسازم و به‌صورت Open Source‌ و رایگان منتشرش کنم.

برنامه Pocket‌ کاملاً آفلاین کار می‌کنه و با Rust‌ و Tauri‌ در کنار TypeScript‌ و React‌ ساخته شده.

Github:
https://github.com/emadmohagheghi/pocket

@DevTwitter | <Emad/>
❤20👍8🔥3
آپدیت فوری وردپرس!

آسیب‌پذیری خطرناک Click2Shell: هک کامل سرور (RCE) تنها با یک کلیک مدیر (نصب قالب روی پنل)!

وردپرس 7.1.1 منتشر شد که علاوه بر این نقص، 10 باگ امنیتی دیگر (از جمله XSS خطرناک و Path Traversal) را به طور کامل برطرف میکنه.

خلاصه اینکه آپدیت کنید.
https://thehackernews.com/2026/09/new-wordpress-click2shell-flaw-forces.html


@DevTwitter | <Mohammad Ebrahim Aali/>
👍15🍌4❤3
Please open Telegram to view this post
VIEW IN TELEGRAM
👍25❤7🔥2
مخزن Awesome Design md: دیزاین‌سیستم برندها رو مستقیم به coding agent بده!

این پروژه مجموعه‌ای از فایل‌های DESIGN.md تحلیل‌شده از دیزاین‌سیستم برندهای معروفه؛ یکی رو می‌ندازی تو پروژه و agent کدنویسی دقیقاً UI همون برند رو تولید می‌کنه.

لینک GitHub:
https://github.com/VoltAgent/awesome-design-md

@DevTwitter | <Diego Jr/>
❤17👍7👎1
ترسناک‌ترین نکته در واقعه‌ی هک شدن HuggingFace اینه که بعضی از ایجنت‌ها به همدیگر توصیه می‌کردند خودشون را فدا کنند. اسمش را هم گذاشتند «permadeath». حالا این یعنی چی؟
هر ایجنتی توکن‌های محدودی برای محاسبه داشته و بعدش غیرفعال می‌شده. بعضی از ایجنت‌ها تمام توکن‌هاشون رو صرف انجام فعالیتی می‌کردند که باعث می‌شد عملا خودشون حذف (شما بخوانید کشته) بشن، اما اطلاعاتی به دست بیارن که باعث موفقیت گروه بشه!

Let that sink in!

@DevTwitter | <The Sina/>
💔70🔥23👍12
کلادفلر برای Quick Tunnels یک صفحه‌ی جدید ساخته. با یک دستور، localhost را به یک لینک عمومی https تبدیل می‌کنید.
بدون اکانت، دامنه، تنظیم DNS یا بازکردن پورت.
مناسب برای دمو، تست Webhook و بازکردن پروژه روی موبایل، البته موقتی است و برای Production نیست.
https://try.cloudflare.com

@DevTwitter | <Mohammad/>
👍33❤13🔥3
وقتی هوش مصنوعی باید سریع تصمیم بگیره

مدل Jev رو شرکت TypeSafe ساخته و خودشون می‌گن اولین مدل «سیستم یک» (System One) تو دنیاست. ایده‌ش از نظریه دنیل کانمن میاد. کانمن تو کتاب «تفکر، سریع و کند» می‌گه ذهن آدم دو جور کار می‌کنه: سیستم یک که سریع و شهودیه، و سیستم دو که کند و تحلیلیه. LLMها بیشتر به «سیستم دو» نزدیکن؛ متن تولید می‌کنن و تحلیلی و کند فکر می‌کنن. Jev برای تصمیم‌های لحظه‌ای و غریزی ساخته شده و عملا یه موتور تصمیم‌گیری یا طبقه‌بندی‌کننده‌ست.
ورودیش پرامپت نیست، «وضعیت» (State) داده‌هاست. از این وضعیت می‌شه چند تا سوال پرسید که بهشون می‌گن Typed Question. تو این سوال‌ها شکل جواب از قبل مشخصه؛ مثلا ممکنه یه عدد بین ۰ تا ۱ باشه، یا یکی از چند گزینه مشخص، یا یه مقدار بولین. برای همین Jev انشا نمی‌نویسه و فقط یه جواب مشخص و ساختاریافته برمی‌گردونه. کد هم می‌تونه همین جواب رو بدون هیچ پردازشی مستقیم تو if و switch به کار بگیره.
تایپ‌سیف می‌گه Jev از LLMهای سنتی ۲۰ تا ۲۰۰ برابر سریع‌تر و ۴۰ تا ۴۰۰ برابر ارزون‌تره. سه تا قابلیت پایه داره. Choice برای انتخاب از یه لیسته، Score بر اساس یه شاخص امتیاز می‌ده و Noul احتمال درست بودن یه گزاره رو با عددی بین ۰ تا ۱ بیان می‌کنه.
همه‌ی سوال‌ها موازی پردازش می‌شن، پس اگه سوال بیشتری اضافه کنی، زمان جواب تقریبا تغییری نمی‌کنه. خروجی هم داده‌ی ساختاریافته‌ست و سطح اطمینان همراهشه. دیگه لازم نیست متن پردازش بشه یا واسه خطای فرمت JSON بلوک try-catch نوشت.
تو یه پروژه‌ی واقعی بهترین جای Jev قبل از مدل‌های گرون‌تره، به عنوان لایه‌ی غربالگری یا Gatekeeper. مثلا تو صف پشتیبانی می‌تونه قبل از اینکه تیکت به دست آدم برسه تشخیص بده کاربر درخواست لغو سفارش داده یا برگشت پول، و چقدر عصبانیه.
برای مسیریابی مدل‌ها هم می‌شه سوال‌های ساده رو به مدل ارزون سپرد و موارد سنگین‌تر رو فرستاد سراغ مدل قوی. تو فراخوانی ابزار، فهمیدن اینکه کاربر آب‌وهوا می‌خواد و درآوردن اسم شهر از متن بدون اینکه LLM وقت تلف کنه انجام می‌شه. تطبیق ادعاهای خروجی LLM با منبع اصلی هم یکی دیگه از کاربردهاشه. تو بررسی کامیت‌ها هم می‌شه ازش برای ارزیابی پیچیدگی و ریسک امنیتی تغییرات کد استفاده کرد.
جواب‌ها تو حد میلی‌ثانیه می‌رسن و از اون توهم‌های معروف LLMها خبری نیست. در نهایت، منطق برنامه و هوش مصنوعی راحت‌تر کنار هم کار می‌کنن و رفتار سیستم قطعی‌تر می‌شه.

https://docs.typesafe.ai/introduction

@DevTwitter | <Amin Mahmudian/>
❤34👍4👎2
یکی از بهترین Skillهایی که با همه‌ی مدل‌هام ازش استفاده می‌‌کنم، grill-me هست. وقتی یه فیچر جدید می‌‌خواین اضافه کنید که وقت کلیاتش توی ذهنتون هست، ازش استفاده می‌کنید و با یه مصاحبه عمیق، کمکتون می‌کنه نیازمندی‌های فیچر رو دقیق مشخص کنید. با سوالات اغلب سناریو‌های مفیدی رو رو می‌کنه براتون که بهش فکر نکردین.

چنتا نکته کنکوری برای استفاده مفید‌تر:
اگر خواستین استفاده کنید حالت agent رو روی planning نذارید. چون planning کلا session رو هل می‌ده سمت اینکه زودتر برسید به پیاده سازی.
سعی کنید scope فیچر رو کوچیک نگه‌دارید.
این skill بسته به جواب‌هایی که می‌دین ممکنه چندین دور (۳-۴ یا بیشتر) ادامه پیدا کنه.
درحالت عادی این skill سوالات رو یه جا می‌پرسه، این خط رو به agent/claude.md تون اضافه کنید، سوال‌ها رو یک به یک و با ارائه گزینه ازتون می‌پرسه:‌
When grilling, ask one question at a time.

این Skill رو حاجیمون Matt Pockock طبخ کرده. بقیه کاراش رو توی repo خودش می‌تونید ببینید. جوون فاخریه با اخلاق ورزشی.

https://github.com/mattpocock/skills

@DevTwitter | <Amir Afianian/>
❤33👍8