پیشدرآمد شروع کار با Semantic Kernel
—————————————————
پیشنوشت:
مسعود دانشپور عزیز، در صدد تهیه ویدیو و مثال آموزشی از Semantic Kernel با استفاده از APIهای AvvalAI است. در نتیجه من پُستهای این موضوع رو طوری تنظیم میکنم که همپوشانی نداشته باشه، و دوستان بتونن با دنبال کردن مطالب دو کانال، طیف وسیعتری از نکات رو در اختیار داشته باشن.
—————————————————
چتجیپیتی، جمینای، Claude یا سرویسهای مشابه، که به صورت بسته ارائه میشن و امکان اجرای مدل بهصورت لوکال رو نداریم. و نهایتا میتونیم با استفاده از API شون بهشون دسترسی داشته باشیم.
اگر دنبال راهکار جایگزین باشیم که مدل رو خودمون هاست کنیم، باید سراغ مدلهای باز بریم، مثل لاما (Llama) از شرکت متا یا خانواده مدلهای فای (Phi) که مایکروسافت ارائه کرده.
برحسب مدلی که انتخاب میکنیم و حجم درخواستها پیچیدگیشون منابع سختافزاری هم باید داشته باشیم. ولی مثالهای این مطلب رو من با مدل کوچیک فای انجام میدم که حتی بدون GPU جداگانه یا قدرتمند هم قابل اجرا باشه.
۱: نرمافزار Ollama رو روی Mac، Linux، Windows نصب کنید.
۲: حالا توی ترمینال دستور
ollama رو دارید:برای مشاهده لیست مدلهایی که روی ماشینتون دارید:
ollama list
برای دانلود و نصب مدل. (اینجا مدل Phi3.5 (۳.۸۲ میلیارد پارامتر))
ollama pull phi3.5
برای اجرای مدل. (اینجا مدل Phi3.5 (۳.۸۲ میلیارد پارامتر))
ollama run phi3.5
برای حذف مدل.
ollama rm phi3.5
🌡دمای مدل (Temperature) یکی از مهمترین پارامترهای کنترل خروجی مدلهای زبانیه. بذارید ساده توضیح بدم:
محدودهی مجاز Temperature بین 0 تا 1 تنظیم میشه:
کاربرد temperature = 0.0
- خروجی کاملاً قطعی و تکرارپذیر
- همیشه محتملترین کلمات رو انتخاب میکنه
- مناسب برای: محاسبات، کدنویسی، پاسخهای دقیق و تکنیکی
کاربرد temperature = 0.7 (معمولاً مقدار پیشفرض)
- تعادل خوبی بین خلاقیت و ثبات
- مناسب برای: چت عمومی، نوشتن متن، اکثر کاربردها
کاربرد temperature = 1.0
- خروجی کاملاً تصادفی و خلاقانه
- هر بار ممکنه پاسخ متفاوتی بده
- مناسب برای: داستاننویسی، شعر، ایدهپردازی خلاقانه
# output: دقیق و تکرارپذیر
ollama run phi --temperature 0.1 "یک برنامه ساده پایتون بنویس"
# output: متعادل (پیشفرض)
ollama run phi --temperature 0.7 "یک داستان کوتاه بنویس"
# output: خلاقانه و متنوع
ollama run phi --temperature 1.0 "یک شعر در مورد بهار بنویس"
برای نمایش منابع مورد مصرف
ollama stats
curl http://localhost:11434/api/generate -d'{
"model": "phi3.5",
"prompt": "suggest a city to travel"
}'با همین API میشه چت هم کرد:
curl http://localhost:11434/api/chat -d '{
"model": "phi3.5",
"messages": [
{ "role": "user", "content": "lets chat about cooking recipes?" }
]
}'شاید اولین آرزوتون این باشه که کاش یه یوزر اینترفیس تحت وب عینهو ChatGPT هم داشت! ولی این آرزو نیست. پاشید پروژه Open WebUI رو استفاده کنید.
♻️🌱 نکته محیط زیستی: همه ما در قبال زمین مسئولیم استفاده از مدلهای کوچک زبانی (SLM)ها مثل همین Phi3.5 مصرف انرژی و طبیعتا ردپای کربن بسیار کمتری نسبت به مدلهای بزرگ داره. اگر نیاز به مدل خیلی بزرگ نداریم، حواسمون به نسلهای بعدی باشه 😊
توضیح: مدل Phi4 روی Ollama هست ولی هنوز اکانت رسمی مایکروسافت ارائه نکرده، مایکروسافت فعلا روی Azure اون نسخه رو گذاشته و بهزودی روی Ollama هم میاد.
Please open Telegram to view this post
VIEW IN TELEGRAM
🤓13❤6👍1
این ۵ روز باقیمانده از ۲۰۲۴، هر روز تعدادی پیشنهاد یا ایده، حول یک موضوع مشخص، به اشتراک میگذارم، امیدوارم مفید یا الهامبخش باشه.
موضوع فردا: رفتار فردی و کاری!
Please open Telegram to view this post
VIEW IN TELEGRAM
این چند روز باقیمانده از ۲۰۲۴، هر روز تعدادی پیشنهاد در یک حوزه مشخص اشتراک به اشتراک میگذارم، امیدوارم مفید یا الهامبخش باشن.
موضوع فردا: برنامهریزی یادگیری
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤4 1
tech-afternoon
اگر نمیدونید SWOT چیه؟ ریاکشن ⚙️ تا توضیح بدم
اگر دوست داشتید ببینید و اگر هم که نظری داشتید، همینجا یا توی یوتیوب بنویسید 😉
🎬 مشاهده در یوتیوب
⌛️ مدت: ۱۴ دقیقه
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6👍1 1
📚 یکی از علایق من کتاب کادو دادنه. و به کسایی که خیلی برام عزیزن، کتابی هدیه میدم که خودم خوندمش (منظورم همونیه خوندم و عموما یه جاهاییش یادداشت نوشتم یا خط کشیدم) که عموما با کلی توضیح که طرف مقابل فکر نکنه کتاب مستعمل دارم هدیه میدم 😅.
کلاسهای ایران یه رسمی داشتم که برخی دورهها (حدود ۵۰٪ شون)، کتابی که مبنای سرفصلهای دوره بود و خودم خونده بودم و خط کشیده بودم رو آخر کلاس میدادم به کسی که به نظرم بیشتر از بقیه تلاش کرده بود و انگیزه داشت. و با اینکه اون نسخهها برام خیلی عزیز بودن با علاقه و رغبت تمام هدیه میدادم، و برای خودم هم مشوقی شده بود که هر دوره کتاب مرجع رو کامل مرور کنم دوباره.
امروز دو تا کتابی رو که برای هدیه دادن خریدم، رسید دستم، داشتم فکر میکردم کتابهای فنی و غیر فنی رو که طی این سالها بیشتر هدیه دادم کدوما بودن، اینا به ذهنم اومد:
📔 Continuous Delivery
📔 Clean Code
📔 The Pragmatic Programmer
📔 A Philosophy of Software Design
📔 کتابهای دورههای رسمی مایکروسافت خصوصا داتنت، اسکیوال سرور و بیزتاک (از ۲۰۰۵ به بعد)
کتابهای غیر فنی:
📗 Start with Why
📗 Skin in the Game
📗 The Black Swan
📗 سرگذشت پنجاه کنشگر اقتصادی ایران (فریدون شیرینکام، ایمان فرجامنیا)
📗 ارادههای پولادین (سعید فتحاللهیراد، حسین شریفی)
📗 مفاهیم اخلاقی (توشیهیکو ایزوتسو)
💬 اگر تو این لیست کتاب مورد علاقه شما هم هست، خوشحال میشم بگید چه بخشیش به طور متمایز براتون جالب بوده 😉
اگر هم موردی جالب بود و مردد بودید در شروع کردنش، بگید تا یه خلاصه خیلی کوتاه در حدی که یادم مونده بنویسم
کلاسهای ایران یه رسمی داشتم که برخی دورهها (حدود ۵۰٪ شون)، کتابی که مبنای سرفصلهای دوره بود و خودم خونده بودم و خط کشیده بودم رو آخر کلاس میدادم به کسی که به نظرم بیشتر از بقیه تلاش کرده بود و انگیزه داشت. و با اینکه اون نسخهها برام خیلی عزیز بودن با علاقه و رغبت تمام هدیه میدادم، و برای خودم هم مشوقی شده بود که هر دوره کتاب مرجع رو کامل مرور کنم دوباره.
امروز دو تا کتابی رو که برای هدیه دادن خریدم، رسید دستم، داشتم فکر میکردم کتابهای فنی و غیر فنی رو که طی این سالها بیشتر هدیه دادم کدوما بودن، اینا به ذهنم اومد:
📔 Continuous Delivery
📔 Clean Code
📔 The Pragmatic Programmer
📔 A Philosophy of Software Design
📔 کتابهای دورههای رسمی مایکروسافت خصوصا داتنت، اسکیوال سرور و بیزتاک (از ۲۰۰۵ به بعد)
کتابهای غیر فنی:
📗 Start with Why
📗 Skin in the Game
📗 The Black Swan
📗 سرگذشت پنجاه کنشگر اقتصادی ایران (فریدون شیرینکام، ایمان فرجامنیا)
📗 ارادههای پولادین (سعید فتحاللهیراد، حسین شریفی)
📗 مفاهیم اخلاقی (توشیهیکو ایزوتسو)
اگر هم موردی جالب بود و مردد بودید در شروع کردنش، بگید تا یه خلاصه خیلی کوتاه در حدی که یادم مونده بنویسم
Please open Telegram to view this post
VIEW IN TELEGRAM
❤10 2👍1
این چند روز باقیمانده از ۲۰۲۴، هر روز تعدادی پیشنهاد در یک حوزه مشخص اشتراک به اشتراک میگذارم، امیدوارم مفید یا الهامبخش باشن.
فردا: فراتر از صفر و یکها
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10❤1🔥1
این چند روز باقیمانده از ۲۰۲۴، هر روز تعدادی پیشنهاد در یک حوزه مشخص اشتراک به اشتراک میگذارم، امیدوارم مفید یا الهامبخش باشن.
فردا، روز آخر و خلاصی شما از این پستها: خود!!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4❤2
تست End-to-End یا E2E یه نوع تست نرمافزاریه که فرآیندهای واقعی کاربر رو از شروع تا پایان شبیهسازی میکنه تا مطمئن شیم تمام بخشهای نرمافزار (شامل رابط کاربری، پایگاه داده، APIها و غیره) به درستی و بدون مشکل با هم کار میکنن.
هدف اصلی E2E اینه که رفتار سیستم رو از نگاه کاربر واقعی بررسی کنه و مطمئن بشیم که مسیرهای اصلی و بحرانی کسبوکار به درستی عمل میکنن.
حالا Microsoft Playwright چیه؟
مایکروسافت سال ۲۰۲۰ فریمورک Playwright رو معرفی کرد که طی این سالها خیلی با اقبال خوبی روبرو شده و به نظر من از Selenium و Cypress خیلی بهتر و سریعتره. Playwright این امکان رو میده که اپلیکیشنهای وب رو توی مرورگرهای مختلف (Chrome، Firefox، Safari و Edge) تست کنیم. از زبونهای برنامهنویسی محبوب مثل JavaScript، TypeScript، Python، Java و NET. هم پشتیبانی میکنه.
به راحتی میشه براش تست نوشت که عین کاربر صفحات وب رو مرور کنه، نتایج رو بررسی کنه. APIها رو هم همینطور. و به راحتی توی پایپلاین CI/CD تون قرار بدید.
یک مثال خیلی ساده (توی یک صفحه وب جستجو کنه و ببینه نتایج میاد یا نه)
test('search works', async ({ page }) => {
await page.goto('https://example.com');
await page.fill('#search', 'محصول');
await page.click('#submit');
await expect(page.locator('.results')).toBeVisible();
});یه مثال دیگه ولی REST API به جای صفحه وب (از سرویس reqres که یه API مُفته برای تست، چک میکنه API کد ۲۰۰ بده و داده صحیح و کد ۴۰۴ برای آدرس غلط)
*
const { test, expect } = require("@playwright/test");
test.describe("API Testing with Playwright", () => {
const baseurl = "https://reqres.in/api";
test("GET API Request with - Valid 200 Response", async ({ request }) => {
const response = await request.get(`${baseurl}/users/10`);
expect(response.status()).toBe(200);
});
test("GET API Request with - Invalid 404 Response", async ({ request }) => {
const response = await request.get(`${baseurl}/usres/invalid-data`);
expect(response.status()).toBe(404);
});
test("GET Request - Verify User Details", async ({ request }) => {
const response = await request.get(`${baseurl}/users/10`);
const responseBody = JSON.parse(await response.text());
expect(response.status()).toBe(200);
expect(responseBody.data.id).toBe(10);
expect(responseBody.data.first_name).toBe("Byron");
expect(responseBody.data.last_name).toBe("Fields");
expect(responseBody.data.email).toBeTruthy();
});
});معادل کد
using Microsoft.Playwright;
using System.Text.Json;
public class PlaywrightApiTests
{
private const string BaseUrl = "https://reqres.in/api";
[Fact]
public async Task GetApiRequest_Valid200Response()
{
using var playwright = await Playwright.CreateAsync();
var request = await playwright.APIRequest.NewContextAsync();
var response = await request.GetAsync($"{BaseUrl}/users/10");
Assert.Equal(200, response.Status);
}
[Fact]
public async Task GetApiRequest_Invalid404Response()
{
using var playwright = await Playwright.CreateAsync();
var request = await playwright.APIRequest.NewContextAsync();
var response = await request.GetAsync($"{BaseUrl}/usres/invalid-data");
Assert.Equal(404, response.Status);
}
[Fact]
public async Task GetRequest_VerifyUserDetails()
{
using var playwright = await Playwright.CreateAsync();
var request = await playwright.APIRequest.NewContextAsync();
var response = await request.GetAsync($"{BaseUrl}/users/10");
Assert.Equal(200, response.Status);
var responseBody = JsonSerializer.Deserialize<JsonDocument>(await response.TextAsync());
var userData = responseBody?.RootElement.GetProperty("data");
Assert.Equal(10, userData.Value.GetProperty("id").GetInt32());
Assert.Equal("Byron", userData.Value.GetProperty("first_name").GetString());
Assert.Equal("Fields", userData.Value.GetProperty("last_name").GetString());
Assert.False(string.IsNullOrEmpty(userData.Value.GetProperty("email").GetString()));
}
}
Please open Telegram to view this post
VIEW IN TELEGRAM
یکی از دوستان که توی پروژه جدیدشون از Aspire استفاده کردن، دوست داشتن تا هم یه مروری روی پیادهسازیشون بشه، هم نکات پرداکشن رو بررسی کنیم. از اونجایی که مثالهای ویدیو دوم و سوم Aspire مدتهاست آماده است ولی به دلیل مشغلههای پایان سال، و زمانبر بودن ضبط و ادیت به تاخیر افتاده بود؛ تصمیم گرفتم با یه دورهمی این کار رو بکنیم. و بخشی از مطالب هم حول پروژهی ایشون خواهد بود که نمونه واقعیتر از مثالهاست.
اگر شما هم دغدغه و نکته خاصی دارید لطفا بنویسید
🗓 هفته آینده یکشنبه (۵ ژانویه، ۱۶ دیماه)؛ ساعت ۱۶:۳۰ (به وقت تهران؛ مدت ۱ ساعت)
✍️ ثبتنام (ایونتهای تکافترنون هزینهای ندارند)
Please open Telegram to view this post
VIEW IN TELEGRAM
Google Docs
وبینار بررسی داتنت اَسپایر
از توسعه تا رهانش
❤9
tech-afternoon pinned «✨ 🚀 دورهمی آنلاین با موضوع NET Aspire. یکی از دوستان که توی پروژه جدیدشون از Aspire استفاده کردن، دوست داشتن تا هم یه مروری روی پیادهسازیشون بشه، هم نکات پرداکشن رو بررسی کنیم. از اونجایی که مثالهای ویدیو دوم و سوم Aspire مدتهاست آماده است ولی به دلیل…»
این پنجمین و آخرین سری پیشنهاداته، چند ساعت دیگه ۲۰۲۴ تموم میشه و امیدوارم این سری یادداشتها ولو اندک، مفید یا الهامبخش بوده باشه.
🌱 امیدوارم این ۵ روز و پیشنهادها، حمل بر نصیحت یا توهم و تکبر صلاحیت نصیحت، نشده باشه، و فقط پیشنهادات و یادآوریهایی که به خودم داشتم رو با شما هم اشتراک گذاشتم تا اگر نظر و اصلاحی دارید به خودم برای بهبود خودم کمک کنید.
ببخشید اگر از موضوعات مورد انتظار از این کانال دور بود.
سال ۲۰۲۵ رو برای همه سالی پر از پیشرفت و سلامتی و شادی آرزو میکنم...
Please open Telegram to view this post
VIEW IN TELEGRAM
❤9
🧨 بمبهای خفته در پکیجها!
این چند روز، ۷ تا پروژه پر کاربرد رو کاویدم و گاهن تا لایهی چهارم تودرتو ی وابستگیهاشون آسیبپذیری امنیتی پیدا کردم. و این در مورد فلان پروژهی گمنام نیست. ویژوال استدیو آسیبپذیریها رو نشون میده ولی وقتی تودرتو میشن از یه لایهای به پایین کمی کار دشوار میشه.
این موضوع در مورد پکیجهای جاوا اسکریپت و پایتون و گو هم هست. اینو نوشتم تا کمی توجهتون رو به سمت آسیبهای بالقوهی اینها جلب کنم.
مثال دنیای واقعی:
سال ۲۰۲۴؛ XZ Utils Backdoor
نسخههای ۵.۶.۰ و ۵.۶.۱ کتابخونه فشردهسازی XZ Utils بالاترین درجه آسیبپذیری CVSS، یعنی ۱۰ رو به خاطر بکدور تعمدی دریافت کرد که به هکر اجازه میداد بدون مجوز به ماشین لینوکسی دسترسی پیدا کنن. با احراز هویت SSH تداخل داشت که باعث میشد هکر بتونه به سیستمها نفوذ کنن.☠️
توزیعهای مهم لینوکس مثل فدورا، دبیان، اوپنسوزه و کالی لینوکس رو درگیر کرد.
فجایع Solarwinds و Log4Shell و MavenGate و... کلی اتفاق دیگه، نمونههای خوبی از آسیب خوردن یا آسیب زدن به پروژهها بود.
طبق آمار، بیش از ۵۰ درصد پروژههای ما با کتابخونهها و ابزارهای کدباز تولید میشه. لطفا بیشتر به این موضوع توجه کنید و اگر بستهای نیاز به بهروز رسانی داره، زحمتش رو بکشید 😊 اکثر این نمونهها ساده است، سورس رو باز کنید، وابستگیها رو لایه به لایه بهروزرسانی کنید (شاید تغییرات کوچکی از جنس breaking change نیاز داشته باشه) بعد pull request.
چرا میگم آسونه؟ چون در مورد آسیبپذیریهای شناخته شده صحبت میکنم. نه اینکه بگردید آسیبپذیری پیدا کنید، خود ویژوال استدیو یا SonarQube دقیقا میگن کدوم بسته آسیبپذیره.
تمرین خوبیه! اعتماد کنید... نمونه خواستید برای تمرین، بهم بگید 😉
#security
این چند روز، ۷ تا پروژه پر کاربرد رو کاویدم و گاهن تا لایهی چهارم تودرتو ی وابستگیهاشون آسیبپذیری امنیتی پیدا کردم. و این در مورد فلان پروژهی گمنام نیست. ویژوال استدیو آسیبپذیریها رو نشون میده ولی وقتی تودرتو میشن از یه لایهای به پایین کمی کار دشوار میشه.
این موضوع در مورد پکیجهای جاوا اسکریپت و پایتون و گو هم هست. اینو نوشتم تا کمی توجهتون رو به سمت آسیبهای بالقوهی اینها جلب کنم.
مثال دنیای واقعی:
سال ۲۰۲۴؛ XZ Utils Backdoor
نسخههای ۵.۶.۰ و ۵.۶.۱ کتابخونه فشردهسازی XZ Utils بالاترین درجه آسیبپذیری CVSS، یعنی ۱۰ رو به خاطر بکدور تعمدی دریافت کرد که به هکر اجازه میداد بدون مجوز به ماشین لینوکسی دسترسی پیدا کنن. با احراز هویت SSH تداخل داشت که باعث میشد هکر بتونه به سیستمها نفوذ کنن.
توزیعهای مهم لینوکس مثل فدورا، دبیان، اوپنسوزه و کالی لینوکس رو درگیر کرد.
فجایع Solarwinds و Log4Shell و MavenGate و... کلی اتفاق دیگه، نمونههای خوبی از آسیب خوردن یا آسیب زدن به پروژهها بود.
طبق آمار، بیش از ۵۰ درصد پروژههای ما با کتابخونهها و ابزارهای کدباز تولید میشه. لطفا بیشتر به این موضوع توجه کنید و اگر بستهای نیاز به بهروز رسانی داره، زحمتش رو بکشید 😊 اکثر این نمونهها ساده است، سورس رو باز کنید، وابستگیها رو لایه به لایه بهروزرسانی کنید (شاید تغییرات کوچکی از جنس breaking change نیاز داشته باشه) بعد pull request.
چرا میگم آسونه؟ چون در مورد آسیبپذیریهای شناخته شده صحبت میکنم. نه اینکه بگردید آسیبپذیری پیدا کنید، خود ویژوال استدیو یا SonarQube دقیقا میگن کدوم بسته آسیبپذیره.
تمرین خوبیه! اعتماد کنید... نمونه خواستید برای تمرین، بهم بگید 😉
#security
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5
در رابطه با دورهمی یکشنبه و نزدیک بودن مثالها به فضای کاری شرکتکنندهها؛ دوستانی که شرکت خواهید کرد عموما از کدوم مورد استفاده میکنید؟
* مانیتورینگ، OTel، Metrics, Traces 📌 اگر هنوز ثبتنام نکردید بشتابید و اگر صلاح دیدید به دوستانتون هم اطلاع بدید
* مانیتورینگ، OTel، Metrics, Traces 📌 اگر هنوز ثبتنام نکردید بشتابید و اگر صلاح دیدید به دوستانتون هم اطلاع بدید
Final Results
19%
Cloud: DataDog, Sentry, Azure Application Insights, AWS CloudWatch
6%
On-Premise Sentry
19%
On-Premise Grafana (Prometheus)
19%
On-Premise ELK Stack
19%
یک مرد از این قرطیبازیها استفاده نمیکنه 😕
0%
بیا توی کامنت بگم
16%
یاد بده شاید طالب شدیم
tech-afternoon
در رابطه با دورهمی یکشنبه و نزدیک بودن مثالها به فضای کاری شرکتکنندهها؛ دوستانی که شرکت خواهید کرد عموما از کدوم مورد استفاده میکنید؟
* مانیتورینگ، OTel، Metrics, Traces 📌 اگر هنوز ثبتنام نکردید بشتابید و اگر صلاح دیدید به دوستانتون هم اطلاع بدید
* مانیتورینگ، OTel، Metrics, Traces 📌 اگر هنوز ثبتنام نکردید بشتابید و اگر صلاح دیدید به دوستانتون هم اطلاع بدید
- ☁️ نزدیک ۲۰ درصد از شرکتکنندهها در نظرسنجی احتمالا خارج از ایران هستن که دسترسی به سرویسها کلاد دارن
- 🤓 کمتر از یکپنجم دوست دارن بیشتر بدونن
- 😁 نزدیک یکپنجم، مثل یک سامورایی زندگی میکنن و ترجیح میدن حادثه غافلگیرشون کنه
-✅ حدود ۶۴ درصد (چون هنوز از عدد ۶۳درصد بیزارم 😅) سروریسهاشون رو به نحوی (سرویس ابری یا غیرابری) مانیتور میکنن.
- من یه سرچ سریع کردم هیچ سرویس مدیریت شدهای بین سرویسدهندههای ایرانی پیدا نکردم. فقط آپداموس (از همروش) بود که اونم Status Page بود عملا و خب قابل مقایسه نیست.
- پروژه کدبار Sentry، و نسخه Basic Self- managed از Elastic محدودیتهایی دارن که استفاده توی مقیاس بزرگ رو محدودی میکنن. از طرفی هم نگهداری Grafana در کنار Prometheus توی مقیاس بزرگ هزینه opex بالایی داره. ولی این محدودیتها و هزینهها هرچقدر باشه، ارزشش رو داره تا سرویس بهتری ارائه بدیم (با عرض احترام و شرمندگی خدمت ساموراییهای عزیز جمع 😅)
- با اینکه مشارکت در نظرسنجی کمتر از ۱۰ درصد اعضاء کانال بود، ولی جالب بود. ممنون 😉
- 🤓 کمتر از یکپنجم دوست دارن بیشتر بدونن
- 😁 نزدیک یکپنجم، مثل یک سامورایی زندگی میکنن و ترجیح میدن حادثه غافلگیرشون کنه
-
- من یه سرچ سریع کردم هیچ سرویس مدیریت شدهای بین سرویسدهندههای ایرانی پیدا نکردم. فقط آپداموس (از همروش) بود که اونم Status Page بود عملا و خب قابل مقایسه نیست.
- پروژه کدبار Sentry، و نسخه Basic Self- managed از Elastic محدودیتهایی دارن که استفاده توی مقیاس بزرگ رو محدودی میکنن. از طرفی هم نگهداری Grafana در کنار Prometheus توی مقیاس بزرگ هزینه opex بالایی داره. ولی این محدودیتها و هزینهها هرچقدر باشه، ارزشش رو داره تا سرویس بهتری ارائه بدیم (با عرض احترام و شرمندگی خدمت ساموراییهای عزیز جمع 😅)
- با اینکه مشارکت در نظرسنجی کمتر از ۱۰ درصد اعضاء کانال بود، ولی جالب بود. ممنون 😉
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
سلام!
لینک گوگل میت جلسه امروز تغییر کرد، لینک جدید کیفیت HD و امکان ضبط خودکار جلسه رو داره.
🔗 گوگل میت: یکشنبه،۱۶ دیماه و ۵ ژانویه؛ ساعت ۱۶:۳۰ به وقت تهران
من ۱۰ دقیقه قبل از شروع جلسه، برای سلام و احوالپرسی و شنیدن سوالات و... آنلاین خواهم بود.
امیدوارم جلسه خوبی داشته باشیم 😊🌱
لینک گوگل میت جلسه امروز تغییر کرد، لینک جدید کیفیت HD و امکان ضبط خودکار جلسه رو داره.
من ۱۰ دقیقه قبل از شروع جلسه، برای سلام و احوالپرسی و شنیدن سوالات و... آنلاین خواهم بود.
امیدوارم جلسه خوبی داشته باشیم 😊🌱
Please open Telegram to view this post
VIEW IN TELEGRAM
Google
Real-time meetings by Google. Using your browser, share your video, desktop, and presentations with teammates and customers.
❤9
یه چالش جالب که پرداختن بهش میتونه تجربه کاربری بهتری برای مصرفکننده نهایی و تجربه بهتری سمت توسعهدهندهها ایجاده کنه:
حالا میتونه یه تاریخ باشه که تو یه فرم پر میکنن، یه عدد باشه که تو چت وارد میکنن یا یه عبارت مثل "یه هفته بعد" که قراره تبدیل به یه تاریخ واقعی بشه. اینجاست که ابزاری مثل 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}");
}
}
خروجی این میشه یه آبجکت که اطلاعات دقیق تاریخ و زمان رو در خودش داره. راحتتر از این هم داریم؟
کاربرد در دنیای واقعی
این ابزار خیلی توی حوزههایی مثل اینا محبوبه:
- چتباتها: مثل باتهایی که رزرو یا نوبتگیری انجام میدن.
- اپلیکیشنهای مالی: تجزیه و تحلیل تراکنشها.
- پروژههای هوش مصنوعی: وقتی نیاز به تجزیه و تحلیل زبان طبیعی داری.
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
GitHub
GitHub - cloudflare/cloudflare-docs: Cloudflare’s documentation
Cloudflare’s documentation. Contribute to cloudflare/cloudflare-docs development by creating an account on GitHub.
👍11🔥2🤔1
یه ابزار باحال که طی چند سال گذشته بهتر و کاملتر شده، و البته به جای سرچ کردن «فلان چیز online» کار رو راحت کرده. 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) به زودی شروع میشه و میتونید نسخههای غیرنهایی رو تست کنید.
منبع ۱
منبع ۲
۱. تسهیل پروفایلینگ
با اینکه ابزارهای فعلی مثل 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
The JetBrains Blog
Rider 2025.1 Roadmap | The .NET Tools Blog
The start of the new year is the perfect time to share our plans for JetBrains Rider 2025.1. These plans are subject to change based on available resources, evolving development priorities, and shifts
👍6