آنوفل دنیای برنامه نویسی
116 subscribers
250 photos
267 links
آنوفل | Anophel: دنیای بی ‌پایان امکانات برای برنامه‌ نویسان

website: https://anophel.com

پشتیبانی :
@anophel_support

#anophel #آنوفل #برنامه_نویسی
Download Telegram
7 اصول تست نویسی که هر توسعه دهنده ای باید بداند

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

🌐 : 7 اصول تست نویسی که هر توسعه دهنده ای باید بداند
ماژول فدراسیون Module Federation چیست؟
ماژول فدراسیون Module Federation یک ویژگی پیشرفته در Webpack است که راهی را برای یک برنامه جاوا اسکریپت برای بارگذاری پویا کد از یک برنامه دیگر فراهم می کند. این ویژگی به اشتراک گذاری کد و مدیریت وابستگی کارآمد اجازه می دهد. این ویژگی جذاب از وبپک 5 بعد در دسترس است.

چرا فدراسیون ماژول مهم است؟
این Module Federation یک ویژگی قدرتمند است که معماری جاوا اسکریپت و رویکرد micro-frontend را متحول کرده است. اگر به درستی از آن استفاده شود، می تواند مزایای بسیاری را برای سیستم برنامه شما فراهم کند.

قبل از معرفی Module Federation، به اشتراک گذاری کد، روند روانی نداشت. پیاده سازی Micro-frontend نیز پیچیده تر می شد.

این Module Federation یک معماری است که به این مسائل می پردازد و انقلابی را در استراتژی میکرو فرانت اند ایجاد می کند. با Module Federation، یک برنامه کاربردی کد را به صورت پویا از بسته یا ساخت دیگری با قابلیت اشتراک گذاری کد و مصرف عملکرد در طول زمان اجرا اجرا می کند، و مسیر استفاده موفق از فناوری micro-frontend را هموار می کند. علاوه بر این، استفاده از وابستگی های قابل اشتراک گذاری، فشرده بودن برنامه را بهبود می بخشد. Module Federation نیز به توسعه دهندگان احساس آشنایی می دهد، زیرا بخشی از اکوسیستم Webpack است که توسعه دهندگان ممکن است قبلاً از آن استفاده کرده باشند.

همه این معیارها، Module Federation را به یک ویژگی قدرتمند و ضروری تبدیل می کند که باید در پروژه های آینده از آن استفاده کنید.

Anophel آنوفل

#میکروفرانت_اند #microfrontend
Forwarded from Golden Code (@lix)
در لاراول ، بسته به محیطی که برنامه داخلش اجرا میشه ممکنه نیاز بشه عملیات های مشخصی رو فعال یا غیر فعال کنیم .

مثلا کانفیگ های مربوط به دیباگ پروژه نباید در محیط production فعال باشه (مشکل امنیتی میسازه).

📌 دو متود با نام های isProduction و isLocal در اختیارمون هست که میتونیم به راحتی بررسی کنیم آیا برنامه در محیط local هست یا production تا عملیات مورد نیاز برای محیط مدنظر اجرا بشه.
#لاراول
#Laravel
@GoldenCodeir
(به منبع و مثالش دقت کنید👇🏾)
https://x.com/OussamaMater/status/1815461812457935220?t=1ATZevlJa5FeR5AP6aKVRw&s=35
مفهوم Docs as Code چیست؟
به طور سنتی، مستندسازی یک وظیفه مجزا بوده که اغلب نادیده گرفته می‌شود. با این حال، این رویکرد جدید به نام "داکیومنت به عنوان کد" این را تغییر می دهد.

داکیومنت به صورت کد چیست؟
داکیومنت به صورت کد یا Docs as Code روشی است که در آن با داکیومنت مانند کد رفتار می شود. این بدان معنی است که شما از همان ابزارها و فرآیندهایی برای مستندسازی استفاده می کنید که برای توسعه کد استفاده می کنید. با انجام این کار، داکیومنت را در فرآیند توسعه ادغام می کنید و آن را به شهروند درجه یک تبدیل می کنید.

بنای اصلی داکیومنت به عنوان کد
کنترل نسخه: از سیستم های کنترل نسخه مانند Git برای مدیریت داکیومنت استفاده کنید. این به شما امکان می دهد تغییرات را پیگیری کنید، همکاری کنید و در صورت نیاز به نسخه های قبلی برگردید.

