Software Engineer Labdon
600 subscribers
43 photos
4 videos
2 files
751 links
👑 Software Labdon

حمایت مالی:
https://www.coffeete.ir/mrbardia72

ادمین:
@mrbardia72
Download Telegram
Forwarded from Bardia & Erfan
🚀 به دنیای توسعه و تکنولوژی خوش اومدی!

اگر به موضوعات زیر علاقه‌مندی:

🔹 Golang
🔹 Linux & DevOps
🔹 Software Engineering
🔹 AI & Machine Learning
🔹 فرصت‌های شغلی ریموت (خارجی و داخلی)

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

📌 از این لینک همه چنل‌هامونو یه‌جا ببین و جوین شو:

👉 https://t.iss.one/addlist/QtXiQlynEJwzODBk
🔵 عنوان مقاله
Implementing High Volume Automated Testing System

🟢 خلاصه مقاله:
** این مقاله با شرح تجربهٔ میرک دووگوشز نشان می‌دهد چگونه می‌توان یک چارچوب آزمون خودکار در مقیاس بالا ساخت و پایدار نگه داشت. معماری پیشنهادی، زمان‌بندی و صف‌بندی آزمون‌ها را از اجرای آن‌ها جدا می‌کند، با شاردینگ و موازی‌سازی گسترده، محیط‌های قابل‌تکرار و دادهٔ آزمون مدیریت‌شده برای جداسازی و قطعیت نتایج. برای اطمینان، سازوکارهایی مانند تشخیص و قرنطینهٔ آزمون‌های ناپایدار، تکرار کنترل‌شده، هرمتیسیته و مشاهده‌پذیری با شاخص‌هایی مثل زمان دریافت بازخورد و نرخ شکست به کار می‌روند. کارایی و هزینه با تحلیل تأثیر تغییرات، اجرای تدریجی و انتخابی، کش نتایج و سیاست‌های منابع کنترل می‌شود و تجربهٔ توسعه‌دهنده با API ساده، فیکسچرهای یکدست و ابزارهای بازتولید خطا بهبود می‌یابد. جمع‌بندی: سامانهٔ آزمون را مثل یک محصول با مالکیت، اندازه‌گیری مستمر و اتوماسیون گام‌به‌گام بسازید؛ نتیجه، بازخورد سریع‌تر، اطمینان بالاتر و کاهش هزینهٔ هر تغییر است.

🟣لینک مقاله:
https://cur.at/7kwVpmm?m=web


👑 @software_Labdon
تلگرام 12.0 و اضافه شدن Grok...پایان زودهنگام یک شراکت...؟!

▪️قرار بود تلگرام نسخه 12.0 رو همراه با ادغام Grok منتشر کنه، اما تا امروز (31 اوت 2025) هیچ تأیید رسمی‌ای نشده. به نظر میاد این توافق متوقف شده و هنوز قراردادی امضا یا اطلاعیه‌ای رسمی منتشر نشده.

▪️این موضوع احتمالاً یعنی Grok طبق برنامه وارد نسخه 12.0 نشده ، شاید به خاطر شکست مذاکرات، تغییر استراتژی یا تأخیرهای دیگه.
👍1
ا"Architecture Decision Record (ADR) Template" یعنی یک قالب (Template) برای ثبت و مستندسازی تصمیم‌های معماری نرم‌افزار.

به طور ساده:

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

یک ADR Template کمک می‌کند این مستندسازی همیشه با یک ساختار مشخص و یکسان انجام شود.

---

### ساختار رایج یک ADR Template

معمولاً شامل بخش‌های زیر است:

1. Title (عنوان تصمیم)
یک عنوان کوتاه و گویا.

2. Status (وضعیت)
مثلاً: Proposed, Accepted, Rejected, Superseded

3. Context (زمینه / دلیل نیاز به تصمیم)
توضیح اینکه چه مشکلی وجود داشته یا چه نیازی باعث شد که تصمیم گرفته شود.

4. Decision (تصمیم نهایی)
تصمیمی که گرفته شد (مثلاً "ما از PostgreSQL به جای MySQL استفاده می‌کنیم").

