DevTwitter | توییت برنامه نویسی – Telegram
DevTwitter | توییت برنامه نویسی
23.6K subscribers
4.36K photos
358 videos
6 files
4.1K links
توییت های برنامه نویسی و طراحی وب :)

@dvtwi

Hashtags:
devtwitter.t.me/5

DevBooks Channel:
https://news.1rj.ru/str/+AYbOl75CLNYxY2U0

Github:
https://github.com/DevTwitter

X:
https://x.com/devtwittir
Download Telegram
سیستم کند است؟ این ۴ عدد دروغ نمی‌گویند

کند شدن API یکی از رایج‌ترین چالش‌ها در سیستم‌های نرم‌افزاری است.
اما تشخیص اینکه دقیقاً چه چیزی کند شده بدون داده و متریک، عملاً غیرممکن است.
تحلیل عملکرد سیستم نیازمند اعداد واقعی و قابل اندازه‌گیری است؛ متریک‌هایی که بتوانند محل گلوگاه‌ها و نقاط ضعف را به‌درستی مشخص کنند.

در این پُست به چهار متریک بنیادی می‌پردازیم که شناخت آن‌ها برای هر مهندس نرم‌افزار ضروری است.

1- معیار Queries Per Second (QPS)
این معیار نشان می‌دهد سیستم شما در هر ثانیه چند درخواست ورودی دریافت می‌کند.
برای مثال، اگر سرور در یک ثانیه ۱۰۰۰ درخواست دریافت کند، مقدار QPS برابر با ۱۰۰۰ خواهد بود.
در نگاه اول، QPS متریکی ساده به نظر می‌رسد، اما چالش اصلی در پایداری آن نهفته است. بسیاری از سیستم‌ها قادر به حفظ QPS بالا در بازه‌های زمانی طولانی نیستند و در شرایط فشار، به‌تدریج دچار افت عملکرد می‌شوند.

2- معیار Transactions Per Second (TPS)
این معیار تعداد تراکنش‌های کاملاً انجام‌شده در هر ثانیه را نشان می‌دهد.
یک تراکنش شامل کل مسیر پردازش درخواست است؛ از دریافت درخواست تا تعامل با دیتابیس و بازگشت پاسخ نهایی.
برخلاف QPS که صرفاً تعداد درخواست‌های ورودی را نشان می‌دهد، TPS بیانگر میزان کار واقعی انجام‌شده است و معمولاً مهم‌ترین متریک از دیدگاه کسب‌وکار محسوب می‌شود.

3- معیار Concurrency (همزمانی)
این معیار تعداد درخواست‌های فعالی است که سیستم در یک لحظه در حال پردازش آن‌هاست.
برای مثال، ممکن است سیستم ۱۰۰ درخواست در ثانیه دریافت کند، اما اگر پردازش هر درخواست ۵ ثانیه طول بکشد، در عمل با ۵۰۰ درخواست همزمان مواجه خواهیم بود.
همزمانی بالا به معنای نیاز به مدیریت بهینه‌تر منابع، connection pool مناسب و کنترل دقیق‌تر threadها است.

4- معیار Response Time
این معیار مدت زمانی است که از آغاز یک درخواست تا دریافت پاسخ نهایی سپری می‌شود.
این متریک هم در سطح کلاینت و هم در سطح سرور اندازه‌گیری می‌شود و نقش کلیدی در تجربه کاربری و توان پردازشی سیستم دارد.

رابطه بین متریک‌ها:
این چهار متریک به‌طور مستقل عمل نمی‌کنند و رابطه‌ی مشخصی میان آن‌ها وجود دارد:
QPS = Concurrency ÷ Average Response Time
بر اساس این رابطه، افزایش همزمانی یا کاهش میانگین زمان پاسخ، منجر به افزایش توان پردازشی (Throughput) سیستم می‌شود.

تحلیل صحیح عملکرد سیستم بدون درک دقیق این متریک‌ها ممکن نیست.

@DevTwitter | <Amir Rahimi Nejad/>
15👍6
میدونستید چرا Nginx همه‌جا هست؟

سال‌ها Apache بازیگر بی‌رقیبِ دنیای وب‌سرورها بود.
تقریباً ۲۰ سال تمام.
تا اینکه Nginx اومد و بدون سر و صدا، بازی رو عوض کرد.

