Learning With M
1.65K subscribers
45 photos
15 videos
3 files
68 links
سلام.
من مسعود دانش پور هستم.
همسر، پدر، پسر، برادر، انسان و مهندس نرم افزار.👻

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

آکادمی یادگیری با M :
https://academy.daneshpour.ir
Download Telegram
Forwarded from tech-afternoon (Amin Mesbahi)
🚀 💸 یک خبر خوب! امروز گیت‌هاب از سرویس رایگان کوپایلوت رونمایی کرد و بلافاصله هم تیم ویژوال‌استدیو نسخه رایگان رو برای ویژوال‌استدیو ارائه کرد.

من دو ساله مشترک کاپایلوت هستم و حقیقتا سرویس خوبیه. حتی از IntelliCode و JetBrains AI و Tabnine و Cody و Tabby هم که من تست کردم بهتر بوده (در تست‌ها و نیازهای شخصی من، که قطعا جهان‌شمول نیست)

و AI چند ساله که کم‌کم بخشی از هزینه‌های سبد خانواده شده که باید بهش جدی‌تر فکر کرد. از بس که متعدد شدن!

خبر گیت‌هاب
خبر ویژوال‌استدیو
خبر VS Code
9👍6🔥3
📢 معرفی Semantic Kernel مایکروسافت: گامی به سوی هوش مصنوعی قدرتمند در توسعه نرم‌افزار 🚀

🔍 ابزار Semantic Kernel چیست؟
ابزار Semantic Kernel یک کتابخانه متن‌باز از مایکروسافت است که به توسعه‌دهندگان کمک می‌کند هوش مصنوعی (AI) و مدل‌های زبان بزرگ (LLM) مانند ChatGPT و GPT-4 را به برنامه‌های خود اضافه کنند. این ابزار، قدرت هوش مصنوعی را با منطق‌های سنتی کدنویسی ترکیب می‌کند.

💡 قابلیت‌های کلیدی Semantic Kernel:


قابلیت Skills (مهارت‌ها): تعریف و اجرای مهارت‌های مبتنی بر هوش مصنوعی برای انجام کارهای پیچیده.
🔗 اتصال به مدل‌های LLM: اتصال آسان به مدل‌های OpenAI و Azure OpenAI.
🧠داشتن Memory (حافظه): قابلیت ذخیره و بازیابی اطلاعات برای شخصی‌سازی تجربه کاربری.
🗂️امکان Planner (برنامه‌ریز): ایجاد و اجرای برنامه‌های پویا برای مدیریت اهداف و وظایف.
📡 قابلیت Connectors (اتصال‌دهنده‌ها): امکان ادغام با سرویس‌های شخص ثالث و APIهای دیگر.

💥 چرا Semantic Kernel مهم است؟
اگر بخواهید یک چت‌بات پیشرفته، یک سیستم پاسخ‌گویی خودکار، یا یک برنامه مدیریت هوشمند بسازید، Semantic Kernel این امکان را برای شما فراهم می‌کند تا هوش مصنوعی را به راحتی در کدهای C# و Python خود ادغام کنید.

🌐 مناسب برای توسعه‌دهندگان C# و Python
ابزار Semantic Kernel به شما امکان می‌دهد مهارت‌های هوش مصنوعی را در پروژه‌های نرم‌افزاری خود بگنجانید. اگر به دنبال ساخت سیستم‌های هوشمند با AI هستید، این ابزار دقیقاً همان چیزی است که نیاز دارید!

به زودی یک ویدیو برای پیاده سازی Semantic Kernel و اتصالش به AvvalAI پست می کنم که ببینید چطوری میشه پروژه هایی بر بستر AI داشته باشید.


📢 نظر شما درباره Semantic Kernel چیه؟ آیا به این تکنولوژی علاقه‌مندید؟ 👇
👍111
Forwarded from tech-afternoon (Amin Mesbahi)
انواع استراتژی‌های تاب‌آوری نرم‌افزار (Resiliency Strategy)

