tech-afternoon
1.25K subscribers
174 photos
6 videos
6 files
169 links
تِک‌افترنون، رویدادی گاه‌به‌گاه است با موضوعات حول معماری و توسعه نرم‌افزار، این کانال هم برای اشتراک اخبار، آموزش، نکاتی حول مهندسی نرم‌افزار، دیتابیس‌، تکنولوژی و مدیریت تولید محصولات نر‌م‌افزاری خواهد بود.
youtube.com/@AminTechTalks/videos
امین مصباحی
Download Telegram
⚡️📎 کاربرد و فرصت‌های Recognizers Text چیه و چرا باید بهش اهمیت بدیم؟

یه چالش جالب که پرداختن بهش می‌تونه تجربه کاربری بهتری برای مصرف‌کننده نهایی و تجربه بهتری سمت توسعه‌دهنده‌ها ایجاده کنه:
✍️ فهمیدن و پردازش متن‌هایی که آدم‌ها می‌نویسن.

حالا می‌تونه یه تاریخ باشه که تو یه فرم پر می‌کنن، یه عدد باشه که تو چت وارد می‌کنن یا یه عبارت مثل "یه هفته بعد" که قراره تبدیل به یه تاریخ واقعی بشه. اینجاست که ابزاری مثل Microsoft Recognizers Text میاد وسط و همه این کارا رو برامون ساده‌تر می‌کنه.

کتابخونه Microsoft Recognizers Text ابزاری قدرتمنده که وظیفه اصلیش اینه که متن ورودی رو بخونه و بفهمه. این یعنی چی؟ یعنی اگه کاربر شما بنویسه:
- "سه‌شنبه آینده"
- "۱۰۰ دلار"
- "۴۵ درصد"
- یا حتی یه شماره تلفن یا آدرس ایمیل

این ابزار می‌فهمه که با چه نوع داده‌ای سروکار داره و اون رو به یه فرمت ساخت‌یافته (Structured Format) تبدیل می‌کنه.

به چه دردی می‌خوره؟
فرض کن داری یه بات چت می‌سازی یا یه اپلیکیشن هوشمند که باید ورودی‌های کاربر رو تجزیه و تحلیل کنه. این ابزار می‌تونه بهت کمک کنه تا:
۱. زمان و تاریخ: هر نوع تاریخ یا زمانی که به زبان طبیعی نوشته شده (مثل "فردا ساعت ۳").
۲. اعداد و واحدها: درصدها، مقادیر پولی (مثل "۲۰۰ یورو") یا اندازه‌ها (مثل "۵ کیلو").
۳. ساختارهای متنی خاص: مثل ایمیل، شماره تلفن، آدرس IP، URL و غیره.

نکته مهم: شکل نرم‌افزارها تغییر می‌کنه، همون‌طور که روزگاری با اومدن موبایل و اینترنت، مسیر تعامل کاربر با نرم‌افزارها تغییر کرد، الان هم دوره‌ی فرم‌های پیچیده و طولانی گذشته. این به معنی بی‌توجهی به داده‌های ساختارمند نیست، بلکه وظیفه ساختاردهی داده‌ها از کاربر به سمت کدها منتقل ده.

پلتفرم‌ها و زبان‌های پشتیبانی‌شده
کتابخونه Recognizers Text یه ابزار کراس‌پلتفرمه که فعلاً برای NET ،Python و JavaScript آماده استفاده‌ست. برای جاوا هم به زودی ریلیز خواهد شد. پس هرجایی که این زبان‌ها رو داریم، می‌تونیم راحت ازش استفاده کنیم.

🌐 زبان‌هایی که ساپورت می‌کنه هم متنوعه: از انگلیسی و اسپانیایی گرفته تا چینی و عربی. البته، پشتیبانی برای بعضی زبان‌ها مثل فارسی هنوز خیلی کامل نیست، ولی می‌شه با توسعه اضافه‌شون کرد (قابلیت توسعه خیلی خوبی داره)

چرا باید ازش استفاده کنیم؟
۱. سرعت توسعه بالا: به جای اینکه خودمون یه الگوریتم برای تشخیص این چیزا بنویسیم، یا توی regexهای ساده دست و پا بزنیم تا ایمیل و شماره تلفن بفهمیم، از یه ابزار آماده و غنی استفاده کنیم که کلی بهبود زمان و کیفیت رو تجربه کنیم.

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

۳. انعطاف‌پذیری: می‌تونیم به راحتی یه مدل جدید بسازیم یا یه زبانی که ساپورت نمی‌کنه رو بهش اضافه کنیم.

👀 چطوری استفاده کنیم؟
برای استفاده، باید یکی از پکیج‌های آماده‌شده رو نصب کنی:
- برای NET.: بسته Microsoft.Recognizers.Text

- برای پایتون:
pip install recognizers-text


- برای JavaScript:
npm install @microsoft/recognizers-text



🎮 مثال ساده:
فرض کن می‌خوایم یه تاریخ رو از متن کاربر استخراج کنی. کد زیر رو تو Python اجرا کن:

from recognizers_date_time import DateTimeRecognizer

recognizer = DateTimeRecognizer("en-us")
model = recognizer.get_date_time_model()
result = model.parse("I have a meeting tomorrow at 3 PM.")

print(result)


string inputText = "I have a meeting tomorrow at 3 PM.";

string culture = CultureInfo.GetCultureInfo("en-US").Name;

var model = DateTimeRecognizer.RecognizeDateTime(inputText, culture);

foreach(var result in model) {
Console.WriteLine($ "Text: {result.Text}");
Console.WriteLine($ "Type: {result.TypeName}");

foreach(var resolution in result.Resolution["values"]) {

Console.WriteLine($ "Resolution: {resolution}");

}
}


خروجی این می‌شه یه آبجکت که اطلاعات دقیق تاریخ و زمان رو در خودش داره. راحت‌تر از این هم داریم؟