5. Consequences (پیامدها)
مزایا و معایب این تصمیم، و اثراتی که بر سیستم دارد.

---

### مثال ساده

# ADR 001: انتخاب دیتابیس اصلی

## Status
Accepted

## Context
ما نیاز به یک دیتابیس داریم که قابلیت ذخیره داده‌های ساخت‌یافته و مقیاس‌پذیری داشته باشد. تیم تجربه خوبی با SQL دارد.

## Decision
انتخاب PostgreSQL به عنوان دیتابیس اصلی.

## Consequences
+ ویژگی‌های پیشرفته (JSONB، Full-text search)
+ جامعه کاربری بزرگ
- یادگیری برخی قابلیت‌های خاص برای اعضای تیم جدید


👑 @software_Labdon
👌4
Forwarded from Gopher Job
🟢 اگر کارفرما یا کارجو هستی

و دنبال نیرو یا موقعیت شغلی توی حوزه‌های زیر هستی، به من پیام بده 👇

⚔️ DevOps Engineer
⚔️ Site Reliability Engineer (SRE)
⚔️ Linux SysAdmin
⚔️ Cloud Engineer (AWS/GCP/Azure)
⚔️ Infrastructure Engineer
⚔️ Security Engineer (DevSecOps/Linux)
⚔️ Automation Engineer
⚔️ Platform Engineer
⚔️ Software Security
⚔️ Software QA
⚔️ Backend
⚔️ AI Engineer / Machine Learning
⚔️ Database Engineer / DBA

📩 همین الان پیام بده و استارت بزن! تا هم بتونی نیروی خوب پیدا کنی و یا یتونی یه موقعیت شغلی مناسب پیدا کنی

به من پیام بده آگهی یا رزومه ات رو قرار بدم اینجا

@mrbardia72
2
جدا از مهندسی پشت تلگرام که بهینه نوشته شده، تلگرام چیزی داره به اسم Update Queue. چیزی که ۱ سال از دوران جوونیم رو صرف مهندسی معکوسش کردم.
تلگرام برای پوش کردن تغییرات مثل پیام جدید، ادیت، ری اکشن، تایپینگ و… به کلاینت‌ها از سرویس Updates تو پروتکل MTProto استفاده میکنه، ایده ی کلی و کلیدی خیلی ساده اس و اینه که کلاینت ها یه state محلی نگه میدارن و آپدیتارو دقیقا با ترتیب درست اعمال میکنن؛ اگه شکافی بینشون افتاد، Difference می‌گیرن و دوباره پرش میکنن.

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

از اونجایی که هر پیامرسان منبع عظیمی از اتفاقاتیه که هر لحظه میوفته ما میتونیم اسم این اتفاقات رو event بزاریم. تلگرام هم یه پیامرسان مولتی کلاینته، یعنی هر کاربر میتونه چندین دیوایس برای یه حساب داشته باشه، پس وقتی یه ایونت اتفاق میوفته که باید یه کاربر از اون خبردار بشه باید اون ایونت رو به دیوایس های دیگه ی کاربر هم بفرسته، حدودا با مرتبه زمانی On^2.

مکانیزم اینجوریه که وقتی دیوایسی انلاین باشه و سوکت همون سوکتی باشه که keep alive هست یا اخرین rpc رو کال کرده سرور ایونت رو توی queue برای اون دیوایس نگه نمیداره و مستقیم میفرسته به کلاینت، حالا از اونجایی که کلاینت های دیگه ممکنه افلاین باشن یا حتی توی بکگراند پروسسشون کیل شده باشه عقب میمونن. حالا وقتی اون دیوایسی که عقب مونده بود با باز شدن سوکتش درخواست گرفتن اپدیت هارو وقتی که افلاین بوده رو از سرور میکنه و اطلاعات لوکالش رو میفرسته به سرور، من برای ساده شدنش اینجوری میگم که دیوایس میاد به سرور میگه من تا این زمان t رو داشتم و بعد این رو بهم بده، سرور هم میاد حساب کتابش رو میکنه و جواب رو توی یه پچ میفرسته! حالا چی توی این پچ هست و چی رو میفرسته رو میتونم یه رشته توییت دیگه در موردش بزنم.

