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

‌‌‎—————————————————
پیش‌نوشت:
مسعود دانش‌پور عزیز، در صدد تهیه ویدیو و مثال آموزشی از Semantic Kernel با استفاده از APIهای AvvalAI است. در نتیجه من پُست‌های این موضوع رو طوری تنظیم می‌کنم که هم‌پوشانی نداشته باشه، و دوستان بتونن با دنبال کردن مطالب دو کانال، طیف وسیع‌تری از نکات رو در اختیار داشته باشن.
‎—————————————————

چت‌جی‌پی‌تی، جمینای، Claude یا سرویس‌های مشابه، که به صورت بسته ارائه می‌شن و امکان اجرای مدل به‌صورت لوکال رو نداریم. و نهایتا می‌تونیم با استفاده از API شون بهشون دسترسی داشته باشیم.

🗜 محدودیت‌ها:

*️⃣در هر حال درخواست‌های شما و داده‌هایی که لابلای تعامل با API رد و بدل می‌کنید عملا در اختیار شرکت OpenAI یا Microsoft یا AvvalAI یا... قرار می‌گیره، و حتی اگر به امنیت اونا اطمینان داشته باشیم، ولی استفاده‌شون از داده‌های شما برای آموزش مدل‌هاشون محتمله. این برای بعضی سازمان‌ها و صنایع غیر مجاز است.

*️⃣محدودیت ویژه ایران: تحریم، فیلتر، اینترنت، دشواری پرداخت و قص علی هذا 😡


