Mahi in Tech – Telegram
Mahi in Tech
308 subscribers
195 photos
17 videos
8 files
251 links
Download Telegram
Forwarded from tech-afternoon (Amin Mesbahi)
🔥 🐘 انتشار PostgreSQL 18، و اهمیت تغییراتش!

طبق روال سال‌های گذشته حوالی سپتامبر ریلیز نسخه جدید PostgreSQL انجام شد. حالا چرا این نسخه برای برخی سیستم‌ها می‌تونه قابل توجه و مهم باشه؟

- تغییرات انقلابی در I/O (Asyn I/O):
بالاخره! این قابلیت اومد و سرعت عملیات Read رو «تا» ۳ برابر افزایش می‌ده! معطلی‌های CPU برای I/O خیلی کمتر می‌شه و برای کارهای مثل VACUUM و اسکن‌های بزرگ، تاثیرش چشمگیره (من روی نسخه‌های پیش‌نمایش تست کردم و عالی بود).

- پشتیبانی از UUIDv7:
برای توسعه‌دهنده‌ها این شاید خیلی مهم باشه! (اگر دوست دارید در مورد انواع UUIDها بیشتر توضیح بدم: 🤪)
پشتیبانی Native از UUIDv7 یعنی Primary Key‌ها به صورت گلوبال یونیک میشن و هم چون بر اساس زمان مرتب هستن، عملکرد ایندکس B-tree به شکل چشمگیری بهتر میشه. (یعنی Page Split بی مورد نداریم!)

- قابلیت Virtual Generated Columns:
حالا ستون‌های محاسباتی به‌صورت پیش‌فرض مجازی هستن، یعنی فقط موقع خوانش محاسبه میشن و فضای دیسک رو اشغال نمی‌کنن. (البته اگه لازم باشه، می‌تونید همچنان STORED هم تعریف کنین).

افزودن NOT NULL بدون Downtime: کابوس اضافه کردن NOT NULL به جدول‌های بزرگ تموم شد! حالا می‌شه قید NOT NULL رو به‌صورت NOT VALID اضافه کنیم و بلافاصله برای ردیف‌های جدید اعمال بشه. اعتبارسنجی ردیف‌های موجود رو هم می‌تونیم بعداً بدون قفل کامل جدول انجام بدیم.

- امکان Skip Scan برای B-tree:
یه بهبود عالی برای بهینه‌سازی کوئری؛ اگه توی ایندکس‌های چند ستونی، ستون اول رو در WHERE فیلتر نکرده باشیم، باز هم ایندکس کار می‌کنه و کوئری‌های تحلیلی/گزارش‌گیری خیلی سریع‌تر میشن.

- امکان RETURNING هوشمند:
حالا میشه توی یک دستور UPDATE یا DELETE به هر دو مقدار قدیمی (OLD) و جدید (NEW) یک ستون در بخش RETURNING دسترسی داشته باشیم.

- آپگرید آسون‌تر:
قابلیت حفظ Planner Statistics حین آپگرید با pg_upgrade باعث میشه دیتابیس جدید خیلی سریع‌تر به پرفورمنس دلخواه برگرده.

اگر جزو افرادی هستین که به مهاجرت به PostgreSQL فکر می‌کنید، یه تعداد کارت‌های شسته‌رُفته برای مهاجرت از SQL Server به PostgreSQL با هشتگ #MSSQL_to_PGSQL توی کانال داریم (کارت‌های قرمز رنگ از بخش تصاویر هم قابل پیدا کردنه)
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2🙊1
مایکروسافت اخیرا مدت پشتیبانی نسخه‌های STS دات‌نت رو به ۲۴ ماه افزایش داده.
🔥2🤣1🙊1
اگر یک زمانی اکانت لینکدین‌تون محدود شد، می‌تونید از روش‌هایی که توی این کانال جمع‌آوری شده استفاده کنید:

@Suspended_LinkedIn
❤‍🔥2🙊1
گوگل طی هفته‌ی اخیر نسخه‌ی CLI ایجنت Jules رو معرفی کرد.

این ایجنت به اکانت گیت‌هاب شما متصل می‌شه و می‌تونید ازش بخواید تا توی ریپوهاتون مشارکت کنه، اونم به‌طور خودکار تغییرات لازم رو انجام می‌ده و کامیت‌شون می‌کنه، که حالا برای مثال می‌تونه مستقیم مرج‌شون کنه یا PR ایجاد کنه.
و خب اون پشت به‌صورت پیش‌فرض از Gemini 2.5 Pro استفاده می‌کنه. (آخرین مدل)

یک‌سری قابلیت‌های دیگه هم داره که خوندنشون خالی از لطف نیست:

jules.google
1👍4🙊1
Forwarded from Easy Microservices (Mahdi)
سرچ فازی Fuzzy Search
یکی از رفتارهای پرتکرار کاربران در اپلیکیشن‌ها و سیستم‌های جستجو، اینه که خیلی وقت‌ها کل عبارتی که دنبالش هستند تایپ نمیکنند، یا کلمه‌ای رو اشتباه تایپ می‌کنن. اما نتیجه؟
صفحه‌ای خالی از داده، یا پیشنهادهایی که ربطی به نیت واقعی کاربر ندارن.

اینجا بود که مسئله شکل گرفت:
چطور می‌تونیم تجربه‌ی جستجو رو هوشمندتر کنیم؟
به‌جای اینکه از کاربر انتظار دقت ماشینی داشته باشیم، سیستم رو طوری طراحی کنیم که خودش نیت کاربر رو درک کنه.

از همین نگاه، پروژه‌ی Fuzzy Search متولد شد.

برای مطالعه بیشتر و ریپو گیت هاب لینک زیر ببینید
https://www.linkedin.com/feed/update/urn:li:activity:7383751931095232512/?commentUrn=urn%3Ali%3Acomment%3A(activity%3A7383751931095232512%2C7383772897057734657)&dashCommentUrn=urn%3Ali%3Afsd_comment%3A(7383772897057734657%2Curn%3Ali%3Aactivity%3A7383751931095232512)#
2🙊1
سرویس agentrouter فقط با ثبت‌نام بهتون مقدار قابل توجهی کردیت می‌ده که خب دسترسی به api مدل‌هایی مثل Claude 4.5 و GPT 5 رو مهیا می‌کنه.
حالا درسته که چینی هست ولی خب به دو کلیک می‌ارزه.

https://agentrouter.org/
1👻2🙊1
Forwarded from Agora (Alireza)
فرض کنید که می‌خوایید عبارتی رو گوگل کنید ولی گوگل نه بدونه چی ازش پرسیدین و نه بدونه چه جوابی به شما داده ولی با این حال جوابش به شما متناسب بوده.

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

یا بذارید یک کم عمیق تری بشیم. فرض کنید شما یک password manager دارید که رمز‌هاتون رو encrypt شده نگه‌داری کرده. می‌خوایید وقتی که برنامه لود شد و پیچیدگی‌های رمز‌هاتون رو بررسی می‌کرد، حتی دامپ مموری و یا دامپ جیستر‌های CPU هیچ کدوم از اطلاعات شما رو لو نده و همچنان اون‌ها encrypted باقی‌ بمونند و در عین‌حال فیچر بررسی پیچیدگی پسورد منیجیرتون به درستی عمل کرده باشه.

ما می‌دونیم که بالاخره در یک مرحله‌ای دیتا باید توی RAM لود بشه یا وقتی CPU می‌خواد که روی داده‌ها insturctionهاش رو اجرا کنه، باید خود دیتا (و نه encryptشده‌ش) رو روی رجیستر‌هاش Fetch کنه. پس نمیشه که ما بدون رمزگشایی داده و در اختیار قرار دادن کلید روی داده‌ها پردازش کنیم. درسته؟ نه!