حالا اگه اعدادی که توی پچ میاد با اعداد توی کلاینت نخونه عملا میگیم گپ اتفاق افتاده، برای همین هم کلاینت باید رکویست getDiff رو بزنه.
رکویست updates.getDifference به کلاینت اجازه می‌ده بگه:
من الان pts = X و seq = Y هستم و هر چی بین این و حالت جدید هست بهم بده.
• سرور ممکنه جواب بده:
difference: همه ی آپدیت های گمشده
differenceSlice: بخشی از آپدیت ها یعنی هنوز باید به فچ کردن ادامه بدی
differenceEmpty: چیزی تغییر نکرده

جالبترش اینه که توی نسخه های جدیدترش برای کانال ها مکانیسم جدا getChannelDifference هست، چون هر کانال pts مستقل داره و این باعث میشه شما فقط کانال هایی رو بگیری که تغییر کردن! برای سوپر گروه هم مکانیزم همینه.

این باعث می‌شه حتی اگر چند ساعت آفلاین باشی، بعد از اتصال دوباره دقیقاً همه‌چی رو بگیری و هیچ پیامی رو از دست ندی

حتی با packet loss یا reconnect، state کلاینت خراب نمیشه و سرور مجبور نیست برای هر کلاینت همه چی رو دوباره بفرسته. فقط gap ها sync میشن

<Abolfazl/>
🔵 عنوان مقاله
Cypress — How to Create Automatic Weekly Flake Alerting

🟢 خلاصه مقاله:
این مقاله نشان می‌دهد چگونه برای تست‌های flaky در Cypress یک سیستم هشدار هفتگی خودکار بسازیم. ابتدا با جمع‌آوری خروجی‌های قابل‌ماشین از CI (مثل JUnit/JSON) و ذخیره‌سازی نتایج هر اجرا، داده‌های لازم گردآوری می‌شود. سپس با محاسبه نرخ فلاکی در سطح تست و فایل، مقایسه هفتگی و شناسایی «پرتکرارترین» موارد، مهم‌ترین منابع ناپایداری مشخص می‌گردد. در ادامه، یک کار زمان‌بندی‌شده هفتگی گزارش خلاصه را به Slack یا ایمیل ارسال می‌کند و لینک‌هایی برای بررسی تاریخچه و اجرای‌های مشکل‌دار ارائه می‌دهد. در نهایت، با یک فرآیند تیمی ساده—تریاژ هفتگی، ایجاد تیکت، قرنطینه موقت تست‌های بد و تعیین آستانه/SLO—می‌توان نویز را کاهش داد، پایداری CI را افزایش داد و اعتماد توسعه‌دهندگان را بهبود بخشید.

🟣لینک مقاله:
https://cur.at/ChOQXrI?m=web


👑 @software_Labdon
Forwarded from Bardia & Erfan
ارتباط IPv6 از سمت زیرساخت کشور دچار اختلال و قطعی شده است.
🔵 عنوان مقاله
Testing AI: 5 obstacles and 7 workarounds

🟢 خلاصه مقاله:
این گفت‌وگو یک ساعتۀ نیکیتا سیدروویچ با مایکل بولتن به چالش‌های آزمون‌پذیری هوش مصنوعی می‌پردازد. پنج مانع اصلی شامل مسئلۀ اوراکل (نامشخص بودن پاسخ درست), غیرقطعی بودن خروجی‌ها, ابهام‌پذیری مدل, مشکلات کیفیت و偏‌داری داده, و فرسایش/دریفت در گذر زمان مطرح می‌شود. در برابر آن، هفت راهکار عملی پیشنهاد می‌شود: تعریف چند اوراکل و بازه‌های پذیرش، اتکا به سنجه‌های آماری و مقایسه با مبنا، ساخت داده‌های آزمون متنوع و سناریومحور (از جمله مصنوعی و خصمانه)، ارتقای مشاهده‌پذیری و ارزیابی پس از استقرار، آزمون اکتشافی و مبتنی بر ریسک با مشارکت ذی‌نفعان، افزودن ریل‌های ایمنی و انسان در حلقه برای تصمیم‌های حساس، و ارزیابی/نسخه‌بندی مداوم با حلقه‌های بازخورد. جمع‌بندی گفتگو بر تغییر نگرش تأکید دارد: آزمون هوش مصنوعی بیش از اثبات درستی، درباره توصیف رفتار، مدیریت ریسک و تصمیم‌سازی آگاهانه است.

