Golden Code – Telegram
Golden Code
738 subscribers
53 photos
248 links
نکات laravel, php و...
Download Telegram
🔸 جلسه هشتم نکات مدیریت فروشگاه اینترنتی

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

🆔 @daraweb_channel
🤡1
♨️ آیا کار کردن با webpack براتون سخته؟ راه حل مشکل شما Laravel-Mix اینجاست
ما توی پست قبلی فهمیدیم که Webpack چیه و به چه دردی میخوره ولی یکی از معایب وب‌پک کانفیگ نسبتا پیچیده و سختی کار با اون هست که شاید افراد مبتدی رو سردرگم و از خودش دور کنه.
برای کسایی که نمیخوان با کانفیگ پیچیده webpack برای پروژه بزرگ و کوچیکشون دست و پنجه نرم کنند Laravel-mix میتونه گزینه عالی باشه
این ابزار خودش از webpack استفاده میکنه ولی کانفیگ هاشو توی پس زمینه انجام داده و یه محیط و کانفیگ خیلی خیلی ساده و در عین حال کاربردی داره.
توصیه میکنم روی یکی از پروژه های آینده تون امتحانش کنید...👌

🌐 https://laravel-mix.com

#Tools

Channel | Group | YouTube
👍21🤡1
Forwarded from کداکسپلور | CodeExplore (CodeExplore)
🔷 اصول برنامه نویسی SOLID

1. اصل مسئولیت واحد (SRP): هر کلاس فقط باید یک کار انجام بده. مثلاً اگه یه کلاسی داریم برای مدیریت کاربرا، فقط باید کارای مربوط به کاربرا رو انجام بده، نه اینکه بره سراغ مدیریت سفارشات یا محصولات.

2. اصل باز – بسته (OCP): کلاس‌ها باید طوری طراحی بشن که بشه روشون اضافه کرد، ولی نباید نیاز باشه که خودشون رو عوض کنیم.

3. اصل جایگزینی لیسکوف (LSP): اگه یه کلاسی از یه کلاس دیگه ارث بری کرده، باید بتونیم اون کلاس رو جایگزین کلاس اصلی کنیم بدون اینکه مشکلی پیش بیاد.

4. اصل جداسازی رابط (ISP): هر کلاس فقط باید به اون قسمت‌هایی از یه رابط که استفاده می‌کنه وابسته باشه، نه به تمام رابط.

5. اصل وارونگی وابستگی (DIP): کلاس‌ها باید به ایده‌ها وابسته باشن، نه به جزئیات. یعنی باید به چیزایی که می‌خوان انجام بدن فکر کنن، نه اینکه چطوری اون کارو انجام می‌دن.

این اصول کمک می‌کنن که کدی بنویسیم که بتونیم راحت‌تر مدیریتش کنیم، بفهمیمش و تستش کنیم.

☕️ @CodeExplore
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥2🤡1
↩️ وبسایت‌هایی که هاستینگ پروژه رو کاملاً رایگان انجام میدن :

Netlify
Firebase
AWS
Heroku
Github Pages
Vercel
Surge
Render
Gitlab Pages
Stormkit


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

علاوه بر اون اگه برنامه نویسی و کارفرما می‌خواد پیشرفت توسعه‌ی سایت رو ببینه، می‌تونید پروژه رو روی این هاست‌ها دیپلوی کنید و براش بفرستین.


🆔 @ghaleb_fre

🆔 @cht_romm
👍42🔥1🤡1
اگه تعداد زیادی singletone در پروژه دارین‌، میتونین حتی اونارو به صورت آرايه singletones$ در کلاس service provider اضافه کنین.

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

📌 برخی از مزایای این نوع ساختار:
مدیریت و پیکربندی و اعمال تغییرات بصورت مرکزی انجام میشه، پس مدیریت پروژه رو ساده میکنه.

✔️ تاثیر مثبت بر کلین کد و قابل فهم تر شدن کد.

✔️ در مبحث تست نویسی هم کارو راحت تر میکنه واسمون وقتی در یه کلاس تعریف میشن.