خیلی جالبه که رمز‌گذاری وجود داره که این امکان رو میده تا بدون این که داده رو decrypt کنیم روی اون پردازش کنیم یا دقیق‌تر، اون رو به یک تابع بدیم و خروجی اون تابع عیناً مشابه خروجی تابع بر روی دیتای رمز نشده باشه :

Fully Homomorphic Encryption
Homomorphic encryption is a form of encryption that allows computations to be performed on encrypted data without first having to decrypt it.[1] The resulting computations are left in an encrypted form which, when decrypted, result in an output that is identical to that of the operations performed on the unencrypted data. Homomorphic encryption can be used for privacy-preserving outsourced storage and computation. This allows data to be encrypted and outsourced to commercial cloud environments for processing, all while encrypted.



علارغم این که با این روش میشه چرخه‌ی حریم‌شخصی و محرمانگی رو کامل برقرار کرد و الگوریتم رمزگذاری جدیدی نیست، با این‌حال استفاده ازش چندان همه‌گیر نشده. یکی از اشکالات اساسی‌ش هزینه‌ی پردازشی بالای اونه. با تمام این‌ها، پیشرفت‌های زیادی کرده و هر چند سال نسل‌های جدید از اون منتشر میشه که مشکلات نسل‌های قبلی رو به شکلی مرتفع کردن و از طرفی سرعت پردازش روی داده‌های رمز‌شده سالانه ۸ برابر بیشتر میشه و کم کم داره داره جای خودش رو روی سیستم‌های real-world پیدا می‌کنه. مثلا اپل پستی روی ۲۰۱۴ منتشر کرده که از دیتاست‌های رمز شده در مسئله‌های Nearest Neighbor Searchش برای حفظ حریم خصوصی کاربر‌هاش استفاده میکنه:
Combining Machine Learning and Homomorphic Encryption in the Apple Ecosystem


توی این ترد Hackernews نظر بقیه رو راجع‌بهش بخونید.
اگر به جزئیات پیاده‌سازی و ریاضی پشتش بیشتر علاقه دارید این تکست‌بوک میتونه بدرد بخوره. (همون منبع ولی به صورت HTML)
پیاده‌سازی اوپن‌سورسی هم از این الگوریتم وجود داره که از اینجا می‌تونید بررسی کنید.
👍2🙊2
یکی از الگوریتم‌های پراستفاده برای Load Balancing, الگوریتم Round-Robin هست. همون‌طور که از اسم‌ش پیداست، خیلی ساده میاد و درخواست‌ها رو بین سرورها تقسیم می‌کنه تا فشار روی مقصد خاصی نیفته:

Request 1 -> Server A  
Request 2 -> Server B
Request 3 -> Server C
Request 4 -> Server A
Request 5 -> Server B
Request 6 -> Server C
...


اما این روش یک مشکل داره؛ اگه منابع یا توان پردازشی سرورها یکسان نباشه چی؟
در این حالت، وقتی تعداد درخواست‌ها زیاد بشه، سرورهایی با منابع کمتر ممکنه از کار بیفتن یا کند بشن، در حالی‌که سرورهای قوی‌تر هنوز ظرفیت خالی دارن.

برای حل این مشکل، از روشی به‌نام Weighted Round-Robin استفاده می‌کنیم. این روش خیلی ساده به هر مقصد یک وزن ثابت اختصاص می‌ده.
مثلاً اگه سرور A وزنش ۳ باشه و سرور B با منابع بیشتر وزنش ۵، در این صورت از هر ۸ درخواست، ۵‌ تا به سرور B و ۳ ‌تا به سرور A می‌رن.
از نظر پیاده‌سازی هم تفاوت خاصی از لحاظ پیچیدگی یا پرفورمنس نداره.

خب، به‌نظر میاد مشکل حل شد، نه؟ آره، ولی هنوز یه مسئله هست 😄
تعیین این وزن‌ها خودش کار سختیه،‌ هم از نظر پیدا کردن مقدار مناسب، هم به خاطر ایستا بودنشون. در عمل، به‌سختی می‌شه به نسبت بهینه رسید.