یکپارچه سازی پیوسته: تست و استقرار داکیومنت را خودکار کنید، درست همانطور که با کد انجام می دهید.

بازبینی کد: داکیومنت ها را به همان فرآیندهای بازبینی کد می‌پردازد و از دقت و سازگاری اطمینان می‌دهد.

قالب‌های متن ساده: اسناد را در قالب‌های متن ساده مانند Markdown یا reStructuredText بنویسید. این امر مدیریت آن را در سیستم های کنترل نسخه آسان و سازگار با ابزارهای مختلف می کند.

چرا داکیومتت به عنوان کد؟
اتخاذ رویکرد Docs as Code چندین مزیت را به همراه دارد.

این Docs as Code همکاری بهبود یافته را به ارمغان می آورد
وقتی با داکیومنت مانند کد رفتار می کنید، همکاری را تشویق می کند. توسعه‌دهندگان، نویسندگان و سایر ذینفعان می‌توانند با استفاده از گردش کار مشابه در مستندسازی مشارکت کنند. این محیط مشارکتی تضمین می کند که داکیومنت به روز و دقیق باقی می مانند.

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

داکیومنت به عنوان کد اتوماسیون و کارایی را بهبود می بخشد
با Docs as Code، می‌توانید بسیاری از جنبه‌های داکیومنت را خودکار کنید. به عنوان مثال، می‌توانید به‌طور خودکار داکیومنتی را از کامنت های کد تولید کنید، تست هایی را برای اطمینان از کارکرد لینک ها اجرا کنید، و داکیومنت به‌روز شده را با هر نسخه منتشر کنید. این اتوماسیون باعث صرفه جویی در زمان و کاهش خطا می شود.

داکیومنت به عنوان کد به یکپارچه سازی بهتر کمک می کند
با ادغام مستندات در فرآیند توسعه، به بخشی طبیعی از گردش کار تبدیل می شود. این ادغام تضمین می کند که داکیومنت ها همیشه با پایگاه کد هماهنگ است و دقیق ترین و مرتبط ترین اطلاعات را در اختیار کاربران قرار می دهد.

Anophel آنوفل

#داکیومنت_نویسی #docs_as_code #داکیومنت
صف ها و جاب ها در لاراول 11: بررسی عمیق

🔺 در دنیای شلوغ توسعه وب، لاراول به عنوان یک فریمورک قدرتمند PHP است که توسعه دهندگان را قادر می سازد تا برنامه های کاربردی پیچیده را با کارایی قابل توجه ایجاد کنند. در میان بسیاری از ویژگی‌های آن، سیستم صف (Queue) لاراول به عنوان ابزاری حیاتی برای رسی...

🌐 : صف ها و جاب ها در لاراول 11: بررسی عمیق

#لاراول #laravel #آنوفل
در PHP 8.1 و بالاتر، می‌توان از Enum ها برای تعریف مجموعه‌ای از ثابت‌ها که با هم مرتبط هستند استفاده کرد. Enum (مخفف Enumeration)  یک نوع داده خاص است که شامل مجموعه‌ای از مقادیر ثابت و از پیش تعریف‌شده است. این مقادیر معمولاً با هم مرتبط هستند و به یک مفهوم خاص اشاره می‌کنند. به عنوان مثال، می‌توان برای وضعیت‌های مختلف یک سفارش (مانند "در انتظار"، "در حال پردازش"، "ارسال شده" و غیره) یک Enum تعریف کرد.

کی از Enum استفاده کنیم؟

تعریف مجموعه‌ای از مقادیر ثابت و مرتبط: زمانی که مجموعه‌ای از مقادیر ثابت وجود دارد که با هم مرتبط هستند و نیاز به مدیریت آنها دارید، می‌توان از Enum استفاده کرد. مانند وضعیت‌های مختلف یک سفارش، روزهای هفته، ماه‌های سال و غیره.

خوانایی و نگهداری بهتر کد: استفاده از Enum به کد شما خوانایی بیشتری می‌بخشد و همچنین از خطاهای ناشی از استفاده نادرست از مقادیر جلوگیری می‌کند.

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