مفهوم Resiliency یا تاب‌آوری، به توانایی یک سیستم برای بازیابی شرایط پایدار در صورت بروز خطا گفته می‌شه. حالا این بازیابی می‌تونی تلاش برای بازیابی باشه، یا انتخاب راه جایگزین. مثل اینکه شما ۲ بار تلاش می‌کنی از API آب‌وهوا مقدار دمای فعلی یک منطقه رو بگیری، هر بار با فاصله زمانی ۵ ثانیه API رو صدا می‌زنی ولی بعد از اینکه پاسخ موفق نمی‌گیری (تا اینجا به این می‌گن استراتژی retry) بعد تصمیم می‌گیری از cache آخرین مقداری که کم‌تر از ۵ ساعت گذشته وجود داشته رو استفاده کنی که فعلا کار راه بیوفته (استراتژی fallback) یا ... به هر کدوم از این رفتارها برای تداوم کار و مقابله با موانع، می‌گن resiliency strategy.

کتابخونه Polly محبوب‌ترین در بین دات‌نتی‌هاست. و تو دل Aspire هم ازش استفاده شده، برای درک بهتر ویدیوی Aspire که به زودی پابلیش می‌شه، خوبه یه مرور روی انواع استراتژی‌ها کنیم...
—————————
دو گروه اصلی داریم:

⚙️گروه استراتژی‌های Reactive (واکنشی)
وقتی به کار می‌رن که یک خطا یا مشکلی رخ داده و سیستم باید به شکلی واکنش نشون بده.

🛡 ۱: استراتژی Retry
فرضیه: خطاها موقتی هستن و ممکنه با کمی تأخیر و تلاش مجدد برطرف بشن.

در این استراتژی، سیستم تلاش می‌کنه که یک عملیات ناموفق رو بعد از یک بازه‌ی زمانی مشخص دوباره امتحان کنه. این بازه زمانی می‌تونه ثابت یا متغیر باشه (مثل Exponential Backoff). مثلاً اگر سرور موقتی قطع شده باشه، با چند بار Retry ممکنه مشکل حل بشه. در Polly، این با “Retry Policy” قابل پیاده‌سازی است. و تعداد دفعات و بازه زمانی بین هر تلاش به تصمیم ما وابسته است.

🛡 ۲: استراتژی Circuit-Breaker
فرضیه: وقتی سیستم به شدت دچار مشکل می‌شه، بهتره سریعاً فرآیندها متوقف بشن به جای اینکه کاربران منتظر بمونن.

چطور کمک می‌کنه؟ مدار رو قطع می‌کنه (اجرای درخواست‌ها رو متوقف می‌کنه) در زمانی که خطاها از حدی مشخص بیشتر می‌شن (مثل وقتی می‌فرسته به صف ولی هِی روی هم انباشت می‌شه و از اون طرف پردازش نمی‌شن)

شبیه به فیوز برق که اگر بیش از حد فشار وارد بشه، مدار رو قطع می‌کنه. این استراتژی به سیستم اجازه می‌ده برای مدتی مشخص درخواست‌ها رو به مقصد ارسال نکنه تا از خرابی‌های بیشتر جلوگیری بشه. مثلاً در Polly می‌تونید مدت‌زمانی که Circuit باز می‌مونه و شرایط بازگشت به حالت نرمال رو تنظیم کنیم.

🛡 ۳: استراتژی Fallback
فرضیه: خطا تداوم خواهد داشت؛ پس برای پلن B برنامه‌ریزی می‌کنیم.

چطوری کمک می‌کنه؟ یک مقدار یا راه حل جایگزین در صورت بروز یا تداوم خطا ارائه می‌ده.

وقتی یک عملیات شکست می‌خوره، به جای نمایش خطا به کاربر، یک نتیجه جایگزین برمی‌گرده. مثلاً به جای اینکه پیام “سرور API در دسترس نیست” نمایش داده بشه، می‌تونید یک مقدار ذخیره شده از کش رو ارائه بدید.