کاربرد در دنیای واقعی
این ابزار خیلی توی حوزه‌هایی مثل اینا محبوبه:
- چت‌بات‌ها: مثل بات‌هایی که رزرو یا نوبت‌گیری انجام می‌دن.
- اپلیکیشن‌های مالی: تجزیه و تحلیل تراکنش‌ها.
- پروژه‌های هوش مصنوعی: وقتی نیاز به تجزیه و تحلیل زبان طبیعی داری.

💡 خود مایکروسافت هم ازش استفاده می‌کنه، مثلا توی ToDo یا ...
📱 گیت‌هاب Recognizers-Text
💬 نظرتون چیه؟ به درد می‌خوره؟
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥3😍2
✍️💫 نمونه دنیای واقعی: کلودفلر چجوری به مستندات فنی نگاه می‌کنه؟

سلام! مستندنویسی فنی یکی از مغفول‌ترین بخش‌های توسعه نرم‌افزار، خصوصا در ایرانه! همه می‌گن خیلی واجبه و ما خیلی ارج می‌نهیم به مستندات، ولی آخرش همون همه، مشمول ترک واجبات و ارج ننهادن می‌شن! حتی technical write پوزیشن گمنامیه توی لیست مشاغل. حالا اینکه چطور کلودفلر، به عنوان شرکتی که توی ۱۹٪ اینترنت رد پاش دیده می‌شه و درآمد حدود ۱.۳ میلیارد دلاری داره (۲۰۲۳) چجوری به مستندات فنی‌اش نگاه می‌کنه و رویکردش چیه؛ می‌تونه خیلی آموزنده باشه.

🗣️ یه نگاه متفاوت به مستندات
یه روزی حدود ۷ سال پیش توی یکی از استارتاپ‌های اثرگذار ایران، با کلی بحث و استدلال، پوزیشن تکنیکال رایتر رو باز کردم و به سختی تلاش کردم مستندات رو یک محصول از تیم معرفی کنم. ولی ۲-۳ سال پیش خوندم که کلودفلر، خیلی ساختارمند و اصولی، مستندات فنی رو محصول می‌دونن، و حتی ترم PCX یا Product Content Experience خلق کردند. یعنی دقیقاً همونطور که روی محصولاتشون وقت میذارن، برنامه‌ریزی میکنن و بهبودش میدن، با مستنداتشون هم همینطور رفتار میکنن.

چرا این رویکرد مهمه؟
خب، فکر کنید شما یه محصول عالی دارید ولی کسی نمیدونه چطور ازش استفاده کنه! اینجاست که مستندات خوب به کمکتون میاد. کلودفلر فهمیده که مستندات خوب میتونه تجربه کاربری رو خیلی بهتر کنه.
یا حتی نسلی از توسعه‌دهنده‌ها محصول خیلی خوبی تولید کردند، به هر دلیلی اون توسعه‌دهنده‌ها نیستند دیگه (مهاجرت، ارتقاء، انتقال به تیم دیگه یا ترک شرکت)؛ تکلیف بعدی‌ها چیه؟ قراره چیو تحویل بگیرن و بهبود بدن؟ چیزی رو که نمی‌شناسن؟!

چطور این کار رو میکنن؟
۱. تیم مخصوص دارن: یه تیم مخصوص به اسم PCX یا Product Content Experience دارن که کارشون اینه که مطمئن بشن مستندات در بهترین کیفیت ممکن هستن.

۲. سریع عمل میکنن: هر وقت یه محصول جدید یا آپدیت میاد، مستنداتش هم همون موقع آماده‌ست. یعنی شما هیچوقت با یه محصول جدید روبرو نمیشید که ندونید چطور باید ازش استفاده کنید.

۳. اپن سورس هستن: جالبه بدونید که مستندات کلودفلر اپن سورسه! یعنی هر کسی میتونه توش مشارکت کنه و بهترش کنه.

چرا این روش خوب کار میکنه؟
۱. سرعت بالا: وقتی مستندات رو مثل محصول در نظر میگیرن، میتونن خیلی سریع‌تر آپدیتش کنن
۲. کیفیت بهتر: چون یه تیم مخصوص روش کار میکنه، کیفیت محتوا خیلی بهتره
۳. بازخورد مستقیم: کاربرا میتونن مستقیم بازخورد بدن و مستندات بهتر میشه

📌 نتیجه‌گیری
به نظر من، این رویکرد کلودفلر خیلی هوشمندانه‌ست. اونا فهمیدن که مستندات خوب به اندازه خود محصول مهمه. وقتی شما یه سرویس یا محصول میسازید، مستنداتش هم باید در همون سطح باشه. سال‌ها پیش یادمه یکی توی یک مصاحبه از یکی از مدیران مایکروسافت پرسید شما چرا اینقدر کند هستید توی دلیور محصولات؟! پاسخ داد می‌دونی ما بعد از هر تولید و تست‌های فراوون و چک کردن‌های روال‌های قانونی و حق پتنت‌ها و.. تازه باید مستندات کامل و مثال و… به چندین زبان فراهم کنیم و ویراستاری کنیم و… در حالیکه خیلی شرکت‌ها هیچ کدوم از این مراحل رو ندارن!

شاید بد نباشه یه نگاهی به این رویکرد داشته باشید. شاید بشه ازش ایده گرفت و توی پروژه‌هاتون اینجوری نگاه کنید! برخی هزینه‌ها، سرمایه‌گذاری و برخی پیشگیری از شکسته.

📱 ریپازیتوری مستندات کلودفلر
بخش توسعه‌دهنده‌های کلودفلر
ابزار Astro که جدیدا بهش مهاجرت کردن (قبلا روی Hugo بودن)
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥2🤔1
🎮 معرفی DevToys: جعبه‌ابزار همه‌کاره

یه ابزار باحال که طی چند سال گذشته بهتر و کامل‌تر شده، و البته به جای سرچ کردن «فلان چیز online» کار رو راحت کرده. DevToys یه اپلیکیشن اوپن‌سورسه که روی ویندوز و مک و لینوکس نصب می‌شه و مجموعه‌ای از ابزارهای کاربردی رو یکجا جمع کرده. خودش می‌گه یه چاقوی سوئیسی که همه چی توش پیدا میشه!

⚙️ لیست ابزارهای موجود توی این جعبه ابزار