💡 راهکار جایگزین:
اگر دنبال راهکار جایگزین باشیم که مدل رو خودمون هاست کنیم، باید سراغ مدل‌های باز بریم، مثل لاما (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



⚙️ علاوه بر امکان کار با کامندلاین، Ollama بهمون REST API هم می‌ده که به راحتی می‌تونیم باهاش کار کنیم. مثال ساده:
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 رو استفاده کنید.

📎خوبی Ollama اینکه مدل API که ارائه میده استاندارده و به راحتی می‌تونید بین مثلا Phi و Llama یا هر مدل دیگه‌ای که اینجا می‌بینید به راحتی سوییچ کنید (در این ساعت ۱۴۵ مدل مختلف)

⚡️ این مقدمه اولیه اجرای مدل روی ماشین‌شخصی یا سرور بود. بعدن می‌تونید با Semantic Kernel از مدل لوکال خودتون استفاده کنید...

💬 نظرتون رو بگید لطفا، اگر دوست دارید این موضوع رو ادامه بدیم لطفا اول خودتون همین مثال‌ها رو اجرا کنید و ری‌اکشن 🤓 بگذارید.

♻️🌱 نکته محیط زیستی: همه ما در قبال زمین مسئولیم استفاده از مدل‌های کوچک زبانی (SLM)ها مثل همین Phi3.5 مصرف انرژی و طبیعتا ردپای کربن بسیار کمتری نسبت به مدل‌های بزرگ داره. اگر نیاز به مدل خیلی بزرگ نداریم، حواسمون به نسل‌های بعدی باشه 😊

توضیح: مدل Phi4 روی Ollama هست ولی هنوز اکانت رسمی مایکروسافت ارائه نکرده، مایکروسافت فعلا روی Azure اون نسخه رو گذاشته و به‌زودی روی Ollama هم میاد.
Please open Telegram to view this post
VIEW IN TELEGRAM
🤓136👍1
🎅 چند پیشنهاد برای ۲۰۲۵
این ۵ روز باقیمانده از ۲۰۲۴، هر روز تعدادی پیشنهاد یا ایده، حول یک موضوع مشخص، به اشتراک می‌گذارم، امیدوارم مفید یا الهام‌بخش باشه.

5️⃣ روز تا ۲۰۲۵

⚙️ پیشنهادات شغلی:

*️⃣خوبه تا سالی یک‌بار، مسیر شغلی‌مون رو مرور کنیم. آیا هنوز خوشحالیم؟ هنوز روی همون مسیری هستیم که باید باشیم و دوست داشتیم باشیم؟ «حال خوب» داریم با کارهایی که هر روز انجام می‌دیم؟

*️⃣چه دنبال شغل جدید باشیم چه نباشیم، سالی یکبار یا دو سالی یکبار؛ ۳۰ تا ۵۰ شرح شغلی مشابه خودمون یا پوزیشنی که دوست داریم به دست بیاریم رو از لینکدین جمع کنیم، و چندین بار بخونیم… (یا از ChatGPT بخواهیم مشترکات و پرتکرارها رو بهمون بگه)؛ ناخودآگاه انتظارات «امروز» و «فردای نزدیک» از عنوان شغلیمون رو می‌فهمیم. (من این کار رو طی حداقل ۵ سال گذشته به تعداد زیادی از دوستانی که قصد اپلای کردن شغل (خصوصا وقتی قصد مهاجرت کاری داشتن) پیشنهاد کردم، و به نظرم از اونجایی که مسئله شغل، یه موضوع دو طرفه‌ی عرضه و تقاضا است، وقتی ما برایند انتظارات طرف «تقاضا» رو خوب بشناسیم، می‌تونیم خودمون رو با عنوان طرف «عَرضه»، با توانایی، تخصص متناسب، همسو و آماده کنیم. آیا داریم همسو و هم‌تراز با این صنعت حرکت می‌کنیم؟ یا یه چیز ایرانیزه یا شرکتمونیزه ساختیم؟ )

*️⃣نیم ساعت/یک ساعت وقت بگذاریم و یک تحلیل SWOT از شغلمون روی کاغذ پیاده کنیم (اگر نمی‌دونید SWOT چیه؟ ری‌اکشن ⚙️ تا توضیح بدم)

*️⃣فکر کنیم به جز کسب درآمد از شغلمون، چی کسب کردیم؟ به جز برآورده کردن انتظارات شغلی‌مون، چه ارزش افزوده یا کار جدیدی ما اضافه کردیم به شغلمون؟

موضوع فردا: رفتار فردی و کاری!

💬 نظرتون چیه؟ گپ بزنیم؟ ادامه بدم؟
Please open Telegram to view this post
VIEW IN TELEGRAM
34👍8
🎄 چند پیشنهاد برای ۲۰۲۵ - ۲

این چند روز باقیمانده از ۲۰۲۴، هر روز تعدادی پیشنهاد در یک حوزه مشخص اشتراک به اشتراک می‌گذارم، امیدوارم مفید یا الهام‌بخش باشن.

4️⃣ روز تا ۲۰۲۵؛ پیشنهادات رفتاری:

خود-مشاهده‌گری فعال: خوبه تا در سال آینده هر روز چند دقیقه برای خودمون وقت بذاریم و فکر کنیم امروز کجاها احساس یا رفتاری از خودم سر زد که می‌تونست بهتر باشه یا جایگزین بهتری براش وجود داشت؟ چه چیزی باعث تحریک اون احساس یا رفتار شد؟ به‌ مرور یاد می‌گیریم محرک‌ها رو بشناسیم و واکنش‌های جایگزین براشون داشته باشیم.

بخشندگی در تعاملات: چند روز یک‌بار به صورت هدفمند و «بدون چشم‌داشت»، با حرف زدن، گوش دادن، یا کمک‌های کوچیک، به حال خوب اطرافیانمون کمک کنیم. این بخشندگی نه‌تنها حال بقیه رو بهتر می‌کنه، بلکه ما رو در مسیر رشد احساسی و سلامت روانی نگه می‌داره.

برنامه‌ی «عادت رفتاری»: یکی از عادت‌های فردی یا اجتماعی‌مون که دوست داریم تغییر کنه رو انتخاب کنیم و براش هدف‌گذاری داشته باشیم. مثلاً کمتر پشت سر دیگران حرف بزنم، یا کمتر قضاوت عجولانه کنم. بعد یه بازه‌ی زمانی (مثلاً دو ماه) مشخص کنیم و هر چند روز «پیشرفت» یا «عدم پیشرفت» رو ارزیابی کنیم.

تقویت گوش‌دادن فعال: به صورت کاملاً هدفمند گوش بدیم و «وسط حرف» دیگران نپریم، به عکس‌العمل چهره و تُن صداشون توجه کنیم و تلاش کنیم بعد از تموم شدن صحبتشون، قبل از پاسخ‌دادن، چند لحظه مکث کنیم. این کار حتی ارتباطات عادی رو سازنده‌تر و صمیمی‌تر می‌کنه.

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

چند رفتار رایج که می‌تونیم به کم کردنشون یا تداوم نداشتنشون فکر کنیم:

*️⃣ نگاه صفر و صدی به مسایل
*️⃣ بایاس بودن و اصرار روی یک موضوع، تکنولوژی، نظر و...
*️⃣مقاومت به تغییر! اصرار به توجیه!
*️⃣عکس‌العمل‌های عجولانه و احساسی یا از سر یقین بیش‌ از حد به باورهای قبلی
*️⃣عدم انعطاف‌پذیری؛ قرار نیست ما خر و خرما و خدا و خیارشور و خربزه و ۷ تا خ دیگه رو با هم داشته باشیم
*️⃣اجازه بدیم بعضی آدما در موردمون اشتباه فکر کنن! اگر خواستن براشون توضیح می‌دیم
*️⃣ما فقط یکی از هشت میلیارد آدم روی زمین هستیم. همین! اینو باور کنیم :)