🛡 ۴: استراتژی Hedging
فرضیه: گاهی اوقات برخی مسیرها شاید کند یا حتی ناموفق باشن؛ پس بهتره چندین راه برای رسیدن به هدف در نظر بگیریم، هر کدوم زودتر جواب داد، همون.

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

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

⚙️گروه استراتژی‌های Proactive (کنشگر)
این استراتژی‌ها برای پیشگیری از بروز مشکلات در سیستم طراحی شده‌اند.

🛡 ۱: استراتژی Timeout
فرضیه: بعد از مدت زمانی مشخص، موفقیت بعیده.

چطوری کمک می‌کنه؟ تضمین می‌کنه که درخواست‌ها بیشتر از زمان مشخص منتظر نمی‌مونن.

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

🛡 ۲: استراتژی Rate Limiter
فرضیه: محدود کردن تعداد درخواست‌هایی که سیستم در یک بازه زمانی مشخص می‌پذیره (راهی برای کنترل بار ورودی).

چطوری کمک می‌کنه؟ اجرای درخواست‌ها رو محدود می‌کنه تا از حد مشخصی فراتر نره.

برای جلوگیری از بار زیاد روی سیستم، این استراتژی تعداد درخواست‌ها در یک بازه زمانی مشخص رو محدود می‌کنه. مثلاً اگر کاربران زیادی همزمان به سیستم درخواست بفرستن، Rate Limiter می‌تونه از خرابی جلوگیری کنه.

—————————

ما می‌تونیم از یک یا ترکیبی از چند استراتژی برای افزایش تاب‌آوری سیستم‌هامون استفاده کنیم.

🔗 رفرنس جهت مطالعه عمیق‌تر

💬 نظر؟ تجربه؟ سوال؟
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8👍1
#موقت
آقا نگید یه وقت چرا همش از کانال استاد فوروارد می کنی.
استاد مصباحی ماشالله گنجینه ای تمام نشدنی هستند، ۲۰ برابر من هم تعهد به انجام کار و انتقال دانش دارن.
حیفه نتیجه تحقیقات و دانششون رو منتشر نکرد.
16
Forwarded from TechTube 𝕏 تک توب
This media is not supported in your browser
VIEW IN TELEGRAM
گوگل ابزاری به نام Whisk رو عرضه کرده که امکان ترکیب عکسهای مختلف با هوش مصنوعی رو میده.

در این ابزار یک تصویر به عنوان سوژه، یک تصویر برای الهام گیری از اون برای پس زمینه و یک تصویر برای مشخص کردن استایل عکس، اپلود میکنید یا هر کدوم از اونهارو با تایپ پرامپت مدنظرتون وارد میکنید و در نهایت هوش مصنوعی ساخت عکس جدید Imagen 3 اونهارو با هم ترکیب میکنه و عکسی مدنظرتونه رو تحویل میده.

این ابزار از اینجا به صورت رایگان قابل استفاده هست ولی برای دسترسی به اون IP امریکا نیازه.

🔎 blog.google

📍 @TechTube
👍3
جمله روز

The greatest enemy of knowledge is not ignorance, it is the illusion of knowledge.


- Stephen Hawking
👍17👏3🤔1
💎 یه توصیه به خودم می کنم :

آقا داکیومنت ابزار رو بخون بعد سرچ کن، توی داکیومنت خوندن هم اونجا هایی که بولد شده یا توی باکس رنگی گذاشتن یه دلیلی داشته و مهم بوده !

پ.ن: بعد از 4 ساعت ور رفتن با Masstransit و سرچ و ChatGPT آخرش مشکل توی داکیومنت Masstransit همون صفحه اول بود ! 😮‍💨
👍30😁7
😁31
همونطور که احتمالا در جریان هستید، تیم .Net به دلیل اینکه Swashbuckle به درستی آپدیت نمی شد و مشکلاتش رفع نمی شد، از .Net 9 این لایبرری رو حذف کردند.
این یعنی اگر شما پروژه جدید با .Net 9 بسازید و پروژه رو اجرا کنید، به جای صفحه Swagger با 404 رو برو می شید. در عوض تیم .Net، پیاده سازی OpenAPI رو اضافه کردن. برای همینه که توی program.cs شما فقط کد های زیر رو می بینید :