✔️ بر performance هم تاثیر مثبتش رو میزاره. چجوری ؟
در حالته عادی وقتی هر بار که شما یه سرویس رو میخواین استفاده کنین یه نمونه جدید ازش ساخته میشه اما در همچین ساختاری خیر! 🪴🌴
@GoldenCodeir
(به منبع و مثالش توجه کنین👇🏾)
https://x.com/_newtonjob/status/1787742606476140757?t=M3Op6_XeRtCrp18ebigqug&s=35
🔥4👍3🤡21
💎 استاتوس کد هایی که هر برنامه نویس باید بداند

این استاتوس کد ها خیلی کاربردین حتماً پیشنهاد میکنم ذخیره داشته باشید (لزوماً نیازی به حفظ نیست) تو خیلی جا ها مخصوصاً تو API ها و همچنین ارور هندلینگ ها مورد استفاده تان قرار میگیره.

انتشار یادتون نره

Channel | Group | YouTube
3👍2🔥2
در لاراول میتونیم برای شرایطی که یک job از طریق صف اجرا شده و با شکست مواجه شده، میتونیم با استفاده از تعریف متود failed در job عملیات های مربوط به مدیریته خطا و cleanups رو انجام بدیم.

📌 یه سر به طرز کارش هم بزنیم :

میتونیم داخل این متود تعیین کنیم چه رویدادی رخ بده در صورت fail شدن ، مثلا ارسال تیکت به بخش فنی رخ بده یا ثبت اطلاعات در لاگ ، تغییر مجدد status هایی که تغییر کردن و ...🪴🌴
#laravel

@GoldenCodeir
(به منبع و مثالش توجه کنید👇🏾)
https://twitter.com/OussamaMater/status/1788299342299763113?s=19
👌41
Forwarded from کداکسپلور | CodeExplore (𔓙)
تا حالا حتما اسم GraphQL و شنیدید ولی دقیقا چه کاربردی داره؟🤔

خب GraphQL یک زبان کوئری اوپن‌سورس است که از سوی فیسبوک توسعه یافته است. این زبان روشی کارآمد برای طراحی، ایجاد و مصرف API-ها در اختیار ما قرار می‌دهد و GraphQL اساساً یک جایگزین برای REST محسوب می‌شود.

برخی از ویژگی های GraphQl🔥

شما دقیقا داده هایی که نیاز دارید و میتونید به دست بیارید. دیگر نیازی به دریافت اطلاعات بیش از حد که در REST مرسوم است نداریم.


زبان GraphQL یک نقطه انتهایی منفرد در اختیار ما قرار می‌دهد و دیگر نیازی به نسخه 2 یا نسخه 3 برای API یکسان وجود ندارد.


زبان GraphQL دارای «نوع‌بندی قوی» (strongly-typed) و با استفاده از آن می‌توان یک کوئری معتبر درون سیستم نوع GraphQL پیش از اجرا ساخت. GraphQL به ساخت API-های قدرتمند کمک می‌کند.


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


#frontend #backend
☕️ @CodeExplore
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍2🔥2
با استفاده از کلاس Benchmark در لاراول میتونیم زمان اجرای کد های هر بخش رو مشاهده کنیم.
با این ویژگی میتونیم زمان شروع و پایان یه عملیات مدنظرمون رو ثبت کنیم و مدت زمان اجراش رو مورد بررسی قرار بدیم.