ابزارهای کدنویسی، تست و فرمت‌دهی (XML, JSON,SQL, Regex Yaml, JSON Path)

ابزارهای تبدیل و رمزنگاری (Base64، JWT، Hash/Checksum، Number Base)

ابزارهای متنی و فرمت (Text Comparer، List Comparer، Markdown Preview، Lorem Ipsum Generator، URL/HTML Text Encoder)

ابزارهای تصویری و گرافیکی (Image Converter، Color Blindness Simulator، QR Code Generator)

ابزارهای مدیریت و امنیت (Password Generator، UUID Generator، Certificate Decoder، Cron Expression Parser)

🔌 نوشتن افزونه برای DevToys

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

📱 ریپو گیت‌هاب
🔗 سایت DevToys
🔌 راهنمای ساده نوشتن افزونه جدید

💬 ایده میده دارین برای افزونه نوشتن؟
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11
🚀 📱 نقشه‌ راه Rider برای ۲۰۲۵.۱

۱. تسهیل پروفایلینگ
با اینکه ابزارهای فعلی مثل Dynamic Program Analysis و dotTrace خوبن، ولی تیم Rider می‌خواد اون‌ها رو ساده‌تر و عمیق‌تر توی فرآیند توسعه ادغام کنه. عملا با توسعه نرم‌افزار یکپارچه‌‌ترشون کنه و دیگه ابزار جداگانه به نظر نیان.

۲. دیباگینگ
دیباگ کردن همزمان کدهای NET. و ++C، مخصوصاً برای Unity، Unreal، و اپ‌های Desktop با Mixed Mode Debugging.

۳. توسعه از راه دور (Remote Development)
پشتیبانی کامل از Windows برای توسعه از راه دور. دیگه چه ویندوز باشه، چه مک یا لینوکس، حس یه IDE لوکال رو خواهی داشت. (مثل SSH/WSL Remote development در VS Code)

۴. پشتیبانی از پروژه‌های SQL
ارتقا ابزارهای SQL با استفاده از SQL Tools API (مثل VS Code). مدیریت مستقیم پروژه‌های SQL Server. مقایسه دقیق Schema‌ها. کراس‌پلتفرم شدن برای کار با دیتابیس‌ها. (عملا بخشی از DataGrip رو میاره توی Rider)

۵. پشتیبانی پیشرفته‌تر Roslyn

📅 برنامه‌های آینده
ویژگی‌های مهم مثل Mixed Mode Debugging هنوز اول راه هستن، ولی قابلیت‌هایی مثل Visualizerها و Remote Development در حال آماده شدن هستن.
برنامه Early Access Program (EAP) به زودی شروع میشه و می‌تونید نسخه‌های غیرنهایی رو تست کنید.

منبع ۱
منبع ۲
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
⚙️ مقدمه‌ای بر Refit و مقایسه با گزینه‌های دیگه برای توسعه REST API

تعامل با APIها اینقدر رایجه که می‌شه بخش جدایی‌ناپذیری از توسعه دونست. هرچند، این تعامل با HttpClient بومی دات‌نت می‌تونه گاهی پیچیده و زمان‌بر بشه. توی این پست یه توضیح ابتدایی در مورد Refit می‌دم تا اگر 🤓 شدیم، توضیح کامل‌تری بدم. Refit کتابخونه‌ایه که می‌تونه تجربه‌ی کار با APIها رو ساده‌تر، خواناتر و کارآمدتر کنه. البته، Refit رو با سایر کتابخونه‌های مشابه مثل RestSharp، EasyHttp، و RestEase مقایسه می‌کنم.

چرا از HttpClient مستقیماً استفاده نکنیم؟
بومی‌ترین ابزار HttpClient است، ولی مشکلاتی هم داره:

*️⃣ کدهای تکراری و غیر قابل نگهداری: برای هر درخواست، باید پارامترها، هدرها، و سریالایز/دسریالایز کردن داده‌ها رو مدیریت کنیم.

*️⃣ مدیریت سخت و خطاپذیر: با اینکه کنترل کامل روی درخواست‌ها و پاسخ‌ها می‌ده، ولی اگر جزئیاتی مثل هدر یا پارامترها فراموش بشه، خطاها معمولاً در زمان اجرا شناسایی می‌شن.

*️⃣ مشکلات مدیریت منابع: اگر درست استفاده کنیم عملکرد بهینه و سربار کمتری داره؛ ولی استفاده نادرست از HttpClient ممکنه به مشکلاتی مثل نشت (هدررفت) منابع منجر بشه.

👀 معرفی Refit
حالا Refit یک کتابخونه REST برای دات‌نت است که امکان تعریف APIها به صورت اینترفیس رو فراهم می‌کنه. این کتبخونه به طور خودکار اینترفیس رو پیاده‌سازی و تمام عملیات HTTP را مدیریت می‌کنه.

ویژگی‌های برجسته Refit:

سریالایز/دسریالایز خودکار: نیازی نیست داده‌ها را به صورت دستی به JSON تبدیل کنیم.

کاملا Type-safety رو در زمان کامپایل رعایت می‌کنه: خطاها در زمان کامپایل شناسایی می‌شون، نه در زمان اجرا.

پشتیبانی از تمام متدهای HTTP: مثل GET، POST، PUT، DELETE و...

مدیریت ساده‌ی هدرها و پارامترها: می‌تونید به سادگی هدرها و پارامترهای مورد نیاز هر درخواست را اضافه کنین.

کد تمیز و خوانای داره
یکپارچگی عالی با Dependency Injection
پشتیبانی از Polly برای Circuit Breaker و Retry
توسعه مستمر توسط تیم .NET Foundation

📱 نمونه کد:

public interface IApiService
{
[Get("/users/{id}")]
Task<User> GetUserAsync(int id);

[Post("/users")]
Task<User> CreateUserAsync([Body] User user);
}

// استفاده از Refit
var api = RestService.For<IApiService>("https://api.example.com");
var user = await api.GetUserAsync(1);


مقایسه اولیه با Refit با RestSharp, EasyHttp, و RestEase

