چطور نام کاربری و رمز عبور رو هنگام pull و push یک بار وارد کنم و برای همیشه ذخیره بشه؟

من دارم از اوبونتو ۱۸ استفاده میکنم. چطور نام کاربری و رمز عبور رو هنگام پول و پوش یک بار وارد کنم و ذخیره بشه و هر بار از من اینو نپرسه که رمز عبورت و نام کاربریت چیه؟

به سادگی:

git config --global credential.helper store

بعد پول کنین. این کار نام کربری و رمز شمارو در یک فایل با نام ~/.git-credentials ذخیره میکنه که خیلی امن نیست. راحت همه میبینن حتی هش هم نمیشه. ولی راه حل بهتری اگر میشناسین بیگین یا خودم اینجا بعدا آپدیت میکنم.

منبع: How to save username and password in git?

نصب node.js و npm ورژن ۱۳ در اوبونتو ۱۸

از دستور زیر برای نصب پکیج منیجر نود و خود نود استفاده کنین:

# Using Ubuntu
curl -sL https://deb.nodesource.com/setup_13.x | sudo -E bash -
sudo apt-get install -y nodejs

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

مبع: NodeSource Node.js Binary Distributions

گرفتن جمع رکورد های برگشتی در لاراول ۵.۸

گاهی لازمه بدونیم یک مدل ما در رابطه با مدل دیگه ای (چند به چند و یک به چند) چه تعداد نتیجه داره؟ برای مثال میخوایم بدونیم این پست من چه تعداد کامنت داره؟ یک عدد میخوام.

برای یک مدل فقط کافیه از متد count بصورت زیر استفاده کنم. (چند نمونه مثال)

نمایش تعداد کامنت های یک کاربر
$user->comments->count();

نمایش تعداد کل پست های یک کاربر در زیر یک پست (برای مثال: تاکنون ۶۵ نوشته از این نویسنده انتشار داده شده)
$post->user->posts->count();

اما وقتی چند مدل/ چند رکورد از دیتابیس رو گرفتیم و میخوایم برای هر کدوم چیزی رو بشماریم از روش زیر استفاده میکنیم:

نمایش تعداد کامنت های هر پست

$posts = App\Post::withCount('comments')->get();

foreach ($posts as $post) {
    echo $post->comments_count;
}

یا شمارنده های با فیلتر بیشتر یا چند شمارنده

use Illuminate\Database\Eloquent\Builder;

$posts = App\Post::withCount(['votes', 'comments' => function (Builder $query) {
    $query->where('content', 'like', 'foo%');
}])->get();

echo $posts[0]->votes_count;
echo $posts[0]->comments_count;

 

منبع: Counting Related Models

چطور در جاوااسکریپت آرایه ها را با هم یکی کنیم و به هم بچسبانیم؟

در جاوا اسکریپت متدی وجود داره که با اون میتونیم دو یا چند آرایه رو به هم متصل کنیم. نتیجه این متد آرایه فعلی را تغییری نمیدهد بلکه آرایه جدیدی به return میکنه که شامل آرایه های جمع شدست.

 array1.concat(array2, array3, ..., arrayX)

قائده کلیش به این صورت بالاست. آرایه ای رو در ابتدا concat میکنیم و بعد آرایه های دیگه رو بعنوان پارامتر به اون میدیم. اگر فهرست آرایه هارو میخواین بصورت پارامتر وارد کنین، ابتدا یک آرایه خالی تعریف کنین که با فهرست آرایه هاتون concat میشه.

var hege = ["Cecilie", "Lone"];
var stale = ["Emil", "Tobias", "Linus"];
var kai = ["Robin"];
var children = hege.concat(stale, kai);

 

منبع: JavaScript Array concat() Method

نصب Vue با مدیریت بسته yarn

Vue برای نصب نیاز به مدیریت بسته Node.js همون npm داره یا اینکه میتونین اون رو از طریق یارن هم نصب کنین. از اینجا یاد بگیرید چطور مدیریت بسته یارن yarn رو نصب کنین

نکته: اگر قبلا vue رو نصب کردین حتما اون رو پاک کنین خصوصا اگر نسخه ۱ اونو دارین با دستور  remove vue-cli پاکش کنین.
نکته۲: vue قبلا با نام بسته vue-cli شناخته میشد و الان نام اون تغییر کرده به @vue/cli