موضوع فردا: برنامه‌ریزی یادگیری

💬 نظرتون چیه؟ ادامه بدیم؟
Please open Telegram to view this post
VIEW IN TELEGRAM
👍741
tech-afternoon
اگر نمی‌دونید SWOT چیه؟ ری‌اکشن ⚙️ تا توضیح بدم
📱 به احترام ۱۹ ری‌اکشن ⚙️ ویدیو SWOT ضبط و منتشر شد 🌱😊

اگر دوست داشتید ببینید و اگر هم که نظری داشتید، همینجا یا توی یوتیوب بنویسید 😉

🎬 مشاهده در یوتیوب
⌛️ مدت: ۱۴ دقیقه
Please open Telegram to view this post
VIEW IN TELEGRAM
6👍11
📚 یکی از علایق من کتاب کادو دادنه. و به کسایی که خیلی برام عزیزن، کتابی هدیه می‌دم که خودم خوندمش (منظورم همونیه خوندم و عموما یه جاهاییش یادداشت نوشتم یا خط کشیدم) که عموما با کلی توضیح که طرف مقابل فکر نکنه کتاب مستعمل دارم هدیه می‌دم 😅.

کلاس‌های ایران یه رسمی داشتم که برخی دوره‌ها (حدود ۵۰٪ شون)، کتابی که مبنای سرفصل‌های دوره بود و خودم خونده بودم و خط کشیده بودم رو آخر کلاس می‌دادم به کسی که به نظرم بیشتر از بقیه تلاش کرده بود و انگیزه داشت. و با اینکه اون نسخه‌ها برام خیلی عزیز بودن با علاقه و رغبت تمام هدیه می‌دادم، و برای خودم هم مشوقی شده بود که هر دوره کتاب مرجع رو کامل مرور کنم دوباره.

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

📔 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
102👍1
🤩 چند پیشنهاد برای ۲۰۲۵ - ۳

این چند روز باقیمانده از ۲۰۲۴، هر روز تعدادی پیشنهاد در یک حوزه مشخص اشتراک به اشتراک می‌گذارم، امیدوارم مفید یا الهام‌بخش باشن.

3️⃣ روز تا ۲۰۲۵؛ پیشنهادات یادگیری:

خونه‌تکونی و نقشه‌راه: اگر توی دیسکتون میلیان میلیان گیگابایت ویدیو آموزشی و کتاب الکترونیکی دارین، اول با یک Shift-Delete یا Shift-Command-Delete رهسپار دیار باقی‌ کنیدشون. بعد برای ۶ ماه یا یکسال بعد، نهایتا ۲ یا ۳ عنوان رو که براساس 🔤نقشه‌راهی🔤 که برای خودتون ترسیم و انتخاب کردید نگه دارید. اونم توی یک فلدر روی دسکتاپ که جلو چشم باشه

یادگیری فعال و مشارکتی: اگر تنهایی می‌خونید، یه جایی که دوست دارید، در موردش بنویسید و هم‌رسان کنید. یا با آدمی که باهاش رودربایستی دارید قرار مطالعه و یادگیری اشتراکی بگذارید و ولو در حد وویس فرستادن، خلاصه یاد گرفته‌ها رو با هم اشتراک بگذارید.

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

