Forwarded from AI Labdon
برگه تقلب برنامه نویسی رو از اینجا پیدا کن
▪️اگه داری برنامه نویسی رو یاد میگیری یا دنبال کار میگردی و مصاحبه میری این چیت شیت ها( برگه تقلب ها) گزینه های خیلی خوبی هست برای مرور...
▪️تقریبا اکثر زبان ها و ابزارهارو پوشش میده و میتونی استفاده کنی ؛ نکته جذابش اینه که پرکابرد ترین پرامپت های ChatGPT هم داره :))
آدرس سایت:
Quickref.me
▪️اگه داری برنامه نویسی رو یاد میگیری یا دنبال کار میگردی و مصاحبه میری این چیت شیت ها( برگه تقلب ها) گزینه های خیلی خوبی هست برای مرور...
▪️تقریبا اکثر زبان ها و ابزارهارو پوشش میده و میتونی استفاده کنی ؛ نکته جذابش اینه که پرکابرد ترین پرامپت های ChatGPT هم داره :))
آدرس سایت:
Quickref.me
🔵 عنوان مقاله
What's NEW in Playwright? 13 Must-Know Features You Should Be Using
🟢 خلاصه مقاله:
این مطلب یک مرور ۱۶ دقیقهای از جوآن اسکویول مونترو را معرفی میکند که ۱۳ قابلیت جدید و مهم پلیرایت را بهصورت خلاصه و کاربردی توضیح میدهد. این مرور برای تسترها و توسعهدهندگانی است که میخواهند سریع و عملی با بهروزرسانیها آشنا شوند و بدانند هر قابلیت در پروژههای واقعی چه مزیتی دارد—از بهبود پایداری و سادهتر شدن خطایابی تا تسریع فرایندها. نتیجه آن یک جمعبندی موجز و مفید است تا بتوانید بهسرعت اولویت دهید کدام قابلیتها را زودتر به کار بگیرید.
🟣لینک مقاله:
https://cur.at/oPHJk1q?m=web
➖➖➖➖➖➖➖➖
👑 @software_Labdon
What's NEW in Playwright? 13 Must-Know Features You Should Be Using
🟢 خلاصه مقاله:
این مطلب یک مرور ۱۶ دقیقهای از جوآن اسکویول مونترو را معرفی میکند که ۱۳ قابلیت جدید و مهم پلیرایت را بهصورت خلاصه و کاربردی توضیح میدهد. این مرور برای تسترها و توسعهدهندگانی است که میخواهند سریع و عملی با بهروزرسانیها آشنا شوند و بدانند هر قابلیت در پروژههای واقعی چه مزیتی دارد—از بهبود پایداری و سادهتر شدن خطایابی تا تسریع فرایندها. نتیجه آن یک جمعبندی موجز و مفید است تا بتوانید بهسرعت اولویت دهید کدام قابلیتها را زودتر به کار بگیرید.
🟣لینک مقاله:
https://cur.at/oPHJk1q?m=web
➖➖➖➖➖➖➖➖
👑 @software_Labdon
YouTube
What’s NEW in Playwright? 🚀 13 Must-Know Features You Should Be Using
🎬 Playwright Just Leveled Up! 🔥 13 Killer Features You Missed
In this video, I review the most useful changes from the latest Playwright changelog, providing real-world examples and sharing my thoughts on how these can enhance your test automation capabilities.…
In this video, I review the most useful changes from the latest Playwright changelog, providing real-world examples and sharing my thoughts on how these can enhance your test automation capabilities.…
❤2
🔵 عنوان مقاله
How to Test LLMs, AI Assistants & Agents — The Future of QA
🟢 خلاصه مقاله:
این مقاله بهجای استفاده از هوش مصنوعی برای تست نرمافزار، بر پرسش دشوارتر تمرکز میکند: چگونه خودِ سامانههای هوش مصنوعی—مانند مدلهای زبانی، دستیارها و ایجنتها—را بهطور دقیق آزمایش کنیم؟ در گفتوگوی الکس خواستوویچ و ایگور دوروفسکیخ، توضیح داده میشود که چرا روشهای سنتی QA برای سیستمهای احتمالی و غیردترمینستیک کافی نیستند و باید کیفیت را در ابعادی مانند قابلیت اتکا، وفاداری به واقعیت، ایمنی، همراستایی با قصد کاربر، و مقاومت در برابر پرامپتهای خصمانه سنجید.
آنها به چالشهایی چون تعیین معیار «درستی» پاسخ، رگرسیون بین نسخههای مدل، و توازن میان خلاقیت و تکرارپذیری اشاره میکنند و مجموعهای از رویکردها را طرح میکنند: دیتاستهای مرجع و تستهای رفتاری، ردتیمینگ، ارزیابی با روبریک یا مقایسه زوجی، بنچمارکهای آفلاین در کنار A/B تست آنلاین با گاردریلها، و بازبینی انسانی برای موارد مرزی. همچنین بر آزمایش انتهابهانتها برای ایجنتها (برنامهریزی، استفاده از ابزار، بازیابی از خطا) و پایش مداوم در تولید تأکید میشود.
جمعبندی بحث این است که تست هوش مصنوعی نسل بعدی QA است؛ مستلزم متریکهای تازه، فرایندهای ارزیابی منسجم، و همکاری نزدیک میان تیمهای QA، محصول و پژوهش تا سامانههایی قابل اعتماد، ایمن و قابل پیشبینی در سناریوهای واقعی ساخته شوند.
🟣لینک مقاله:
https://cur.at/6J2eaHV?m=web
➖➖➖➖➖➖➖➖
👑 @software_Labdon
How to Test LLMs, AI Assistants & Agents — The Future of QA
🟢 خلاصه مقاله:
این مقاله بهجای استفاده از هوش مصنوعی برای تست نرمافزار، بر پرسش دشوارتر تمرکز میکند: چگونه خودِ سامانههای هوش مصنوعی—مانند مدلهای زبانی، دستیارها و ایجنتها—را بهطور دقیق آزمایش کنیم؟ در گفتوگوی الکس خواستوویچ و ایگور دوروفسکیخ، توضیح داده میشود که چرا روشهای سنتی QA برای سیستمهای احتمالی و غیردترمینستیک کافی نیستند و باید کیفیت را در ابعادی مانند قابلیت اتکا، وفاداری به واقعیت، ایمنی، همراستایی با قصد کاربر، و مقاومت در برابر پرامپتهای خصمانه سنجید.
آنها به چالشهایی چون تعیین معیار «درستی» پاسخ، رگرسیون بین نسخههای مدل، و توازن میان خلاقیت و تکرارپذیری اشاره میکنند و مجموعهای از رویکردها را طرح میکنند: دیتاستهای مرجع و تستهای رفتاری، ردتیمینگ، ارزیابی با روبریک یا مقایسه زوجی، بنچمارکهای آفلاین در کنار A/B تست آنلاین با گاردریلها، و بازبینی انسانی برای موارد مرزی. همچنین بر آزمایش انتهابهانتها برای ایجنتها (برنامهریزی، استفاده از ابزار، بازیابی از خطا) و پایش مداوم در تولید تأکید میشود.
جمعبندی بحث این است که تست هوش مصنوعی نسل بعدی QA است؛ مستلزم متریکهای تازه، فرایندهای ارزیابی منسجم، و همکاری نزدیک میان تیمهای QA، محصول و پژوهش تا سامانههایی قابل اعتماد، ایمن و قابل پیشبینی در سناریوهای واقعی ساخته شوند.
🟣لینک مقاله:
https://cur.at/6J2eaHV?m=web
➖➖➖➖➖➖➖➖
👑 @software_Labdon
YouTube
How to Test LLMs, AI Assistants & Agents — The Future of QA (with Igor Dorovskikh)
In this episode, Alex talks with Igor Dorovskikh—a leader in AI and software testing—about the future of QA in the age of AI.
Interested in a deeper dive? Use coupon ALEX299 for $299 off the October cohort of “How to Test AI Apps – The Most In-Demand QA Skill.”…
Interested in a deeper dive? Use coupon ALEX299 for $299 off the October cohort of “How to Test AI Apps – The Most In-Demand QA Skill.”…
🔵 عنوان مقاله
Global Cache: Make Playwright BeforeAll Run Once for All Workers
🟢 خلاصه مقاله:
این مقاله نشان میدهد که چرا beforeAll در اجرای موازی تستهای Playwright کافی نیست، چون معمولاً برای هر فایل یا هر کارگر اجرا میشود و باعث تکرار تنظیمات پرهزینه میگردد. نویسنده، ویتالی پوتاپوف، راهکاری عملی پیشنهاد میکند: یک کش سراسری سفارشی که فقط یکبار تولید میشود و همه کارگرها از آن استفاده میکنند. با این کار، اقلامی مثل توکنهای احراز هویت، دادههای اولیه یا متادیتای محیط فقط یکبار ساخته و سپس بین کارگرها به اشتراک گذاشته میشوند. او به محل نگهداری کش (حافظه، فایل، یا گام globalSetup)، مدیریت همزمانی برای جلوگیری از رقابت کارگرها و پاکسازی درست منابع اشاره میکند. نتیجه، تستهایی سریعتر، پایدارتر و قابل پیشبینیتر در اجرای موازی است.
🟣لینک مقاله:
https://cur.at/yMncNKn?m=web
➖➖➖➖➖➖➖➖
👑 @software_Labdon
Global Cache: Make Playwright BeforeAll Run Once for All Workers
🟢 خلاصه مقاله:
این مقاله نشان میدهد که چرا beforeAll در اجرای موازی تستهای Playwright کافی نیست، چون معمولاً برای هر فایل یا هر کارگر اجرا میشود و باعث تکرار تنظیمات پرهزینه میگردد. نویسنده، ویتالی پوتاپوف، راهکاری عملی پیشنهاد میکند: یک کش سراسری سفارشی که فقط یکبار تولید میشود و همه کارگرها از آن استفاده میکنند. با این کار، اقلامی مثل توکنهای احراز هویت، دادههای اولیه یا متادیتای محیط فقط یکبار ساخته و سپس بین کارگرها به اشتراک گذاشته میشوند. او به محل نگهداری کش (حافظه، فایل، یا گام globalSetup)، مدیریت همزمانی برای جلوگیری از رقابت کارگرها و پاکسازی درست منابع اشاره میکند. نتیجه، تستهایی سریعتر، پایدارتر و قابل پیشبینیتر در اجرای موازی است.
🟣لینک مقاله:
https://cur.at/yMncNKn?m=web
➖➖➖➖➖➖➖➖
👑 @software_Labdon
DEV Community
Global Cache: Make Playwright BeforeAll Run Once for All Workers
Intro Let’s start with a quick quiz: How many times will the BeforeAll hook run in the...
🔵 عنوان مقاله
One team, one goal: The reality of introducing a unified testing strategy
🟢 خلاصه مقاله:
سام فارندل و جینا چلتون روایت میکنند چگونه از پراکندگی ابزارها و تعریفهای متفاوت کیفیت به یک راهبرد یکپارچه آزمون رسیدند. آنها با شنیدن مسائل تیمها، مجموعهای از اصول مشترک مانند آزمون مبتنی بر ریسک، شیفت-چپ، هرم آزمون و سنجههای کیفیت واحد تدوین کردند و با حداقل استانداردها، ابزارهای پیشنهادی، خط لولههای CI/CD و حاکمیت سبک، تعادل بین خودمختاری تیمها و یکپارچگی سازمانی را برقرار ساختند. اجرای تدریجی با پایلوتها، آموزش، جامعههای عمل و داشبوردهای شفاف، تردیدها را کاهش داد و به بهبود سرعت بازخورد، کاهش تستهای ناپایدار و همکاری بهتر انجامید. جمعبندی آنها: بر اصول بجای نسخههای دستوری تکیه کنید، روی جامعهسازی و سنجههای معنادار سرمایهگذاری کنید و راهبرد آزمون را یک محصول زنده بدانید، نه یک پروژه مقطعی.
🟣لینک مقاله:
https://cur.at/xkT0Gqj?m=web
➖➖➖➖➖➖➖➖
👑 @software_Labdon
One team, one goal: The reality of introducing a unified testing strategy
🟢 خلاصه مقاله:
سام فارندل و جینا چلتون روایت میکنند چگونه از پراکندگی ابزارها و تعریفهای متفاوت کیفیت به یک راهبرد یکپارچه آزمون رسیدند. آنها با شنیدن مسائل تیمها، مجموعهای از اصول مشترک مانند آزمون مبتنی بر ریسک، شیفت-چپ، هرم آزمون و سنجههای کیفیت واحد تدوین کردند و با حداقل استانداردها، ابزارهای پیشنهادی، خط لولههای CI/CD و حاکمیت سبک، تعادل بین خودمختاری تیمها و یکپارچگی سازمانی را برقرار ساختند. اجرای تدریجی با پایلوتها، آموزش، جامعههای عمل و داشبوردهای شفاف، تردیدها را کاهش داد و به بهبود سرعت بازخورد، کاهش تستهای ناپایدار و همکاری بهتر انجامید. جمعبندی آنها: بر اصول بجای نسخههای دستوری تکیه کنید، روی جامعهسازی و سنجههای معنادار سرمایهگذاری کنید و راهبرد آزمون را یک محصول زنده بدانید، نه یک پروژه مقطعی.
🟣لینک مقاله:
https://cur.at/xkT0Gqj?m=web
➖➖➖➖➖➖➖➖
👑 @software_Labdon
Ministry of Testing
One team, one goal: The reality of introducing a unified testing strategy
Find out how a large, cross-functional tech team unified testing to improve quality at scale
Forwarded from Bardia & Erfan
🚀 به دنیای توسعه و تکنولوژی خوش اومدی!
اگر به موضوعات زیر علاقهمندی:
🔹 Golang
🔹 Linux & DevOps
🔹 Software Engineering
🔹 AI & Machine Learning
🔹 فرصتهای شغلی ریموت (خارجی و داخلی)
ما برات یه مجموعه کانالهای تخصصی ساختیم تا همیشه بهروز، حرفهای و الهامبخش بمونی!
📚 یادگیری، فرصت، شبکهسازی و پیشرفت، همش اینجاست...
📌 از این لینک همه چنلهامونو یهجا ببین و جوین شو:
👉 https://t.me/addlist/QtXiQlynEJwzODBk
اگر به موضوعات زیر علاقهمندی:
🔹 Golang
🔹 Linux & DevOps
🔹 Software Engineering
🔹 AI & Machine Learning
🔹 فرصتهای شغلی ریموت (خارجی و داخلی)
ما برات یه مجموعه کانالهای تخصصی ساختیم تا همیشه بهروز، حرفهای و الهامبخش بمونی!
📚 یادگیری، فرصت، شبکهسازی و پیشرفت، همش اینجاست...
📌 از این لینک همه چنلهامونو یهجا ببین و جوین شو:
👉 https://t.me/addlist/QtXiQlynEJwzODBk
🔵 عنوان مقاله
Implementing High Volume Automated Testing System
🟢 خلاصه مقاله:
** این مقاله با شرح تجربهٔ میرک دووگوشز نشان میدهد چگونه میتوان یک چارچوب آزمون خودکار در مقیاس بالا ساخت و پایدار نگه داشت. معماری پیشنهادی، زمانبندی و صفبندی آزمونها را از اجرای آنها جدا میکند، با شاردینگ و موازیسازی گسترده، محیطهای قابلتکرار و دادهٔ آزمون مدیریتشده برای جداسازی و قطعیت نتایج. برای اطمینان، سازوکارهایی مانند تشخیص و قرنطینهٔ آزمونهای ناپایدار، تکرار کنترلشده، هرمتیسیته و مشاهدهپذیری با شاخصهایی مثل زمان دریافت بازخورد و نرخ شکست به کار میروند. کارایی و هزینه با تحلیل تأثیر تغییرات، اجرای تدریجی و انتخابی، کش نتایج و سیاستهای منابع کنترل میشود و تجربهٔ توسعهدهنده با API ساده، فیکسچرهای یکدست و ابزارهای بازتولید خطا بهبود مییابد. جمعبندی: سامانهٔ آزمون را مثل یک محصول با مالکیت، اندازهگیری مستمر و اتوماسیون گامبهگام بسازید؛ نتیجه، بازخورد سریعتر، اطمینان بالاتر و کاهش هزینهٔ هر تغییر است.
🟣لینک مقاله:
https://cur.at/7kwVpmm?m=web
➖➖➖➖➖➖➖➖
👑 @software_Labdon
Implementing High Volume Automated Testing System
🟢 خلاصه مقاله:
** این مقاله با شرح تجربهٔ میرک دووگوشز نشان میدهد چگونه میتوان یک چارچوب آزمون خودکار در مقیاس بالا ساخت و پایدار نگه داشت. معماری پیشنهادی، زمانبندی و صفبندی آزمونها را از اجرای آنها جدا میکند، با شاردینگ و موازیسازی گسترده، محیطهای قابلتکرار و دادهٔ آزمون مدیریتشده برای جداسازی و قطعیت نتایج. برای اطمینان، سازوکارهایی مانند تشخیص و قرنطینهٔ آزمونهای ناپایدار، تکرار کنترلشده، هرمتیسیته و مشاهدهپذیری با شاخصهایی مثل زمان دریافت بازخورد و نرخ شکست به کار میروند. کارایی و هزینه با تحلیل تأثیر تغییرات، اجرای تدریجی و انتخابی، کش نتایج و سیاستهای منابع کنترل میشود و تجربهٔ توسعهدهنده با API ساده، فیکسچرهای یکدست و ابزارهای بازتولید خطا بهبود مییابد. جمعبندی: سامانهٔ آزمون را مثل یک محصول با مالکیت، اندازهگیری مستمر و اتوماسیون گامبهگام بسازید؛ نتیجه، بازخورد سریعتر، اطمینان بالاتر و کاهش هزینهٔ هر تغییر است.
🟣لینک مقاله:
https://cur.at/7kwVpmm?m=web
➖➖➖➖➖➖➖➖
👑 @software_Labdon
Mirek Długosz personal website
Experience report: Implementing High Volume Automated Testing system
I first heard about High Volume Automated Testing in 2017, and I’ve wanted to try it ever since. The opportunity came in 2022, when I was working on revamping a UI testing framework for software called Quipucords. This article focuses on the decision points…
تلگرام 12.0 و اضافه شدن Grok...پایان زودهنگام یک شراکت...؟!
▪️قرار بود تلگرام نسخه 12.0 رو همراه با ادغام Grok منتشر کنه، اما تا امروز (31 اوت 2025) هیچ تأیید رسمیای نشده. به نظر میاد این توافق متوقف شده و هنوز قراردادی امضا یا اطلاعیهای رسمی منتشر نشده.
▪️این موضوع احتمالاً یعنی Grok طبق برنامه وارد نسخه 12.0 نشده ، شاید به خاطر شکست مذاکرات، تغییر استراتژی یا تأخیرهای دیگه.
▪️قرار بود تلگرام نسخه 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 (پیامدها)
مزایا و معایب این تصمیم، و اثراتی که بر سیستم دارد.
---
### مثال ساده
➖➖➖➖➖➖➖➖
👑 @software_Labdon
به طور ساده:
وقتی در طراحی یک سیستم نرمافزاری تصمیمهای مهمی مثل انتخاب دیتابیس، معماری میکروسرویسها، الگوی کشینگ، یا حتی انتخاب یک کتابخانه مهم گرفته میشود، این تصمیمها باید مستند شوند تا بعداً تیم یا افراد جدید بدانند چرا آن انتخاب انجام شده و چه گزینههایی رد شدهاند.
یک 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
Software Engineer Labdon
ا"Architecture Decision Record (ADR) Template" یعنی یک قالب (Template) برای ثبت و مستندسازی تصمیمهای معماری نرمافزار. به طور ساده: وقتی در طراحی یک سیستم نرمافزاری تصمیمهای مهمی مثل انتخاب دیتابیس، معماری میکروسرویسها، الگوی کشینگ، یا حتی انتخاب یک…
adr-template.md
1.1 KB
🙏3
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
و دنبال نیرو یا موقعیت شغلی توی حوزههای زیر هستی، به من پیام بده 👇
⚔️ 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
فیچر های ++C توی ورژن های 2020 2017 2014 2011 رو به صورت یه جا همشو اینجا جمع کردن با توضیح کوتاه و ساده:
https://github.com/AnthonyCalandra/modern-cpp-features
<Nimo/>
https://github.com/AnthonyCalandra/modern-cpp-features
<Nimo/>
GitHub
GitHub - AnthonyCalandra/modern-cpp-features: A cheatsheet of modern C++ language and library features.
A cheatsheet of modern C++ language and library features. - AnthonyCalandra/modern-cpp-features
جدا از مهندسی پشت تلگرام که بهینه نوشته شده، تلگرام چیزی داره به اسم 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/>
تلگرام برای پوش کردن تغییرات مثل پیام جدید، ادیت، ری اکشن، تایپینگ و… به کلاینتها از سرویس 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
Cypress — How to Create Automatic Weekly Flake Alerting
🟢 خلاصه مقاله:
این مقاله نشان میدهد چگونه برای تستهای flaky در Cypress یک سیستم هشدار هفتگی خودکار بسازیم. ابتدا با جمعآوری خروجیهای قابلماشین از CI (مثل JUnit/JSON) و ذخیرهسازی نتایج هر اجرا، دادههای لازم گردآوری میشود. سپس با محاسبه نرخ فلاکی در سطح تست و فایل، مقایسه هفتگی و شناسایی «پرتکرارترین» موارد، مهمترین منابع ناپایداری مشخص میگردد. در ادامه، یک کار زمانبندیشده هفتگی گزارش خلاصه را به Slack یا ایمیل ارسال میکند و لینکهایی برای بررسی تاریخچه و اجرایهای مشکلدار ارائه میدهد. در نهایت، با یک فرآیند تیمی ساده—تریاژ هفتگی، ایجاد تیکت، قرنطینه موقت تستهای بد و تعیین آستانه/SLO—میتوان نویز را کاهش داد، پایداری CI را افزایش داد و اعتماد توسعهدهندگان را بهبود بخشید.
🟣لینک مقاله:
https://cur.at/ChOQXrI?m=web
➖➖➖➖➖➖➖➖
👑 @software_Labdon
Medium
Cypress — How to Create Automatic Weekly Flake Alerting
Flaky tests waste time, erode confidence, and make debugging a nightmare — especially when running in parallel across multiple CI machines…
Forwarded from Bardia & Erfan
ارتباط IPv6 از سمت زیرساخت کشور دچار اختلال و قطعی شده است.
🔵 عنوان مقاله
Testing AI: 5 obstacles and 7 workarounds
🟢 خلاصه مقاله:
این گفتوگو یک ساعتۀ نیکیتا سیدروویچ با مایکل بولتن به چالشهای آزمونپذیری هوش مصنوعی میپردازد. پنج مانع اصلی شامل مسئلۀ اوراکل (نامشخص بودن پاسخ درست), غیرقطعی بودن خروجیها, ابهامپذیری مدل, مشکلات کیفیت و偏داری داده, و فرسایش/دریفت در گذر زمان مطرح میشود. در برابر آن، هفت راهکار عملی پیشنهاد میشود: تعریف چند اوراکل و بازههای پذیرش، اتکا به سنجههای آماری و مقایسه با مبنا، ساخت دادههای آزمون متنوع و سناریومحور (از جمله مصنوعی و خصمانه)، ارتقای مشاهدهپذیری و ارزیابی پس از استقرار، آزمون اکتشافی و مبتنی بر ریسک با مشارکت ذینفعان، افزودن ریلهای ایمنی و انسان در حلقه برای تصمیمهای حساس، و ارزیابی/نسخهبندی مداوم با حلقههای بازخورد. جمعبندی گفتگو بر تغییر نگرش تأکید دارد: آزمون هوش مصنوعی بیش از اثبات درستی، درباره توصیف رفتار، مدیریت ریسک و تصمیمسازی آگاهانه است.
🟣لینک مقاله:
https://cur.at/LHGWGqf?m=web
➖➖➖➖➖➖➖➖
👑 @software_Labdon
Testing AI: 5 obstacles and 7 workarounds
🟢 خلاصه مقاله:
این گفتوگو یک ساعتۀ نیکیتا سیدروویچ با مایکل بولتن به چالشهای آزمونپذیری هوش مصنوعی میپردازد. پنج مانع اصلی شامل مسئلۀ اوراکل (نامشخص بودن پاسخ درست), غیرقطعی بودن خروجیها, ابهامپذیری مدل, مشکلات کیفیت و偏داری داده, و فرسایش/دریفت در گذر زمان مطرح میشود. در برابر آن، هفت راهکار عملی پیشنهاد میشود: تعریف چند اوراکل و بازههای پذیرش، اتکا به سنجههای آماری و مقایسه با مبنا، ساخت دادههای آزمون متنوع و سناریومحور (از جمله مصنوعی و خصمانه)، ارتقای مشاهدهپذیری و ارزیابی پس از استقرار، آزمون اکتشافی و مبتنی بر ریسک با مشارکت ذینفعان، افزودن ریلهای ایمنی و انسان در حلقه برای تصمیمهای حساس، و ارزیابی/نسخهبندی مداوم با حلقههای بازخورد. جمعبندی گفتگو بر تغییر نگرش تأکید دارد: آزمون هوش مصنوعی بیش از اثبات درستی، درباره توصیف رفتار، مدیریت ریسک و تصمیمسازی آگاهانه است.
🟣لینک مقاله:
https://cur.at/LHGWGqf?m=web
➖➖➖➖➖➖➖➖
👑 @software_Labdon
YouTube
Zebrunner Expert Series | Webinar with Michael Bolton — Testing AI: 5 obstacles and 7 workarounds
📣 Join us for the 3rd Zebrunner Expert Series Webinar and dive deep into the world of AI testing with industry legend Michael Bolton (yes, the Michael Bolton!)
😵 Feeling overwhelmed by the hype around AI testing ❓
Michael cuts through the noise and helps…
😵 Feeling overwhelmed by the hype around AI testing ❓
Michael cuts through the noise and helps…
امروز یکی از همکارانم سوال خوبی پرسید که فکر میکنم دغدغه خیلیهاست:
"فرق واقعی Async و Concurrency چیه؟ مگه هر دو به معنی انجام همزمان کارها نیستن؟"
این دو مفهوم اغلب با هم اشتباه گرفته میشن. بذارید با یک مثال ساده تفاوتشون رو باز کنم:
۱. Synchronous vs. Asynchronous
این مفاهیم درباره انتظار کشیدن هستن.
Sync
مثل اینه که بری کافه، قهوه سفارش بدی و همونجا جلوی پیشخوان منتظر بمونی تا آماده بشه و تحویل بگیری.
تا قهوه رو نگیری، هیچ کار دیگهای نمیکنی.
Async
سفارش میدی، یک پیجر (Pager) میگیری و میری سر میزت مینشینی.
در این فاصله میتونی ایمیلهاتو چک کنی.
هر وقت قهوهات آماده شد، پیجر بهت خبر میده.
تو منتظر نموندی و از زمانت استفاده کردی.
۲. Concurrency
این مفهوم درباره مدیریت چند کار در یک بازه زمانی هست.
باریستای کافه رو در نظر بگیرید:
اون همزمان هم سفارش شما رو آماده میکنه، هم سفارش نفر بعدی رو میگیره و هم شیر رو برای یک سفارش دیگه گرم میکنه.
در واقع اون با جابجایی سریع بین کارها (Context Switching)، چند وظیفه رو پیش میبره.
این یعنی همروندی.
نکته کلیدی
برنامهنویسی Async یکی از راههای رسیدن به Concurrency هست.
درک این تفاوت، در طراحی سیستمهای مدرن مثل میکروسرویسها یا پایپلاینهای پردازش دیتا، یک مزیت فوقالعاده است.
این درک به شما کمک میکنه تا بین ابزارهایی مثل Kafka, gRPC یا WebSockets انتخاب درستی داشته باشید و سیستمی بسازید که هم Scalable و هم Reliable باشه.
@ | <Ali Naseri/>
"فرق واقعی 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
My Journey: How I Mastered Test Automation
🟢 خلاصه مقاله:
ناوین خونتهتا مسیر یادگیری خود در خودکارسازی تست را روایت میکند و نشان میدهد که تمرکز بر اصول پایه، رویکرد مهندسی به کدنویسی و تمرین مستمر کلید موفقیت است. او توصیه میکند یک پشته فناوری را عمیق یاد بگیرید، پروژههای کوچک بسازید، کد تمیز و قابل نگهداری بنویسید و از الگوهایی مانند انتزاع لایهای برای کاهش شکنندگی تستها بهره ببرید. مدیریت فِلِیکی بودن، داده و محیط تست، یکپارچهسازی با CI/CD، گزارشدهی و لاگهای قابل اقدام، و همسویی با هرم تست و اهداف محصول از محورهای اصلی اوست. در نهایت، با نقشه راه، جامعهپذیری و ثبت دستاوردها، میتوان یادگیری را پایدار کرد و خودکارسازی تست را به مهارتی بلندمدت و اثرگذار تبدیل کرد.
🟣لینک مقاله:
https://cur.at/8IDYL8y?m=web
➖➖➖➖➖➖➖➖
👑 @software_Labdon
Medium
My Journey: How I Mastered Test Automation
The honest journey from manual testing to automation mastery.