🟣لینک مقاله:
https://cur.at/LHGWGqf?m=web


👑 @software_Labdon
امروز یکی از همکارانم سوال خوبی پرسید که فکر می‌کنم دغدغه خیلی‌هاست:
"فرق واقعی Async و Concurrency چیه؟ مگه هر دو به معنی انجام همزمان کارها نیستن؟"
این دو مفهوم اغلب با هم اشتباه گرفته می‌شن. بذارید با یک مثال ساده تفاوتشون رو باز کنم:
۱. Synchronous vs. Asynchronous
این مفاهیم درباره انتظار کشیدن هستن.
Sync
مثل اینه که بری کافه، قهوه سفارش بدی و همونجا جلوی پیشخوان منتظر بمونی تا آماده بشه و تحویل بگیری.
تا قهوه رو نگیری، هیچ کار دیگه‌ای نمی‌کنی.
Async
سفارش می‌دی، یک پیجر (Pager) می‌گیری و می‌ری سر میزت می‌نشینی.
در این فاصله می‌تونی ایمیل‌هاتو چک کنی.
هر وقت قهوه‌ات آماده شد، پیجر بهت خبر می‌ده.
تو منتظر نموندی و از زمانت استفاده کردی.

۲. Concurrency
این مفهوم درباره مدیریت چند کار در یک بازه زمانی هست.
باریستای کافه رو در نظر بگیرید:
اون همزمان هم سفارش شما رو آماده می‌کنه، هم سفارش نفر بعدی رو می‌گیره و هم شیر رو برای یک سفارش دیگه گرم می‌کنه.
در واقع اون با جابجایی سریع بین کارها (Context Switching)، چند وظیفه رو پیش می‌بره.
این یعنی هم‌روندی.

نکته کلیدی
برنامه‌نویسی Async یکی از راه‌های رسیدن به Concurrency هست.
درک این تفاوت، در طراحی سیستم‌های مدرن مثل میکروسرویس‌ها یا پایپ‌لاین‌های پردازش دیتا، یک مزیت فوق‌العاده است.
این درک به شما کمک می‌کنه تا بین ابزارهایی مثل Kafka, gRPC یا WebSockets انتخاب درستی داشته باشید و سیستمی بسازید که هم Scalable و هم Reliable باشه.


@ | <Ali Naseri/>
5
🔵 عنوان مقاله
My Journey: How I Mastered Test Automation

🟢 خلاصه مقاله:
ناوین خونته‌تا مسیر یادگیری خود در خودکارسازی تست را روایت می‌کند و نشان می‌دهد که تمرکز بر اصول پایه، رویکرد مهندسی به کدنویسی و تمرین مستمر کلید موفقیت است. او توصیه می‌کند یک پشته فناوری را عمیق یاد بگیرید، پروژه‌های کوچک بسازید، کد تمیز و قابل نگهداری بنویسید و از الگوهایی مانند انتزاع لایه‌ای برای کاهش شکنندگی تست‌ها بهره ببرید. مدیریت فِلِیکی بودن، داده و محیط تست، یکپارچه‌سازی با CI/CD، گزارش‌دهی و لاگ‌های قابل اقدام، و همسویی با هرم تست و اهداف محصول از محورهای اصلی اوست. در نهایت، با نقشه راه، جامعه‌پذیری و ثبت دستاوردها، می‌توان یادگیری را پایدار کرد و خودکارسازی تست را به مهارتی بلندمدت و اثرگذار تبدیل کرد.

🟣لینک مقاله:
https://cur.at/8IDYL8y?m=web


👑 @software_Labdon
🔵 عنوان مقاله
Why You Should Write More Context Tests and Fewer Unit Tests