شیر رو از خود گاو بگیریم؛ نه کارخونه پتروشیمی!: شاید کارخونه پتروشیمی هم بتونه مایع سفید رنگ تولید کنه، ولی اون، مایع دستشویی با رایحه وانیله، نه شیر! منظورم اینه که برای یادگیری سعی کنیم از منابع «اصلی» و «اصیل» استفاده کنیم. هر اکانتی شروع به تولید محتوا کرد، اول با دید نقادانه بهش نگاه کنیم تا اصالت محتوا برامون ثابت شه، در ادامه هم دید انتقادی خودمون رو همیشه حفظ کنیم. (خواهش می‌کنم نگاه انتقادی خودتون رو نسبت به تک‌تک کلماتی که من می‌نویسم و فریم‌به‌فریم ویدیویی که ضبط می‌کنم حفظ کنید). هر چی توی فلان بلاگ، فلان اکانت یوتیوب یا… بود صحیح نیست، یا الزاما دقیق نیست. دلیل اینکه من تمام دوران تدریس، کتب رفرنس استفاده کردم همین بوده که حداقل دخل و تصرف و انحراف واردشون بشه.

بازنگری و اعتراف به ندونستن: اگر فکر می‌کنم/می‌کنیم یه چیزی رو خیلی بلدیم، یه تحقیق «اصیل» کنیم که آیا این زنگ هشداریه که اتفاقا خوب بلد نیستیم؟ آماده باشیم چیزایی رو که بلدیم اگر دقیق یا صحیح نیستن، تدقیق یا حتی تدفین کنیم؛ بدون تعصب!

فردا: فراتر از صفر و یک‌ها
💬 ادامه بدیم؟ شما برای ۶ ماه یا یکسال آینده برنامه یادگیری‌تون رو ترسیم کردین؟
Please open Telegram to view this post
VIEW IN TELEGRAM
👍101🔥1
🥴 چند پیشنهاد برای ۲۰۲۵ - ۴

این چند روز باقیمانده از ۲۰۲۴، هر روز تعدادی پیشنهاد در یک حوزه مشخص اشتراک به اشتراک می‌گذارم، امیدوارم مفید یا الهام‌بخش باشن.

2️⃣ روز تا ۲۰۲۵؛ پیشنهاداتی فراتر از صفر و یک (مسئولیت اجتماعی):

🗣️ یه سری کارها هستن مثل یاد گرفتن یه مهارت، «اثر مستقیم» روی ما دارن، ولی بعضی کارها «اثر بازگشتی» دارن، نسبت انعکاسشون هم عموما ≥ ۱ است. خوبه تا ساعات آخر هر سال، یه چیزایی توی رزومه ذهنی‌مون داشته باشیم که تاریخ انقضاءش طولانی‌تر از کدهایی باشه که می‌نویسیم…

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

مشارکت در متن‌باز: اگر برنامه‌نویس هستیم، بخشی از وقت و مهارتمون رو به مشارکت در پروژه‌های اپن‌سورس اختصاص بدیم. حتی در حد به‌روز کردن لایبری‌ها، حتی در حد بهبود مستندات، این کار نه تنها به جامعه برنامه‌نویسی کمک می‌کنه، بلکه باعث رشد خودمون هم میشه. چرا سهیمه‌ی ۱۰ تا pull request برای یک سال رو که عدد بسیار دست‌یافتنی‌ای است برای خودمون هدف‌گذاری نکنیم؟؟

کمک به زیست‌بوم دیجیتال: ما مسئولیت داریم که به کاربران در مورد امنیت سایبری، حریم خصوصی و استفاده سالم از تکنولوژی آموزش بدیم. خصوصا به بچه‌ها. چرا که این متن رو من الان به زبانی می‌نویسم که غالب افرادی که با این زبون صحبت می‌کنن مجبورن از کوچیک تا بزرگ از غیرایمن‌ترین روش‌ها به اینترنت برسن (البته اگر برسن).

زمین: زمین مال همه ما و نسل‌های بعدی‌مون است، توی فرایند طراحی و توسعه محصولات، به مصرف انرژی و تاثیرات زیست‌محیطی توجه کنیم. مثلاً استفاده از تکنولوژی‌ها و الگوریتم‌های بهینه‌تر، کامپایل برای پلتفرم‌های بهینه مثل arm که مصرف انرژی کمتری دارند یا طراحی‌هایی که به سرورهای کمتری نیاز دارن. فکر کردن به رد پای کربنی که پروژه‌مون قراره به جا بگذاره…