builder.Services.AddOpenApi()
app.MapOpenApi();


و این یعنی اگر صفحه openapi/v1.json رو باز کنید با یک فایل json مواجه میشید که وظیفه تولید مستندات OpenAPI رو داره.

💎 خب،از اونجایی که برای ارتباط بهتر استفاده کنندهای API های ما یا تست خودمون، اگر یک UI مثل Swagger داشته باشیم خیلی راحت تریم باید به فکر جایگزین باشیم.


شما هنوز می تونید به صورت دستی Swashbuckle رو اضافه کنید و کانفیگش کنید، ولی از اونجایی که بعضی وقت ها : عدو شود سبب خیر من یکم گشتم و گشتم تا یک جایگزین خوب پیدا کنم.

این شما و این Scalar.
این جناب Scalar یک پروژه اوپن سورس هست که خیلی کلاینت های مختلفی از جمله .Net داره که به شما کمک میکنه یک کلاینت تر و تمیز و با قابلیت هایی به مراتب بهتر از Swashbuckle برای کار با API های خودتون داشته باشید.

پیاده سازی و نصب راحتی داره، فقط کافیه که اول به پروژه اضافش کنید :

dotnet add package Scalar.AspNetCore 


و بعد به دستور زیر پیکر بندیش کنید :

app.MapScalarApiReference();


هممون هم حواسمون هست که ابزار ها فقط برای محیط های Development و Staging هستند و نباید برن روی Production !

شما از چه ابزاری روی .Net 9 دارید استفاده می کنید ؟ چالش چی تو دست و بالتون دارید ؟ 😂
👍21👏1
عزیزان زحمت کشیدن حق مسلممون رو بهمون برگردوندند.

گویا واتس آپ به درد نخور و گوگل پلی رفع فیلتر شد !
🤣12👍9
#فان 😆

پ.ن ۱ : کدی که سخت نوشته میشه، معمولا غلطه دیزاین شده که انقدر سخت نوشته شده.

پ.ن ۲: از نظر من کد خوب خودشو توصیف می کنه و کامنت معنی نمیده. کامنت فقط برای توضیح خود متد اونم روی اینترفیسش که امپلیمنتیشن رو نمیبینیم به درد می خوره.

نظر شما چیه؟
👍134🔥1🤡1
Forwarded from tech-afternoon (Amin Mesbahi)
🧠 مروری بر Semantic Kernel، نرم‌افزار، ولی باهوش!

شاید شوخی دور از واقعیتی نباشه که طی این چند سال، اینقدر که همه روی AI تمرکز کردن یا باهاش شوآف کردن، اگر روی پیدا کردن قاتل بروسلی وقت گذاشته بودن حتمن اون نامرد رو دستگیر کرده بودن!

مایکروسافت هم که به لطف سرمایه‌گذاری‌های هوشمندانه‌ای که روی استارتاپ‌ها و شرکت‌های مستعد داشته، اوضاع خیلی خوبی داره. یادمون نره همون‌طور که برنامه‌نویسی وب یا معماری سرویس‌گرا، ۲۵ سال پیش چیزهای مدرنی بودن ولی الان بدیهی و پیش‌پا افتاده به شمار میان؛ استفاده از AI توی نرم‌افزارها هم تا چند وقت دیگه (خیلی خیلی کمتر از ۲۵ سال، حتی کمتر از ۵ سال دیگه) یه موضوع بدیهی خواهد بود.

🎅 دو تا خاطره توی کامنت این مطلب می‌گذارم (خاطره است و اگر نخونید چیزی از مطلب رو از دست ندادید)