کاهش استفاده از "عددهای جادویی": استفاده از Enum به جای اعداد یا رشته‌های ثابت پراکنده در کد، باعث می‌شود که کد تمیزتر و قابل فهم‌تر باشد.

در اینجا یک مثال از یک Enum برای وضعیت‌های یک سفارش در یک سیستم خرید آورده شده است.

ویژگی‌های Enum در PHP:
1. تعریف به صورت Enum : Enum ها با استفاده از کلمه کلیدی enum تعریف می‌شوند.
2. مقادیر ثابت: Enum ها مجموعه‌ای از مقادیر ثابت را تعریف می‌کنند که با هم مرتبط هستند.
3. پشتیبانی از انواع داده: Enum ها می‌توانند انواع داده‌ای مختلف مثل string یا int را به عنوان مقدار خود داشته باشند.
4. قابلیت استفاده در توابع: Enum ها می‌توانند به عنوان پارامتر به توابع و متدها ارسال شوند.
5. سازگاری با Match Expression: از match expression می‌توان برای پردازش مقادیر Enum استفاده کرد.
6. تعریف متدها: می‌توان متدهایی را در داخل Enum تعریف کرد که به مقادیر آن مرتبط هستند.

من در Anophel آنوفل بیشتر به این موضوع پرداختم لینک مقاله :

لینک مقاله

#لاراول #php
تست نویسی در لاراول : تست روابط الکونت در لاراول

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

🌐 : تست نویسی در لاراول : تست روابط الکونت در لاراول

#لاراول #laravel
در توسعه وب با PHP، دو مفهوم "PHP workers" و "PHP memory limit" خیلی مهم هستند که باید در نظر گرفته شوند، به خصوص زمانی که در حال بهینه‌سازی عملکرد وب‌سایت یا برنامه تحت وب هستید.

PHP Workers چیست

پی اچ پی ورکر به تعداد فرآیندهای همزمان اشاره دارد که سرور می‌تواند برای اجرای اسکریپت‌های PHP مدیریت کند. هر PHP worker یک فرآیند جداگانه است که می‌تواند درخواست‌های PHP را پردازش کند. اگر تعداد PHP workers شما محدود باشد، فقط به همان تعداد درخواست همزمان می‌توانند پردازش شوند و بقیه درخواست‌ها باید در صف منتظر بمانند تا یک worker آزاد شود.

به عنوان مثال، اگر تعداد PHP workers شما 10 باشد و 20 کاربر به طور همزمان به وب‌سایت شما درخواست ارسال کنند، 10 درخواست اول بلافاصله پردازش می‌شوند و 10 درخواست دیگر باید منتظر بمانند تا یکی از 10 ورکر اول کارش را تمام کند.

PHP Memory Limit

پی اچ پی مموری لیمیت به حداکثر میزان حافظه (RAM) اشاره دارد که یک اسکریپت PHP می‌تواند مصرف کند. این مقدار در فایل کانفیگ (php.ini) تنظیم می‌شود و می‌توان آن را برای هر اسکریپت نیز تنظیم کرد. این محدودیت برای جلوگیری از استفاده بیش از حد حافظه توسط اسکریپت‌ها و جلوگیری از خرابی سرور به کار می‌رود.

مثال:
memory_limit = 128M

این خط از فایل php.ini نشان می‌دهد که هر اسکریپت PHP می‌تواند حداکثر 128 مگابایت حافظه مصرف کند. اگر اسکریپت از این مقدار بیشتر بخواهد، با خطای حافظه مواجه خواهد شد.

رابطه و تعامل بین PHP Workers و PHP Memory Limit
رابطه بین این دو مفهوم زمانی مهم می‌شود که شما به میزان کلی حافظه RAM سرور خود فکر کنید. برای مثال، اگر سرور شما 1 گیگابایت RAM داشته باشد و شما 10 PHP workers داشته باشید، و هر worker بتواند تا 128 مگابایت RAM مصرف کند، ممکن است با مشکل کمبود حافظه مواجه شوید.

1. تعداد PHP workers بالا: باعث می‌شود که بتوانید درخواست‌های بیشتری را به صورت همزمان پردازش کنید، اما هر worker حافظه مخصوص به خود را مصرف می‌کند.

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

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