مقایسه با RestSharp
قدمت و کاربرد: RestSharp یکی از قدیمی‌ترین لایبرری‌های دات‌نت برای کار با REST APIها است.
مزایا:
پشتیبانی قوی از پارامترها و هدرهای پیچیده.
انعطاف‌پذیری بالا در مدیریت درخواست‌ها و پاسخ‌ها.
معایب:
کدها نسبت به Refit کم‌تر خوانا هستند.
نیاز به سریالایز/دسریالایز دستی در مواردی خاص.

مقایسه با EasyHttp
سادگی: EasyHttp برای توسعه‌دهنده‌هایی طراحی شده که به دنبال ساده‌ترین روش ارسال درخواست‌های HTTP هستن.
مزایا:
سریع و آسان برای شروع.
معایب:
عدم پشتیبانی پیشرفته از تایپ-سیف و ساختار اینترفیس.
انعطاف‌پذیری کم‌تر نسبت به RestSharp و Refit.

مقایسه با RestEase
مشابهت با Refit از این نظر که از اینترفیس‌ها برای تعریف API استفاده می‌کنه.
مزایا:
قابلیت تعریف و تغییر هدرها و پارامترها در سطح متد.
معایب:
پیچیدگی بیش‌تر در پیکربندی.
جامعه‌ی کاربری و مستندات کم‌تر نسبت به Refit.

چرا Refit رو انتخاب کنیم؟
خلاصه اینکه Refit به دلیل خوانایی بالا، پشتیبانی از تایپ-سیف، و مدیریت خودکار داده‌ها انتخاب مناسبی برای پروژه‌هاییه که به توسعه سریع و قابل نگهداری نیاز دارن.

در مقایسه با سایر لایبرری‌ها:

در مقابل HttpClient: کدهای ساده‌تر و خواناتر.
در مقابل RestSharp: رویکرد مدرن‌تر و استفاده از اینترفیس‌ها.
در مقابل EasyHttp: قابلیت‌های پیشرفته‌تر.
در مقابل RestEase: مستندات بهتر و پشتیبانی گسترده‌تر.

📚 مستندات
📱 ریپو گیت‌هاب
💬 نظر؟ بیشتر بدونیم: 🤓
Please open Telegram to view this post
VIEW IN TELEGRAM
🤓14👍21
🧠🧠 عامل‌های هوش مصنوعی یا AI Agents

عامل‌های هوش مصنوعی یا AI Agentها که این روزها خیلی تب داغی دارن، در واقع برنامه‌هایی هستن که می‌تونن به طور خودکار و مستقل تصمیم بگیرن و عمل کنن. این عامل‌ها از محیط اطرافشون اطلاعات می‌گیرن، اون‌ها رو پردازش می‌کنن و بر اساس هدفی که براشون تعریف شده، بهترین اقدام رو انجام میدن.

🎮 انواع عامل‌های هوش مصنوعی

1️⃣ عامل‌های بازتابی ساده (Simple Reflex Agents):
فقط بر اساس قوانین از پیش تعریف‌شده و داده‌های لحظه‌ای عمل می‌کنه. این نوع ایجنت‌ها نمی‌تونن به شرایطی که خارج از "شرط-عمل" مشخص‌شده هستن، واکنش بدن. برای همین، بیشتر برای کارهای ساده‌ای مناسبن که نیاز به آموزش پیچیده ندارن.
- مثل: یه ترموستات که فقط دمای فعلی رو می‌بینه و تصمیم می‌گیره که سیستم گرمایش رو روشن یا خاموش کنه.
- مثل: ریست کردن رمز عبور استفاده کنید، به‌شرطی که کلمات کلیدی خاصی رو در مکالمه‌ی کاربر شناسایی کنه.


2️⃣ عامل‌های بازتابی مبتنی بر مدل (Model-based Reflex Agents):
این ایجنت‌ها خیلی شبیه ایجنت‌های بازتابی ساده‌ اند، اما تصمیم‌گیری‌شون پیشرفته‌تره. به‌جای اینکه فقط یه قانون خاص رو دنبال کنن، نتایج و پیامدهای احتمالی رو قبل از تصمیم‌گیری بررسی می‌کنن. با استفاده از داده‌های موجود، یه مدل داخلی از دنیای اطراف خودشون می‌سازن و از اون برای تصمیم‌گیری کمک می‌گیرن.
- مثل یه ربات مسیریاب که نقشه محیط رو داره و می‌تونه بهترین مسیر رو پیدا کنه.
- مثل ماشین‌های خودران


3️⃣عامل‌های مبتنی بر هدف (Goal-based Agents):
اسم دیگه‌شون ایجنت‌های قاعده‌منده (rule-based agent) و توانایی استدلال قوی‌تری دارن. علاوه بر تحلیل داده‌های محیط، روش‌های مختلف رو مقایسه می‌کنن تا به بهترین شکل به هدفشون برسن. این ایجنت‌ها همیشه بهینه‌ترین مسیر رو انتخاب می‌کنن و برای انجام کارهای پیچیده مثل پردازش زبان طبیعی (NLP) یا اپلیکیشن‌های رباتیک خیلی مناسبن.
- مثال: سیستم‌های توصیه‌گر مثل اونایی که تو خرید آنلاین می‌بینیم.
- مثال: جاروبرقی‌های روبوتیک که یک هدف دارن، تمیز کردن تمام سطوح قابل دسترسی و مسیر و عملکردشون رو منطبق با رسیدن به این هدف تنظیم می‌کنن.

4️⃣ عامل‌های مبتنی بر مطلوبیت (Utility-based Agents):
اینا از الگوریتم‌های پیچیده‌ای برای کمک به کاربر استفاده می‌کنن تا بهترین نتیجه ممکن رو بگیرن. عملا سناریوهای مختلف رو با توجه به مقدار مطلوبیت یا مزایای هرکدوم مقایسه می‌کنن و گزینه‌ای رو انتخاب می‌کنن که بیشترین منفعت رو داشته باشه.
- مثل: مشتری‌ها می‌تونن از یه ایجنت مبتنی بر مطلوبیت برای پیدا کردن بلیط پرواز با کمترین زمان سفر استفاده کنن، حتی اگه قیمت بالاتر باشه.
- مثل: عامل‌های مورد کاربرد برای معامله سهام یا رمزارز که سعی می‌کنن بیشترین منفعت رو به کاربر برسونن.