امروز Nginx پشت صحنه‌ی خیلی از غول‌های اینترنت نشسته:
Netflix، Airbnb، Dropbox
نه به‌خاطر اینکه جدیدتر یا مد روزه،
بلکه چون مشکلاتی رو حل کرد که توی ترافیک بالا، Apache به‌سختی از پسشون برمی‌اومد.

اما چرا Nginx اینقدر محبوب شد؟
- همزمان هزاران کانکشن رو راحت هندل می‌کنه
- به‌عنوان Reverse Proxy فوق‌العاده عمل می‌کنه
- به‌عنوان Load Balancing ساده و قدرتمند
- دارای Cache داخلی برای سرعت بیشتر
ب-ه عهده گرفتن SSL Termination و سبک‌تر کردن اپلیکیشن‌ها

توی خیلی از معماری‌های مدرن، Nginx دیگه فقط «وب‌سرور» نیست؛
عملاً مغز هدایت ترافیک و خط اول امنیت سیستم حساب می‌شه.

@DevTwitter | <Amir Rahimi Nejad/>
👍5812🍌3
پلتفرم codewars فقط حل مسئله نیست، یاد گرفتن طرز فکره. Codewars یه پلتفرمه برای تمرین برنامه‌نویسی و حل مسئله با زبان‌های مختلف؛
جایی که می‌تونی چالش‌های کوچیک الگوریتمی حل کنی و مهارتت رو کم‌کم تقویت کنی.
چیزی که برای من Codewars رو واقعاً ارزشمند کرده، فقط حل کردن کاتاها نیست؛
بعد از حل مسئله، دیدن راه‌حل بقیه‌ست.
مثلاً امروز روی یه چالش کار می‌کردم که در ظاهر ساده بود،
ولی تا زمانی که الگوی مسئله رو درست نفهمیدم، پیاده‌سازیش گیج‌کننده می‌شد.
بعد از اینکه خودم حلش کردم و رفتم سراغ solutions:
دیدم بعضی‌ها همون مسئله رو با چند خط ساده‌تر حل کرده بودن
بعضی‌ها از نگاه کاملاً متفاوتی استفاده کرده بودن
و بعضی راه‌حل‌ها واقعاً طرز فکرم رو نسبت به مسئله عوض کرد
برای من این بخش دقیقاً مثل یه code review واقعی و رایگان عمل می‌کنه.
یه پیشنهاد ساده:
فرقی نمی‌کنه برنامه‌نویس باشی یا تو هر زمینه‌ی دیگه‌ای کار کنی—
اگر روزی فقط یک چالش کوچیک حل کنی:
توی یک ماه -> حدود ۳۰ تمرین
توی یک سال -> بیشتر از ۳۶۰ بار فکر کردن، تحلیل کردن و حل مسئله
این حجم تمرین، بدون اغراق:
طرز فکرت رو قوی‌تر می‌کنه
حل مسئله‌ت رو بهتر می‌کنه
و تأثیرش رو مستقیم توی کارت می‌بینی
برای من Codewars فقط تمرین برنامه‌نویسی نیست؛
یه عادت خوبه برای رشد مداوم.

@DevTwitter | <Ahmad Aghazade/>
👍3810
بعضی وقتا گلوگاه performance دیتابیس از query یا infra نیست، از primary key میاد.

اUUID چون randomه، هر insert رو می‌فرسته یه جای متفاوت از B-treeی که برای ایندکس ها ساخته شده و ممکنه باعث شه درخت دوباره ساخت بشه؛ نتیجه‌اش cache miss، page split و write cost بالاتره. زیر بار دیتابیس زود به سقف CPU می‌رسه.

در مقابل، bigint auto-increment همیشه آخر index می‌نویسه و رفتار دیتابیس قابل پیش‌بینی میشه. تو تست‌های واقعی، فقط با عوض کردن UUID به bigserial، throughput چند برابر بهتر شده بدون اینکه data model یا business logic تغییر کنه.
اprimary key تصادفی یعنی مالیات دائمی روی هر write

راه بهتر اینه که primary key داخلی bigint باشه و یه public UUID برای بیرون سیستم داشته باشی. اگه client-generated id لازم داری، می‌تونی از time-orderd مثله Snowflake استفاده کنی تا keyها تقریبا ترتیبی باشن و توی سیستم های توزیع شده هم یکتا باشن و هم index اذیت نشه.