Anophel آنوفل

#php
کامنت نویسی در PHP : بهترین نکات و ترفند ها

🔺 اهمیت کد تمیز و قابل نگهداری را یکی از گام های مهم در موفقیت است. با این حال، در کنار نوشتن کد کارآمد، ترکیب کامنت های معنی‌دار که بینش‌های ارزشمند و کمک به درک و حفظ پایگاه‌های کد ارائه می‌دهند، بسیار مهم است. کامنت های کد به خوبی ساخته شده نه تنها...

🌐 : کامنت نویسی در PHP : بهترین نکات و ترفند ها

#php #لاراول #داکیومنت #laravel
آشنایی با کامنت های PHPDoc لاراول : داکیومنت نویسی به صورت حرفه ای

🔺 اگر یک توسعه دهنده لاراول هستید که به دنبال بهبود داکیومنت کد خود و بهبود فرآیند توسعه خود هستید، به جای درستی آمده اید. در این مقاله از آنوفل گام به گام، ما عمیقاً به کامنت نویسی Laravel PHPDoc (مستند سازی لاراول با PHPDoc) می پردازیم. ما همه چیز را...

🌐 : آشنایی با کامنت های PHPDoc لاراول : داکیومنت نویسی به صورت حرفه ای

#لاراول #داکیومنت_نویسی #php #laravel
استراکچر یک پروژه Next.js بزرگ
با نقشه و ابزار مناسب، فولدر های Next.js شما می تواند به یک اکوسیستم منظم و پر رونق تبدیل شود. در تصویر زیر یک ساختار فولدر بندی برای ساختاردهی پروژه‌های Next.js در مقیاس بزرگ است.


چرا ساختار پروژه Next.js شما می تواند شما را بسازد یا شکست دهد

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

هماهنگی تیم: وقتی تیم شما می تواند پروژه را با چشم بسته هدایت کند، همکاری دلپذیر تر می شود، نه یک‌ جنگ و‌ دعوا.

مقیاس پذیری: یک پروژه با ساختار خوب، به جای جهش به یک هیولای سرسخت، به طور ارگانیک، مانند یک گیاه شاد، رشد می کند.

افزایش عملکرد: ویژگی‌های بهینه‌سازی Next.js زمانی بهترین عملکرد را دارند که پروژه شما به طور منطقی سازماندهی شده باشد.

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




Anophel آنوفل


#nextjs #next #نکست
7 بهترین روش ضروری React برای کد کارآمد در سال 2024

🔺 در دنیای پر سرعت توسعه وب، ReactJS به عنوان یک کتابخانه پیشرو برای ایجاد رابط های کاربری پویا و پاسخگو ظاهر شده است. جای تعجب نیست که شرکت های توسعه برنامه ReactJS تقاضای بالایی دارند. React همچنان در سال 2024 بر چشم انداز توسعه front-end تسلط دارد....

🌐 : 7 بهترین روش ضروری React برای کد کارآمد در سال 2024
در لاراول بین fillable$ و guarded$ چه تفاوتی وجود دارد؟
در لاراول، ویژگی‌های fillable و guarded برای تعیین و کنترل ویژگی‌هایی از مدل که می‌توانند به‌طور جمعی در پایگاه داده ذخیره شوند، استفاده می‌شوند.



1. $fillable: این ویژگی به شما اجازه می‌دهد مشخص کنید که کدام ویژگی‌های مدل می‌توانند به صورت دسته‌ای (bulk) پر شوند. به عبارت دیگر، تنها ویژگی‌های لیست شده در $fillable می‌توانند از طریق انتساب دسته‌ای مقداردهی شوند. این روش به شما این امکان را می‌دهد تا فقط ویژگی‌های خاصی از مدل را که برای پر کردن آن‌ها مجاز هستید، مشخص کنید.

مثال :

   protected $fillable = ['name', 'email', 'password'];

در این مثال، تنها فیلدهای name، email و password می‌توانند از طریق انتساب دسته‌ای مقداردهی شوند.