البته منظورم چپوندن زورکی و شوآف نیست، بلکه چیزی برای تسهیل نیازهای کاربر نهایی و ارتقاء عملکرد خود سیستمه.

کتابخونه‌ Semantic Kernel که فقط هم برای دات‌نتی‌ها نیست و پایتون و جاوا رو هم پشتیبانی می‌کنه؛ یک کتابخونه‌ی متن‌بازه که به عنوان میان‌افزار (middleware) عمل می‌کند.

یعنی چی؟ یعنی این کتابخونه به توسعه‌دهنده کمک می‌کنه تا به سادگی مدل‌های هوش مصنوعی مختلف رو با کدهای موجودش ترکیب کنه و عامل‌های هوشمند (AI agents) بسازه، (بدون داشتن درک عمیق از دل و روده‌ی AI یا LLM)

یکم بیشتر؟ چشم. مثلا شما می‌خواهید از مدلی که یه بابایی یا یه شرکتی، رایگان یا پولی، روی کامپیوتر خودتون یا روی کلاد، وجود داره و مثلا بهش یه متن می‌دید و می‌گید با صدای فلان خواننده بخونه؛ یا یه متن می‌دید می‌گید یه عکس بر اساسش بسازه؛ یا سوال و جواب عادی؛ یا سوال و جوابی که مبنای پاسخش دیتای توی دیتابیس شماست؛
مثلا شما یه نرم‌افزار سنتی فروشگاه آنلاین لباس داری؛ کاربر می‌گه برام یه ست لباس مهمونی برای فصل پاییز و سقف قیمت فلان، برای یک خانم ۳۰ ساله با سایز M پیشنهاد کن، این یه متنه، ولی Semantic Kernel این امکان رو می‌ده به راحتی از دل دیتای ساختار یافته دیتابیس، فرض کنید جدولی که نام کالا، قیمت، رنگ و سایز رو داره، کوئری مورد نیاز رو بسازه. چجوری؟ با دیتایی که توی مدل زبانی داره می‌فهمه رنگ‌های مناسب با پاییز، یا نوع لباس‌های مورد نیاز برای یک مهمانی (شلوار، پیراهن، پالتو، کفش، شال‌گردن برای پاییز و یک خانم نیازه) اینا رو از دل دیتابیس می‌کشه بیرون و متن هم از نتیج خروجی که احتمالا یه لیست از آبجکت کالا است بسازه که: فلانی‌جون اگر اینو اونو اون‌یکی رو ست کنی برای پاییز خوبه و به بودجه‌ات هم می‌خوره!

🧞‍♂️ این یه روزی جادو بود، یه روز رویا بود، یه روز محال بود؛ الان با وجود امکانات ساختاری وکتورها و کتابخونه‌ها به راحتی شدنیه، حتی با تغییرات کم در کدهای فعلی!

این Semantic Kernel در حقیقت یه پُله بین دنیای برنامه‌نویسی سنتی و مدل‌های زبانی بزرگ (LLM).
فعلا هم با زبون‌های C#، Python و Java قابل استفاده است. یه لایه‌ی میانی که درخواست‌های مدل‌های AI رو به توابع تعریف‌شده توی کد ترجمه می‌کنه و پاسخ‌ها را مدیریت می‌کنه (تبدیل متن به یه کلاس، و ساخت متن با استفاده از دیتای ساختاریافته).

مدل‌های هوش مصنوعی مثل GPT و DALL-E و… تحول بزرگی توی نحوه تعامل ما با نرم‌افزار ایجاد کردن. اما استفاده از این مدل‌ها توی محیط‌های واقعی چالش‌هایی هم داره:
🔤 مدیریت درخواست‌ها: چجوری درخواست‌های پیچیده کاربر رو به توابع کدنویسی ترجمه کنیم؟ (مثلا ورودی‌های متد GetProductsByDescription)

🔤 اتصال به سیستم‌های موجود: چجوری هوش مصنوعی با APIها، دیتابیس‌ها، یا فرآیندهای کسب‌وکاری تعامل داشته باشه؟