@DevTwitter | <Go Talk | گو تاک/>
👍1910🍌5👎2
از اونجایی که من کلا همیشه به دنبال حداکثر سرعت، بهینه بودن و عملکرد هستم و همیشه اینارو یه جا می‌خوام،
مجبور‌ میشم از کتابخونه‌های آماده استفاده نکنم و بشینم یه چیزی بهتر از اونارو طراحی کنم.

حالا ایندفعه fasthttp رو برای پایتون طراحی کردم، یه کتابخونه‌ی ساده، سبک، مینیمال و زیبا برای ارسال درخواست های HTTP با حداکثر سرعت ممکن.

این کتابخونه از aiohttp، httpx و requests هم سریع‌تره و سینتکس مشابه‌ای به هر سه داره و به راحتی میشه ازش استفاده کرد. کدنویسی sync و async رو همزمان پشتیبانی می‌کنه.

میتونید با دستور زیر کتابخونه رو نصب کنید:
pip3 install -U pyfasthttp


یه مثال از کتابخونه:
from fasthttp import Client

with Client() as client:
resp = client.get("https://httpbin.org/get")
print(resp.status_code)
print(resp.json())


گیت هاب پروژه:
https://github.com/shayanheidari01/fasthttp


@DevTwitter | <ShythonX/>
25🍌23👎8👍4
حضور zod-ir در داکیومنت رسمی Zod + انتشار نسخه v1.5.4

از زمان انتشار نسخه 1.2 که فقط روی "ولیدیشن" تمرکز داشتم و در پست قبلی معرفی کردم، هدفم حل چالش‌های دیتای ایرانی در Zod بود. اما در مسیر توسعه، نیاز به چیزی فراتر از true/false حس می‌شد. امروز نسخه v1.5.4 با رویکرد جدید Data Extraction (استخراج دیتا) منتشر شد.

خبر ویژه: پول‌ریکوست پروژه در ریپوی اصلی Zod مرج شد و اکنون zod-ir رسماً به عنوان ابزار استاندارد ولیدیشن ایرانی در بخش Ecosystem داکیومنت Zod معرفی شده است و می‌تونید با خیال راحت توی پروژه‌های بزرگ ازش استفاده کنید.

تغییرات کلیدی نسبت به نسخه‌های قبل: در این نسخه، پکیج علاوه بر بررسی صحت داده، متادیتای کاربردی را برای UI استخراج می‌کند:
۱. خدمات شهری و خودرو (Vehicle & Bills):
- پلاک: استخراج استان و شهر محل پلاک خودرو.
- قبض: استخراج مبلغ، نوع قبض (آب، برق،...) و شناسه پرداخت از روی شناسه قبض (محاسبه خودکار).

۲. امور مالی (Financial):
- ورودی مالی ترکیبی (zFinancial): دیگه فرقی نمی‌کنه کاربر کارت بزنه یا شبا. سیستم خودش تشخیص می‌ده و آبجکت کامل (شامل لوگو، رنگ و نام بانک) رو برمی‌گردونه.
- بانکی: تشخیص نام بانک، رنگ سازمانی و لوگو (SVG) از روی شماره کارت یا شبا.
- کریپتو: ولیدیشن Native آدرس‌های TRC20 ،BTC و ETH (بدون وابستگی سنگین).

۳. تماس و مکان (Contact & Location):
- تلفن ثابت (جدید): استخراج نام استان و شهر (فارسی/EN) از روی پیش‌شماره.
- کد پستی (بهبود یافته): بازنویسی الگوریتم تشخیص شهر با متد Best Match (رفع تداخل رنج‌های پستی).
- موبایل: تشخیص اپراتور (همراه اول، ایرانسل و...) و ارائه لوگوی اپراتور.

تشکر از شایان زمانی عزیز (Shayan Zamani) بابت مشارکت در مدرن‌سازی زیرساخت و بیلد سیستم این نسخه.

الان zod-ir یک ابزار کامل برای تیم‌های فرانت‌اند است که هم دیتای ورودی را چک می‌کند و هم دیتای خروجی را فرمت‌شده تحویل می‌دهد.

نصب: npm i zod-ir

https://www.npmjs.com/package/zod-ir

https://github.com/Reza-kh80/zod-ir