2. $guarded: این ویژگی برعکس $fillable عمل می‌کند و مشخص می‌کند که کدام ویژگی‌های مدل نمی‌توانند به صورت دسته‌ای پر شوند. به عبارت دیگر، ویژگی‌های لیست شده در $guarded در برابر انتساب دسته‌ای محافظت می‌شوند و باقی ویژگی‌ها قابل انتساب هستند.


   protected $guarded = ['id'];

در این مثال، تنها ویژگی id از انتساب دسته‌ای محافظت می‌شود و بقیه ویژگی‌ها قابل پر شدن به صورت دسته‌ای هستند.

اگر شما از
protected $guarded = [];

استفاده کنید، به این معناست که هیچ فیلدی در مدل شما از انتساب دسته‌ای (mass assignment) محافظت نمی‌شود. به عبارت دیگر، تمامی ویژگی‌های مدل می‌توانند از طریق انتساب دسته‌ای پر شوند.

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

برای امنیت بیشتر از
protected $guarded = [];
خودداری کنید.


امنیت: از نظر امنیتی، استفاده از fillable معمولاً توصیه می‌شود زیرا به شما کنترل بیشتری بر روی ویژگی‌های قابل پر شدن می‌دهد. با این روش، شما دقیقاً مشخص می‌کنید که کدام ویژگی‌ها می‌توانند از طریق انتساب دسته‌ای مقداردهی شوند و بقیه ویژگی‌ها به طور پیش‌فرض از این کار محافظت می‌شوند.

استفاده آسان: در حالی که guarded ممکن است راحت‌تر به نظر برسد، زیرا شما فقط ویژگی‌هایی را که نمی‌خواهید پر شوند مشخص می‌کنید، اما اگر ویژگی‌های زیادی داشته باشید، این روش می‌تواند به اشتباهات بیشتری منجر شود.

به طور کلی، برای افزایش امنیت و جلوگیری از مشکلات احتمالی، استفاده از fillable معمولاً بهتر است.

ادرس وبسایت آنوفل :

Anophel آنوفل

#لاراول #laravel
5 بدترین آنتی پترن در مدیریت API

🔺 سفر API طولانی است و راه پیش رو پر از موانع است. در اینجا پنج مورد از بدترین آنتی پترن هایی که باید هنگام شروع API خود اجتناب کنید، آورده شده است. این را تصور کنید: شما در شرکتی به نام آنوفل به عنوان رئیس مهندسی پلتفرم کار می کنید و هر ساله چندین API...

🌐 : 5 بدترین آنتی پترن در مدیریت API
لاراول Breeze و لاراول Jetstream هر دو پکیج های تأیید هویت (authentication) برای فریمورک Laravel هستند که به توسعه‌دهندگان کمک می‌کنند تا سیستم‌های احراز هویت را به سرعت پیاده‌سازی کنند.

لاراول Breeze

ویژگی‌ها:
سادگی و مینیمال: لاراول Breeze یک پکیج سبک و ساده است که به توسعه‌دهندگان یک پیاده‌سازی پایه‌ای از احراز هویت ارائه می‌دهد.
انتخاب بین چند استک: از قالب‌های Blade و Tailwind CSS و Inertia.js و Livewire استفاده می‌کند.
احراز هویت اولیه: شامل ویژگی‌های پایه مانند ثبت نام، ورود، فراموشی رمز عبور، و تایید ایمیل است.
آموزشی: بیشتر مناسب پروژه‌های کوچک یا برای افرادی که می‌خواهند یادگیری خود را شروع کنند و به جزئیات بیشتری نیاز ندارند.

لاراول Jetstream

ویژگی‌ها:
- پیچیدگی و امکانات بیشتر: Jetstream یک بسته قدرتمندتر و پیشرفته‌تر است که امکانات بیشتری از جمله تیم‌ها، دو مرحله‌ای کردن احراز هویت (2FA)، و مدیریت پروفایل را ارائه می‌دهد.
نتخاب بین چند استک: امکان انتخاب بین Livewire و Inertia.js برای پیاده‌سازی frontend.
- نعطاف‌پذیری بالا: مناسب پروژه‌های بزرگتر که نیاز به قابلیت‌های پیشرفته‌تر دارند.

تفاوت‌ها

- پیچیدگی و قابلیت‌ها: Breeze ساده‌تر و مناسب پروژه‌های کوچک است، در حالی که Jetstream امکانات بیشتری ارائه می‌دهد و برای پروژه‌های بزرگتر مناسب است.