برای نصب vue یکی از دو دستور زیر npm یا yarn رو استفاده کنین که من یارن رو ترجیح میدم چون خیلی سریعتر و بهتره.

npm install -g @vue/cli
# OR
yarn global add @vue/cli

برای نصب این بسته ها با دسترسی ادمین باشین تا بتونین نصبش کنین.

این دستور vue رو بصورت global رو سیستم شما نصب میکنه و بعد نصب شما به دستور vue دسترسی دارین. برای اینکه چک کنین آیا نصب شده یا نه به راحتی فقط نام اون رو تایپ کنین vue. که بهتون راهنمای کار با دستور vue و لیستی از دستورات موجود رو نشون میده.

با دستور زیر میتونین ببینین که چه نسخه ای رو نصب کردین

vue --version

یا اگر قبلا یارن رو رنصب کردین با دستور زیر اون رو آپدیت کنین:

npm update -g @vue/cli

# OR
yarn global upgrade --latest @vue/cli

 

چطور بر روی اوبونتو ۱۸ مدیریت بسته yarn رو نصب کنیم؟

اول از همه بهتون بگم یارن چیه؟ yarn یک مدیر پکیج های جاوا اسکریپت هست که با مدیریت بسته های نود npm سازگاره و به ما کمک میکنه بصورت خودکار کارهای نصب آپدیت و تنظیمات و پاک کردن پکیج های npm رو انجام بدیم.

یارن برای این بوجود اومد که مجموعه ای از مشکلات npm رو حل کنه، مانند بالا بردن سرعت نصب پکیج ها با دستورات موازی و کاهش خطاهای مرتبط با ارتباطات شبکه ای.

در این آموزش ما یاد میگیریم چطور با استفاده از پکیج منجیر اوبونتو APT یارن رو روی اوبونتو ۱۸ نصب کنیم. مخازن رسیمیه یارن بصورت مدام بروز میشن و این خیلی خوبه که از مخازن رسمی اونو نصب کنین.

قبل شروع نصب یارن یادتون باشه که با با کاربر روت باشین یا با دسترسی های اون کارهای نصب رو انجام بدین. (sudo).

۱. اولین قدمی اینه که مخزن یارن رو فعال کنین. بوسیلیه کد زیر کلید مخزن GPG  رو درون ریزی کنین.

curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -

بوسیله دستور زیر مخازن یارن رو به مخازن سیستمتون اضافه کنین:

echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list

۲. بعد اینکه مخزن یارن به لیست مخازن سیستم اضافه شد، لیست پکیج ها رو بروزرسانی کنین و سپس یارن رو نصب کنین.

sudo apt update
sudo apt install yarn

۳. برای اینکه چک کنین یارن نصب شده یا نه کد زیر رو بزنین و از ورژن نصب شده مطلع بشین:

yarn --version

 

منبع: How to Install Yarn on Ubuntu 18.04

نحوه عوض کردن میانبر تغییر زبان در ابونتو ۱۸ به آلت و شیفت

برای اینکه میانبر تغییر زبان رو در اوبونتو ۱۸ به آلت و شیفت تغییر بدیم مراحل زیر رو دنبال کنین تا بهتون بگم:

۱. برنامه گنوم توپیکس رو نصب کنین:

sudo apt-get install gnome-tweaks

۲. گنوم توپیکس رو باز کنین، میتونین با زدن دکمه سوپر و نوشتن عبارت gnome tweaks اونو جستجو و بازش کنین.

۳. کیبورد و موس رو انتخاب کنین

۴. رو گزینه «Additional Layout Options button» کلیک کنین.

۵. گزینه «Switching to another layout» رو باز کنین

۶. میانبری که میخواین رو انتخاب کنین

gnome tweaks

gnome tweaks

منبع: ۱۸٫۰۴ ctrl+shift to change language

چطور در اوبونتو برای باز کردن فولدر Home میانبر تعریف کنیم؟

برای تعریف میانبر برای باز کردن Files Manager و یا باز کردن فولدر Home کافیه دکمه Super رو بفشارید و تایپ کنید shortcuts و اینتر بزنین. یا از Settings > Shortcuts رو انتخاب کنین.

حالا در این صفحه تایپ کنین Home Folder که همون اولاس. بعد انتخابش دکمه میانبر رو بزنین. من Super + E رو زدم مشابه عادتی که در ویندوز داشتم.