🔤 امنیت و مقیاس‌پذیری: چجوری میشه این قابلیت‌ها رو به‌صورت ایمن (جلوگیری از نشت اطلاعات یا دسترسی به داده‌هایی که نباید بهش دسترسی داشته باشع) و توی مقیاس بزرگ ارائه کرد؟

و Semantic Kernel برای پاسخ به این چالش‌ها طراحی شد؛ و هدفش ساده‌سازی یکپارچه‌سازی هوش مصنوعی در پروژه‌های واقعیه.

👀 چی کار می‌شه باهاش کرد حالا؟
- ایجاد ربات‌ها و عامل‌های هوشمند: مثل چت‌بات‌هایی که به‌صورت پویا تصمیم می‌گیرن یا فرآیندها رو خودکار می‌کنن.

- یکپارچه‌سازی آسون با کد موجود: با استفاده از قابلیت Function Calling، می‌شه مدل‌های AI رو به کدهای موجود متصل کرد.

- اتوماسیون فرآیندهای کسب‌وکار: مثل پردازش خودکار درخواست‌های مشتری‌ها یا مدیریت منابع سازمانی.

- مدیریت آسون هوش مصنوعی: فراهم کردن قابلیت مشاهده و نظارت بر عملکرد مدل‌های مختلف.

- اتصال به مدل‌های مختلف AI (مثل OpenAI، یا مدل‌هایی که روی ماشین خودتون دارید)

- پشتیبانی از Vector Store‌ها


اگر دوست دارید این موضوع ادامه بدم:
ری‌اکشن 🤓
Please open Telegram to view this post
VIEW IN TELEGRAM
🤓18👍7
قانون هایروم (Hyrum’s Law)-بخش دوم

به عبارت دیگر، در صورتی که رابط (interface) به تعداد کافی استفاده‌کننده داشته باشد، مجموع استفاده‌کنندگان خواسته یا ناخواسته به بخش‌های مختلف پیاده‌سازی وابسته خواهند شد. نتیجه‌ی چنین اتفاقی، سخت‌تر شدن اعمال تغییرات در پیاده‌سازی رابط‌ها است زیرا از این نقطه به بعد، پیاده‌سازی نه تنها باید با بخش مستندشده و شفاف رابط‌ها (explicitly documented interface) تطبیق داشته باشد بلکه باید با بخش پنهان و غیرشفاف رابط‌ها (implicit interface) که ناشی از روش استفاده‌‌ از آنهاست نیز هم‌خوانی داشته باشد. ما معمولن این پدیده را «سازگاری با خطا برای خطا« (bug-for-bug compatibility) می‌نامیم [«سازگاری با خطا برای خطا» یا «سازگاری با خطا» تکنیکی است که در آن خطاها یا رفتارهای نادرست نسخه‌‌ی قبلی یک نرم‌افزار در نسخه‌ی جدید آن با آگاهی و خودخواسته باقی گذاشته می‌شوند. مترجم]

شکل‌گیری رابط پنهان (implicit interface) معمولن تدریجی است و استفاده‌کنندگان رابط عمومن از شکل‌گیری آن آگاهی ندارند. برای مثال، یک رابط ممکن است هیچ تضمین یا اطلاعاتی درباره‌ی کارایی و سرعت خود اعلام نکرده باشد، با این حال استفاده‌کنندگان بر اساس تجربه‌ی خود، کم‌کم به این جمع‌بندی می‌رسند که سطح سرعت و کارایی سیستم چقدر است و از آن به بعد انتظار دارند که کارایی سیستم دست‌ِکم در همان سطح باقی بماند یا بهبود پیدا کند. این گونه انتظارات به بخشی از رابط پنهان (implicit interface) سیستم تبدیل می‌گردد و از آن پس، تغییرات سیستم باید این سطح از کارایی را پوشش دهد تا کارهای استفاده‌کنندگان دچار اختلال نگردد.

