بهینه سازی تصاویر یکی از بخش های مهم هر وبسایت است که مورد توجه زیادی است اخیرا طی بررسی پروژه های تیم گوگل به سایت https://squoosh.app رسیدم که این کار را به خوبی انجام میدهد .
شما میتوانید تصاویر را آپلود کنید و سپس آنها را به فشرده ترین فرمت webp تبدیل کنید.
همانطور که در لاراول میتوان migration ها را فقط یکبار اجرا کرد، ممکن است نیازی پیش آید که یک کلاس هم مانند ماگریشن یکبار اجرا شود .
مثلا چیزی مانند اجرای یک کلاس برای این منظور از پکیج laravel-one-time-operations استفاده میکنیم . این پکیج ساختاری را به ما میدهد که میتوانیم عملیات های مورد نظر را فقط یکبار در طول اجرای و نصب و راه اندازی پروژه فراخوانی و اجرا کنیم .
ابتدا در serivceProvider درون متد register به صورت زیر کلاس مورد نظر را تعریف میکنیم مزیت استفاده از singleton این است که فقط برای یکبار new میشود و هر جا میتوان از آن خیلی ساده استفاده کرد. این امر موجب بهینه سازی مصرف Ram و ارتقا سرعت نیز میگردد
$this->app->singleton(Hasher::class, function () {
return new Hasher();
});
و سپس بدین شکل از آن استفاده میکنم
\Hasher::generate()
به طور مثال در کلاس Hasher
<?php
namespace Gallib\ShortUrl;
class Hasher
{
/**
* @var int
*/
protected $length = 6;
public function setLength(int $length): self
{
$this->length = $length;
return $this;
}
/**
* Generate a random hash.
*
* @return string
*/
public function generate(): string
{
$characters = str_repeat('abcdefghijklmnoKLMNOPQRSTUVWXYZ0123456789', $this->length);
return substr(str_shuffle($characters), 0, $this->length);
}
}
برنامه نویسان برای اینکه از صحت کارکرد ارسال ایمیل مطمن شوند و طراحی قالب ایمیل ها را در محیط تست چک کنند نیاز به یک سرویس ایمیل می باشد که یکی از بهترین آنها MailHog است.
در این روش با کمک داکر میتوانید به صورت نامحدود ایمیل های تستی ارسال کنید و هیچ وابستگی به سایت و سرویس دهنده ای نخواهید داشت.
در ابتدا docker را نصب کنید . و سپس یک فایل با عنوان docker-compose.yml را ایجاد نمایید و دستور زیر را در وارد میکنیم
در روش فوق به ازای هر لوپ یکبار به جدول owner ارجاع میکند یعنی اگر ۱۰۰ تا رکورد باشد ۱۰۰ بار لوپ اجرا میشود و ۱۰۱ بار به دیتابیس کانکت میشوید تا مقادیر رابطه hasOne در sql اجرا میشود .
در روش فوق به نوعی به جدول owner join زده شده و در هر لوپ از مقادیری که در select اول داشته ایم استفاده میشود در واقع ۱۰۰ بار لوپ اجرا میشود و یکبار هم به دیتابیس متصل میشود.
در این آموزش شما را با یک روش بسیار ساده جهت دور زدن تحریم های داکر و نصب داکر در سرور ایران آشنا خواهم کرد. این آموزش دو روش نصب و اجرا دارد که روش اول روش پیشنهاد بوده که نیازی به تغییر DNS و اجرای تحریم شکن روی سرور ندارد بلکه با نصب داکر از طریق snap در ubuntu به خوبی میتوانید هسته داکر را روی اوبونتو نصب و بدون مشکل آپدیت کنید.
همچنین برای نصب image ها از مدخل هایی که در ایران برای دور زدن تحریم های داکر ایجاد شده اند استفاده میکنید که استفاده از این مدخل ها هم هیچ نیازی به نصب تحریم شکن و تغییر DNS و پرداخت هزینه ای نیست.
مراحل اجرا
۱- نصب داکر
۲- نصب ایمیج هایی که در پروژه خود لازم دارید
مرحله اول توصیه میکنم از دستور ساده نصب داکر در بسته snap در ubuntu استفاده کنید و صرفا با یک خط کد زیر انجام میشود. و نیازی به هیچ ابزار خاص دیگری نیست…
sudo snap install docker
سپس برای اینکه بتوانید همه image های داکر را بدون تحریم دریافت کنید دستور زیر را اضافه کنید که از مخزن آروان استفاده کنید یعنی آروان میرود image مورد نظر شما را دریافت میکند و شما از آروان تحویل میگیرد نه از سایت تحریم شده
حال برای اینکه مطمن شوید کار به درستی انجام شده دستور زیر را برای نصب container hello world اجرا کنید
sudo docker run hello-world
همچنین شما میتوانید از مخزن docker.ir هم برای دانلود image های داکر نیز استفاده کنید . کافی است به جای دستور استفاده از مخزن آروان دستور زیر را وارد کنید
روش دوم نصب داکر با استفاده از راهنمای سایت اصلی (نیاز به شکن و تحریم شکن صرفا در مرحله نصب خود نرم افزار داکر را دارد)
فعال سازی شکن ، در این مرحله شما وارد بخش مدیریت dns میشوید به پایین صفحه بروید و معمولا ۳ خط کد به صورت کامنت نشده است که آنها را کامنت کنید چرا که بعد از پایین مرحله دوم باید آنها را مجدد از کامنت خارج کنید که همیشه سرور شما با dns های شکن نباشد. (صرفا موقع به نصب و روزرسانی شکن فعال شود )
sudo nano /etc/resolv.conf
DNS های شکن را مطابق زیر در فایل فوق وارد کنید. و با CTRL+X و زدن Y تنظیمات را ذخیره میکنیم.
nameserver 178.22.122.100
nameserver 185.51.200.2
خوب الان میشه دستورات نصب داکر را اجرا کرد . با دستور زیر وارد root شوید
تا اینجا اگر خوب پیش رفته باشید با زدن دستور docker -v باید نسخه نصب شده را نمایش دهد . کار نصب انجام شد . حالا میتوانید dns های شکن را بردارید و شروع به فعال سازی docker.ir کنید که بتوانید image ها را با سرعت بالا دانلود کنید.
استفاده از مخزن آروان (پیشنهادی)
با توجه توضیحات درج شده درسایت آروان عینا مطابق روی قبلی است ولی آدرس سرور تغییر میکند
برای اینکه مطمن شویم که نصب ایمیج ها به خوبی انجام میشه دستور زیر را وارد کنید
sudo docker run hello-world
اگر به خوبی نصب شود خروجی مشابهه زیر دارد . این یعنی شما به سادگی میتوانید همه ایمیج های داکر را بدون دردسر نصب کنید.
اگر خواستید دستورات داکر را بدون نیاز به sudo اجرا کنید با ورود دستورات زیر امکان پذیر است .
از root با دستور exit خارج میشویم.
توجه : حتما باید در کاربری که میخواهید دستورات بدون root اجرا شود لایگن باشید . مثلا ابتدا وارد کاربر ubuntu شوید و دستور زیر را وارد کنید . یعنی درون کاربر ubuntu میتوانید بدون ورود sudo docker ا اجرا کنید
<!-- گرفتن تایتل پستی که در متغیر ذخیره کردیم -->
<h1><?= $home->post_title ?></h1>
<!-- گرفتن محتوای پستی که در متغیر ذخیره کردیم -->
<p><?= $home->post_content ?></p>
2-گرفتن کاستوم فیلد
<?= get_field('custom fild name'); ?>
3-بخش WP_Query ها
1- انتخاب با دسته
// از کتگوری با ایدی ۲۳ میاد ۸ تا پست اخرو نشون میده
$arr_posts = new WP_Query(array(
'posts_per_page' => 8,
'cat' => 23,
) );
if ($arr_posts->have_posts()) :
while ($arr_posts->have_posts()) :
$arr_posts->the_post();
//میره از این آدرس تمپلیت شما رو میخونه اینجا روش حلقه میزنه
get_template_part('template-parts/content', get_post_format());
endwhile;
endif;
?>
2- انتخاب با پست تایپ
<?php
// از پست تایپ وبلاگ میاد ۴ تا پست اخر و نشون میده
$arr_posts = new WP_Query(array(
'posts_per_page' => 4,
'post_type' => "webLog"
));
if ($arr_posts->have_posts()) :
while ($arr_posts->have_posts()) :
$arr_posts->the_post();
get_template_part('template-parts/webLog', get_post_format());
endwhile;
endif;
?>
بخش WP_Query به همینجا محدود نمیشه خیلی اپشنای دیگه داره که میتونید برای مطالعه بیشتر از این لینک استفاده کنید
استفاده از سرویس های کنترل نسخه خارجی دارای مشکلاتی در موضوع تحریم است که با چالش هایی که در ایران هم وجود دارد لازم است که از سرویس جایگزین استفاده شود با توجه به تجربه ای که در استفاده و نصب gitlab داشته باید بگویم که به نسبت سنگینی که دارد خیلی به صرفه نیست معادل بهینه و کارامدتر Gitea است که من میخوام در این آموزش به شما تاکید کنم حتما از نسخه نصب Docker استفاده کنید و روش دستی را تا جایی که مقدور است استفاده نکند .
ابتدا از یکی از شرکتهای معتبر ایرانی یک VPS با سیستم عامل ubuntu 20 با ۲ هسته CPU و ۱ گیگ رم ترجیا ۲ گیگ خریداری کنید .
سپس لازم است که از سرویس شکن استفاده کنید ، باید ns های سرور را به ns های شکن تغییر دهید که بتوانید از docker استفاده کنید و بعد طبق آموزشی که خودم استفاده کرده ام پیش برید.