Forwarded from PGTWEET | توییت برنامه نویسی (AraD)
توی سطوح بالاتر، افرادی که با شما مصاحبه میکنند مایلند بدونند که شما چقدر به جعبه ابزارتون مسلطید. اگر توی رزومهتون نوشتید که با ابزار X کار کردید، اونها از شما سوالاتی میپرسند که متوجه عمق درک و تجربه شما از اون ابزار بشوند درنتیجه خیلی مهمه که اولا واقعا با اون ابزار توی یک یا دو پروژه واقعی کار کرده باشید و چالشهاش رو تجربه کرده باشید و دوم اینکه وقتی دارید داکیومنت میخونید باید به صورت مداوم دنبال چرایی باشید! چرا این متد اینطور کار میکنه؟ چرا این API اینجوری دیزاین شده؟ چرا باید این مقادیر رو ست کنم؟ چرا باید این دیتا رو برای فلان متد فراهم کنم؟
خیلی وقتها بعد از پرسیدن این سوالات مجبور میشید تا سورس کد اون ابزار رو بخونید که با همین کار، شما هم Design Pattern یاد میگیرید، هم نحوه کد استاندارد نوشتن یاد میگرید و هم متوجه میشید که تیمهای بزرگ هم از فضا نیومدند و شما هم میتونید اون کد رو بنویسید و اعتماد به نفستون بیشتر میشه.😄
۵- زودتر وارد دنیای open-source بشید!
تصور کنید وارد یک مغازه طلافروشی میشید و میخواید طلا بخرید. روی دیوار پر از مدارک و جوایزه و آقا/خانم فروشنده به شما میگه که تا الان به این لیست از افراد خدمات دادیم و همگی راضی بودند. شما به ویترین نگاه میکنید و میبینید حتی یک جنس هم وجود نداره! پیش خودتون چی فکر میکنید؟ آیا به حرف فروشنده و چندتا تابلو اعتماد میکنید یا کمی مردد میشید؟
Talk is cheap. Show me the code.
- Linus Torvalds
واقعیت اینه که دنیای open-source درحال حاضر نقش زیادی رو برای اعتبار سنجی تجربیات شما بازی میکنه و یجورایی همون ویترین شماست. شاید به عنوان یک برنامهنویس عادی که یک نتورک قوی و مارکتینگ شرکتهای بزرگ پشتش نیست نتونید پروژهای با 10K استار توی گیتهاب داشته باشید اما میتونید در قدم اول به بقیه نشون بدید که چطور کدهاتون رو مینویسید و در قدم بعد تلاش بیشتری کنید تا استار بیشتری هم برای پروژهتون به دست بیارید. فعالیت توی گیتهاب، این رو به همکارهای آینده شما نشون میده که شما درحال یادگیری هستید و وقتی رو برای پروژههای جانبی میذارید که این ارزشمنده. همینطور ممکنه شما تمام تجربه کاریتون در زمینه JS بوده باشه ولی زبان Kotlin رو هم بلدید و دوست دارید تجربه بعدی کاریتون توی اون حوزه باشه. خیلی راحت میتونید پروژهای که با Kotlin نوشتید رو در گیتهابتون منتشر کنید تا گواهی بر این باشه که شما Kotlin رو بلدید.
۶- زودتر به طور جدی زبان انگلیسی رو دنبال کنید
آخرین نکتهای که دوست دارم حتما بگم زبان انگلیسیه! تمام موارد قبلی به کنار، این مورد به کنار. واقعیتش اگر شما زبان انگلیسیتون رو تقویت نکنید، نمیتونید داکیومنت بخونید، کنفرانس ببینید، پادکست گوش بدید، توی دنیای open source فعالیت کنید و بعد از اینها اگر قصد مهاجرت داشته باشید، تقریبا براتون غیر ممکنه!
توی دنیای امروز شرکتهای نرمافزاری بخصوص استارتآپها که نیاز به رشد و حرکت سریع دارند، مهمتر از کدی که مینویسید و ابزاری که باهاش کار میکنید اینه که بتونید با تیمتون تعامل مستمر و سودمند داشته باشید. بتونید مسائل و مشکلات پیچیده برنامهنویسی رو از طرف مقابلتون دریافت کنید و در مقابل بتونید به کسی دیگه به صورت واضح منتقل کنید. شاید یکی از مهمترین دلایلی که برنامهنویس های هندی بیشتر از برنامهنویسهای ایرانی از آسیا درحال کار توی شرکتهای اروپایی و آمریکایی هستند همین باشه. شاید لهجه خیلی خوبی نداشته باشند(گاهی هم چیزی از نیتیو اسپیکر کم ندارند) اما بدون هیچ مشکلی مطلب رو درک میکنند و مطلبشون رو ارائه میدهند و برای هیچ کس(جز ما ایرانیها😁) لهجه مهم نیست و تعامل مهمه. در نتیجه این مورد شاید بشه گفت مهمترین چیزیه که باید روش بیشتر کار میکردم.
همین! اینها چیزهایی بود که فکر کردم از بقیه موارد مهمتر هستند و دونستنشون میتونه کمک کننده باشه. از اینکه این نوشته نسبتا طولانی رو خوندید ممنونم و امیدوارم کمکی کرده باشه بهتون.
📄#مقاله
》Hamid Hadi《
🕊 توییتر برنامه نویسان 🕊
خیلی وقتها بعد از پرسیدن این سوالات مجبور میشید تا سورس کد اون ابزار رو بخونید که با همین کار، شما هم Design Pattern یاد میگیرید، هم نحوه کد استاندارد نوشتن یاد میگرید و هم متوجه میشید که تیمهای بزرگ هم از فضا نیومدند و شما هم میتونید اون کد رو بنویسید و اعتماد به نفستون بیشتر میشه.😄
۵- زودتر وارد دنیای open-source بشید!
تصور کنید وارد یک مغازه طلافروشی میشید و میخواید طلا بخرید. روی دیوار پر از مدارک و جوایزه و آقا/خانم فروشنده به شما میگه که تا الان به این لیست از افراد خدمات دادیم و همگی راضی بودند. شما به ویترین نگاه میکنید و میبینید حتی یک جنس هم وجود نداره! پیش خودتون چی فکر میکنید؟ آیا به حرف فروشنده و چندتا تابلو اعتماد میکنید یا کمی مردد میشید؟
Talk is cheap. Show me the code.
- Linus Torvalds
واقعیت اینه که دنیای open-source درحال حاضر نقش زیادی رو برای اعتبار سنجی تجربیات شما بازی میکنه و یجورایی همون ویترین شماست. شاید به عنوان یک برنامهنویس عادی که یک نتورک قوی و مارکتینگ شرکتهای بزرگ پشتش نیست نتونید پروژهای با 10K استار توی گیتهاب داشته باشید اما میتونید در قدم اول به بقیه نشون بدید که چطور کدهاتون رو مینویسید و در قدم بعد تلاش بیشتری کنید تا استار بیشتری هم برای پروژهتون به دست بیارید. فعالیت توی گیتهاب، این رو به همکارهای آینده شما نشون میده که شما درحال یادگیری هستید و وقتی رو برای پروژههای جانبی میذارید که این ارزشمنده. همینطور ممکنه شما تمام تجربه کاریتون در زمینه JS بوده باشه ولی زبان Kotlin رو هم بلدید و دوست دارید تجربه بعدی کاریتون توی اون حوزه باشه. خیلی راحت میتونید پروژهای که با Kotlin نوشتید رو در گیتهابتون منتشر کنید تا گواهی بر این باشه که شما Kotlin رو بلدید.
۶- زودتر به طور جدی زبان انگلیسی رو دنبال کنید
آخرین نکتهای که دوست دارم حتما بگم زبان انگلیسیه! تمام موارد قبلی به کنار، این مورد به کنار. واقعیتش اگر شما زبان انگلیسیتون رو تقویت نکنید، نمیتونید داکیومنت بخونید، کنفرانس ببینید، پادکست گوش بدید، توی دنیای open source فعالیت کنید و بعد از اینها اگر قصد مهاجرت داشته باشید، تقریبا براتون غیر ممکنه!
توی دنیای امروز شرکتهای نرمافزاری بخصوص استارتآپها که نیاز به رشد و حرکت سریع دارند، مهمتر از کدی که مینویسید و ابزاری که باهاش کار میکنید اینه که بتونید با تیمتون تعامل مستمر و سودمند داشته باشید. بتونید مسائل و مشکلات پیچیده برنامهنویسی رو از طرف مقابلتون دریافت کنید و در مقابل بتونید به کسی دیگه به صورت واضح منتقل کنید. شاید یکی از مهمترین دلایلی که برنامهنویس های هندی بیشتر از برنامهنویسهای ایرانی از آسیا درحال کار توی شرکتهای اروپایی و آمریکایی هستند همین باشه. شاید لهجه خیلی خوبی نداشته باشند(گاهی هم چیزی از نیتیو اسپیکر کم ندارند) اما بدون هیچ مشکلی مطلب رو درک میکنند و مطلبشون رو ارائه میدهند و برای هیچ کس(جز ما ایرانیها😁) لهجه مهم نیست و تعامل مهمه. در نتیجه این مورد شاید بشه گفت مهمترین چیزیه که باید روش بیشتر کار میکردم.
همین! اینها چیزهایی بود که فکر کردم از بقیه موارد مهمتر هستند و دونستنشون میتونه کمک کننده باشه. از اینکه این نوشته نسبتا طولانی رو خوندید ممنونم و امیدوارم کمکی کرده باشه بهتون.
📄#مقاله
》Hamid Hadi《
🕊 توییتر برنامه نویسان 🕊
👍10❤1
در لاراول با کمک FakerPHP میتونید اقدام به ساخت شماره کارتهای fake کنید.
این شماره کارتهای fake در محیط تستی واقعا مفیدن و بهتون کمک میکنن تا پروژه هاتونو به خوبی آزمایش کنید.👌🏾
حتی میتونیم مشخص کنیم که چه نوعی از شماره کارت رو برامون تولید کنه؟ مثلا Visa یا MasterCard؟ (در تصویر زیر فرایندش گفته شده)
#laravel
#لاراول
@GoldenCodeir
(به منبع و مثالش دقت کنید👇🏾)
https://x.com/OussamaMater/status/1819092565561651269?t=H3Q4oXdHDOpKAIKBeFD2Yw&s=35
این شماره کارتهای fake در محیط تستی واقعا مفیدن و بهتون کمک میکنن تا پروژه هاتونو به خوبی آزمایش کنید.👌🏾
حتی میتونیم مشخص کنیم که چه نوعی از شماره کارت رو برامون تولید کنه؟ مثلا Visa یا MasterCard؟ (در تصویر زیر فرایندش گفته شده)
#laravel
#لاراول
@GoldenCodeir
(به منبع و مثالش دقت کنید👇🏾)
https://x.com/OussamaMater/status/1819092565561651269?t=H3Q4oXdHDOpKAIKBeFD2Yw&s=35
X (formerly Twitter)
OussamaMater (@OussamaMater) on X
Laravel Tip💡: Generate Fake Credit Card Numbers
Since Laravel uses FakerPHP under the hood, you can generate fake credit card numbers for your tests 🚀
#laravel
Since Laravel uses FakerPHP under the hood, you can generate fake credit card numbers for your tests 🚀
#laravel
👍6
Forwarded from CleverDevs (Mammad)
Object Relational Mapping یا به اختصار ORM چیه؟ و به چه دردی میخوره؟
اگه بکند کار باشید احتمال زیاد با یه ORM کار کردید یا حداقل اسمشو شنیدید توی این پست یکم دقیق تر بررسی میکنیم که ORM چه کاربردی داره . در واقع ORM ها ابزار هایی هستن که کمک میکنن برنامه نویس های شی گرا راحت تر با دیتابیس ارتباط برقرار کنن
مثلا اگه شما بخواید یه سری اطلاعات رو از جدول users بگیرید باید یه همچین کوئری sql ای بنویسید :
اما کمک ORM ها میتونید با یه همچین چیزی کارو در بیارید
ORM یک لایه بین برنامه نویس و دیتابیس ایجاد میکنه و در نهایت متد های مورد استفاده شمارو به SQL ترجمه میکنه و کوئری میزنه به دیتابیس ORM های مختلفی هم برای زبون ها و فریمورک های مختلف وجود داره مثل Eloquent برای لاراول یا ORM فریمورک جنگو و...
ORM های مختلف میتونن متد های مختلفی هم داشته باشن ولی در نهایت هدفشون یکیه و یه کاری انجام میدن
استفاده از ORM ها یه سری مزایاا و یه سری معایب داره
مزایایی مثل
همینطور معایبی مثل
پ.ن درسته کار با ORM نیاز به دانش چندانی از SQL نویسی نداره اما به این معنی نیست که SQL بلد نباشید و فقط از ORM استفاده کنید
#ORM
@CleverDevs - @CleverDevsGp
اگه بکند کار باشید احتمال زیاد با یه ORM کار کردید یا حداقل اسمشو شنیدید توی این پست یکم دقیق تر بررسی میکنیم که ORM چه کاربردی داره . در واقع ORM ها ابزار هایی هستن که کمک میکنن برنامه نویس های شی گرا راحت تر با دیتابیس ارتباط برقرار کنن
مثلا اگه شما بخواید یه سری اطلاعات رو از جدول users بگیرید باید یه همچین کوئری sql ای بنویسید :
"SELECT id, name, email, country, phone_number FROM users WHERE id = 20"
اما کمک ORM ها میتونید با یه همچین چیزی کارو در بیارید
users.GetById(20)
ORM یک لایه بین برنامه نویس و دیتابیس ایجاد میکنه و در نهایت متد های مورد استفاده شمارو به SQL ترجمه میکنه و کوئری میزنه به دیتابیس ORM های مختلفی هم برای زبون ها و فریمورک های مختلف وجود داره مثل Eloquent برای لاراول یا ORM فریمورک جنگو و...
ORM های مختلف میتونن متد های مختلفی هم داشته باشن ولی در نهایت هدفشون یکیه و یه کاری انجام میدن
استفاده از ORM ها یه سری مزایاا و یه سری معایب داره
مزایایی مثل
سرعت توسعه بالاتر
افزایش امنیت در اکثر اوقات
کمتر سرو کله زدن با SQL و ...
همینطور معایبی مثل
سرعت کمتر ORM نسبت به SQL
کارایی پایین ORM در کوئری های پیچیده و...
پ.ن درسته کار با ORM نیاز به دانش چندانی از SQL نویسی نداره اما به این معنی نیست که SQL بلد نباشید و فقط از ORM استفاده کنید
#ORM
@CleverDevs - @CleverDevsGp
👍5❤4🔥1
Forwarded from Pishro App
#لاراول ۱۱.۱۹ منتشر شد
توی این نسخه چندین تغییر داشتیم از جمله متدی بنام whereNone به Query Builder
لاراول اضافه شد که این متد به کاربران امکان پرس و جو برای رکوردهایی رو می ده که توی اونها هیچ یک از ستون های مشخص شده با شرایط داده شده مطابقت ندارد
👾 @pishroapp
توی این نسخه چندین تغییر داشتیم از جمله متدی بنام whereNone به Query Builder
لاراول اضافه شد که این متد به کاربران امکان پرس و جو برای رکوردهایی رو می ده که توی اونها هیچ یک از ستون های مشخص شده با شرایط داده شده مطابقت ندارد
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤4
در لاراول برای اعتبارسنجی تاریخ ها میتونیم از رشته های توصیفی مانند"today" یا "tomorrow" استفاده کنیم.
اینکار باعث میشه قوانین اعتبارسنجی ما خواناتر و ساده تر بشه نسبت به شرایطی که میایم و بطور مستقیم تاریخ هارو درج میکنیم.
در تصویر مثال های بیشتری عنوان شده
#laravel
#لاراول
@GoldenCodeir
(به منبع و مثالش توجه کنید👇🏾)
https://x.com/OussamaMater/status/1820184911023890561?s=1
اینکار باعث میشه قوانین اعتبارسنجی ما خواناتر و ساده تر بشه نسبت به شرایطی که میایم و بطور مستقیم تاریخ هارو درج میکنیم.
در تصویر مثال های بیشتری عنوان شده
#laravel
#لاراول
@GoldenCodeir
(به منبع و مثالش توجه کنید👇🏾)
https://x.com/OussamaMater/status/1820184911023890561?s=1
X (formerly Twitter)
OussamaMater (@OussamaMater) on X
Laravel Tip💡: Validate Dates Elegantly
Did you know that when validating dates with Laravel, you can pass strings like "today" or "tomorrow" instead of actual dates? This makes the validation rules much more readable 🚀
#laravel
Did you know that when validating dates with Laravel, you can pass strings like "today" or "tomorrow" instead of actual dates? This makes the validation rules much more readable 🚀
#laravel
👍6🔥1
Forwarded from PGTWEET | توییت برنامه نویسی
فقط اینکه شما بلد باشید با یک زبان برنامه نویسی یک پروژه رو به اتمام برسونید به معنی این نیست که شما یک Software engineer یا مهندس نرمافزار هستید.
یک مهندس نرمافزار توی سال 2023 نیازه که حداقل یکسری ابزار هارو بلد باشه و بتونه باهاشون کار کنه، خب بیاید ببینیم چه ابزارهایی...
- IDE | Editor
یک مهندس نرمافزار احتمالا بیشترین تایمش رو بابت کد زدن بگذرونه، پس نیازه که محیطی که توش کد میزنه رو خوب بشناسه.
پس اولین ابزار یک IDE یا ادیتور مناسبه که اون رو خوب بشناسه و بهش مسلط باشه تا با سرعت مناسبی بتونه پروسه کد زدن رو پیش ببره.
- Version control systems
برای مدیریت و توسعه سورس های کد نوشته شده و اشتراک گذاری و توسعه توسط بقیه برنامه نویس ها شما حتما حتما باید یک ورژن کنترل مثل گیت رو خوب بلد باشید تا بتونید در روند توسعه سریع و چابک باشید.
- Docker
دیگه توی این دوره هر مهندس نرم افزاری برای این که یک محیط Centralized رو بالا بیاره نیازه که داکر رو بلد باشه، حتما یادش بگیرید :)
- Testing tools
شما نیازه که ابزار ها و لایبرری های مورد استفاده جهت تست نرم افزارتون رو هم بلد باشید تا بتونید تست اتوماتیک داشته باشید
- Monitoring
یکسری ابزار ها هستن برای مانیتور کردن پرفومنس پروژه مثل Prometheus و Grafana که با استفاده ازشون میتونید پرفومنس پروژتون یا دیتابیستون رو مانیتور کنید و برای تحلیل هاتون ازشون استفاده کنید.
- Task management tools
کارها و تسک های هربرنامه نویس باید مشخص باشه که بتونه سرعتش در توسعه رو بالا ببره، در نتیجه دونستن یکسری ابزار مثل Jira که کارشون Task management و.. هست یک نیاز ضروریه.
- Logging
اما لاگ زدن و log tracking، اهمیتش توی یک پروژه به قدری مهمه که شما بعنوان مهندس نرم افزار برای کنترل بهتر روی پروژتون نباید ازش غافل بشید.
یکسری ابزار ها مثل Sentry بهتون کمک میکنن.
- CI/CD
شما با استفاده از CD/CD میتونید روند بیلد، تست و دیپلوی پروژتون رو اتوماتیک کنید و خیلی سرعت خودتون رو در روند توسعه نرم افزار بالاتر ببرید و ریسک خطا های بیلد و دیپلوی رو کاهش بدید، ابزار هایی مثل Jenkins یا حتی Gitlab به شما در این پروسه کمک میکنن.
- Gitlab | Github
خب ما گیت رو یادگرفتیم حالا چطور توی یک محیط اشتراکی کدهامون رو باهم به اشتراک بزاریم و کدهای همدیگه رو قبل از اعمال بررسی و کامنت بزاریم، یا اصلا این کدهارو کجا نگه داریم که فردا از دستشون ندیم؟ خب معلومه دیگه از گیتهاب یا گیتلب استفاده کنید.
- Message brokers
این روزا با بزرگ شدن پروژه هامون، نیاز به ارتباط بین اپلیکیشن ها حس میشه که یکی از روش های ارتباط برقرار کردن استفاده از Message broker هایی مثل Kafka یا RabbitMQ هستش و یادگیریشون امروزه تقریبا ضروری شده برای یک مهندس نرم افزار
- Linux
اصلا نیاز به توضیح نیست در مورد لینوکس، بعنوان یه مهندس نرم افزار تقریبا بیشتر سرورهایی که باهاشون سر و کار دارید لینوکسی هستند، و از سمتی احتمالا استفاده از لینوکس میتونه خیلی بهتون کمک کنه بعنوان دسکتاپتون
پس یادش بگیرید.
- Cloud platforms
این روزا تقریبا هرجایی که برید با Cloud سر و کار دارید و زیرساخت اکثر اپلیکیشنا توی محیط هایی مثل AWS و Google Cloud و Azure یا مشابهشون دارن میزبانی میشن، پس اینم احتمالا باید یادبگیرید خصوصا اگه قصد مهاجرت دارید.
👤| Reza (@ReziAmini)
👨💻👩💻|@PGTWEET
یک مهندس نرمافزار توی سال 2023 نیازه که حداقل یکسری ابزار هارو بلد باشه و بتونه باهاشون کار کنه، خب بیاید ببینیم چه ابزارهایی...
- IDE | Editor
یک مهندس نرمافزار احتمالا بیشترین تایمش رو بابت کد زدن بگذرونه، پس نیازه که محیطی که توش کد میزنه رو خوب بشناسه.
پس اولین ابزار یک IDE یا ادیتور مناسبه که اون رو خوب بشناسه و بهش مسلط باشه تا با سرعت مناسبی بتونه پروسه کد زدن رو پیش ببره.
- Version control systems
برای مدیریت و توسعه سورس های کد نوشته شده و اشتراک گذاری و توسعه توسط بقیه برنامه نویس ها شما حتما حتما باید یک ورژن کنترل مثل گیت رو خوب بلد باشید تا بتونید در روند توسعه سریع و چابک باشید.
- Docker
دیگه توی این دوره هر مهندس نرم افزاری برای این که یک محیط Centralized رو بالا بیاره نیازه که داکر رو بلد باشه، حتما یادش بگیرید :)
- Testing tools
شما نیازه که ابزار ها و لایبرری های مورد استفاده جهت تست نرم افزارتون رو هم بلد باشید تا بتونید تست اتوماتیک داشته باشید
- Monitoring
یکسری ابزار ها هستن برای مانیتور کردن پرفومنس پروژه مثل Prometheus و Grafana که با استفاده ازشون میتونید پرفومنس پروژتون یا دیتابیستون رو مانیتور کنید و برای تحلیل هاتون ازشون استفاده کنید.
- Task management tools
کارها و تسک های هربرنامه نویس باید مشخص باشه که بتونه سرعتش در توسعه رو بالا ببره، در نتیجه دونستن یکسری ابزار مثل Jira که کارشون Task management و.. هست یک نیاز ضروریه.
- Logging
اما لاگ زدن و log tracking، اهمیتش توی یک پروژه به قدری مهمه که شما بعنوان مهندس نرم افزار برای کنترل بهتر روی پروژتون نباید ازش غافل بشید.
یکسری ابزار ها مثل Sentry بهتون کمک میکنن.
- CI/CD
شما با استفاده از CD/CD میتونید روند بیلد، تست و دیپلوی پروژتون رو اتوماتیک کنید و خیلی سرعت خودتون رو در روند توسعه نرم افزار بالاتر ببرید و ریسک خطا های بیلد و دیپلوی رو کاهش بدید، ابزار هایی مثل Jenkins یا حتی Gitlab به شما در این پروسه کمک میکنن.
- Gitlab | Github
خب ما گیت رو یادگرفتیم حالا چطور توی یک محیط اشتراکی کدهامون رو باهم به اشتراک بزاریم و کدهای همدیگه رو قبل از اعمال بررسی و کامنت بزاریم، یا اصلا این کدهارو کجا نگه داریم که فردا از دستشون ندیم؟ خب معلومه دیگه از گیتهاب یا گیتلب استفاده کنید.
- Message brokers
این روزا با بزرگ شدن پروژه هامون، نیاز به ارتباط بین اپلیکیشن ها حس میشه که یکی از روش های ارتباط برقرار کردن استفاده از Message broker هایی مثل Kafka یا RabbitMQ هستش و یادگیریشون امروزه تقریبا ضروری شده برای یک مهندس نرم افزار
- Linux
اصلا نیاز به توضیح نیست در مورد لینوکس، بعنوان یه مهندس نرم افزار تقریبا بیشتر سرورهایی که باهاشون سر و کار دارید لینوکسی هستند، و از سمتی احتمالا استفاده از لینوکس میتونه خیلی بهتون کمک کنه بعنوان دسکتاپتون
پس یادش بگیرید.
- Cloud platforms
این روزا تقریبا هرجایی که برید با Cloud سر و کار دارید و زیرساخت اکثر اپلیکیشنا توی محیط هایی مثل AWS و Google Cloud و Azure یا مشابهشون دارن میزبانی میشن، پس اینم احتمالا باید یادبگیرید خصوصا اگه قصد مهاجرت دارید.
👤| Reza (@ReziAmini)
👨💻👩💻|@PGTWEET
👍5🔥2😁1
Forwarded from CleverDevs (Mammad)
توی این پست میخوام یه فیچر باحال لاراول به اسم macro رو معرفی کنم
ممکنه بخواید برای یکی از کلاس های خود لاراول متدی اضافه کنید طبیعتا رفتن و اضافه کردنشش به سورس کد خود لاراول کار منطقی ای نیست تو این موقعیت میتونید از macro ها استفاده کنید
در واقع کلاس های لاراول یه متد macro دارن که دوتا آرگیومنت میگیره اولی اسم متدی که میخوایم اضافه کنیم و دومی یه تابع که بدنه متد رو تشکیل میده
حالا چطور ماکرو هارو تعریف کنیم و ازشون استفاده کنیم ؟ برای اینکار میتونید ماکرو رو توی بوت AppServiceProvider تعریف کنید یا نه برای اینکه پروژتون تمیز تر باشه یه پروایدر مخصوص برای ماکرو ها بسازید
برای مثال ما میخوایم یه متد even برای کلاس Collection بسازیم تا بیاد اعضای زوج کالکشن رو برگردونه برای اینکار توی متود boot میاییم و ماکرو رو به این صورت تعریف میکنیم :
حالا هرجا بخوایم میتویم کلاس Collection رو use کنیم و از متد even استفاده کنیم :
برای درک بهتر میتونید این مقاله از دیتی رو هم بخونید
https://ditty.ir/posts/laravel-macro/J6dqn
#Laravel #php
@CleverDevs - @CleverDevsGp
ممکنه بخواید برای یکی از کلاس های خود لاراول متدی اضافه کنید طبیعتا رفتن و اضافه کردنشش به سورس کد خود لاراول کار منطقی ای نیست تو این موقعیت میتونید از macro ها استفاده کنید
در واقع کلاس های لاراول یه متد macro دارن که دوتا آرگیومنت میگیره اولی اسم متدی که میخوایم اضافه کنیم و دومی یه تابع که بدنه متد رو تشکیل میده
حالا چطور ماکرو هارو تعریف کنیم و ازشون استفاده کنیم ؟ برای اینکار میتونید ماکرو رو توی بوت AppServiceProvider تعریف کنید یا نه برای اینکه پروژتون تمیز تر باشه یه پروایدر مخصوص برای ماکرو ها بسازید
برای مثال ما میخوایم یه متد even برای کلاس Collection بسازیم تا بیاد اعضای زوج کالکشن رو برگردونه برای اینکار توی متود boot میاییم و ماکرو رو به این صورت تعریف میکنیم :
use Illuminate\Support\Collection;
public function boot()
{
Collection::macro('even', function () {
return $this->filter(function ($value) {
return $value % 2 === 0;
});
});
}
حالا هرجا بخوایم میتویم کلاس Collection رو use کنیم و از متد even استفاده کنیم :
php
$numbers = collect([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);
$evenNumbers = $numbers->even();
// $evenNumbers will now contain [2, 4, 6, 8, 10]
برای درک بهتر میتونید این مقاله از دیتی رو هم بخونید
https://ditty.ir/posts/laravel-macro/J6dqn
#Laravel #php
@CleverDevs - @CleverDevsGp
🔥5👍3🤔1
در لاراول متود boot در کلاسهای مدل با چه منظوری استفاده میشه؟؟
Anonymous Quiz
37%
برای اجرای کدهای ابتدای هر درخواست HTTP به طور خودکار
8%
برای تعریف و مدیریت روابط بین مدلهامون
44%
برای ثبت و مدیریت Model Events و اعمال تغییرات قبل یا بعد از عملیاتهای CRUD
11%
برای مدیریت مایگریشن های دیتابیس و تغییرات ساختاریش
❤5👍5
Forwarded from Pishro App
تو دنیای برنامه نویسی یکسری قرارداد های نامگذاری وجود داره برای اینکه بتونیم کدهای خوانایی بزنیم و ازونجایی که در دنیای برنامه نویسی چیزهای زیادی مانند متغیرها، توابع، کلاس ها، متد ها و ... وجود داره توسعه دهنده ها تصمیم گرفتن تا از کیس تایپ های مختلفی استفاده کنند برای نامگذاری.
اکثر ( اگر نگیم همه ) زبان های برنامه نویسی هر کلمه رو یک چیز کاملا جدا و منحصر فرد در نظر میگیرند. مثال زیر رو برای نامگذاری یک متغیر در نظر بگیرید
Number of donuts = 34
سه کلمه ی (number, of, donuts) در یک زبان برنامه نویسی به صورت مستقل باهاشون رفتار میشه به علت اینکه کارکتر اسپیس بین انها قرار گرفته است. برای اینکه برنامتون به درستی کار بکنه باید کارکتر های اسپیس رو حذف بکنید و اونرو به یک استرینگ واحد به شیوه خاصی تبدیل کنید.
4 نوع تایپ کیس داریم که جلوتر بهتون توضیح میدم ولی در همین ابتدا بگم هیچ جواب قاطعی برای اینکه کدوم بهتره وجود نداره.
شما باید با توجه به بست پرکتیس های زبان پروژتون انتخاب کنید که قراره از کدوم تایپ کیس استفاده کنید.
—————————————————————-
1- snake_case
- تمام حروف باید کوچک باشند.
- هر کلمه با استفاده از _ به هم وصل میشود.
بیشتر در زبان پایتون این قابل مشاهده هست و در زبان هایی مثل جاوا، جاوااسکریپت کمتر دیده میشه.
● کاربرد ها :
- ساختن متغیر ها، نام متد ها
- اسامی جدول و ستون های یک دیتابیس
همچنین یک ورژن دیگه از snake case وجود داره که از حروف بزرگ استفاده میشه و معمولا در زبان های برنامه نویسی مواقعی استفاده میشه که نشان دهنده داده ای است که در طول برنامه تغییر نخواهد کرد.
—————————————————————-
2- kebab-case
- تمام حروف باید کوچک باشند.
- هر کلمه با استفاده از – به هم وصل میشود.
● کاربرد ها :
- در یو ار ال ها (URLs) مشاهده میشود.
—————————————————————-
3- camelCase
- حرف اول کلمه اول کوچک و حرف اول بقیه کلمات بزرگ است.
● کاربرد ها :
- در زبان های جاوا، جاوااسکریپت واسه ساخت متغیر ها و توابع و اسامی متد ها استفاده میشود
—————————————————————-
4- PascalCase
- حرف اول تمام کلمات بزرگ نوشته میشود.
● کاربرد ها :
- در نامگذاری کلاس ها در اکثر زبان ها کاربرد دارد.
—————————————————————-
منبع
👾 @pishroapp
اکثر ( اگر نگیم همه ) زبان های برنامه نویسی هر کلمه رو یک چیز کاملا جدا و منحصر فرد در نظر میگیرند. مثال زیر رو برای نامگذاری یک متغیر در نظر بگیرید
Number of donuts = 34
سه کلمه ی (number, of, donuts) در یک زبان برنامه نویسی به صورت مستقل باهاشون رفتار میشه به علت اینکه کارکتر اسپیس بین انها قرار گرفته است. برای اینکه برنامتون به درستی کار بکنه باید کارکتر های اسپیس رو حذف بکنید و اونرو به یک استرینگ واحد به شیوه خاصی تبدیل کنید.
4 نوع تایپ کیس داریم که جلوتر بهتون توضیح میدم ولی در همین ابتدا بگم هیچ جواب قاطعی برای اینکه کدوم بهتره وجود نداره.
شما باید با توجه به بست پرکتیس های زبان پروژتون انتخاب کنید که قراره از کدوم تایپ کیس استفاده کنید.
—————————————————————-
1- snake_case
- تمام حروف باید کوچک باشند.
- هر کلمه با استفاده از _ به هم وصل میشود.
بیشتر در زبان پایتون این قابل مشاهده هست و در زبان هایی مثل جاوا، جاوااسکریپت کمتر دیده میشه.
● کاربرد ها :
- ساختن متغیر ها، نام متد ها
- اسامی جدول و ستون های یک دیتابیس
همچنین یک ورژن دیگه از snake case وجود داره که از حروف بزرگ استفاده میشه و معمولا در زبان های برنامه نویسی مواقعی استفاده میشه که نشان دهنده داده ای است که در طول برنامه تغییر نخواهد کرد.
—————————————————————-
2- kebab-case
- تمام حروف باید کوچک باشند.
- هر کلمه با استفاده از – به هم وصل میشود.
● کاربرد ها :
- در یو ار ال ها (URLs) مشاهده میشود.
—————————————————————-
3- camelCase
- حرف اول کلمه اول کوچک و حرف اول بقیه کلمات بزرگ است.
● کاربرد ها :
- در زبان های جاوا، جاوااسکریپت واسه ساخت متغیر ها و توابع و اسامی متد ها استفاده میشود
—————————————————————-
4- PascalCase
- حرف اول تمام کلمات بزرگ نوشته میشود.
● کاربرد ها :
- در نامگذاری کلاس ها در اکثر زبان ها کاربرد دارد.
—————————————————————-
منبع
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
در لاراول، برای دریافت توکنهای Bearer از request header میتونین به جای اینکه خودتون عملیات parse کردن token رو دستی انجام بدین ، از متود ()bearerToken استفاده کنید.
در واقع این متود به شما این امکان را میده که Bearer توکن رو بهسادگی از request header دریافت و در عملیاتهای مدنظر ازش استفاده کنین.
تفاوت استفاده از این متود با حالته معمولی در تصویر زیر کاملا گویاست.
#لاراول
#Laravel
@GoldenCodeir
(به منبع و مثالش توجه کنید👇🏾)
https://x.com/OussamaMater/status/1823803584611541115?s=35
در واقع این متود به شما این امکان را میده که Bearer توکن رو بهسادگی از request header دریافت و در عملیاتهای مدنظر ازش استفاده کنین.
تفاوت استفاده از این متود با حالته معمولی در تصویر زیر کاملا گویاست.
#لاراول
#Laravel
@GoldenCodeir
(به منبع و مثالش توجه کنید👇🏾)
https://x.com/OussamaMater/status/1823803584611541115?s=35
X (formerly Twitter)
OussamaMater (@OussamaMater) on X
Laravel Tip💡: Get Bearer Tokens Elegantly
Building an API with Laravel? You can retrieve the bearer token using the "bearerToken" method on the request object without having to manually parse it 🚀
#laravel
Building an API with Laravel? You can retrieve the bearer token using the "bearerToken" method on the request object without having to manually parse it 🚀
#laravel
👍6🔥3
Forwarded from CleverDevs (Mammad)
-اصل The Newspaper Metaphor در کلین کد
این اصل میگه که به یه روزنامه ای که خوب نوشته شده فکر کنید . شما از بالا شروع میکنید و تا پایین میخونیدیش .با خوندن عنوان مقاله می فهمید که اون صفحه در باره چیه و با خوندن پاراگراف اول هم یه خلاصه ای از محتوای صفحه میگیرید.
سورس کد هم تقریبا یه چیز مشابه به اینه شما با خوندن اسم فایل (یا حالا توی oop اسم کلاس) هدف کلی اون سورس فایل رو می فهمید قسمت های بالای کد که میتونه شامل توابع مهم یا متغیر ها و پراپرتی های مهم باشه (مثل پارگراف اول مقاله توی روزنامه) تا کسی که کد رو میخونه خلاصه ای از سورس دستش بیاد.
یه روزنامه شامل بخش های زیادیه که معمولا کوچیکن و در کنار هم با همچین شرایطی قرار گرفتنن تا روزنامه قابل خوندن باشه فرض کنید کل روزنامه فقط یه داستان یا مقاله بلند بود که خوندنش رو سخت میکرد سورس کد هم باید یه شرایط مشابهی داشته باشه تا قالب بندی خوبی داشته باشه یعنی فایل های مختلف با اسم درست و حسابی در کنار هم بیان و بدنه اصلی سورس کد کل برنامه رو بسازن
#CleanCode
@CleverDevs - @CleverDevsGp
این اصل میگه که به یه روزنامه ای که خوب نوشته شده فکر کنید . شما از بالا شروع میکنید و تا پایین میخونیدیش .با خوندن عنوان مقاله می فهمید که اون صفحه در باره چیه و با خوندن پاراگراف اول هم یه خلاصه ای از محتوای صفحه میگیرید.
سورس کد هم تقریبا یه چیز مشابه به اینه شما با خوندن اسم فایل (یا حالا توی oop اسم کلاس) هدف کلی اون سورس فایل رو می فهمید قسمت های بالای کد که میتونه شامل توابع مهم یا متغیر ها و پراپرتی های مهم باشه (مثل پارگراف اول مقاله توی روزنامه) تا کسی که کد رو میخونه خلاصه ای از سورس دستش بیاد.
یه روزنامه شامل بخش های زیادیه که معمولا کوچیکن و در کنار هم با همچین شرایطی قرار گرفتنن تا روزنامه قابل خوندن باشه فرض کنید کل روزنامه فقط یه داستان یا مقاله بلند بود که خوندنش رو سخت میکرد سورس کد هم باید یه شرایط مشابهی داشته باشه تا قالب بندی خوبی داشته باشه یعنی فایل های مختلف با اسم درست و حسابی در کنار هم بیان و بدنه اصلی سورس کد کل برنامه رو بسازن
#CleanCode
@CleverDevs - @CleverDevsGp
👍6❤2
در لاراول میتونید ستونهایی ایجاد کنید که به طور خودکار از دادههای یه سری ستونه دیگه محاسبه بشن.
در واقع لاراول بهمون این امکان رو داده که این نوع ستونها رو بدون نیاز به نوشتن SQL پیچیده در مایگریشن ها تعریف کنیم.
در تصویر زیر از امکانات خود لاراول برای پیاده سازیه ستون هایی جهته عملیات های محاسباتی استفاده شده.
یعنی full_price نتیجه ی عملیات ضربه unit_price و quantity خواهد بود.
#لاراول
#Laravel
@GoldenCodeir
(به منبع و مثالش توجه کنید👇🏾)
https://x.com/OussamaMater/status/1824534160868016268?s=09
در واقع لاراول بهمون این امکان رو داده که این نوع ستونها رو بدون نیاز به نوشتن SQL پیچیده در مایگریشن ها تعریف کنیم.
در تصویر زیر از امکانات خود لاراول برای پیاده سازیه ستون هایی جهته عملیات های محاسباتی استفاده شده.
یعنی full_price نتیجه ی عملیات ضربه unit_price و quantity خواهد بود.
#لاراول
#Laravel
@GoldenCodeir
(به منبع و مثالش توجه کنید👇🏾)
https://x.com/OussamaMater/status/1824534160868016268?s=09
X (formerly Twitter)
OussamaMater (@OussamaMater) on X
Laravel Tip💡: Generated Columns
Did you know that Laravel can handle generated columns in migrations out of the box? No need to write raw SQL in your migration to create these columns 🚀
#laravel
Did you know that Laravel can handle generated columns in migrations out of the box? No need to write raw SQL in your migration to create these columns 🚀
#laravel
🔥6👍2
در لاراول برای اضافه کردن شرط "OR" به کوئری از کدوم متود استفاده میشه؟
Anonymous Quiz
3%
whereNotNull()
8%
orWhereIn()
8%
Where()
82%
orWhere()
❤2👍1
Forwarded from CleverDevs (Mammad)
-اصل Method Names در کلین کد
این اصل میگه که نام متد ها باید فعل باشه مثل postPayment , deletePage , save و غیره و غیره
شما میتونید از get , set و is تو اسم متد هاتون استفاده کنید (اینا تو جاوا استاندارد هستن ولی خب تو بقیه زبون ها هم خوبه که استفاده کنید)
کد بالا مثال دقیقی از کلمات set ,get,is هستش که برای گرفتن از get برای ثبت کردن از set و برای چک کردن از is استفاده کرده
#CleanCode
@CleverDevs - @CleverDevsGp
این اصل میگه که نام متد ها باید فعل باشه مثل postPayment , deletePage , save و غیره و غیره
شما میتونید از get , set و is تو اسم متد هاتون استفاده کنید (اینا تو جاوا استاندارد هستن ولی خب تو بقیه زبون ها هم خوبه که استفاده کنید)
string name = employee.getName();
customer.setName("mike");
if (paycheck.isPosted())...
کد بالا مثال دقیقی از کلمات set ,get,is هستش که برای گرفتن از get برای ثبت کردن از set و برای چک کردن از is استفاده کرده
#CleanCode
@CleverDevs - @CleverDevsGp
👍8❤2
وقتی از ریلیشن های belongsTo یا hasOne استفاده میکنیم ممکنه بعضی از دیتاها وجود نداشته باشن و در نتیجه با null مواجه شیم.
اینجا مدلهای پیشفرض میتونه ازین مشکل جلوگیری کنه و در هر شرایطی یک شی از مدل برگردونه، حتی خالی پس میتونیم مطمئن شیم که با null قرار نیست مواجه شیم.
در مثال زیر با متود ()withDefault مشخص شده که در صورت null بودنه دیتا باید 'Guest Author' رو برگردونه.
#laravel
@GoldenCodeir
(به منبع و مثالش توجه کنید👇🏾)
https://x.com/OussamaMater/status/1825632694342136191?s=19
اینجا مدلهای پیشفرض میتونه ازین مشکل جلوگیری کنه و در هر شرایطی یک شی از مدل برگردونه، حتی خالی پس میتونیم مطمئن شیم که با null قرار نیست مواجه شیم.
در مثال زیر با متود ()withDefault مشخص شده که در صورت null بودنه دیتا باید 'Guest Author' رو برگردونه.
#laravel
@GoldenCodeir
(به منبع و مثالش توجه کنید👇🏾)
https://x.com/OussamaMater/status/1825632694342136191?s=19
X (formerly Twitter)
OussamaMater (@OussamaMater) on X
Laravel Tip 💡: Use Default Models
When working with "hasOne" or "belongsTo" relationships, we often check whether they are nullable before accessing their properties. In such cases, you can use default models and be sure you will never get null values 🚀…
When working with "hasOne" or "belongsTo" relationships, we often check whether they are nullable before accessing their properties. In such cases, you can use default models and be sure you will never get null values 🚀…
❤6🔥1
در لاراول برای تعیین نام جدول pivot به صورت customize شده در رابطه "many to many" از کدوم متود استفاده میشه؟
Anonymous Quiz
27%
PivotTable()
10%
Table()
52%
WithPivot()
11%
Using()
👍5❤3
Forwarded from CleverDevs (Mahdi)
Good 🆚 Bad Refactor
وقتی یه پروژه رو میخوایم ریفکتور کنیم چیکارا نکنیم که وضع بدتر شه؟ (این پارت یکه.)
1. Don't Change The Base
بیس کد فعلی رو تا حد امکان تغییر ندید، صرفا شرایط فعلی رو بهتر کنید. مثال:
قبل:
function processUsers(users: User[]) {
const result = [];
for (let i = 0; i < users.length; i++) {
if (users[i].age >= 18) {
const formattedUser = {
name: users[i].name.toUpperCase(),
age: users[i].age,
isAdult: true
};
result.push(formattedUser);
}
}
return result;
}بعد از یه ریفکتور بد:
import * as R from 'ramda';
const processUsers = R.pipe(
R.filter(R.propSatisfies(R.gte(R.__, 18), 'age')),
R.map(R.applySpec({
name: R.pipe(R.prop('name'), R.toUpper),
age: R.prop('age'),
isAdult: R.always(true)
}))
);
بعد از یه ریفکتور خوب:
function processUsers(users: User[]): FormattedUser[] {
return users
.filter(user => user.age >= 18)
.map(user => ({
name: user.name.toUpperCase(),
age: user.age,
isAdult: true
}));
}توی ریفکتور اول بیس کد کلا تغییر کرد و از یه پکیج جدید استفاده شد و احتمال زیاد بقیه کسایی که تو پروژه هستن باهاش آشنایی ندارن و کار برای همه سخت میشه.
#CleanCode SRC
@CleverDevs @CleverDevsGp
👍6🔥1
در لاراول متود is برای مقایسه دو مدل استفاده میشه. این متود بررسی میکنه که آیا دو شی مدل دارای همون ID و از همون جدول در دیتابیس هستن یا نه.
یعنی با استفاده ازین متود میتونید تشخیص بدید که آیا دو مدل دقیقا یکی هستن یا خیر.
کاربردش؟
مثلا زمانی که میخوایم بررسی کنیم که آیا کاربری که وارد شده، با کاربر خاصی که دسترسی ادمین داره، یکی هست یا نه میتونیم ازین متود استفاده کنیم.
#Laravel
@GoldenCodeir
(در منبع چگونگیه استفادش ذکر شده👇🏾)
https://x.com/MilwadDev/status/1826975907027849647?t=zrwzckb_Q5-nwjYITz0doA&s=35
یعنی با استفاده ازین متود میتونید تشخیص بدید که آیا دو مدل دقیقا یکی هستن یا خیر.
کاربردش؟
مثلا زمانی که میخوایم بررسی کنیم که آیا کاربری که وارد شده، با کاربر خاصی که دسترسی ادمین داره، یکی هست یا نه میتونیم ازین متود استفاده کنیم.
#Laravel
@GoldenCodeir
(در منبع چگونگیه استفادش ذکر شده👇🏾)
https://x.com/MilwadDev/status/1826975907027849647?t=zrwzckb_Q5-nwjYITz0doA&s=35
X (formerly Twitter)
Milwad Khosravi ⚡️ (@MilwadDev) on X
In Laravel, you can use the is method to determine if two models have the same ID and belong to the same table✅
Also, we have the isNot method but I will explain it in separate posts👍
#laravel #php #eloquent #model #milwad
Also, we have the isNot method but I will explain it in separate posts👍
#laravel #php #eloquent #model #milwad
👍4❤1🔥1🤔1
برای تنظیم وضعیت "checked" یک check box در لاراول به صورت شرطی میتونید از یه دستور Blade با نام checked@ استفاده کنید.
با همین دستور به راحتی میتونید مشخص کنید که بر اساس یک شرط خاص ،آیا check box باید تیک خورده باشه یا نه.
فایدش چیه؟
کدمون تمیز تر میشه، دیگه نیاز به دستورات شرطیه اضافی نیست.
(طرز کارش هم خیلی راحته و در تصویر موجوده)
#laravel
@GoldenCodeir
(به منبع و مثالش دقت کنین👇🏾)
https://x.com/OussamaMater/status/1827421279986585742?s=35
با همین دستور به راحتی میتونید مشخص کنید که بر اساس یک شرط خاص ،آیا check box باید تیک خورده باشه یا نه.
فایدش چیه؟
کدمون تمیز تر میشه، دیگه نیاز به دستورات شرطیه اضافی نیست.
(طرز کارش هم خیلی راحته و در تصویر موجوده)
#laravel
@GoldenCodeir
(به منبع و مثالش دقت کنین👇🏾)
https://x.com/OussamaMater/status/1827421279986585742?s=35
👍7🔥1
Forwarded from CleverDevs (Mahdi)
Bye Bye try-catch blocks!
مثل اینکه یه آپدیت برای Js قراره بیاد و ارور هندلینگ رو متحول کنه.
الان، برای ارور هندلینگ از try-catch استفاده میکنیم، ولی توی این آپدیت قراره
Safe Assignment Operator
اضافه شه، که خیلی سینتکس تمیز تری داره:
async function getData() {
const [error, response] ?= await fetch("https://api.example.com/data");
if (error) return handleError(error);
return response;
}چندتا مزیتش:
👈 نستینگ و تودرتو بودن کدها کمتر میشه.
👈 ایپیآی های مختلف، ممکنه ارور هندلینگ متفاوتی داشته باشن، و با این روش دیگه نیاز نیست توی بلاک catch شرطهای مختلف بذاریم.
👈 میتونیم با استفاده از Symbol.result ارور
هندلینگ سفارشی داشته باشیم، اینجوری:
function example() {
return {
[Symbol.result]() {
return [new Error("Error message"), null];
},
};
}
const [error, result] ?= example();// البته فعلا چیزی برای جایگزینی بلاک finally گفته نشده که میتونه یکی از معایبش باشه.
#Js #Es Source
@CleverDevs @CleverDevsGp
👍7
در لاراول میتونید دیسکهای ذخیرهسازی custome شده رو بدون نیاز به تغییر دادن فایل config/filesystems ایجاد کنید.
کاربردش؟
این قابلیت برای مواردی که ممکنه مسیر ذخیرهسازی تغییر کنه یا به صورت داینامیک تعیین میشه میتونه خیلی کار راه انداز باشه.
#Laravel
@GoldenCodeir
(به منبع و مثالش دقت کنین👇🏾)
https://x.com/laravelbackpack/status/1828394539867930675?t=uPya--8IeMfyqPo3nHWD2A&s=35
کاربردش؟
این قابلیت برای مواردی که ممکنه مسیر ذخیرهسازی تغییر کنه یا به صورت داینامیک تعیین میشه میتونه خیلی کار راه انداز باشه.
#Laravel
@GoldenCodeir
(به منبع و مثالش دقت کنین👇🏾)
https://x.com/laravelbackpack/status/1828394539867930675?t=uPya--8IeMfyqPo3nHWD2A&s=35
X (formerly Twitter)
Backpack for Laravel (@laravelbackpack) on X
#Laravel Tip
You can create custom disks at runtime without the need to have the config in your config/filesystems file.
This can be handy to manage files in custom paths.
You can create custom disks at runtime without the need to have the config in your config/filesystems file.
This can be handy to manage files in custom paths.
👍10🔥1