ویژگی‌های اضافی: Jetstream شامل امکانات پیشرفته‌تری مانند تیم‌ها و 2FA است که Breeze ندارد.

انتخاب بین Breeze و Jetstream

- پروژه‌های کوچک یا ساده: اگر پروژه شما کوچک است و به ویژگی‌های پیشرفته نیاز ندارید، Breeze گزینه مناسبی است.
- پروژه‌های بزرگ یا پیچیده: اگر نیاز به قابلیت‌های پیشرفته‌تر دارید یا پروژه شما بزرگتر است، Jetstream انتخاب بهتری است.
- آموزش و شروع کار: برای شروع یادگیری و پروژه‌های آزمایشی، Breeze مناسب‌تر است زیرا پیچیدگی کمتری دارد.

خلاصه کلام

- Breeze: سادگی و سرعت پیاده‌سازی، مناسب پروژه‌های کوچک و یادگیری.
- Jetstream: امکانات پیشرفته‌تر، مناسب پروژه‌های بزرگ و نیازمند قابلیت‌های بیشتر.

هر کدام از این پکیج ها می‌توانند بسته به نیاز پروژه و سطح تجربه توسعه‌دهنده مفید باشند. Breeze برای شروع و پروژه‌های سبک مناسب است، در حالی که Jetstream برای پروژه‌های پیچیده‌تر و حرفه‌ای انتخاب بهتری است.

خودتون از کدام پکیج استفاده می کنید؟ و چرا؟

Anophel آنوفل


#لاراول #laravel #laravel_jetstream #laravel_breeze
Forwarded from Golden Code (علی 🇨🇴)
در لاراول با کمک FakerPHP میتونید اقدام به ساخت شماره کارتهای fake کنید.
این شماره‌ کارتهای fake در محیط تستی واقعا مفیدن و بهتون کمک میکنن تا پروژه‌ هاتونو به خوبی آزمایش کنید.👌🏾

حتی میتونیم مشخص کنیم که چه نوعی از شماره کارت رو برامون تولید کنه؟ مثلا Visa یا MasterCard؟ (در تصویر زیر فرایندش گفته شده)
#laravel
#لاراول
@GoldenCodeir
(به منبع و مثالش دقت کنید👇🏾)
https://x.com/OussamaMater/status/1819092565561651269?t=H3Q4oXdHDOpKAIKBeFD2Yw&s=35
فریمورک تست Pest در مقابل PHPUnit
Pest یک چارچوب تست عالی است که بر روی PHPUnit ساخته شده است. سینتکس زیبا دارد که تست های شما را تا حد امکان ساده می کند.

شروع کار با Pest بسیار آسان است و در صورت عادت به PHPUnit خواهیم دید که چگونه با آن تست های خواناتری بنویسیم.

در اینجا برخی از تفاوت های اصلی بین PHPUnit و Pest آورده شده است:

سینتکس:

PHPUnit: PHPUnit یک چارچوب تست بالغ و پرکاربرد برای PHP است. از یک سینتکس سنتی و پرمخاطب برای نوشتن تست ها پیروی می کند. متد های تست معمولاً با پیشوند «test» قرار می‌گیرند و از متد های ادعایی مانند assertEquals، assertTrue و assertFalse استفاده می‌کنند.

Pest: Pest یک چارچوب تست نسبتاً جدید است که هدف آن ارائه یک سینتکس ظریف تر و مختصرتر برای نوشتن تست ها است. از یک سینتکس گویاتر و طبیعی تر برای ادعاهای تست استفاده می کند و باعث می شود تست ها مانند انگلیسی ساده خوانده شوند. Pest طوری طراحی شده است که برنامه نویس پسندتر و خوانا باشد.

جامعه و پذیرش:

PHPUnit: PHPUnit برای مدت طولانی وجود داشته است و پایگاه کاربری بزرگ و مستقری دارد. این به طور گسترده در جامعه PHP پذیرفته شده است و دارای داکیومنت و پشتیبانی گسترده است.

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

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


البته این نکته رو هم بگم از لاراول 11 به بعد Pest به صورت پیش فرض چارچوپ تست است.

#لاراول #pestphp #phpunit