🟢 خلاصه مقاله:
این مقاله با نقد تکیه‌ی پیش‌فرض بر «هرم تست» می‌گوید همیشه بهترین راه، نوشتنِ انبوه تست‌های واحد نیست. لوکاس فرناندس پیشنهاد می‌کند تمرکز بیشتری بر تست‌های «کانتکست» یا سطح بالاتر داشته باشیم؛ تست‌هایی که تعامل چند مؤلفه را با هم می‌سنجند و رفتار واقعی سیستم را می‌آزمایند. به‌گفته‌ی او، اتکای زیاد به تست‌های واحدِ مبتنی بر ماک می‌تواند اطمینان کاذب بدهد و با هر تغییر اجرای بی‌ضرر بشکند، در حالی که بسیاری از خطاهای واقعی در ادغام و پیکربندی را پوشش نمی‌دهد. راهکار، ایجاد توازنی تازه است: برای منطقِ خالص و لبه‌ها هنوز تست واحد بنویسید، اما اولویت را به تعداد کم‌تری تست سطح‌بالا بدهید که سناریوهای مهم و جریان‌های کاربری را می‌پوشانند و در عمل کیفیت سیستم را دقیق‌تر تضمین می‌کنند.

🟣لینک مقاله:
https://cur.at/2gikXOU?m=web


👑 @software_Labdon
بروزرسانی امنیتی جدید مایکروسافت کابوس کاربران شد...!

▪️آپدیت امنیتی آگوست 2025 برای ویندوز 10 و 11 باعث مشکلات جدی شده؛ تا جایی که بعضی کاربرا حتی نمی‌تونن برنامه‌ها رو نصب کنن.

▪️این آپدیت بخش UAC (کنترل حساب کاربری) رو خیلی سخت‌گیر کرده و کاربرای غیرادمین برای نصب یا اجرای بعضی برنامه‌ها مجبور به وارد کردن پسورد ادمین می‌شن.

+ در بعضی موارد هم برنامه‌ها اصلاً اجرا نمی‌شن ؛ مایکروسافت این مشکل رو تأیید کرده و احتمالاً به‌زودی یک پچ اصلاحی منتشر می‌کنه.
🔵 عنوان مقاله
From Chaos to Clarity: My Journey with QA Test Documentation

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

🟣لینک مقاله:
https://cur.at/M6ppa8C?m=web


👑 @software_Labdon
1
🔵 عنوان مقاله
Test Automation Guardrails

🟢 خلاصه مقاله:
افزایش تولید کد توسط هوش مصنوعی ریسک خطا، حفره‌های امنیتی و رفتارهای پیش‌بینی‌نشده را بیشتر می‌کند. اتکا به بررسی دستی کافی نیست؛ تست خودکار باید به‌عنوان نرده‌بان‌های ایمنی عمل کند و رفتار مورد انتظار را به‌صورت مشخصات اجرایی تثبیت کند. یک رویکرد لایه‌ای شامل تست‌های واحد، یکپارچه/قراردادی و سرتاسری، همراه با تحلیل ایستا و اسکن امنیتی، پوشش گسترده‌تری می‌دهد و در CI/CD تغییرات پرخطر را مسدود می‌کند. کیفیت و پایداری تست‌ها (کاهش فلیکینس، معنابخشی، سنجش اثربخشی) حیاتی است و هرچند هوش مصنوعی می‌تواند در تولید تست کمک کند، تأیید انسانی ضروری است. در نهایت، با پرچم‌های ویژگی، استیجینگ/کناری و مشاهده‌پذیری، محافظت تا تولید ادامه می‌یابد؛ نتیجه اینکه در عصر کد تولیدشده توسط AI، اتوماسیون تست مهم‌ترین سپر ایمنی است.)

🟣لینک مقاله:
https://cur.at/IABV4B5?m=web


👑 @software_Labdon
کد ۴۸ ساله معروف بیل گیتس، اوپن‌سورس شد!
مایکروسافت کد ۴۸ ساله‌ی معروف بیل گیتس را متن‌باز کرد تا هر کسی بتواند آن را ببیند و استفاده کند.

https://github.com/microsoft/BASIC-M6502

| <Saber V/>
🐳1👨‍💻1😎1