Forwarded from اتاق برنامه نویسی </> (PapiDon)
🔐 چرا از فایل
فایل
🔑 ویژگیهای کلیدی:
1️⃣ امنیت بیشتر: جلوگیری از قرار دادن اطلاعات حساس مستقیماً در کد منبع.
2️⃣ تفکیک محیطی: امکان تعریف تنظیمات مختلف برای محیطهای Development, Testing, و Production.
3️⃣ انعطافپذیری و نگهداری آسان: تغییرات آسان تنظیمات بدون نیاز به ویرایش کد اصلی.
4️⃣ قابلیت استفاده مجدد و توزیع: سهولت در به اشتراک گذاری تنظیمات بین پروژههای مختلف.
📝 ساختار فایل
فایل
مثال:
⚙️ چگونه از فایل
برای استفاده از این فایل در برنامه خود، باید از کتابخانههای خاصی استفاده کنید که قادر به خواندن فایل
⚠️ نکات امنیتی:
- هرگز فایل
- برای اطلاع رسانی به سایر توسعهدهندگان، میتوانید از فایل
✨ جمعبندی:
فایل
📁 #env
✅ کانال تخصصی لاراول
📌 @PapiDon_state
☕️ اتاق برنامه نویسی </>
📌 @PapiDon_coding
env. استفاده میکنیم؟فایل
env. (مخفف Environment File) یک ابزار کلیدی در دنیای برنامهنویسی است که برای ذخیرهسازی متغیرهای محیطی به کار میرود. این فایل به شما این امکان را میدهد که اطلاعات حساس مانند کلیدهای API، رمزهای عبور و تنظیمات پیکربندی را به صورت امن نگهداری کنید.🔑 ویژگیهای کلیدی:
1️⃣ امنیت بیشتر: جلوگیری از قرار دادن اطلاعات حساس مستقیماً در کد منبع.
2️⃣ تفکیک محیطی: امکان تعریف تنظیمات مختلف برای محیطهای Development, Testing, و Production.
3️⃣ انعطافپذیری و نگهداری آسان: تغییرات آسان تنظیمات بدون نیاز به ویرایش کد اصلی.
4️⃣ قابلیت استفاده مجدد و توزیع: سهولت در به اشتراک گذاری تنظیمات بین پروژههای مختلف.
📝 ساختار فایل
env.:فایل
env. با فرمت کلید = مقدار نوشته میشود. مثال:
API_KEY=123456789abcdefgh
DB_PASSWORD=mySecurePass
⚙️ چگونه از فایل
env. استفاده کنیم؟برای استفاده از این فایل در برنامه خود، باید از کتابخانههای خاصی استفاده کنید که قادر به خواندن فایل
env. و بارگذاری متغیرها در محیط برنامه هستند. هر زبان برنامهنویسی ابزارهای مخصوص به خود را دارد.⚠️ نکات امنیتی:
- هرگز فایل
env. را در مخازن کد منبع (مانند Git) قرار ندهید.- برای اطلاع رسانی به سایر توسعهدهندگان، میتوانید از فایل
env.example. با مقادیر خالی یا نمونه استفاده کنید.✨ جمعبندی:
فایل
env. ابزاری قدرتمند برای مدیریت امن و کارآمد تنظیمات و متغیرهای محیطی در پروژههای برنامهنویسی است. با استفاده صحیح از آن، میتوانید امنیت و انعطافپذیری پروژههای خود را به طور قابل توجهی افزایش دهید.📁 #env
✅ کانال تخصصی لاراول
📌 @PapiDon_state
☕️ اتاق برنامه نویسی </>
📌 @PapiDon_coding
❤2👍2
PHP & MYSQL pinned «🔐 چرا از فایل env. استفاده میکنیم؟ فایل env. (مخفف Environment File) یک ابزار کلیدی در دنیای برنامهنویسی است که برای ذخیرهسازی متغیرهای محیطی به کار میرود. این فایل به شما این امکان را میدهد که اطلاعات حساس مانند کلیدهای API، رمزهای عبور و تنظیمات پیکربندی…»
Forwarded from کانال آموزشی لاراول (PapiDon)
📖 آرکیلوخوس، شاعر یونان باستان، میگوید:
"ما به سطح انتظاراتمان بالا نمیرویم، بلکه به سطح آموزشهایمان سقوط میکنیم."
🎯 این جمله پیامی عمیق دارد:
موفقیت ما در لحظات سرنوشتساز، نتیجهی رویاها و آرزوهایمان نیست، بلکه بازتابی از ساعات، روزها و سالهای تمرین و تلاش مستمر ماست. هرچه در آموزش و تمرین خود جدیتر باشیم، در شرایط دشوار بهتر عمل خواهیم کرد.
✅ کانال تخصصی لاراول
📌 @PapiDon_state
☕️ اتاق برنامه نویسی </>
📌 @PapiDon_coding
"ما به سطح انتظاراتمان بالا نمیرویم، بلکه به سطح آموزشهایمان سقوط میکنیم."
🎯 این جمله پیامی عمیق دارد:
موفقیت ما در لحظات سرنوشتساز، نتیجهی رویاها و آرزوهایمان نیست، بلکه بازتابی از ساعات، روزها و سالهای تمرین و تلاش مستمر ماست. هرچه در آموزش و تمرین خود جدیتر باشیم، در شرایط دشوار بهتر عمل خواهیم کرد.
✅ کانال تخصصی لاراول
📌 @PapiDon_state
☕️ اتاق برنامه نویسی </>
📌 @PapiDon_coding
❤2👏2
Forwarded from اتاق برنامه نویسی </> (PapiDon)
✨میکرو فرانتاند (Micro Frontend) چیست؟
میکرو فرانتاند، رویکردی نوین در توسعه وب است که از اصول معماری میکروسرویسها در بخش فرانتاند وبسایتها استفاده میکند. این رویکرد به تیمهای توسعه اجازه میدهد تا قسمتهای مختلف واسط کاربری (UI) یک وبسایت بزرگ را به صورت جداگانه و مستقل توسعه دهند، طراحی کنند و مدیریت نمایند.
🧩 کاربرد و فواید میکرو فرانتاند
🔸تقسیم کار و تخصصیسازی: هر تیم میتواند روی بخش خاصی از UI تمرکز کرده و تخصص خود را در آن زمینه اعمال کند.
🔸استقلال و انعطافپذیری: تیمها میتوانند در انتخاب فناوریها و ابزارهای خود مستقل باشند.
🔸تسهیل مدیریت پروژه: کاهش وابستگیهای میان تیمها به مدیریت راحتتر پروژههای بزرگ کمک میکند.
🛠 چالشهای میکرو فرانتاند
🔹هماهنگی و ارتباط: نیاز به هماهنگی دقیق بین تیمهای مختلف برای اطمینان از یکپارچگی کلی سیستم.
🔹پیچیدگی فنی: مدیریت وابستگیها و ارتباطات بین بخشهای مختلف میتواند پیچیده باشد.
🔹عملکرد: اطمینان از عملکرد بالا و سازگاری در تمام بخشها چالش برانگیز است.
🔄 چگونگی پیادهسازی
پیادهسازی میکرو فرانتاند به طراحی دقیق و در نظر گرفتن جنبههایی نظیر مدیریت وابستگیها، روشهای ارتباطی بین کامپوننتها و استراتژیهای اعمال تغییرات نیاز دارد. ابزارهایی مانند Webpack, Module Federation و فریمورکهای مدرن مانند React یا Angular میتوانند در این زمینه کمک کننده باشند.
🏛 معماری مونولیتیک (Monolith) چیست؟
در معماری مونولیتیک، کل وبسایت یا اپلیکیشن به صورت یکپارچه و در هم تنیده طراحی و توسعه مییابد. در این سیستم، فرانتاند و بکاند به شدت به هم وابستهاند و هر تغییری نیاز به بازبینی و تست کل سیستم دارد.
🔄 تفاوتهای میکرو فرانتاند و معماری مونولیتیک
- تجزیه و تحلیل: میکرو فرانتاند به تقسیم بخشهای مختلف UI و مدیریت مستقل آنها توسط تیمهای مختلف میپردازد، در حالی که در معماری مونولیتیک، تمام اجزای سیستم به صورت یکپارچه توسعه مییابند.
- انعطافپذیری: میکرو فرانتاند به تیمها اجازه میدهد تا در انتخاب فناوریها و روشهای کار خود مستقل باشند، در حالی که در معماری مونولیتیک، تیمها محدود به استفاده از فناوریها و استانداردهای مشترک هستند.
- مقیاسپذیری و نگهداری: میکرو فرانتاند امکان مقیاسپذیری و توسعه مستقل بخشهای مختلف را فراهم میکند، در حالی که در مونولیتیک، تغییرات و نگهداری میتواند دشوارتر باشد زیرا هر تغییری ممکن است بر کل سیستم تأثیر بگذارد.
- زمان توسعه و راهاندازی: در میکرو فرانتاند، توسعه و راهاندازی سریعتر است زیرا تیمها میتوانند بخشهای مختلف را به صورت مستقل کار کنند. در مونولیتیک، همه چیز باید به صورت همزمان توسعه یابد و تست شود.
📝 نتیجهگیری
میکرو فرانتاند با ارائه رویکردی ماژولار و انعطافپذیر، به تیمهای توسعه اجازه میدهد تا به صورت مستقل و کارآمدتر بر روی بخشهای مختلف یک پروژه وب کار کنند. این در حالی است که معماری مونولیتیک، به دلیل وابستگیهای درونی و یکپارچگی بالا، محدودیتها و چالشهای خاص خود را دارد.
📁 #MicroFrontend
✅ کانال تخصصی لاراول
📌 @PapiDon_state
☕️ اتاق برنامهنویسی
📌 @PapiDon_coding
میکرو فرانتاند، رویکردی نوین در توسعه وب است که از اصول معماری میکروسرویسها در بخش فرانتاند وبسایتها استفاده میکند. این رویکرد به تیمهای توسعه اجازه میدهد تا قسمتهای مختلف واسط کاربری (UI) یک وبسایت بزرگ را به صورت جداگانه و مستقل توسعه دهند، طراحی کنند و مدیریت نمایند.
🧩 کاربرد و فواید میکرو فرانتاند
🔸تقسیم کار و تخصصیسازی: هر تیم میتواند روی بخش خاصی از UI تمرکز کرده و تخصص خود را در آن زمینه اعمال کند.
🔸استقلال و انعطافپذیری: تیمها میتوانند در انتخاب فناوریها و ابزارهای خود مستقل باشند.
🔸تسهیل مدیریت پروژه: کاهش وابستگیهای میان تیمها به مدیریت راحتتر پروژههای بزرگ کمک میکند.
🛠 چالشهای میکرو فرانتاند
🔹هماهنگی و ارتباط: نیاز به هماهنگی دقیق بین تیمهای مختلف برای اطمینان از یکپارچگی کلی سیستم.
🔹پیچیدگی فنی: مدیریت وابستگیها و ارتباطات بین بخشهای مختلف میتواند پیچیده باشد.
🔹عملکرد: اطمینان از عملکرد بالا و سازگاری در تمام بخشها چالش برانگیز است.
🔄 چگونگی پیادهسازی
پیادهسازی میکرو فرانتاند به طراحی دقیق و در نظر گرفتن جنبههایی نظیر مدیریت وابستگیها، روشهای ارتباطی بین کامپوننتها و استراتژیهای اعمال تغییرات نیاز دارد. ابزارهایی مانند Webpack, Module Federation و فریمورکهای مدرن مانند React یا Angular میتوانند در این زمینه کمک کننده باشند.
🏛 معماری مونولیتیک (Monolith) چیست؟
در معماری مونولیتیک، کل وبسایت یا اپلیکیشن به صورت یکپارچه و در هم تنیده طراحی و توسعه مییابد. در این سیستم، فرانتاند و بکاند به شدت به هم وابستهاند و هر تغییری نیاز به بازبینی و تست کل سیستم دارد.
🔄 تفاوتهای میکرو فرانتاند و معماری مونولیتیک
- تجزیه و تحلیل: میکرو فرانتاند به تقسیم بخشهای مختلف UI و مدیریت مستقل آنها توسط تیمهای مختلف میپردازد، در حالی که در معماری مونولیتیک، تمام اجزای سیستم به صورت یکپارچه توسعه مییابند.
- انعطافپذیری: میکرو فرانتاند به تیمها اجازه میدهد تا در انتخاب فناوریها و روشهای کار خود مستقل باشند، در حالی که در معماری مونولیتیک، تیمها محدود به استفاده از فناوریها و استانداردهای مشترک هستند.
- مقیاسپذیری و نگهداری: میکرو فرانتاند امکان مقیاسپذیری و توسعه مستقل بخشهای مختلف را فراهم میکند، در حالی که در مونولیتیک، تغییرات و نگهداری میتواند دشوارتر باشد زیرا هر تغییری ممکن است بر کل سیستم تأثیر بگذارد.
- زمان توسعه و راهاندازی: در میکرو فرانتاند، توسعه و راهاندازی سریعتر است زیرا تیمها میتوانند بخشهای مختلف را به صورت مستقل کار کنند. در مونولیتیک، همه چیز باید به صورت همزمان توسعه یابد و تست شود.
📝 نتیجهگیری
میکرو فرانتاند با ارائه رویکردی ماژولار و انعطافپذیر، به تیمهای توسعه اجازه میدهد تا به صورت مستقل و کارآمدتر بر روی بخشهای مختلف یک پروژه وب کار کنند. این در حالی است که معماری مونولیتیک، به دلیل وابستگیهای درونی و یکپارچگی بالا، محدودیتها و چالشهای خاص خود را دارد.
📁 #MicroFrontend
✅ کانال تخصصی لاراول
📌 @PapiDon_state
☕️ اتاق برنامهنویسی
📌 @PapiDon_coding
❤4
PHP & MYSQL pinned «✨میکرو فرانتاند (Micro Frontend) چیست؟ میکرو فرانتاند، رویکردی نوین در توسعه وب است که از اصول معماری میکروسرویسها در بخش فرانتاند وبسایتها استفاده میکند. این رویکرد به تیمهای توسعه اجازه میدهد تا قسمتهای مختلف واسط کاربری (UI) یک وبسایت بزرگ را…»
Forwarded from اتاق برنامه نویسی </> (PapiDon)
🌐 PostgreSQL
یک سیستم مدیریت پایگاه دادههای رابطهای متنباز (RDBMS) است که برای انعطافپذیری، پایداری و قابلیتهای پیشرفته شناخته میشود. رایگان است و قابلیتهای پیشرفتهای مانند پشتیبانی از تراکنشهای پیچیده، JOINهای پیشرفته، ویوها (Views)، و توابع ذخیرهشده (Stored Procedures) را ارائه میدهد.
✅ مزایای PostgreSQL نسبت به MySQL:
1️⃣ توسعهپذیری بالا: PostgreSQL برای پشتیبانی از پردازشهای بزرگ دادهای و عملیات پیچیده بهینهسازی شده است.
2️⃣ پشتیبانی از دادههای مکانی: PostgreSQL با افزونه PostGIS، پشتیبانی قدرتمندی برای دادههای مکانی ارائه میدهد.
3️⃣ امنیت بالا: ارائه امکانات امنیتی پیشرفته، از جمله کنترل دسترسی دقیق و رمزنگاری دادهها.
4️⃣ پشتیبانی از "NoSQL": قابلیتهای NoSQL مانند JSON و XML را پشتیبانی میکند.
5️⃣ قابلیت انعطافپذیری: PostgreSQL به دلیل معماری پیشرفتهتر خود، انعطافپذیری بیشتری در مدیریت پایگاه دادهها و طراحی دارد.
🆚 MySQL || PostgreSQL:
درواقع MySQL نیز یک سیستم مدیریت پایگاه داده محبوب است که بیشتر برای کاربردهای وب و کاربردهای کوچکتر مناسب است. در حالی که MySQL برای سادگی و سرعت شناخته شده، PostgreSQL برای قابلیتهای پیشرفتهتر و انعطافپذیری بیشتر در برخورد با دادههای پیچیده و بزرگ مورد توجه قرار میگیرد.
🔥چرا PostgreSQL را انتخاب کنیم؟
اگر نیاز به پایگاه دادهای دارید که از عملیات پیچیده و بزرگ دادهای پشتیبانی کند، PostgreSQL گزینهای عالی است. همچنین، اگر به دنبال امنیت بالا و انعطافپذیری در تعریف دادهها هستید، PostgreSQL میتواند نیازهای شما را برآورده سازد.
✨ نتیجهگیری:
در حالی که MySQL برای پروژههای کوچکتر و سادهتر مناسب است، PostgreSQL برای پروژههای بزرگتر و پیچیدهتر که نیاز به قابلیتهای پیشرفتهتر دارند، یک انتخاب عالی است.
📁 #PostgreSQL
✅ کانال تخصصی لاراول
📌 @PapiDon_state
☕️ اتاق برنامهنویسی
📌 @PapiDon_coding
یک سیستم مدیریت پایگاه دادههای رابطهای متنباز (RDBMS) است که برای انعطافپذیری، پایداری و قابلیتهای پیشرفته شناخته میشود. رایگان است و قابلیتهای پیشرفتهای مانند پشتیبانی از تراکنشهای پیچیده، JOINهای پیشرفته، ویوها (Views)، و توابع ذخیرهشده (Stored Procedures) را ارائه میدهد.
✅ مزایای PostgreSQL نسبت به MySQL:
1️⃣ توسعهپذیری بالا: PostgreSQL برای پشتیبانی از پردازشهای بزرگ دادهای و عملیات پیچیده بهینهسازی شده است.
2️⃣ پشتیبانی از دادههای مکانی: PostgreSQL با افزونه PostGIS، پشتیبانی قدرتمندی برای دادههای مکانی ارائه میدهد.
3️⃣ امنیت بالا: ارائه امکانات امنیتی پیشرفته، از جمله کنترل دسترسی دقیق و رمزنگاری دادهها.
4️⃣ پشتیبانی از "NoSQL": قابلیتهای NoSQL مانند JSON و XML را پشتیبانی میکند.
5️⃣ قابلیت انعطافپذیری: PostgreSQL به دلیل معماری پیشرفتهتر خود، انعطافپذیری بیشتری در مدیریت پایگاه دادهها و طراحی دارد.
🆚 MySQL || PostgreSQL:
درواقع MySQL نیز یک سیستم مدیریت پایگاه داده محبوب است که بیشتر برای کاربردهای وب و کاربردهای کوچکتر مناسب است. در حالی که MySQL برای سادگی و سرعت شناخته شده، PostgreSQL برای قابلیتهای پیشرفتهتر و انعطافپذیری بیشتر در برخورد با دادههای پیچیده و بزرگ مورد توجه قرار میگیرد.
🔥چرا PostgreSQL را انتخاب کنیم؟
اگر نیاز به پایگاه دادهای دارید که از عملیات پیچیده و بزرگ دادهای پشتیبانی کند، PostgreSQL گزینهای عالی است. همچنین، اگر به دنبال امنیت بالا و انعطافپذیری در تعریف دادهها هستید، PostgreSQL میتواند نیازهای شما را برآورده سازد.
✨ نتیجهگیری:
در حالی که MySQL برای پروژههای کوچکتر و سادهتر مناسب است، PostgreSQL برای پروژههای بزرگتر و پیچیدهتر که نیاز به قابلیتهای پیشرفتهتر دارند، یک انتخاب عالی است.
📁 #PostgreSQL
✅ کانال تخصصی لاراول
📌 @PapiDon_state
☕️ اتاق برنامهنویسی
📌 @PapiDon_coding
❤3👍1
PHP & MYSQL pinned «🌐 PostgreSQL یک سیستم مدیریت پایگاه دادههای رابطهای متنباز (RDBMS) است که برای انعطافپذیری، پایداری و قابلیتهای پیشرفته شناخته میشود. رایگان است و قابلیتهای پیشرفتهای مانند پشتیبانی از تراکنشهای پیچیده، JOINهای پیشرفته، ویوها (Views)، و توابع ذخیرهشده…»
Forwarded from اتاق برنامه نویسی </> (PapiDon)
اتاق برنامه نویسی </>
Photo
⚙️ اینترنت اشیاء (IoT) به مفهوم گستردهتر و پیشرفتهتر اتصال دستگاهها و وسایل مختلف به اینترنت اشاره دارد، که فراتر از محدوده سنتی ارتباطات الکترونیکی است. در این سیستم، اشیاء یا دستگاههایی که پیشتر هیچگونه قابلیت ارتباطی نداشتند، توانایی جمعآوری، ارسال و دریافت اطلاعات را دارند. این دامنه شامل وسایل خانگی معمولی مانند یخچالها و تلویزیونها، و همچنین وسایل پیچیدهتر مانند خودروها، سیستمهای حملونقل شهری و تجهیزات پزشکی میشود.
✨ این تکنولوژی، امکان ارتباط بین دستگاهها و تبادل اطلاعات را فراهم میآورد که منجر به خلق سیستمهای هوشمند و خودکار میشود. مثلاً، یک یخچال هوشمند میتواند محتویات خود را تحلیل کرده و در صورت نیاز، به صورت خودکار سفارش مواد غذایی دهد. یا سیستم روشنایی هوشمند که بر اساس حضور افراد در اتاق، شدت نور را تنظیم میکند.
🌍 در زمینههای مختلفی چون صنعت، کشاورزی، حملونقل و بهداشت و درمان، IoT کاربردهای گستردهای دارد. از طریق IoT، جمعآوری اطلاعات دقیق و لحظهای میسر میشود که به بهینهسازی فرآیندها کمک میکند. به عنوان نمونه، در بخش کشاورزی، سیستمهای IoT میتوانند شرایط محیطی مانند رطوبت، دما و سطح مواد مغذی خاک را کنترل کرده و به کشاورزان در مدیریت موثرتر مزارع یاری رسانند.
🔒 در حالی که IoT فرصتهای بیشماری را فراهم میآورد، چالشهایی مانند امنیت سایبری و حفظ حریم خصوصی نیز مطرح است که نیازمند توجه دقیق و اتخاذ راهکارهای مناسب است. این مسئله تأکید میکند بر اهمیت طراحی سیستمهای IoT با در نظر گرفتن اصول امنیتی و حفاظت از دادههای شخصی کاربران.
📁 #IoT
✅ کانال تخصصی لاراول
📌 @PapiDon_state
☕️ اتاق برنامهنویسی
📌 @PapiDon_coding
✨ این تکنولوژی، امکان ارتباط بین دستگاهها و تبادل اطلاعات را فراهم میآورد که منجر به خلق سیستمهای هوشمند و خودکار میشود. مثلاً، یک یخچال هوشمند میتواند محتویات خود را تحلیل کرده و در صورت نیاز، به صورت خودکار سفارش مواد غذایی دهد. یا سیستم روشنایی هوشمند که بر اساس حضور افراد در اتاق، شدت نور را تنظیم میکند.
🌍 در زمینههای مختلفی چون صنعت، کشاورزی، حملونقل و بهداشت و درمان، IoT کاربردهای گستردهای دارد. از طریق IoT، جمعآوری اطلاعات دقیق و لحظهای میسر میشود که به بهینهسازی فرآیندها کمک میکند. به عنوان نمونه، در بخش کشاورزی، سیستمهای IoT میتوانند شرایط محیطی مانند رطوبت، دما و سطح مواد مغذی خاک را کنترل کرده و به کشاورزان در مدیریت موثرتر مزارع یاری رسانند.
🔒 در حالی که IoT فرصتهای بیشماری را فراهم میآورد، چالشهایی مانند امنیت سایبری و حفظ حریم خصوصی نیز مطرح است که نیازمند توجه دقیق و اتخاذ راهکارهای مناسب است. این مسئله تأکید میکند بر اهمیت طراحی سیستمهای IoT با در نظر گرفتن اصول امنیتی و حفاظت از دادههای شخصی کاربران.
📁 #IoT
✅ کانال تخصصی لاراول
📌 @PapiDon_state
☕️ اتاق برنامهنویسی
📌 @PapiDon_coding
👍3❤1🔥1
PHP & MYSQL pinned «⚙️ اینترنت اشیاء (IoT) به مفهوم گستردهتر و پیشرفتهتر اتصال دستگاهها و وسایل مختلف به اینترنت اشاره دارد، که فراتر از محدوده سنتی ارتباطات الکترونیکی است. در این سیستم، اشیاء یا دستگاههایی که پیشتر هیچگونه قابلیت ارتباطی نداشتند، توانایی جمعآوری، ارسال…»
Forwarded from اتاق برنامه نویسی </> (PapiDon)
✨JS Design Patterns: A Comprehensive Guid [ Part 1 ]
✨ این مطلب یک راهنمای جذاب در زمینه الگوهای طراحی در جاوا اسکریپت است که اهمیت بالایی در دنیای برنامهنویسی دارد. این الگوها، که راهحلهای امتحانپسداده برای مشکلات متداول در برنامهنویسی هستند، به شما کمک میکنند تا کدهای خود را به شکلی منظم، قابل نگهداری و گسترشپذیر بنویسید. در اینجا به بررسی چند نمونه از این الگوها در جاوا اسکریپت پرداخته میشود
1️⃣ الگو Singleton Pattern:
این الگو اطمینان میدهد که یک کلاس تنها یک نمونه (instance) داشته باشد. مثلاً برای مدیریت پایگاهداده یا تنظیمات سیستمی در جاوا اسکریپت کاربرد دارد. کد نمونه زیر نشاندهنده این است که چگونه دو شیء از یک کلاس به یک نمونه اشاره میکنند:
2️⃣ الگو Observer Pattern:
این الگو به شما اجازه میدهد تغییرات در یک شیء را رصد کنید و در صورت وقوع تغییرات، اطلاعرسانی کنید. این کد نشان میدهد چگونه میتوانید اشیاء را به یک موضوع مشترک متصل کنید و در هنگام تغییر دادهها، اطلاعرسانی کنید:
3️⃣ الگو Module Pattern:
این الگو به شما کمک میکند تا کد خود را به صورت ماژولهای مستقل سازماندهی کنید تا از تداخل متغیرها و توابع در فضای نام جلوگیری شود:
📁 #javascript #DesignPatterns
✅ کانال تخصصی لاراول
📌 @PapiDon_state
☕️ اتاق برنامهنویسی
📌 @PapiDon_coding
✨ این مطلب یک راهنمای جذاب در زمینه الگوهای طراحی در جاوا اسکریپت است که اهمیت بالایی در دنیای برنامهنویسی دارد. این الگوها، که راهحلهای امتحانپسداده برای مشکلات متداول در برنامهنویسی هستند، به شما کمک میکنند تا کدهای خود را به شکلی منظم، قابل نگهداری و گسترشپذیر بنویسید. در اینجا به بررسی چند نمونه از این الگوها در جاوا اسکریپت پرداخته میشود
1️⃣ الگو Singleton Pattern:
این الگو اطمینان میدهد که یک کلاس تنها یک نمونه (instance) داشته باشد. مثلاً برای مدیریت پایگاهداده یا تنظیمات سیستمی در جاوا اسکریپت کاربرد دارد. کد نمونه زیر نشاندهنده این است که چگونه دو شیء از یک کلاس به یک نمونه اشاره میکنند:
let instance;
class Database {
constructor(data) {
if (instance) {
return instance;
}
this.data = data;
instance = this;
}
getData() {
return this.data;
}
}
const db1 = new Database('db1');
const db2 = new Database('db2');
console.log(db1 === db2); // true
2️⃣ الگو Observer Pattern:
این الگو به شما اجازه میدهد تغییرات در یک شیء را رصد کنید و در صورت وقوع تغییرات، اطلاعرسانی کنید. این کد نشان میدهد چگونه میتوانید اشیاء را به یک موضوع مشترک متصل کنید و در هنگام تغییر دادهها، اطلاعرسانی کنید:
class Subject {
constructor() {
this.observers = [];
}
subscribe(observer) {
this.observers.push(observer);
}
unsubscribe(observer) {
this.observers = this.observers.filter(obs => obs !== observer);
}
notify(data) {
this.observers.forEach(observer => observer.update(data));
}
}
class Observer {
update(data) {
console.log(`Observer received data: ${data}`);
}
}
const subject = new Subject();
const observer1 = new Observer();
const observer2 = new Observer();
subject.subscribe(observer1);
subject.subscribe(observer2);
subject.notify('Hello World');
3️⃣ الگو Module Pattern:
این الگو به شما کمک میکند تا کد خود را به صورت ماژولهای مستقل سازماندهی کنید تا از تداخل متغیرها و توابع در فضای نام جلوگیری شود:
const MyModule = (() => {
let privateVar = 'I am private';
return {
publicMethod: () => `The value of privateVar is: ${privateVar}`
};
})();
console.log(MyModule.publicMethod());
📁 #javascript #DesignPatterns
✅ کانال تخصصی لاراول
📌 @PapiDon_state
☕️ اتاق برنامهنویسی
📌 @PapiDon_coding
❤2👍1
PHP & MYSQL pinned «✨JS Design Patterns: A Comprehensive Guid [ Part 1 ] ✨ این مطلب یک راهنمای جذاب در زمینه الگوهای طراحی در جاوا اسکریپت است که اهمیت بالایی در دنیای برنامهنویسی دارد. این الگوها، که راهحلهای امتحانپسداده برای مشکلات متداول در برنامهنویسی هستند، به شما…»
Forwarded from کانال آموزشی لاراول (PapiDon)
دوستان و همراهان عزیز، سلام! 👋
🕒 در دنیای پرمشغله امروز، یکی از مهمترین مهارتهایی که هر فردی نیاز دارد، "مدیریت زمان" و "اولویتبندی کارها" است.
🔍 ما در کانال اتاق برنامهنویسی </> قصد داریم به این موضوعات مهم گاهی بپردازیم و با ارائه اطلاعات، تکنیکها و راهکارهای کاربردی نگاهی به این مفاهیم داشته باشیم.
👀 ازینجا مسیر موضوع را دنبال کنید ...
👈🏻 🔗 هدفگذاری SMART
🕒 در دنیای پرمشغله امروز، یکی از مهمترین مهارتهایی که هر فردی نیاز دارد، "مدیریت زمان" و "اولویتبندی کارها" است.
🔍 ما در کانال اتاق برنامهنویسی </> قصد داریم به این موضوعات مهم گاهی بپردازیم و با ارائه اطلاعات، تکنیکها و راهکارهای کاربردی نگاهی به این مفاهیم داشته باشیم.
👀 ازینجا مسیر موضوع را دنبال کنید ...
👈🏻 🔗 هدفگذاری SMART
❤3👍1
Forwarded from کانال آموزشی لاراول (PapiDon)
🌐 What is a Sitemap ?
یک Sitemap نقشهای از وبسایت است که به موتورهای جستجو کمک میکند تا صفحات وبسایت شما را بهتر و سریعتر پیدا و ایندکس کنند. به زبان سادهتر، فهرستی از تمام صفحات موجود در وبسایت شماست که در قالبی قابل خواندن برای رباتهای جستجو ارائه میشود.
🧐 اهمیت Sitemap چیست؟
🔸بهبود ایندکسشدن:
با داشتن Sitemap، موتورهای جستجو میتوانند به راحتی صفحات جدید یا بهروزرسانیهای وبسایت شما را پیدا کنند.
🔸سازماندهی بهتر:
اگر وبسایت شما دارای تعداد زیادی صفحه یا محتوای پیچیده است، Sitemap به سازماندهی و دستهبندی محتوا کمک میکند.
🔸(بهینهسازی موتور جستجو) SEO :
به بهبود رتبهبندی وبسایت شما در نتایج جستجو کمک میکند، زیرا موتورهای جستجو بهتر میتوانند محتوای شما را درک کنند.
🛠 انواع Sitemap:
🔹Sitemap XML:
بیشتر برای موتورهای جستجو استفاده میشود و به آنها کمک میکند تا محتوای وبسایت را بهتر پیدا و ایندکس کنند.
🔹Sitemap HTML:
بیشتر برای کاربران است و به آنها کمک میکند تا به راحتی در وبسایت شما جستجو کرده و محتوای مورد نیاز خود را پیدا کنند.
🌟 در اپلیکیشن لاراول خود با استفاده از Spatie Sitemap نقشه سایت بسازید.
🔔 ایجاد دستی این نقشهها امکانپذیر است، و ما آموزشی در مورد نحوه ایجاد دستی نقشه سایت در اینجا داریم، اما یک پکیج با نام "laravel-sitemap" از Spatie ایجاد نقشه سایت را آسانتر از همیشه میکند.
⚙️ یکی از مزایای این بسته این است که دو روش برای ایجاد نقشه سایت فراهم میکند. اول اینکه میتواند به صورت خودکار سایت شما را جستجو کند و بر اساس پیوندهای داخلی آن را بسازد، یا اینکه میتوانید کنترل کامل داشته باشید و به صورت دستی آن را بسازید.
🔗 برای اطلاعات کامل در مورد راهاندازی، پیکربندی و استفاده از بسته در برنامه خود به پکیج رسمی مراجعه کنید.
✅ کانال تخصصی لاراول
📌 @PapiDon_state
☕️ اتاق برنامه نویسی </>
📌 @PapiDon_coding
یک Sitemap نقشهای از وبسایت است که به موتورهای جستجو کمک میکند تا صفحات وبسایت شما را بهتر و سریعتر پیدا و ایندکس کنند. به زبان سادهتر، فهرستی از تمام صفحات موجود در وبسایت شماست که در قالبی قابل خواندن برای رباتهای جستجو ارائه میشود.
🧐 اهمیت Sitemap چیست؟
🔸بهبود ایندکسشدن:
با داشتن Sitemap، موتورهای جستجو میتوانند به راحتی صفحات جدید یا بهروزرسانیهای وبسایت شما را پیدا کنند.
🔸سازماندهی بهتر:
اگر وبسایت شما دارای تعداد زیادی صفحه یا محتوای پیچیده است، Sitemap به سازماندهی و دستهبندی محتوا کمک میکند.
🔸(بهینهسازی موتور جستجو) SEO :
به بهبود رتبهبندی وبسایت شما در نتایج جستجو کمک میکند، زیرا موتورهای جستجو بهتر میتوانند محتوای شما را درک کنند.
🛠 انواع Sitemap:
🔹Sitemap XML:
بیشتر برای موتورهای جستجو استفاده میشود و به آنها کمک میکند تا محتوای وبسایت را بهتر پیدا و ایندکس کنند.
🔹Sitemap HTML:
بیشتر برای کاربران است و به آنها کمک میکند تا به راحتی در وبسایت شما جستجو کرده و محتوای مورد نیاز خود را پیدا کنند.
🌟 در اپلیکیشن لاراول خود با استفاده از Spatie Sitemap نقشه سایت بسازید.
🔔 ایجاد دستی این نقشهها امکانپذیر است، و ما آموزشی در مورد نحوه ایجاد دستی نقشه سایت در اینجا داریم، اما یک پکیج با نام "laravel-sitemap" از Spatie ایجاد نقشه سایت را آسانتر از همیشه میکند.
⚙️ یکی از مزایای این بسته این است که دو روش برای ایجاد نقشه سایت فراهم میکند. اول اینکه میتواند به صورت خودکار سایت شما را جستجو کند و بر اساس پیوندهای داخلی آن را بسازد، یا اینکه میتوانید کنترل کامل داشته باشید و به صورت دستی آن را بسازید.
🔗 برای اطلاعات کامل در مورد راهاندازی، پیکربندی و استفاده از بسته در برنامه خود به پکیج رسمی مراجعه کنید.
✅ کانال تخصصی لاراول
📌 @PapiDon_state
☕️ اتاق برنامه نویسی </>
📌 @PapiDon_coding
GitHub
GitHub - spatie/laravel-sitemap: Create and generate sitemaps with ease
Create and generate sitemaps with ease. Contribute to spatie/laravel-sitemap development by creating an account on GitHub.
❤2👍1
PHP & MYSQL pinned «🌐 What is a Sitemap ? یک Sitemap نقشهای از وبسایت است که به موتورهای جستجو کمک میکند تا صفحات وبسایت شما را بهتر و سریعتر پیدا و ایندکس کنند. به زبان سادهتر، فهرستی از تمام صفحات موجود در وبسایت شماست که در قالبی قابل خواندن برای رباتهای جستجو ارائه…»
Forwarded from اتاق برنامه نویسی </> (PapiDon)
✨ Redis hashes
در میان دستورات متنوع Redis، دستورات هش یکی از مفیدترینها برای مدیریت دادههای ساختارمند هستند. در این مطلب، کاربردهای کلیدی دستورات هش و چگونگی استفاده از آنها را بررسی میکنیم.
⚙️ چه زمانی از هشها استفاده کنیم؟
1️⃣ ساختار دادهای مرتبط:
- زمانی که دادهها دارای ارتباط منطقی هستند، مانند ویژگیهای یک کاربر (مانند نام، ایمیل)، استفاده از هش مناسب است.
- در هش، هر کلید نمایانگر یک ویژگی است و مقدار آن، داده مربوطه.
2️⃣ کاهش تعداد کلیدها:
- برای جلوگیری از افزایش بیرویه تعداد کلیدها در Redis، هشها به کار میآیند.
- به جای ایجاد کلیدهای مجزا برای هر ویژگی، همه ویژگیها را در یک هش ذخیره کنید.
3️⃣ کارآمدی حافظه:
- هشها در Redis طوری طراحی شدهاند که حافظه را بهصورت کارآمد استفاده میکنند، خصوصاً برای دادههای کوچک و زیاد.
4️⃣ دسترسی و بهروزرسانی مقادیر:
- امکان دسترسی و بهروزرسانی سریع ویژگیهای خاص بدون نیاز به در نظر گرفتن کل دادهها.
5️⃣ جستجوی کارآمد:
- استفاده از هشها امکان جستجو و دسترسی موثر به کلیدهای خاص را فراهم میکند.
🛠 دستورات کلیدی هش در Redis
🔸
برای ایجاد یا بهروزرسانی مقدار یک کلید در هش.
🔸
برای بازیابی مقدار یک کلید خاص از هش.
🔸
برای ایجاد یا بهروزرسانی چندین کلید و مقدار در هش.
🔸
برای بازیابی چندین کلید از هش.
🔸
برای حذف یک یا چند کلید از هش.
🔸
برای بازیابی کلیه کلیدها یا مقادیر از هش.
🎯 نکات کاربردی
- استفاده از هشها برای دادههای با ساختار ثابت و مرتبط بسیار مفید است.
- مدیریت حافظه و بهینهسازی عملکرد از مزایای اصلی استفاده از هشها در Redis است.
- هشها امکان دستکاری سریع و کارآمد دادهها را فراهم میکنند.
با توجه به این نکات، میتوانید از دستورات هش در Redis برای بهینهسازی مدیریت دادههای خود بهره ببرید. Redis با این قابلیتها، یک ابزار قدرتمند برای ذخیرهسازی و مدیریت دادههای ساختارمند در برنامههای مدرن میباشد.
📁 #Redis
✅ کانال تخصصی لاراول
📌 @PapiDon_state
☕️ اتاق برنامهنویسی
📌 @PapiDon_coding
در میان دستورات متنوع Redis، دستورات هش یکی از مفیدترینها برای مدیریت دادههای ساختارمند هستند. در این مطلب، کاربردهای کلیدی دستورات هش و چگونگی استفاده از آنها را بررسی میکنیم.
⚙️ چه زمانی از هشها استفاده کنیم؟
1️⃣ ساختار دادهای مرتبط:
- زمانی که دادهها دارای ارتباط منطقی هستند، مانند ویژگیهای یک کاربر (مانند نام، ایمیل)، استفاده از هش مناسب است.
- در هش، هر کلید نمایانگر یک ویژگی است و مقدار آن، داده مربوطه.
2️⃣ کاهش تعداد کلیدها:
- برای جلوگیری از افزایش بیرویه تعداد کلیدها در Redis، هشها به کار میآیند.
- به جای ایجاد کلیدهای مجزا برای هر ویژگی، همه ویژگیها را در یک هش ذخیره کنید.
3️⃣ کارآمدی حافظه:
- هشها در Redis طوری طراحی شدهاند که حافظه را بهصورت کارآمد استفاده میکنند، خصوصاً برای دادههای کوچک و زیاد.
4️⃣ دسترسی و بهروزرسانی مقادیر:
- امکان دسترسی و بهروزرسانی سریع ویژگیهای خاص بدون نیاز به در نظر گرفتن کل دادهها.
5️⃣ جستجوی کارآمد:
- استفاده از هشها امکان جستجو و دسترسی موثر به کلیدهای خاص را فراهم میکند.
🛠 دستورات کلیدی هش در Redis
🔸
HSET: برای ایجاد یا بهروزرسانی مقدار یک کلید در هش.
🔸
HGET: برای بازیابی مقدار یک کلید خاص از هش.
🔸
HMSET: برای ایجاد یا بهروزرسانی چندین کلید و مقدار در هش.
🔸
HMGET: برای بازیابی چندین کلید از هش.
🔸
HDEL:برای حذف یک یا چند کلید از هش.
🔸
HKEYS و HVALS:برای بازیابی کلیه کلیدها یا مقادیر از هش.
🎯 نکات کاربردی
- استفاده از هشها برای دادههای با ساختار ثابت و مرتبط بسیار مفید است.
- مدیریت حافظه و بهینهسازی عملکرد از مزایای اصلی استفاده از هشها در Redis است.
- هشها امکان دستکاری سریع و کارآمد دادهها را فراهم میکنند.
با توجه به این نکات، میتوانید از دستورات هش در Redis برای بهینهسازی مدیریت دادههای خود بهره ببرید. Redis با این قابلیتها، یک ابزار قدرتمند برای ذخیرهسازی و مدیریت دادههای ساختارمند در برنامههای مدرن میباشد.
📁 #Redis
✅ کانال تخصصی لاراول
📌 @PapiDon_state
☕️ اتاق برنامهنویسی
📌 @PapiDon_coding
❤4🔥1
PHP & MYSQL pinned «✨ Redis hashes در میان دستورات متنوع Redis، دستورات هش یکی از مفیدترینها برای مدیریت دادههای ساختارمند هستند. در این مطلب، کاربردهای کلیدی دستورات هش و چگونگی استفاده از آنها را بررسی میکنیم. ⚙️ چه زمانی از هشها استفاده کنیم؟ 1️⃣ ساختار دادهای مرتبط:…»
Forwarded from کانال آموزشی لاراول (PapiDon)
✨ هنگام شروع یک اپلیکیشن جدید Laravel، باید از Model::shouldBeStrict استفاده کنید.
شما ایدهای برای اپ جدید دارید. شما Laravel را نصب میکنید و آماده شروع هستید. اولین کاری که باید انجام دهید چیست؟
برای من، من به app service provider میروم و به متد
با فعال سازی این گزینه، کارهای زیر را انجام میدهد:
🛠 این سه کار را انجام میدهد:
1️⃣ Prevents lazy loading
دادهها فقط در زمان نیاز بارگذاری میشوند. در زمینه پایگاه دادهها، این بدان معناست که اطلاعات مرتبط با یک شیء خاص فقط زمانی بارگذاری میشود که صراحتا خواسته شده باشد. جلوگیری از این کار به معنای این است که برنامه باید تمام دادههای مورد نیاز را به صورت فعال و از پیش بارگذاری کند.
2️⃣ It prevents silently discarding attributes
این به معنای جلوگیری از حذف یا نادیده گرفتن خاموش ویژگیهایی است که ممکن است در فرایند بهروزرسانی یا ذخیرهسازی دادهها اتفاق بیفتد. در بسیاری از چارچوبها، اگر ویژگی خاصی در فرایند بهروزرسانی مشخص نشده باشد، به صورت خودکار حذف یا نادیده گرفته میشود. این مکانیزم برای جلوگیری از این رفتار و اطمینان از اینکه تمام ویژگیها به درستی مدیریت میشوند، به کار میرود.
3️⃣ It prevents accessing missing attributes
این عملکرد از دسترسی به ویژگیهایی که در یک شیء موجود نیستند، جلوگیری میکند. گاهی اوقات ممکن است تلاش شود تا به یک ویژگی که وجود ندارد دسترسی پیدا شود، که میتواند منجر به خطاهای زمان اجرا یا رفتارهای غیرمنتظره شود. این مکانیزم برای جلوگیری از این اتفاق و اطمینان از اینکه تنها به ویژگیهای موجود دسترسی پیدا میشود، استفاده میشود.
🔸Preventing Lazy Loading
در اینجا نمونهای آورده شده است.
اگر این کد را اجرا کنید، خروجی مورد انتظار شما را نشان میدهد. با این حال، این کد رابطه کاربر را به صورت lazy loading بارگیری میکند و در هر حلقه یک کوئری جدید ایجاد میکند.
با فعال بودن
🔸Prevents Silently Discarding Attributes
در اینجا نمونهای از تلاش برای بهروزرسانی یک ویژگی که قابل پر کردن نیست آورده شده است:
حالا این کد یک استثنا برمیگرداند:
🔸Prevents Accessing Missing Attributes
فرض کنید ما سعی داریم یک ویژگی در کاربر را نمایش دهیم که ممکن است وجود نداشته باشد:
به طور پیشفرض، Laravel چیزی نمایش نمیدهد زیرا ویژگی پیدا نمیشود، اما با فعال بودن حالت Strict شما دریافت میکنید:
این در مواردی که ممکن است اشتباه تایپی داشته باشید بسیار کمک میکند، مانند:
حالا، شما بازخورد فوری دریافت میکنید که اشتباه کردهاید.
فعال کردن
✅ کانال تخصصی لاراول
📌 @PapiDon_state
☕️ اتاق برنامه نویسی </>
📌 @PapiDon_coding
شما ایدهای برای اپ جدید دارید. شما Laravel را نصب میکنید و آماده شروع هستید. اولین کاری که باید انجام دهید چیست؟
برای من، من به app service provider میروم و به متد
boot پایین میآیم و Model::shouldBeStrict را به صورت global تنظیم میکنم:public function boot(): void
{
Model::shouldBeStrict();
}
با فعال سازی این گزینه، کارهای زیر را انجام میدهد:
public static function shouldBeStrict(bool $shouldBeStrict = true)
{
static::preventLazyLoading($shouldBeStrict);
static::preventSilentlyDiscardingAttributes($shouldBeStrict);
static::preventAccessingMissingAttributes($shouldBeStrict);
}
🛠 این سه کار را انجام میدهد:
1️⃣ Prevents lazy loading
دادهها فقط در زمان نیاز بارگذاری میشوند. در زمینه پایگاه دادهها، این بدان معناست که اطلاعات مرتبط با یک شیء خاص فقط زمانی بارگذاری میشود که صراحتا خواسته شده باشد. جلوگیری از این کار به معنای این است که برنامه باید تمام دادههای مورد نیاز را به صورت فعال و از پیش بارگذاری کند.
2️⃣ It prevents silently discarding attributes
این به معنای جلوگیری از حذف یا نادیده گرفتن خاموش ویژگیهایی است که ممکن است در فرایند بهروزرسانی یا ذخیرهسازی دادهها اتفاق بیفتد. در بسیاری از چارچوبها، اگر ویژگی خاصی در فرایند بهروزرسانی مشخص نشده باشد، به صورت خودکار حذف یا نادیده گرفته میشود. این مکانیزم برای جلوگیری از این رفتار و اطمینان از اینکه تمام ویژگیها به درستی مدیریت میشوند، به کار میرود.
3️⃣ It prevents accessing missing attributes
این عملکرد از دسترسی به ویژگیهایی که در یک شیء موجود نیستند، جلوگیری میکند. گاهی اوقات ممکن است تلاش شود تا به یک ویژگی که وجود ندارد دسترسی پیدا شود، که میتواند منجر به خطاهای زمان اجرا یا رفتارهای غیرمنتظره شود. این مکانیزم برای جلوگیری از این اتفاق و اطمینان از اینکه تنها به ویژگیهای موجود دسترسی پیدا میشود، استفاده میشود.
🔸Preventing Lazy Loading
در اینجا نمونهای آورده شده است.
$articles = \App\Models\Article::get();
foreach ($articles as $article) {
echo "<li>" . $article->user->name . "</li>\n";
}
اگر این کد را اجرا کنید، خروجی مورد انتظار شما را نشان میدهد. با این حال، این کد رابطه کاربر را به صورت lazy loading بارگیری میکند و در هر حلقه یک کوئری جدید ایجاد میکند.
با فعال بودن
shouldBeStrict به جای اجرای کد، یک خطا دریافت میکنید که بازخورد فوری به شما میدهد:Attempted to lazy load [user] on model [App\Models\Article] but lazy loading is disabled.🔸Prevents Silently Discarding Attributes
در اینجا نمونهای از تلاش برای بهروزرسانی یک ویژگی که قابل پر کردن نیست آورده شده است:
$user->fill(["remember_token" => "bar"]);
حالا این کد یک استثنا برمیگرداند:
Add fillable property [remember_token] to allow mass assignment on [App\Models\User].🔸Prevents Accessing Missing Attributes
فرض کنید ما سعی داریم یک ویژگی در کاربر را نمایش دهیم که ممکن است وجود نداشته باشد:
{{ $user->nonexistant }}به طور پیشفرض، Laravel چیزی نمایش نمیدهد زیرا ویژگی پیدا نمیشود، اما با فعال بودن حالت Strict شما دریافت میکنید:
The attribute [nonexistant] either does not exist or was not retrieved for model [App\Models\User].این در مواردی که ممکن است اشتباه تایپی داشته باشید بسیار کمک میکند، مانند:
{{ $user->emial }}حالا، شما بازخورد فوری دریافت میکنید که اشتباه کردهاید.
فعال کردن
()Model::shouldBeStrict حالا اولین کاری است که من در هر اپ انجام میدهم و به من کمک میکند تا از اشتباهات پایهای که ممکن است برای اپ بعدا زیانآور باشد، جلوگیری کنم.✅ کانال تخصصی لاراول
📌 @PapiDon_state
☕️ اتاق برنامه نویسی </>
📌 @PapiDon_coding
❤3👍1