همه‌ی استفاده‌کنندگان فقط به یک رابط پنهان یکسان وابسته نمی‌شوند. با فرض وجود تعداد کافی استفاده‌کنندگان، رابط پنهان در نهایت کاملن با پیاده‌سازی مطابقت خواهد داشت. در چنین شرایطی، رابط (interface) محو می‌شود و پیاده‌سازی (implementation) جای رابط را می‌گیرد و هر گونه تغییری در آن، انتظارات استفاده‌کنندگان را مختل می‌کند. اگر خوش شانس باشیم، آزمون‌‌های جامع و خودکار می‌توانند این گونه مغایرت با انتظارات استفاده‌کنندگان را پیدا کنند ولی نمی‌توانند آنها را رفع کنند.

رابط‌های پنهان (implicit interface) نتیجه‌ی رشد طبیعی و ارگانیک سیستم‌های بزرگ هستند. هرچند آرزو می‌کنیم که چنین مشکلی برای سیستم‌ها به وجود نیاید، اما عاقلانه است که موقع ساخت و نگهداری سیستم‌های پیچیده، مهندسان و طراحان رابط‌های پنهان را مد نظر داشته باشند و به آن توجه کنند. به یاد داشته باشید که رابط‌های پنهان چگونه طراحی و تکامل سیستم‌ها را محدود می‌کنند و دقت کنید که برای هر سیستم پراستفاده‌ای، رابط (interface) مفهومی بسیار پیچیده‌تر از چیزی است که فکر می‌کنید.

هویرام کیست؟

هویرام رایت (Hyrum Wright) دانشمند ارشد (Principal Scientist) ادوبی (Adobe) است و قبل از آن، مهندس نرم‌افزار در گوگل بود. او روی ابزارها و زیرساخت مدیریت تغییر کد در مقیاس بزرگ کار می‌کند و سال‌های زیادی را صرف بهبود کتابخانه‌های زیربنایی و مبتنی بر سی‌پلاس‌پلاس گوگل کرده است. او یکی از نویسندگان کتاب Software Engineering at Google نیز است.

منبع:
www.hyrumslaw.com

گزیده:
پسری از پدر برنامه‌نویس‌اش پرسید «بابا، واسه چی خورشید از شرق طلوع می‌کنه و در غرب غروب؟»
پدرش پاسخ داد:
پسرم داره کار می‌کنه کاری به کارش نداشته باش! 😀