سلامت روان: یادمون نره ما قبل از برنامه‌نویس شدن، آدم بودیم، بعد از بازنشستگی هم باید آدم باشیم. سلامت روان، مهارت‌های تعامل، سالم زندگی کردن، مهربانی کردن، بخشی از ماموریت زندگیه. ماموریت رو درست انجام بدیم.

فردا، روز آخر و خلاصی شما از این پست‌ها: خود!!
💬 دیگه تا اینجا که اومدیم، اگه اجازه بدین فردا رو هم بگیم 😅
Please open Telegram to view this post
VIEW IN TELEGRAM
👍42
🧪تست end-to-end با Playwright

تست End-to-End (E2E) چیه؟
تست 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()));
}
}


💬 نظر، سوال؟ E2E دارید؟
Please open Telegram to view this post
VIEW IN TELEGRAM
4👍3
💵 حالا که رفهاب تخفیف ۴۰ درصدی گذاشته، اگر یک کتاب بخرید، اون کتاب چی خواهد بود؟ کامنت کنید 😉
Please open Telegram to view this post
VIEW IN TELEGRAM
🚀 دورهمی آنلاین با موضوع NET Aspire.

یکی از دوستان که توی پروژه جدیدشون از Aspire استفاده کردن، دوست داشتن تا هم یه مروری روی پیاده‌سازی‌شون بشه، هم نکات پرداکشن رو بررسی کنیم. از اونجایی که مثال‌های ویدیو دوم و سوم Aspire مدت‌هاست آماده است ولی به دلیل مشغله‌های پایان سال، و زمانبر بودن ضبط و ادیت به تاخیر افتاده بود؛ تصمیم گرفتم با یه دورهمی این کار رو بکنیم. و بخشی از مطالب هم حول پروژه‌ی ایشون خواهد بود که نمونه واقعی‌تر از مثال‌هاست.

اگر شما هم دغدغه و نکته خاصی دارید لطفا بنویسید

🗓 هفته آینده یکشنبه (۵ ژانویه، ۱۶ دی‌ماه)؛ ساعت ۱۶:۳۰ (به وقت تهران؛ مدت ۱ ساعت)
✍️ ثبت‌نام (ایونت‌های تک‌افترنون هزینه‌ای ندارند)
Please open Telegram to view this post
VIEW IN TELEGRAM
9
tech-afternoon pinned «🚀 دورهمی آنلاین با موضوع NET Aspire. یکی از دوستان که توی پروژه جدیدشون از Aspire استفاده کردن، دوست داشتن تا هم یه مروری روی پیاده‌سازی‌شون بشه، هم نکات پرداکشن رو بررسی کنیم. از اونجایی که مثال‌های ویدیو دوم و سوم Aspire مدت‌هاست آماده است ولی به دلیل…»
🎄 چند پیشنهاد برای ۲۰۲۵ - پایانی

این پنجمین و آخرین سری پیشنهاداته، چند ساعت دیگه ۲۰۲۴ تموم می‌شه و امیدوارم این سری یادداشت‌ها ولو اندک، مفید یا الهام‌بخش بوده باشه.

1️⃣ روز (چند ساعت) تا ۲۰۲۵؛ پیشنهاداتی در مورد خودمون!:

🗣️ در مورد «شغل»، «رفتار»، «یادگیری» و «مسئولیت اجتماعی» پیشنهاداتی نوشتم؛ ولی همه اینا توسط «خود» ما باید محقق بشه؛ وگرنه از پست تلگرامی فراتر نخواهد رفت؛ هزار برابر عمیق‌تر از این پیشنهادات توی فضای مجازی وجود داره، ولی اینکه وضع نرم‌افزار، کار تیمی، تاب‌آوری و تعامل با نظرات متفاوت، جامعه، محیط زیست، توسعه و سیاست و... ما اینه؛ ناشی از خودمونه. پیشنهادات این بخش رو تیتروار می‌نویسم تا در مورد جزئیاتش اگر اشتیاقی بود صحبت کنیم.

تغییر از خودمون شروع می‌شه؛ «پرنسیپ» رکن اصلی پیشرفته.

عمل به جای انتظار.

تحمل و صبر نظرات متفاوت.

هیچ چیز ایده‌آل نیست، ایده‌آل هم نخواهد شد. «حرکت مداوم در مسیر بهبود» مهمه!

