Mahi in Tech
377 subscribers
197 photos
17 videos
8 files
254 links
Download Telegram
Forwarded from Arsham's Tech Mastery (Arsham)
تست ستون پروژست!
و همونطور که خونه هایی هم هستن که قدیمی و کاه گلی اند و ستون ندارن، و یه بارون بزنه هم سقفشون میریزه، یا نمیشه به راحتی یا کلا بهشون طبقه اضافه کرد، پروژه هایی هم هستن که تست (ستون) ندارن،‌ و یه فیچر جدید بخوای اضافه کنی تمام فیچر های قبلی میترکه!

زیاد میشنوم که میگن تست به دیباگ کردن کد کمک میکنه، اما این ممکنه یکم گمراه کننده باشه.

این نکته کلیدی فراموش نشه که در خیلی از مدل های تست از جمله unit و integration، ما برای سناریو هایی تست مینویسیم، که سناریو اش رو میدونیم!
در این مدل تست ها، اگه باگی رو با تست دستی نتونیم پیدا کنیم، تست اتومات هیچ کمکی به ما نمیکنه.
پس در واقع با تست اتومات داریم استحکام چیزی که داریم رو تضمین میکنیم.

ولی خب، تو یه سری مدل تست ها مثل e2e و load test هم مجددا سناریو رو میدونیم، با اینحال ممکنه قسمتی از فلو (flow)، مطابق انتظار پیش نره، لود تست که کلا داستان خاص خودشو داره،
ولی تو e2e هم مجددا اگه ایراد پیش‌بینی نشده ای پیدا بشه، احتمالا در نقاط اتصال هست، و e2e هم تو پیدا کردن باگ لاجیکی غیرمنتظره، کمکی به ما نمیکنه.

<--×-->

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

اهمیت این موضوع رو کدبیس های بزرگتر، خیلی بیشتر به چشم میاد.

<--×-->

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

غیر منطقی به نظر میاد،
اما منم بارها شاهدش بودم!
ولی مسئله اینجا تست نیست،
باید به خیلی قبل ترش نگاه کنیم،
همون جایی که نیازمندی بیزنس داره مشخص میشه.

<--×-->

از خوبی های جانبی تست هم میشه به "مثال بودن" اش اشاره کرد. با فرض دنیای ایده آل، خوندن تست های یه پروژه خیلی ساده تر از خوندن کد خود پروژست، و از رو تست هاش میشه به سادگی فهمید که چیکار میکنه و ورودی و خروجی مورد انتظار سیستم چی هست.
البته خب تو دنیای واقعی و غیر ایده آل، ممکنه یه دولوپر تازه کار مدعی سینیوریتی همین تست هارو فراپیچیده (over complex) کنه.

یه مزیت جانبی دیگه تست هم میتونه بحث تمیزی کد باشه، کدی که تمیز نباشه به راحتی قابل تست نیست، پس در واقع تست مارو مجبور میکنه که کد تمیز تری بنویسیم.

<--×-->

ولی خب در کل نظر شما راجع به تست چیه؟
مزایا؟ معایب؟ پیشنهاد؟ انتقاد؟ به من، به پست، به کانال و... 🙂🙌🏼
❤‍🔥4🙊2
🔻نسخه‌ی 12 لاراول ریلیز شد.

▫️ github.com/laravel/laravel/releases/tag/v12.0.0
Please open Telegram to view this post
VIEW IN TELEGRAM
🙊3❤‍🔥1
احتمالا دیده باشید ولی سازنده‌ی ردیس چند هفته‌ پیش یک پستی منتشر کرده با این عنوان که «ما درحال نابود کردن نرم‌افزار هستیم»! و یکی از مواردی که مطرح (گلایه می‌کنه درواقع) می‌کنه و به‌نظرم جالب بود این هست:
ما در حال نابود کردن نرم‌افزار هستیم وقتی که به برنامه‌نویسان جدید می‌گوییم: «چرخ را دوباره اختراع نکنید!». اما، اختراع دوباره چرخ است که به شما یاد می‌دهد چیزها چگونه کار می‌کنند و اولین قدم برای ساخت چرخ‌های جدید و متفاوت است.