A son asked his father (a #programmer) why the sun rises in the east, and sets in the west. His response? It works, don’t touch!

https://t.me/bibalan_com
https://bibalan.com/?p=4652
👍4
This media is not supported in your browser
VIEW IN TELEGRAM
#فان : استاد تمام فصول، م مدحج !

#هیراچی

#جدی : هرکی بتونه به صورت اصولی هیراچی رو توضیح بده یه جایزه پیش من داره.
🤣15😐5😁2
#پاراگراف_سال_2024

Our souls sometimes feel like a dark night sky, searching, drifting. At times, we all feel lost and disconnected, not because of anything we've done, but simply because we're alive and we're human. It's a natural part of the journey on this planet because we are all human.

But what if these moments of uncertainty, these moments of confusion, are actually opportunities? What if there are moments that help guide us to bigger, brighter, better futures? Some barriers are insurmountable, but there's so many barriers that just exist within us that are barriers that we've created. And just as we build the barriers with work and with patience, we can also break them down. Inside each one of us, there's the potential for a journey that's as beautiful as the world around us. It takes work, but ultimately it's up to us to embrace it. The road ahead can go in lots of different directions, but the first step is leaving the cave. Once you leave the cave of self-doubt and confusion, the outside world is waiting with all of its beauty.

برگرفته از دکلمه ابتدایی :

Armin van buuren & Moby- the road ahead

https://youtu.be/93ELyI4gfTc?si=0wmORIVXjnWrmHi6
3
رضا پدرمون بود، محمدرضا دانش پور.

مادرم همیشه پدر رو رضا صدا می زد. پدرم عاشق یادگیری بود، سال های آخر عمرش به خاطر مشکلات بینایی که داشت، برای یادگیری از پادکست استفاده می کرد. اون الهام بخش ما بود برای یادگیری و رشد.
#بورسیه_رضا، بورسیه ای هست که ما هر سال در روز سالگرد پدرم (19 دی ماه) ثبت نامش رو شروع خواهیم کرد. توی این بورسیه، ما 1 سال کامل دو نفر رو برای تبدیل شدن به یک مهندس نرم افزار خبره که بتونه یک خانواده رو پشتیانی کنه آموزش می دیم. هرچه که در این مسیر یادگرفته ایم رو بدون منت در اختیار 2 نفر منتخب قرار خواهیم داد.

تمرکز #بورسیه_رضا بر روی نوجوان های مستعدی هست که دسترسی آنها به آموزش و رشد به دلایلی مثل : هزینه، سخت افزار، دوری از مراکز آموزشی، نبود امکانات و ... غیر ممکن است، طراحی شده است.

ممنون میشم فقط افرادی که به بورسیه تحصیلی نیاز دارند رو به این دوره معرفی کنید تا هزینه های بررسی و انتخاب برای ما کاهش پیدا کنه.



برای ثبت نام این دوره می تونید از این بخش اقدام کنید :

https://B2n.ir/rezbrs1403
برای اطلاعات بیشتر و پرسش های بیشتر هم می تونید این بخش رو ببینید :
https://B2n.ir/rezbrs
78🔥13👏6🫡4👍1
جمله روز:

Software development is a learning process; working code is a side effect.

- Alberto Brandolini
👏22👍3👌2🤔1
امروز می‌خوام در مورد Exchange ها در RabbitMQ براتون بگم. Exchange ها مثل پستچی‌های پیام‌رسان عمل می‌کنن و تصمیم می‌گیرن پیام‌ها رو چطوری به صف‌ها (Queue) برسونن. بیاید ببینیم هر کدوم چیکار می‌کنن:

Direct Exchange 🎯
کارش چیه؟
پیام‌ها رو فقط به صف‌هایی می‌فرسته که کلید مسیریابی (Routing Key) دقیقاً همون چیزی باشه که تعیین کردیم.

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

مثال:
Routing Key: order.created ➡️ Queue: order_queue

Fanout Exchange 📢
کارش چیه؟
پیام‌ها رو به همه صف‌های متصل شده می‌فرسته، بدون توجه به کلید مسیریابی.

کی استفاده کنیم؟
وقتی می‌خوایم یک پیام رو به چندین صف ارسال کنیم. مثلاً ارسال اطلاع‌رسانی به همه گروه های کاربران.

مثال:
پیام: "تخفیف ویژه!" ➡️ Queue: user_group1_queue, user_group2_queue, user_group3_queue

Topic Exchange 🌐
کارش چیه؟
پیام‌ها رو بر اساس الگوهای کلید مسیریابی ارسال می‌کنه. مثلاً می‌تونیم از wildcard (* و #) استفاده کنیم.

کی استفاده کنیم؟
وقتی می‌خوایم پیام‌ها رو بر اساس موضوع‌های مختلف دسته‌بندی کنیم. مثلاً خطاهای سیستم (error.*) یا لاگ‌های عمومی (log.#).

مثال:
Routing Key: error.database ➡️ Queue: error_queue
21👍5
بابا داشتن، یه شانسه.
امید وارم پدرهاتون سایشون بالاسرتون باشه.

دم بچه های علی بابا برای این ویدیو گرم.
This media is not supported in your browser
VIEW IN TELEGRAM
33👎4
برای 678 میخواستم عکس بگیرم، ولی یهو توی یک شب ترکید، الان از 789 براتون عکس گرفتم :)

خب به همین مناسبت و یه دلیل بی خودی برای شادیمون، تا آخر هفته اپیزود جدید پادکست رو منتشر می کنم که در مورد نحوه کار و جزئیات REDIS هست :)
35👍5🙏1💋1