5️⃣ عامل‌های یادگیرنده (Learning Agents):
دائماً از تجربه‌های گذشته خودشون یاد می‌گیرن و نتایجش رو بهبود می‌دن (مثل reinforcement learning توی ml). با استفاده از ورودی‌های حس‌گرها و مکانیزم‌های بازخورد، این ایجنت‌ها در طول زمان خودشون رو تطبیق می‌دن و یادگیریشون رو ارتقا می‌دن. علاوه بر این، از یه مولد مسئله استفاده می‌کنن تا وظایف جدیدی طراحی کنن و با استفاده از داده‌های جمع‌آوری‌شده و نتایج گذشته خودشون رو آموزش بدن.
- مثل: عامل‌های شناسایی کلاه‌برداری که مرتبا روش‌های جدید و راه دررو های قبلی رو بررسی می‌کنه و خودش رو تطبیق می‌ده
- مثل: عامل‌های پیشنهاد دهنده محتوا که بر اساس رفتار و بازخورد کاربر خودشون رو مرتبا بهبود می‌دن.

6️⃣عامل‌های سلسله‌مراتبی (Hierarchical Agents)
اینا یه گروه منظم از ایجنت‌های هوشمندن که در چندین سطح سازماندهی می‌شن. ایجنت‌های سطح بالاتر وظایف پیچیده رو به کارهای کوچکتر تقسیم می‌کنن و اون‌ها رو به ایجنت‌های سطح پایین‌تر محول می‌کنن. هر ایجنت به‌طور مستقل کار خودش رو انجام می‌ده و گزارش پیشرفت رو به ایجنت ناظر خودش ارسال می‌کنه. ایجنت سطح بالاتر نتایج رو جمع‌آوری می‌کنه و ایجنت‌های زیرمجموعه رو هماهنگ می‌کنه تا به‌طور جمعی به اهدافشون برسن.
- مثل: ایجنت کنترل ترافیک هوایی یا مدیریت انبار، اینا اینقدر پیچیده هستن و کارهای متعدد دارن که به صورت سلسله‌مراتبی مدیریت می‌شن.

7️⃣ سیستم‌های چند عاملی (Multi-Agent Systems)
سیستم‌های چندعاملی جذابیتشون توی تنوع و تعاملات غنی‌شونه. ایجنت‌های مختلف در تعامل با هم کار می‌کنن. هر ایجنت به‌صورت نیمه‌مستقل عمل می‌کنه ولی طوری طراحی شده که با بقیه ایجنت‌ها تعامل داشته باشه و یه اکوسیستم پویا بسازه که رفتار جمعی از اقدامات فردی به وجود بیاره.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍83
🔤 طبقه‌بندی‌های دیگه‌ای هم هستن و نمیشه گفت دقیقا فقط همین تعداد ایجنت وجود دارن، بعضی طبقه‌بندی‌ها، Robotic Agents یا Virtual Assistants رو هم مطرح می‌کنن یا همین ۷ تا رو هم گاها با اسامی مشابه معرفی می‌کنن.


به نظرم خوبه تا برنامه‌نویس‌ها ایجنت‌نویسی رو تمرین کنن، مدیرمحصول‌ها بهش فکر کنن و نادیده نگیرنشون. چون مثلا یه ایجنت ساده و جمع‌وجور می‌تونه کارتابل، یا لیست سفارشات یا... رو بررسی کنه و نتیجه رو یا توی رابط کاربری منعکس کنه یا بفرسته برای یه ایجنت دیگه برای یه کار دیگه.

و اینکه APIهامون رو سعی کنیم تا حد امکان Agent Friendly طراحی کنیم تا بعدن بتونیم agent ها رو توی چرخه اضافه کنیم. ایجنت‌ها دقیقا همون بخش‌هایی هستن که بهره‌وری و دقت کاربر رو بالا می‌برن و درست یا غلط، شاعبه‌ی حذف فرصت‌های شغلی زیادی رو در آینده به وجود آوردن. فرض کنید ایجنتی که اسناد مالی رو بررسی و موارد مشکوک رو جدا می‌کنه، چقدر وقت حسابرسی و ممیزی رو صرفه‌جویی می‌کنه؟ یا انواع مثال‌های دیگه حتمن در حوزه کاریتون به ذهنتون می‌ٰرسه.

💬 بهش فکر می‌کنین؟ براتون مفیده؟ نظرتون رو بگید...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7
⚙️ استفاده از سی‌شارپ بدون ساخت سولوشن و پروژه و...
«عینهو bash یا python»


پیش اومده براتون که نیاز داشته باشید از قابلیت‌های سی‌شارپ برای خودکار کردن کاری استفاده کنید ولی یا یه پوشه داشته باشید توش فقط و فقط فایل csx. بگذارید و صداشون کنید برای اجرا؟

مثلا: یه فایل داشته باشید به اسم backup_copy_notify.csx که از یه سری چیز بکاپ بگیره، یه جا کپی کنه و نتیجه رو ایمیل کنه. یا مثلا یه API صدا کنه یه چیزی از دلش بیرون بکشه و بنویسه توی یه فایل. یا...

یه ابزار ساده به نام dotnet-script هست که شاید توی vs code هم ازش استفاده کرده باشید (البته ذاتا جزو dotnet tool است و کامندلاینی است، ولی می‌شه همراه با script runner توی vs code هم به کار برد)

نصب: (مک، ویندوز، لینوکس)
dotnet tool install -g dotnet-script

برای یادگیری کافیه ۱۰ دقیقه وقت بگذارید و از مستندات خودش ببینید چیه و چجوری کاربرد داره

📱 ریپو گیت‌هابش
Please open Telegram to view this post
VIEW IN TELEGRAM
👍153
📱 ویدیو وبینار NET Aspire. روی یوتیوب قرار گرفت