Anophel آنوفل
تزریق وابستگی (Dependency Injection) در تایپ اسکریپت

🔺 تزریق وابستگی (Dependency Injection) یک تکنیک قدرتمند است که کدهای ماژولار و آزادانه را با مدیریت وابستگی‌های یک برنامه کاربردی و تسهیل تزریق آن‌ها به کلاس‌ها ترویج می‌کند. در تایپ اسکریپت، پیاده سازی تزریق وابستگی گاهی اوقات می تواند دست و پا گیر و...

🌐 : تزریق وابستگی (Dependency Injection) در تایپ اسکریپت
معماری multi-tenancy (multi-tenant architecture) چیست؟
معماری Multi-tenancy (چند مستاجری) یک پترن طراحی نرم‌افزار است که در آن یک برنامه یا سرویس واحد به صورت مشترک توسط چندین کلاینت یا "مستاجر" (tenant) استفاده می‌شود. هر مستاجر به طور منطقی جدا شده و داده‌های خود را دارد، اما همه آن‌ها از یک نسخه از نرم‌افزار و زیرساخت مشترک استفاده می‌کنند. این معماری به طور گسترده در سرویس‌های ابری و نرم‌افزار به عنوان سرویس (SaaS) مورد استفاده قرار می‌گیرد.

ویژگی‌های معماری Multi-tenancy
1. اشتراک منابع: منابع مانند سرورها، دیتابیس ها و برنامه‌ها بین مستاجران به اشتراک گذاشته می‌شوند.
2. جداسازی منطقی: داده‌ها و تنظیمات هر مستاجر به صورت منطقی از دیگر مستاجران جدا هستند، به طوری که هیچ مستاجری به داده‌های دیگران دسترسی ندارد.
3. مقیاس‌پذیری: به راحتی می‌توان تعداد مستاجران را افزایش داد بدون نیاز به تغییرات بزرگ در زیرساخت.
4. مدیریت متمرکز: به‌روزرسانی‌ها، تعمیرات و نگهداری‌ها به صورت متمرکز انجام می‌شود و به همه مستاجران اعمال می‌شود.
5. کاهش هزینه‌ها: از آنجایی که منابع به اشتراک گذاشته می‌شوند، هزینه‌های نگهداری و مدیریت به طور کلی کاهش می‌یابد.

موارد استفاده از معماری Multi-tenancy
- نرم‌افزار به عنوان سرویس (SaaS): شرکت‌های ارائه‌دهنده SaaS معمولاً از این معماری استفاده می‌کنند تا یک نسخه از نرم‌افزار را به چندین مشتری ارائه دهند.
- سرویس‌های ابری: پلتفرم‌های ابری مانند AWS و Azure از این معماری استفاده می‌کنند تا منابع را بین کاربران مختلف به اشتراک بگذارند.
- برنامه‌های سازمانی: شرکت‌ها ممکن است از این معماری برای ارائه خدمات به شعب مختلف یا شرکت‌های تابعه خود استفاده کنند.

معایب معماری Multi-tenancy
- امنیت: هر چند جداسازی منطقی وجود دارد، اما به دلیل اشتراک زیرساخت، احتمال خطرات امنیتی بیشتر است.
- سفارشی‌سازی کمتر: چون همه مستاجران از یک نسخه از نرم‌افزار استفاده می‌کنند، میزان سفارشی‌سازی ممکن محدود است.

کی از این معماری استفاده کنیم؟
- وقتی که نیاز به سرویس‌دهی به تعداد زیادی از مشتریان با هزینه پایین و مدیریت متمرکز دارید.
- وقتی که می‌خواهید مقیاس‌پذیری و انعطاف‌پذیری بالایی در سرویس خود داشته باشید.
- زمانی که سفارشی‌سازی محدود مشکلی ایجاد نمی‌کند و اولویت با کاهش هزینه و ساده‌سازی مدیریت است.

این معماری معمولاً در مواردی کاربرد دارد که خدمات مشابهی برای تعداد زیادی از کاربران یا سازمان‌ها ارائه می‌شود و نیاز به سفارشی‌سازی عمیق و متفاوت برای هر مشتری وجود ندارد.

Anophel مقاله های برنامه نویسی آنوفل