تا می‌تونیم گوش بدیم، فکر کنیم، در آینده وقت برای حرف زدن همیشه هست...

نکبتی بالاتر از تعصب نداریم، چون حتی جلو اصلاح ریشه بدی‌ها یعنی دروغ رو هم می‌گیره.

🌱 امیدوارم این ۵ روز و پیشنهادها، حمل بر نصیحت یا توهم و تکبر صلاحیت نصیحت، نشده باشه، و فقط پیشنهادات و یادآوری‌هایی که به خودم داشتم رو با شما هم اشتراک گذاشتم تا اگر نظر و اصلاحی دارید به خودم برای بهبود خودم کمک کنید.

ببخشید اگر از موضوعات مورد انتظار از این کانال دور بود.
سال ۲۰۲۵ رو برای همه سالی پر از پیشرفت و سلامتی و شادی آرزو می‌کنم...

🔔 در ضمن دورهمی یکشنبه رو هم اگر دوست داشتید شرکت کنید خوشحال می‌شم ببینمتون 😊
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
Please open Telegram to view this post
VIEW IN TELEGRAM
5
🚀 مقایسه انواع کانتینر ایمیج‌ها برای دات‌نت ۹.
یه مقایسه سریع! 🐳

⚡️ بر اساس سایز، امنیت، سرعت آماده‌به‌کار شدن، و... هر کدوم قوت‌هایی دارن.

💬 شما کدوم رو ترجیح می‌دین؟


#DotNet #DevOps
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3👍2
در رابطه با دورهمی یکشنبه و نزدیک بودن مثال‌ها به فضای کاری شرکت‌کننده‌ها؛ دوستانی که شرکت خواهید کرد عموما از کدوم مورد استفاده می‌کنید؟

* مانیتورینگ، 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 📌 اگر هنوز ثبت‌نام نکردید بشتابید و اگر صلاح دیدید به دوستانتون هم اطلاع بدید
- ☁️ نزدیک ۲۰ درصد از شرکت‌کننده‌ها در نظرسنجی احتمالا خارج از ایران هستن که دسترسی به سرویس‌ها کلاد دارن

- 🤓 کمتر از یک‌پنجم دوست دارن بیشتر بدونن

- 😁 نزدیک یک‌پنجم، مثل یک سامورایی زندگی می‌کنن و ترجیح می‌دن حادثه غافلگیرشون کنه

- حدود ۶۴ درصد (چون هنوز از عدد ۶۳درصد بیزارم 😅) سروریس‌هاشون رو به نحوی (سرویس ابری یا غیرابری) مانیتور می‌کنن.

- من یه سرچ سریع کردم هیچ سرویس مدیریت شده‌ای بین سرویس‌دهنده‌های ایرانی پیدا نکردم. فقط آپداموس (از هم‌روش) بود که اونم Status Page بود عملا و خب قابل مقایسه نیست.

- پروژه کدبار Sentry، و نسخه Basic Self- managed از Elastic محدودیت‌هایی دارن که استفاده توی مقیاس بزرگ رو محدودی می‌کنن. از طرفی هم نگهداری Grafana در کنار Prometheus توی مقیاس بزرگ هزینه opex بالایی داره. ولی این محدودیت‌ها و هزینه‌ها هرچقدر باشه، ارزشش رو داره تا سرویس بهتری ارائه بدیم (با عرض احترام و شرمندگی خدمت سامورایی‌های عزیز جمع 😅)

- با اینکه مشارکت در نظرسنجی کمتر از ۱۰ درصد اعضاء کانال بود، ولی جالب بود. ممنون 😉
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
سلام!
لینک گوگل میت جلسه امروز تغییر کرد، لینک جدید کیفیت HD و امکان ضبط خودکار جلسه رو داره.

🔗 گوگل میت: یکشنبه،۱۶ دی‌ماه و ۵ ژانویه؛ ساعت ۱۶:۳۰ به وقت تهران

من ۱۰ دقیقه قبل از شروع جلسه، برای سلام و احوال‌پرسی و شنیدن سوالات و... آنلاین خواهم بود.

امیدوارم جلسه خوبی داشته باشیم 😊🌱
Please open Telegram to view this post
VIEW IN TELEGRAM
9
⚡️📎 کاربرد و فرصت‌های 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