ویدیو کامل دورهمی هفته گذشته با موضوع دات‌نت اسپایر شامل از معرفی تا پیاده‌سازی و دپلوی

مدت: ۱ ساعت و ۱۳ دقیقه

🔗 لینک یوتیوب
#dotnet #aspire #video
Please open Telegram to view this post
VIEW IN TELEGRAM
12
دورهمی آنلاین برای مرور اخبار نرم‌افزاری ماه، بررسی پروژه‌های محبوب ماه، و گپ و گفت فنی آزاد، یکشنبه ۳۰ دی (۱۹ ژانویه) ساعت ۱۸:۰۰ به وقت تهران:
Final Results
53%
حتمن میام.
17%
نمیام.
30%
اسم می‌نویسم ولی می‌دونم که نمیام.
7
سلام
دوستانی که جلسه یکشنبه میان، لطفا ایمیلشون رو اینجا بگن که براشون لینک گوگل میت رو بفرستم. اگر موضوع خاصی هم دوست دارید بگید یا بشنوید (خودتون در ارائه مشارکت کنید، یا من به موضوعات اضافه کنم (اگر بلد باشم البته)) توب فرم ذکر کنید لطفا 😊🌱

https://forms.gle/DwXev6SPuSftJsKv6
👍3
tech-afternoon pinned «سلام دوستانی که جلسه یکشنبه میان، لطفا ایمیلشون رو اینجا بگن که براشون لینک گوگل میت رو بفرستم. اگر موضوع خاصی هم دوست دارید بگید یا بشنوید (خودتون در ارائه مشارکت کنید، یا من به موضوعات اضافه کنم (اگر بلد باشم البته)) توب فرم ذکر کنید لطفا 😊🌱 https://fo…»
tech-afternoon
ببخشید بابت مشکلی که در لینک بود، برطرف شد 🙏
✉️ لینک جلسه برای دوستانی که فرم رو پر کرده بودن ارسال شد.
یه توضیح در مورد عنوان ایمیل که اشتباه بوده 😅 (لینک و محتوا کاملا صحیح است)

از اونجایی که تعداد محدودی ایمیل می‌فرستم استفاده از سرویس‌های آنلاین که بیشتر مناسب ارسال انبوه است، به‌صرفه نیست. و از طرفی فرمت HTML می‌خوام بفرستم که style هم توش گنجونده بشه، که اینم با امکانات اولیه جیمیل نمیشه. لذا یه کد جمع‌وجور نوشتم به نام چاپار که توی گیت‌هاب است، اسمش «چاپار» است. یه کد پایتونی (فعلا) که که تمپلیت HTML، لیست گیرندگان و کانفیگ رو می‌گیره و یکی‌یکی می‌فرسته (بهش REST API هم اضافه کردم). تمپلیت فارسی و انگلیسی اولیه (مینیمال و مشابه چیزی که دریافت کردید) هم توی ریپو است. شاید در آینده کامل‌تر ودارای UI و... هم بشه (شاید).

خلاصه اینکه عنوان «تغییر لینک دورهمی امروز» اشتباه است. ولی لینک و محتوای ایمیل، درست 😊
Please open Telegram to view this post
VIEW IN TELEGRAM
🙏10
سلام 😊
۳۰ دقیقه دیگه شروع می‌کنیم، و همه دعوتن 🌱

تِک‌اسپاگتی، دورهمی آنلاین حول نرم‌افزار!
گوگل میت
6🤮1
🚀 خلاصه اتفاقات پیش‌روی SQL Server در سال ۲۰۲۵

نسخه سنتی SQL Server 2025
نوامبر ۲۰۲۴، نسخه جدید SQL Server یعنی SQL Server 2025 معرفی شد و الان در نسخه پیش‌نمایش خصوصی قرار داره. ویژگی‌هایی مثل مدیریت مدل‌های هوش مصنوعی، پردازش Vectorها، و امکاناتی مثل پشتیبانی از نوع داده JSON، RegEx، Change Event Streaming و REST API رو با خودش همراه داره.

امسال اول پیش‌نمایش عمومی منتشر خواهد شد و بعدش هم به صورت عمومی در دسترس قرار می‌گیره.

نسخه SQL Database در Microsoft Fabric
پلتفرم Fabric یه بستر یکپارچه برای نگهداری داده‌ها است (Data Lake, Data Warehouse, BI, Real-Time Analysis, Data Science + Data Engineering Modeling, ETL/ELT) خب همه چیز داره جز یه چیز، که حالا با اضافه کردن پایگاه داده عملیاتی (Operational Database) که از SQL Server استفاده می‌کنه، کامل‌ شده. توی ۲۰۲۵ میشه در کسری از ثانیه دیتابیس جدید ایجاد کرد، اپلیکیشن‌های AI ساخت و همه این‌ها رو داخل اکوسیستم Fabric انجام داد.

اپلیکیشن‌های AI و SQL Server
یکی از قابلیت‌های جالب SQL Server 2025 اینه که می‌شه اپلیکیشن‌های RAG (Retrieval-Augmented Generation) و چت‌بات‌ها رو با استفاده از امنیت و مقیاس‌پذیری دیتابیس ساخت. مثلا:
*️⃣دسترسی به مدل‌های هوش مصنوعی Azure OpenAI
*️⃣نوع داده جدید برای Vector
*️⃣پشتیبانی از جستجوی برداری (Vector Search) با تکنولوژی DiskANN

ابزارها و کوپایلوت‌ها
سال ۲۰۲۴، ابزارها آپدیت شدن و سرمایه‌گذاری اصلی روی SQL Server Management Studio (SSMS) انجام شد. نسخه 21 SSMS پشتیبانی از Git داره و نسخه ۶۴ بیتی ویژوال‌استدیو رو داره.
همچنین کوپایلوت‌های جدیدی معرفی شدن که کمک می‌کنن با وارد کردن درخواست‌هایی مثل "دیتابیس من کند هست" یا "این ایندکس چرا استفاده نمی‌شه" مشکلات رو شناسایی و برطرف کنیم.