اینجا روش Dynamic Weighted Round-Robin وارد می‌شه.
این روش همون Weighted Round-Robin هست، با این تفاوت که وزن‌ها به‌صورت داینامیک و (مثلا) براساس سلامت سرورها (مثل response time، error rate و CPU load) به‌صورت تنظیم می‌شن.
در نتیجه، توزیع ترافیک به‌شکل adaptive و کارآمدتری انجام می‌گیره. مثلاً وزن هر سرور می‌تونه بین 0.2x تا 2x مقدار اولیه‌ش تغییر کنه و به‌صورت تدریجی در بک‌گراند با توجه به health score به‌روزرسانی بشه.
که خب، گزینه‌ی خیلی خوبی برای محیط‌های پویا و در حال تغییره.

نمونه‌ی عملی با CSharp:
یک نمونه‌ی واقعی از این روش رو اینجا سعی کردم پیاده‌سازی کنم، بر بستر YARP.
github.com/MahdiyarGHD/dwrr-loadbalancer
اگر هم مشکلی دیدید می‌تونید PR/Issue ایجاد کنید، باقی توضیحات توی readme پروژه هست.
1🔥8👍3🕊1🙊1
طبق روال هرسال، NET Conf. از امروز شروع شده و تا سه روز دیگه ادامه داره. بریم برای 10 NET. 😄

https://www.dotnetconf.net
🎉4🙊1
یکی از مواردی که توی EF 10 برام جالب بوده، قابلیت استفاده و تعریف چندین query filter هست.
همون‌طور که توی تصویر مشخص هست، می‌تونیم یک‌سری filterـهای همگانی تعریف کنیم و هرجا نیاز بود نادیده‌شون بگیریم.
🙊1
وقتی صحبت از سیستم‌های رزرو می‌شه، اولین چالشی که به ذهن میاد Race Condition هست. فرض کن دو نفر همزمان می‌خوان آخرین صندلی یک پرواز رو رزرو کنن، اگه سیستم درست طراحی نشده باشه، ممکنه هر دو رزرو ثبت بشه و بعد دردسر پیش بیاد.

برای همین، طی این پروژه (رزرو پرواز) سعی کردم با استفاده از Distributed Lock روی Redis جلوی این مشکل رو بگیرم. از طرف دیگه، معماری به شکل Vertical Slice و Feature-based طراحی شده تا هر فیچر مستقل و قابل توسعه باشه. روتینگ با Minimal API و Carter انجام شده، ولیدیشن‌ها با FluentValidation، و کل پروژه هم داکرایز شده هست تا راحت بالا بیاد. برای اطمینان از درست کار کردن بخش‌ها هم Integration Test و Unit Test نوشته شده.

سورس کامل این نمونه رو می‌تونید اینجا ببینید:
github.com/MahdiyarGHD/TravelBookingSystem

🌟 اگر هم ایرادی دیدید خوشحال می‌شم PR/Issue ایجاد کنید.
2🙊9🔥1
Forwarded from Akbari’s Channel
خب گوگل وی اس کد رو فورک کرده و اینو ساخته:

https://antigravity.google/
🙊9❤‍🔥1
ظاهراً مایکروسافت بالاخره تصمیم گرفته روند انتشار ویژوال استودیو رو عوض کنه. از این به بعد به‌جای این‌که هر دو سه سال یه نسخه‌ی جدید بده بیرون، قراره سالانه یه ریلیز جدید از این IDE منتشر کنه.

https://learn.microsoft.com/en-us/visualstudio/releases/2026/release-rhythm
👍4👎1🙊1
net-interview-questions_copy.pdf
3.9 MB
۱۵۰ سوال مصاحبه‌ی فنی دات‌نت از antondevtips.com

پاسخ ندارند ولی خب فقط کافیه سوال رو کپی/پیست کنید برای هر LLM ای.
👍2🙊1