قابلیته مفیدی به حساب میاد !
میتونه بهمون برای بهبود علمکرد پروژه (بهبود کد های دارای ضعف و...) کمک کنه.
در کل داشتن آمار و ارقام از چگونگیه عملکرد پروژه میتونه بر روند تصميم‌گيری برنامه نویس تاثیر مثبتی بزاره... 🪴🌴
@GoldenCodeir
#Laravel
(به منبع و مثالش دقت کنید👇🏾)
https://x.com/laravelbackpack/status/1788169492016906319?s=09
3🔥2👍1👌1
خب بریم یه نگاه به چنتا از ویژگی هایی که blade در اخیتارمون‌ قرار داده و شاید باهاشون اشنا نباشین بندازیم .
(این آپشن ها میتونن در مدیریت اینپوت ها و طراحیشون مطابق با نیازهامون نقش موثری داشته باشن) :
✔️checked
✔️selected
✔️disabled
✔️readonly
✔️required
بریم یه مثال از readonly بزنیم:
یه جاهایی ممکنه نیاز باشه یکی از اطلاعات فرم ،مطابق با خواسته ی ما پر شه و کاربر حق تغییرش رو نداشته باشه.

مثال برای checked:
تعیین مقدار پیشفرض برای یک چک باکس.
( در جایی مثل "تایید شرایط")

📌 نکته امنیتی: برای چیزی مثل required همونطور که مستحضرید نباید صرفا بسنده کرد به کد html و باید سمت سرور هم اعتبار سنجی بشن). 🪴🌴
@GoldenCodeir
#Laravel
(به منبع و مثالش توجه کنین👇🏾)
https://x.com/PovilasKorop/status/1788844182234107945?t=-uMIsLU5NzwyAdXi5sW2Sw&s=35
👍32🔥1
Forwarded from کداکسپلور | CodeExplore (𝙰𝚖𝚒𝚗)
🐳اصلا #Docker چی هست و چه کاربردی داره؟

🔹اصلی ترین هدف داکر ساخت و ایجاد یک فضای ایزوله برای اپلیکیشن هایی هست که داریم؛ تا بتونیم به صورت مستقل از هم اجراشون کنیم و برای هر اپلیکیشن تمام وابستگی هاشو (dependencies) کنارش نصب کنیم...

◽️◽️مثال: شما یک وب سایت طراحی کردی، وقتی می بری روی سرور، باید php رو نصب کنی، mysql یا sqlserver یا هر دیتابیس دیگه ای رو برای پروژه نصب کنی، کلی افزونه نیاز هست که باید نصب کنی و ... !

🔹در صورتی که میتونی پروژت رو تویه یک container در بستر داکر docker قرار بدی و از اون موقع به بعد اون container رو هرجایی که می خوای ببری و دیگه بدون نصب هیچ چیزی اجراش کنی.

🔹🔹علاوه بر اینها لوگوی داکر از بین 84 نمونه طراحی شده توسط ریکی آسامانیس طراح گرافیک از اندونزی انتخاب شد.

نهنگی که حامل بسته‌هاییست که نماد 4 ارزش اصلی شرکت داکر است: expedition, automation, encapsulation,  simplification

☕️ @CodeExplore
👍3❤‍🔥11
بعضی اوقات در پروژه نیازه بررسی شه که آیا رکوردهای مدنظرمون در دیتابیس وجود دارن یا نه تا در صورت عدم وجود، ایجاد بشه.
خب واسه پیاده سازیه همچین چیزی متودای مختلفی در اختیارمون قرار داده شده که شاید بهترینش همین ()doesntExist باشه✔️

کاربردش؟؟
میایم میگیم در فرایند ثبت نام اگر کاربر alix در دیتابیس موجود نبود برو و alix رو با ایمیل، و سایر اطلاعاتی که گفته ایجاد کن.

مزایا؟
✔️ استفاده کمتر از شرط نویسی های پیچیده.
✔️ تاثیر مثبت بر کلین کد و خوانایی کد.
(در تصویر زیر تفاوتش با روشای دیگه بررسی شده)🪴🌴
@GoldenCodeir
#Laravel
#لاراول
#نکات_لاراول
#اموزشی_لاراول
(به منبع و مثالش دقت کنین👇🏾)
https://x.com/OussamaMater/status/1790481645125918836?t=wUUKB89hWJZZHIVKQD6YDQ&s=35
❤‍🔥3👍1🔥1
Forwarded from کداکسپلور | CodeExplore (AmirMasoud)
♨️ PWA یا Progressive Web Application چیست؟

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