باقی موارد رو هم پیشنهاد می‌کنم بخونید، کوتاه هست:
🔗 antirez.com/news/145
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥4👍1🙊1
اگر چنین کانال‌هایی دارید که برای ذخیره‌ی مطالب مختلف ازشون استفاده می‌کنید، حواستون باشه که حتما به شکل private درشون بیارید. شاید شما لینک‌ش رو جایی به‌اشتراک نذارید ولی ادمین‌های کانال‌ها می‌تونن ببینند مطالب کجا فوروارد شده. و خب اگر محتوای حساسی داخلشون داشته باشید زیاد جالب نمی‌شه :[
😁8👍2🙊1
هویت بصری جدید همراه اول 😐
Please open Telegram to view this post
VIEW IN TELEGRAM
😁8🙊1
Forwarded from Linuxor ?
وقتی دارین سرچ بار درست می‌کنین یوزر هر کاراکتری وارد کرد فورا به سمت سرور انتقالش ندید Debounce هم در نظر بگیرین یه تایمی صبر کنید که شاید چیز دیگه ای هم تایپ کرد بعد ارسال کنید مثلا 300 میلی ثانیه درواقع با هر کاراکتر جدید اگه تایم درخواست قبلی فرا نرسیده بود اون درخواستو ابطالش کنید و به سرور ارسال نکنید

توی حالت عادی

/search?q=h
/search?q=he
/search?q=hel
/search?q=hell
/search?q=hello

پنج تا درخواست برای hello میره ولی نیازی نیست این همه درخواست بره. توی سرعت تایپ معمولی با دیبانس فقط

/search?q=hello

ارسال میشه و فشار روی سرور کم می‌شه.

@Linxuor
👍7🙊1
👨‍💻 یک روش ساده برای صحت‌سنجی کد ملی که اخیرا متوجه‌ش شدم رو باهاتون به‌اشتراک می‌گذارم:

کد ملی ایران ۱۰ رقمی هست و رقم آخرش (رقم دهم) نقش عدد کنترل رو داره. حالا چطوری بفهمیم کد ملی درست هست؟

۱. رقم آخر رو جدا کنید:
- مثلاً در کد
930-011000-4
رقم آخر یا همون عدد کنترل ۴ هست.

۲. بقیه ارقام رو ضرب در جایگاه‌شون کنید:
- از رقم اول تا نهم (از چپ به راست) رو به ترتیب در ۱۰ تا ۲ ضرب کنید:
(رقم۱×۱۰) + (رقم۲×۹) + ... + (رقم۹×۲)

- مثلاً برای کد 930011000:
(۹×۱۰) + (۳×۹) + (۰×۸) + (۰×۷) + (۱×۶) + (۱×۵) + (۰×۴) + (۰×۳) + (۰×۲) = ۹۰ + ۲۷ + ۰ + ۰ + ۶ + ۵ + ۰ + ۰ + ۰ = ۱۲۸


۳. حاصل رو تقسیم بر ۱۱ کنید:
- مجموع بالا (مثلاً ۱۲۸) رو بر ۱۱ تقسیم و باقی‌مانده رو حساب کنید
- مثلاً:
۱۲۸ ÷ ۱۱ = ۱۱ → باقی‌مانده = ۷


۴. عدد کنترل رو بررسی کنید:
- اگر باقی‌مانده ۰ یا ۱ بود، عدد کنترل باید همون عدد باشه.
- اگر باقی‌مانده بیشتر از ۱ بود، عدد کنترل باید برابر (باقی‌مانده - ۱۱) باشه.
- در مثال بالا: باقی‌مانده ۷ → ۷-۱۱. پس عدد کنترل باید ۴ باشه که درست هست!

پ.ن: این روش فقط یک بررسی اولیه هست و کدهای غیرواقعی هم ممکنه از این تست عبور کنن.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🙊1
دقیق‌ترین سیستم OCR موجود فعلا به‌صورت رایگان دردسترس قرار گرفته.

chat.mistral.ai/chat
🙊2
Forwarded from Software Philosophy
۱۰ برابر شدن سرعت TypeScript با پورت کامپایلر به GO

در این ویدئو Andres Hejlsberg (خالق تایپ‌اسکریپت و سی‌شارپ) توضیح می‌دهد که چگونه با پورت کردن کدهای کامپایلر TypeScript به GO، سرعت کامپایل را 10x بهتر کرده‌اند!

او همچنین توضیح می‌دهد که چرا زیرساخت JavaScript برای این کار مناسب نیست. در حقیقت این زبان بیشتر برای کارهای UI طراحی شده بوده و زیرساخت‌های لازم برای کارهای performance-intensive مانند این کار را ندارد.

برای من خیلی جالب بود خالق سی‌شارپ، زبان GO را برای این کار انتخاب کرده، پس مستندات مربوط به این تصمیم را خواندم.
https://github.com/microsoft/typescript-go/discussions/411

اولین نکته جالب این بود که چقدر بدون تعصب و با ذهن باز زبان‌های مختلف رو بررسی کردن.
با توجه به اینکه هر دو زبان‌ C#, GO از لحاظ پرفورمنسی بسیار خوب هستند، یکی از مهم‌ترین دلایل انتخاب GO تشابه بسیار بالای سینتکس آن با TypeScript بوده است.

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

از بین زبان‌های C#, GO و Rust، زبان گو تشابه سینتکسی بیشتری با تایپ‌اسکریپت داشته و در نهایت انتخاب شده.

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


https://www.youtube.com/watch?v=pNlq-EVld70

#مهران_داودی (لینکدین - بلاگ)

⁉️ برای بحث و تبادل نظر فنی در مورد این پست، نظرات خود را با ما در قسمت کامنت‌ها به اشتراک بگذارید.

کانال تلگرام:
@SoftwarePhilosophy

______
👍2🌚1🙊1
مایکروسافت اخیرا فرمت جدیدی برای فایل‌های solution پروژه‌های دات‌نتی معرفی کرده تحت عنوان slnx. که خب تنها تفاوتش‌ این هست که محتویات داخل‌ش خیلی مختصر، خوانا‌تر و در فرمت xml هستن.

در 9 .NET به کمک این دستور می‌تونید یک فایل slnx جنریت کنید:
dotnet sln migrate
1🔥4🙊1
این شبیه‌ساز Mac OS رو یکی از دوستان معرفی کرد که ظاهرا خیلی راحت‌تر نسبت به بقیه روش‌ها راه‌اندازی می‌شه.

https://github.com/notAperson535/OneClick-macOS-Simple-KVM
❤‍🔥2🙊1
Forwarded from Geek Alerts
گوگل Gemini الان ویدیوهارو درک میکنه، یعنی نسخه‌ای که داخل AI Studio هست میشه بهش یه ویدیوی یوتیوب داد، بعد میاد صدا رو رونویسی میکنه و هر ثانیه فریم‌ ویدیورو هم بررسی میکنه.

کارهای زیادی میشه کرد، مثلا بخواید مکالمات داخل ویدیو رو بهتون بده، یا بخش خاصی رو توی ویدیو براتون پیدا کنه، حتی بگید خلاصه ویدیو رو به فارسی بهتون بگه.

فعلا پیش‌نمایش هست و اگه بهش دسترسی داشته باشید حداکثر ۸ تا ویدیو در روز میشه پردازش کرد و زمان ویدیو هم میتونه با مدل پرو تا ۲ ساعت و فلش تا ۱ ساعت باشه.

🔗 https://aistudio.google.com
🤓 @geekalerts
Please open Telegram to view this post
VIEW IN TELEGRAM
🤯3👀1🙊1
- Cross-platform graphical process/system monitor in Terminal
https://github.com/ClementTsang/bottom

- Modern replacement for "ls"
https://github.com/ogham/exa

- A cat(1) clone with syntax highlighting and Git integration
https://github.com/sharkdp/bat

- A cross-platform & modern OpenGL terminal emulator
https://github.com/alacritty/alacritty
🔥1🙊1
اخیراً Cloudflare گزینه‌ای اضافه کرده که به جای بلاک کردن ربات‌هایی که بدون اجازه وارد سایت شما می‌شن، اون‌ها را به یک هزارتوی محتوایی که توسط هوش مصنوعی ساخته شده هدایت می‌کنه تا منابع‌شون به‌هدر بره :))
1😁8❤‍🔥1🙊1
Mahi in Tech
ویرایش: الان هزینه‌ی خدماتش رو نزدیک به دوبرابر کرد، دیگه اصلا به‌درد نمی‌خوره با این اوصاف :))
لیارا در یک حرکت خیلی منطقی هزینه‌ها رو مجدد دوبرابر کرد 😐 برای دو سرویس با minimum‍ترین مشخصات، الان نزدیک ۱.۴۰۰ داره می‌گیره (monthly).
من که دیگه به هیچ‌وجه ازش سرویسی تهیه نمی‌کنم، به شما هم پیشنهاد می‌کنم سمتش نرید 😄
Please open Telegram to view this post
VIEW IN TELEGRAM
🙊5👍3
Forwarded from Geeky net
امروز امدم از jcal استفاده کنم دیدم یه باگی داره که سال کبیسه رو حساب نکرده! امدم ایمیل بزنم گفتم اول گیت هاب رو چک کنم دیدم سازندش فوت شده یه حس عجیبی بهم دست، اشکان قاسمی سال ها بیش این برنامه رو نوشته بود و هنوز دارند ازش استفاده میکنند. یه بخش قشنگ و ناراحت کننده دنیای نرم افزار آزاد و گنو.
💔22🙊1
⚠️ اگر احیانا از next.js استفاده می‌کنید و به‌کمک middlewareـها هویت کاربر رو بررسی می‌کنید، بهتره که هرچه سریع‌تر next.js پروژه‌تون رو به‌روزرسانی کنید.
اخیرا باگ امنیتی‌ای پیدا شده که با دست‌کاری هدر می‌شه middleware‌ـها رو دور زد! و خب می‌تونه مشکل ایجاد کنه

توضیحات بیشتر:
zhero-web-sec.github.io/research-and-things/nextjs-and-the-corrupt-middleware
Please open Telegram to view this post
VIEW IN TELEGRAM
🍓2👻2🙊1