📎 اگر برای چند هفته بخواهیم مطالب دیتابیسی داشته باشیم روی PostgreSQL باشه (ری‌اکشن 🤪) یا SQL Server (ری‌اکشن ⚙️
Please open Telegram to view this post
VIEW IN TELEGRAM
1710
📎 حالا که علاقه‌مندان مطالب مرتبط با SQL Server بیشتر از PostgreSQL شد، در ابتدای مطالب، مسیر و شاکله رو عرض می‌کنم و روی هر کدوم بنا بر بازخوردها کمتر یا بیشتر تعمیق می‌کنیم.
بعد از این چند هفته تمرکز روی SQL Server سراغ PostgreSQL هم خواهیم رفت؛ در گذشته هم داشتیم که با هشتگ #MSSQL_to_PGSQL توی کانال در دسترس است.

مسیر یادگیری اصولی SQL Server، سلیقه من یا دیگری نیست! بلکه منطبق بر نظر خالق محصوله. مایکروسافت بارها مسیر یادگیری SQL Server (و سایر تکنولوژی‌هاش) رو با نیازهای بازار و تغییرات محصولاتش تغییر داده. ولی به صورت کلی و بیان ساده، SQL Server رو می‌شه با سرفصل‌های کلان زیر یاد گرفت:

دیتابیس دولوپر (Database Developer)
تمرکز اصلی دولوپر بر طراحی، توسعه و بهینه‌سازی ساختار و کد دیتابیسه. باید توی نوشتن کوئری‌های پیچیده، توابع، پروسیجرها وتریگرها تسلط داشته باشه و با امکاناتی مثل XML, JSON, Spatial, Graph، ساختارهای سلسله‌مراتبی و... آشنا باشه و البته درک عمیقی از نرمال‌سازی و طراحی اصولی دیتابیس داشته باشه.

تسلط روی نحوه‌ی کارکرد دیتابیس (مفاهیمی مثل Set Theory یا Predication Logic یا Cardinality)، تسلط روی T-SQL، درک عمیق مدل‌سازی داده (Database Modeling) بخشی از الزامات توسعه‌دهنده است. 🔤برخلاف نظر عده‌ای، من این مهارت‌ها رو برای ادمین و دیتا آنالیست و... هم به جد توصیه می‌کنم، ولی سطح پیشرفته دانش و مهارتش برای دیتابیس انجینیر و معماری داده، اجتناب‌ناپذیره.🔤


مدیر پایگاه داده (Database Administrator - DBA)
مسئولیت نگهداری، امنیت و عملکرد بهینه دیتابیس سرور رو بر عهده داره. باید با مفاهیم ابتدایی مثل backup و recovery، اشنا باشه و مانیتورینگ پرفرمنس، High Availabilty، Disaster Recovery تنظیمات امنیتی و مدیریت دسترسی‌ها رو خوب بلد باشه. همچنین توانایی عیب‌یابی و رفع مشکلات احتمالی بسیار مهمه. طبیعتا باید درک عمیقی از استورج داشته باشه.

مهندس پایگاه داده (Database Engineer)
ترکیبی از مهارت‌های توسعه و مدیریت رو نیاز داره؛ با تمرکز روی زیرساخت‌های دیتابیس، طراحی سیستم‌های توزیع‌شده، مدیریت Performance در سطح پیشرفته، و گاهی خودکارسازی (Automation) فرایندهای دیتابیس.

نیازمندی‌هاش هم علاوه بر موارد بالا، دانش عمیق از مفاهیم معماری نرم‌افزار، آشنایی با اسکریپت‌نویسی (PowerShell یا Python)، مدیریت سرورها و درک نیازمندی‌های Business برای طراحی راهکارهای مقیاس‌پذیر. علاوه بر تسلط بر SQL، باید با مفاهیم مهندسی نرم‌افزار، معماری سیستم و یکپارچه‌سازی سرویس‌ها رو هم دونست تا طراحی سیستم‌های مقیاس‌پذیر که از وظایف اصلیه این نقش است رو درست به انجام رسوند.


تحلیلگر داده (Data Analyst)
بیشتر روی استخراج و تحلیل داده‌ها برای کمک به تصمیم‌گیری‌های تجاری متمرکزه. تسلط روی کوئری‌نویسی پیشرفته، شناسایی الگوها و روندها (Trends)، گزارش‌گیری و ویژوالایز کردن داده‌ها ضروریه. آشنایی با ابزارهای BI مثل Power BI مزیت محسوب می‌شه (دوران SQL Server Reporting Services یا SQL Server Analysis Services تقریبا به سر رسیده؛ لذا ابزارهای مدرن‌تر جایگزین شدن). *️⃣درک عمیق از علم آمار رو به جد توصیه می‌کنم برای این نقش.

متخصص یادگیری ماشین (ML Specialist)
این مسیر ترکیبی از SQL Server و هوش مصنوعیه، خصوصا کار با مدل‌های جدید و LLMها یا AI Agentها. علاوه بر مهارت‌های پایه SQL، باید با SQL Server Machine Learning Services و زبان‌های Python یا R آشنا بود. همچنین درک عمیق از الگوریتم‌های یادگیری ماشین ضروری است. *️⃣ولی، درک دقیق از علم آمار، برای این نقش و تحلیلگر داده، از نون شب واجب‌تره.


یادمون نره که SQL Server طی چند دهه تحول و پیشرفت مداوم، بارها خودش‌ رو با trendهای روز هماهنگ کرده، روزی لازم شد تا برای پردازش داده‌های عظیم به Hadoop وصل شه یا با Spark سازگار شه، امروز عمیقا با سرویس‌ها ابری.
روزی لازم بود تا Data Warehouse رو دنبال کنه، ولی امروز Data Lake و Transactional Data Lake. یه روزی SSRS برای ساخت گزارشات و BI کافی بود، ولی امروز PowerBI و یکپارچگیش با Fabric لازمه.
یکی از مزیت‌های SQL Server و Oracle اینه که دوره آموزشی + منابع آموزشی رسمی دارن و این در تربیت متخصص بهتر، خیلی موثره.


💬 من برای ۲ هفته، تعداد موضوع رو انتخاب کردم، ولی خوشحال می‌شم تا دغدغه‌ها و موضوعاتی که «شما» دوست دارید بیشتر بدونید رو در نظر بگیرم 😉 پس بنویسید یا ایمیل کنید:
✉️ amin@mesbahi.net
Please open Telegram to view this post
VIEW IN TELEGRAM
93
📊 توابع جدید مرتبط با سری‌های زمانی در SQL Server 2022

داده‌های سری زمانی یکی از رایج‌ترین انواع داده‌ها توی سیستم‌های مدرنه؛ از لاگ‌های سرور گرفته تا داده‌های سنسورها و حتی قیمت سهام و فروش و...

این نوع داده‌ها بر اساس زمان ثبت می‌شن و تحلیلشون معمولاً به دسته‌بندی و تجمیع توی بازه‌های زمانی مشخص نیاز داره. قبل از نسخه ۲۰۲۲ SQL Server، انجام این کارها کلی کدنویسی دستی و پیچیدگی داشت؛ مثل استفاده از توابع عجیب‌وغریب برای ساخت بازه‌های زمانی یا تولید داده‌های مصنوعی برای شبیه‌سازی سری‌ها. اما حالا با ابزارهایی مثل DATE_BUCKET و GENERATE_SERIES این مشکلات تا حد زیادی حل شده و می‌تونیم داده‌ها رو خیلی راحت‌تر دسته‌بندی و تحلیل کنیم.

نتیجه؟ هم توی زمان صرفه‌جویی می‌کنیم، هم کدمون تمیزتر می‌شه و هم بابت هر کار ساده‌ای نیاز به مهاجرت به دیتابیس انجین‌های سری‌زمانی مثل InfluxDB نمی‌شیم.

این دو تا پوستر رو برای معرفی و توضیح این توابع ببینید و طبیعتا اگر نظر و سوالی دارید بنویسید 😉

#SQLServer #DB #SQLServer_Week
👍7
💡 واقعا نیازه تا به Rust جدی فکر کنیم؟

چند وقته توی کامیونیتی توصیفات عجیب و غریبی توسط جَواگِره عزیز (جمع مکسر جوگیر) راجع به Rust می‌بینیم. گویی که «امروزه، عصر Rustنویسی است و مابقی کدها شایسته‌ی لعنت کائنات» (همینو در مورد چیزهای دیگه هم می‌بینیم، ولی باشه برای پست‌های بعدی 😁)

خیلی مهمه که بدونیم «چرا» لینوکس، ویندوز، اندروید و کلی پروژه مهم دیگه در حال بازنویسی برخی کدهای موجود و توسعه برخی کدهای جدیدشون با Rust هستن؟
مثلا توی کرنل ویندوز یک سال و نیمه که راست به صورت رسمی وجود داره (System32\win32kbase_rs.sys) یا لینوکس کرنل ۶.۱۳ که این هفته ریلیز شد علاوه بازهم بخش‌های جدیدتری رو با راست بازنویسی کرده (البته خیلی وقته برخی درایورهاش رو با راست نوشتن) و...

با اینکه فریم‌ورک وب و دسکتاپ و... برای راست می‌بینیم، حتی جایگزین برای الکترون و.. هم داره، باید قبل از افتادن توی حباب، ببینیم «چه مسئله» ای رو قراره برامون حل کنه!

علی‌ای‌حال؛ اگر خواستید بیشتر باهاش آشنا شید (برای یادگیری مفاهیم طراحی زبان، روش‌های مدیریت هم‌زمانی و حافظه و... مایکروسافت به عنوان یکی از اعضاء جدی و مهم بنیاد راست، مستندات خیلی خوبی ویژه‌ی توسعه‌دهندگان دات‌نت که قصد مهاجرت یا یادگیری Rust دارن، توسعه داده که می‌تونید به عنوان یک رفرنس عالی ازش استفاده کنید)

https://microsoft.github.io/rust-for-dotnet-devs/latest/
Please open Telegram to view this post
VIEW IN TELEGRAM
7👍5
image_2025-01-23_00-38-51.png
372.4 KB
👨‍💻 وقتی دیتابیس سرور شلوغه!!

قابلیت WAIT_AT_LOW_PRIORITY
تاحالا شده موقع ساخت یا بازسازی ایندکس روی سروری که کاربرهای هم‌زمان زیادی داره دچار مشکل شید و lockها جلو کارتون رو بگیرن؟ اگر پاسخ مثبته پوستر رو بخونید 😊

قابلیت RESUMABLE
حالا یه سوال دیگه؟ تا حالا شده بخواهید روی یک جدول بزرگ ایندکس / کلید اصلی بسازی یا ایندکس بازسازی کنی ولی حجم فعالیت سنگین باشه و آرزی کنی ای کاش می‌شد تا اینجا رو pause کنم، بقیه‌اش رو بعدن ادامه بدم؟ اگر پاسخ مثبته، این چند کد رو که توی نسخه ۲۰۲۲ کار می‌کنه ببین لطفا:

ALTER TABLE table1
ADD CONSTRAINT PK_Constrain PRIMARY KEY CLUSTERED (a)
WITH (ONLINE = ON, MAXDOP = 2, RESUMABLE = ON, MAX_DURATION = 240);


ALTER TABLE table2
ADD CONSTRAINT PK_Constrain UNIQUE CLUSTERED (a,b)
WITH (ONLINE = ON, MAXDOP = 2, RESUMABLE = ON, MAX_DURATION = 240);

یک توصیه دوستانه: اگر حتی از دور و بر دیتابیس (حالا هر دیتابیسی، از PostgreSQL و MySQL و Oracle و MS SQL Server تا MongoDB و...) رد می‌شید، «حتما» ایندکس‌ها رو عمیقا یاد بگیرید و مسلط باشید.

این موضوع اینقدر مهمه که اگر فکر می‌کنید در درک صحیح و عمیق ایندکس مشکل دارید، با ری‌اکشن ⚙️ برای برگزار کردن کلاس آنلاین اعلام کنید (به ۳۰ تا برسه حداقل ۳ جلسه آنلاین روش خواهیم داشت)
Please open Telegram to view this post
VIEW IN TELEGRAM
47