تصور کن که یه وب‌سایت داری که بدونی نیاز به دانلود و نصب جداگانه، تو مرورگرهای مختلف و بر روی انواع دستگاه‌ها (موبایل، تبلت یا رایانه)، مثل یک اپلیکیشن عادی رفتار می‌کنه. اینجوری کاربرها می‌تونن بدون درگیری با نصب و بروزرسانی‌های پیچیده، از دسترسی به ویژگی‌ها و محتوای به‌روز شده بهره‌مند بشن.

💢چند تا از قابلیت ها و ویژگی های مهم PWA

▪️قابلیت کارآیی آفلاین: PWA می‌تونه اطلاعات را در حالت آفلاین نیز نمایش بده و کاربران بتونن بدون دسترسی به اینترنت از ویژگی‌ها و محتوا استفاده کنن.

▪️پوش اپلیکیشن: می‌تونه به کاربران پیام‌ها و اطلاعیه‌ها فعالیت خودکار (Push) بفرسته، حتی زمانی که اپلیکیشن بسته است.

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

▪️بهبود کارآیی: با بهینه‌سازی‌های حافظه و عملکرد، می‌تونه تجربه کاربری بهتری نسبت به وب‌سایت‌های سنتی ارائه بده.

#پست_پیشنهادی
#PWA
☕️ @CodeExplore
4👍1
بیشتره مواقع در فرایند تست نویسی ای که نیازه بررسی کنیم آیا رکوردمون از دیتابیس حذف میشه یا نه میایم از ()assertDatabaseMissing استفاده میکنیم تا ببینیم این یوزری که مشخص کردیم رو میتونه حذف کنه یا خیر.

این یه روش رایج هستش اما میتونیم بجاش از هلپر ()assertModelMissing استفاده کنیم که باعث بهینه تر شدن فرایند تست نویسی هم میشه. 🪴🌴

از جمله مزایای استفاده ازین هلپر :

✔️ قابل فهم تر شدن (حتی از نامش هم مشخصه که میخواد چیکار کنه)
✔️ کوتاه شدن کد (در تصویر قابل رویته)
✔️ تاثیر واضح و قابل رویت بر کلین کد
#Laravel
@GoldenCodeir

(به منبع و مثالش دقت کنین 👇🏾)
https://twitter.com/OussamaMater/status/1791200027156652060?s=19
🔥31
Forwarded from CodeCrafters (mahyar)
خب در ادامه پست های استفاده از ایندکس در جئداول دیتابیس قرار در این پست با Multi-Column Indexes اشنا بشیم/

ایندکس‌های چندستونی (Multi-Column Indexes) برای بهبود کارایی جستجو در جداولی که به طور مکرر از چندین ستون در کوئری‌های خود استفاده می‌کنند، بسیار مفید هستند. این نوع ایندکس‌ها بر روی بیش از یک ستون از جدول ایجاد می‌شوند و می‌توانند به طور همزمان ترتیب چند ستون را برای بهبود سرعت جستجو حفظ کنند.

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

2. بهبود کارایی:
   - ایندکس‌های چندستونی می‌توانند کارایی کوئری‌هایی را که از این ستون‌ها در شرط WHERE، ORDER BY، و GROUP BY استفاده می‌کنند، بهبود بخشند.
   - در کوئری‌هایی که فقط از ستون اول ایندکس استفاده می‌کنند نیز می‌تواند بهبود کارایی ایجاد کند.

3. محدودیت‌ها:
   - ایندکس‌های چندستونی می‌توانند فضای بیشتری را نسبت به ایندکس‌های تک‌ستونی اشغال کنند.
   - به‌روزرسانی‌های جداولی که دارای ایندکس‌های چندستونی هستند می‌توانند زمان‌برتر باشند به دلیل نیاز به بروزرسانی ساختار ایندکس.

مثال‌ها و کد

فرض کنید یک جدول به نام employees داریم که شامل ستون‌های first_name، last_name، و department_id است و می‌خواهیم یک ایندکس چندستونی بر روی ستون‌های last_name و department_id ایجاد کنیم.