@DevTwitter | <Reza Kheradmandi/>
🔥455
اگه با Cloud Storageها کار می‌کنی، احتمالاً به rclone نیاز داری.
ابزاری برای بکاپ، سینک و مایگریشن که به‌صورت rsync-like بین کلود استوریج‌ها کار می‌کنه.

ریپو گیت هاب: http://github.com/rclone/rclone

@DevTwitter | <Mohammad/>
👍8🍌53👎1
This media is not supported in your browser
VIEW IN TELEGRAM
الان داشتن رزومه شخصی سازی شده برای هر شغل خیلی ضروریه!
اگر می‌خواهید رزومه‌ای داشته باشید که هم ساختار مهندسی داشته باشد و هم چشم‌نواز باشد، حتما به ریپوزیتوری RenderCV سر بزنید.

ایده اصلی اینه: محتوا رو از ظاهر جدا کن. دیگه لازم نیست نگران باشی که اگه یه خط به سوابق کاریت اضافه کنی، کل فونت‌ها و فاصله‌های رزومه‌ات به هم می‌ریزه. تو فقط متنت رو توی فایل YAML می‌نویسی، RenderCV خودش بقیه‌ی کارها (چیدمان، فاصله‌گذاری، فونت و...) رو انجام میده.

چه ویژگی هایی داره؟
- مدیریت ورژن‌کنترل: می‌توانید رزومه‌تان را در گیت‌هاب قرار دهید و تمام تغییرات آن را در طول زمان ردیابی کنید.

- ظاهر بی‌نقص: دیگر نیازی نیست ساعت‌ها وقت صرف تنظیم فاصله‌ها و فونت‌ها کنید؛ همه‌چیز طبق استانداردهای حرفه‌ای چیده می‌شود.

- خروجی‌های متنوع: علاوه بر نسخه PDF، به شما فایل‌های Markdown و LaTeX هم می‌دهد که برای پلتفرم‌های مختلف عالی است.

- تمرکز روی محتوا: شما فقط روی نوشتن تجربیاتتان تمرکز می‌کنید و اجازه می‌دهید ابزار، کارِ طراحی را برایتان انجام دهد.
Github: https://github.com/rendercv/rendercv

@DevTwitter | <Mehdi Allahyari/>
🔥208👍4👎1
اولین تجربه اتصال به Remote MCP Server با استفاده از MS Agent Framework با دات نت:
امروز در مورد Official Microsoft Learn MCP Server میخوندم، گفتم یه تست بنویسم که با AI Agent بتونم به Remote MCP Server وصل بشم، خیلی چسبید!
اینجا گذاشتم (مثال 9):

https://github.com/pournasserian/agent-framework-sample

مثال 8 هم کار با تصویر بود که امروز اضافه کردم.

@DevTwitter | <Amir Pournasserian/>
🍌75👎1
یه ابزار/ریپوی خیلی کاربردی از مایکروسافت: Microsoft Learn MCP Server
اگه از Claude / Cursor / Copilot / Codex و… استفاده می‌کنید و «hallucination» و یا کدهای غیرقابل‌کامپایل (قدیمی) اذیتتون میکنه، این MCP Server، ایجنتتون رو مستقیم وصل می‌کنه به
آخرین داکیومنت رسمی Microsoft
نمونه‌کدهای Microsoft Learn

نصب سریع، رایگان، و بدون API Key.

https://github.com/microsoftdocs/mcp

@DevTwitter | <Amir Pournasserian/>
7👍1👎1
بهترین اتفاق سال من میرسه به این که جنرال رو open-source کردن.
یعنی میشه هررکجا بگی نصبش کردی، linux, macos و ....

https://github.com/TheSuperHackers/GeneralsGameCode

@DevTwitter | <Sadegh/>
🔥16🍌51
Forwarded from Space sup
📱 ChatGPT Premium🛍

⚫️فعال سازی اشتراک بر روی ایمیل شخصی شما.

⚫️تمام سفارش‌ها دارای ضمانت تعویض و بازگشت وجه فوری هستند.

⚫️تخفیف فعلی به دلیل آفر رسمی سایت می‌باشد و برای مدت محدود فعال است.

⚫️پرداخت بعد از تحویل.

💲قیمت اشتراک

🟠 3️⃣4️⃣9️⃣🔤

🙂جهت مشاوره و خرید سریع کلیک‎ کنید

❤️ در کانال ما عضو شوید
Please open Telegram to view this post
VIEW IN TELEGRAM
👎51🔥1🍌1