تعریف میانبر برای باز کردن Files

موفق باشید.

متد های PUT PATCH DELETE در لاراول

اول از همه بریم سراغ متد های PUT PATCH DELETE این متد ها روش های انتقال دیتا در کنار POST GET هستن و کمتر استفاده شدن و درموردشون کمتر خوندیم و شنیدیم. اما درواقع لیست متد های تقاضاهای HTTP شامل PUT PATCH DELETE POST GET HEAD OPTIONS TRACE CONNECT میشن. که ما بیشتر از همه با POST GET کار کردیم و حالا در لاراول میخوایم از چند تای دیگشون استفاده کنیم. قبلش یه نگاه سریع بهشون بندازیم که اصلا چی هستن و برای چی استفاده میکنیم؟

حالا این نکته رو تو ذهنتون داشته باشید که CRUD مخفف اول کلمات Create Read Update Delete هست.

متد GET برای نمایش یا گرفتن داده خاص مثل یک محصول، یا یک نوع محصول یا لیست محصولات استفاده میشه.

متد POST برای ارسال یک داده به سرور استفاده میشه و معمولا برای Create کردن.

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

متد PATCH هم برای ارسال داده و بروزرسانی استفاده میشه. فرقش با بالایی اینه که اون جایگزین میکنه کلا، این ویرایش میکنه. که شامل بخشی از اونه اصظلاحا Modify میکنه. اینم میشه Update

متد DELETE که مشخصه برای حذف کردنه.

میرسیم سراغ متد های فرعی که شامل این مبحثمون نمیشه ولی میگم:

متد HEAD مثل متد GET میمونه اما با فرق اینکه بدنه رو نمیگیره و فقط head رو میگیره. داده هایی که در هد صفحه موجوده.

متد CONNECT برای ایجاد یک تونل به منبعی مشخص

متد OPTIONS برای مشخص کردن گزینه های ارتباط با منبع مورد نظر استفاده میشود. (سخت نگیرید – سرچ کنید)

متد TRACE هم برای بررسی مسیر رفت و برگشت بسته.

همونطور که میدونیم HTML در فرم هاش از متد های PUT PATCH DELETE پشتیبانی نمیکنه، لاراول برای پشتیبانی از این route ها از ما میخواد فیلدی رو در فرممون با نام _method تعریف کنیم و مقدار اون رو برابر متد مورد نظر قرار بدیم. برای مثال کد زیر رو ببینین:

<form action="/foo/bar" method="POST">
    <input type="hidden" name="_method" value="PUT">
    <input type="hidden" name="_token" value="{{ csrf_token() }}">
</form>

در بلید برای سرعت بیشتر میتونیم از @method استفاده کنیم که این کد رو برامون جنریت میکنه و البته، متد فرم همچنان باید POST باشه.

<form action="/foo/bar" method="POST">
    @method('PUT')
    @csrf
</form>

 

منبع:
Form Method Spoofing
HTTP request methods
HTTP Request Methods
متد های http
تفاوت بین متدهای HTTP شامل GET, POST, PUT, PATCH, DELETE

توکن CSRF فرم ها در لاراول

لاراول فرم ها رو در برابر حمله های CSRF محافظت میکنه. درخواست های سایت ها / سرور های دیگر از درخواست های یک کاربر اهراز شده جدا میشن. برای اینکار لاراول یک توکن CSRF برای هر کاربر ایجاد میکنه با اینکار چک میکنه آیا این درخواست برای همین کاربر هست یا نه؟!

برای اینکار هرزمان که ما یک فرم در HTML مینویسیم باید حتما یک توکن CSRF رو در فیلد های HTML از نوع input با مقدار توکن ایجاد کنیم. اینکار به میدلور لاراول این امکان رو میده صحت درخواست مارو بررسی کنه. برای راحتی تنها نیاز به نوشتن @csrf  داخل فرم بلیدمون داریم.

<form method="POST" action="/profile">
    @csrf
    ...
</form>

همچنین میتونیم این توکن رو در هدر صفحه هم ارسال کنیم:

<meta name="csrf-token" content="{{ csrf_token() }}">

یا توسط جاوا اسکریپت:

$.ajaxSetup({
    headers: {
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
    }
});

اطلاعات بیشتر درباره CSRF Protection