ایجاد ایندکس چندستونی
در SQL، ایجاد یک ایندکس چندستونی به شکل زیر است:

CREATE INDEX idx_lastname_department ON employees (last_name, department_id);


این ایندکس ابتدا بر اساس last_name و سپس بر اساس department_id مرتب می‌شود.

استفاده از ایندکس چندستونی در کوئری‌ها

مثال 1: جستجو بر اساس هر دو ستون
SELECT * FROM employees WHERE last_name = 'Doe' AND department_id = 5;

در این کوئری، هر دو ستون last_name و department_id استفاده شده‌اند، بنابراین ایندکس idx_lastname_department به طور کامل بهره‌برداری می‌شود و کارایی جستجو افزایش می‌یابد.

مثال 2: جستجو بر اساس ستون اول
SELECT * FROM employees WHERE last_name = 'Doe';

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

مثال 3: جستجو بر اساس ستون دوم
SELECT * FROM employees WHERE department_id = 5;

در این کوئری، تنها ستون department_id استفاده شده است که ستون دوم ایندکس است. این کوئری نمی‌تواند از ایندکس idx_lastname_department بهره‌برداری کند و به احتمال زیاد از اسکن کامل جدول استفاده خواهد کرد.

به‌روزرسانی و حذف ایندکس
برای حذف یک ایندکس چندستونی:

DROP INDEX idx_lastname_department ON employees;


نکات مهم
1. انتخاب ستون‌ها: ستون‌هایی را انتخاب کنید که در بیشتر کوئری‌ها استفاده می‌شوند و ترتیب آنها را بر اساس بیشترین تاثیر بر کارایی جستجو تعیین کنید.
2. نگهداری و به‌روزرسانی: با افزایش تعداد ایندکس‌ها، عملیات نوشتن (INSERT, UPDATE, DELETE) کندتر می‌شود. به همین دلیل، باید توازن مناسبی بین تعداد ایندکس‌ها و نیازهای جستجو برقرار کرد.
3. تحلیل کارایی: استفاده از ابزارهای تحلیل کارایی (مانند EXPLAIN در SQL) برای بررسی تاثیر ایندکس‌ها بر کوئری‌ها مفید است.

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


#database
#postgresql
👍3
این طراحیه route که مشاهده میکنین برای یه سری از مواقع میتونه باعث زیباتر شدن کدتون بشه :)

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

(البته در نظر داشته باشید که باید کنترلر هاشون مشترک باشه)
@GoldenCodeir
#Laravel
(به منبع و مثالش دقت کنین👇🏾)
https://x.com/PovilasKorop/status/1792854101908136134?t=NB4uthliq4x3FxpuaX91vg&s=35
11👍2
Golden Code
در لاراول چجوری میشه ستون number رو با استفاده از مایگریشن به جدول users اضافه کنیم؟
پس از اجرای کد زیر، کاربر چه وضعیتی را مشاهده خواهد کرد؟
php artisan down
Anonymous Quiz
26%
501
11%
502
50%
503
13%
419
👍32🔥2
"همونطور که میدونید در FormRequest میتونیم قوانین مدنظرمون رو در متود rules تعریف کنیم...

اما اگه بخواهید پیام خطای پیش فرض اعتبارسنجی رو برای یک فیلد خاص و یک قانون اعتبار سنجیه خاص تغییر بدین، کافیه متود ()messages رو به FormRequest اضافه کنید.

📌 بریم یه مثال بزنیم :
به تصویر توجه کنین، میخوایم پیام خطای مربوط به اعتبار سنجیه فیلد name برای قانون required رو تغییر بدیم، به راحتی میتونیم با استفاده از متود messages این کارو انجام بدیم.

خروجی :
اگر name خالی بمونه خطایی که تعریف کردیم نمایش داده میشه."
@GoldenCodeir
#Laravel
#لاراول
(به منبع و مثالش دقت کنید👇🏾)
https://x.com/PovilasKorop/status/1793941262698971531?s=35
6👍2❤‍🔥1