نحوه نوشتن From اول از یک Subquery در لاراول

سلام گاهی اوقات لازم است که query sql مشابه زیر داشته باشیم

select * from (select * from `shop_stores` where `shop_stores`.`deleted_at` is null) as `shop_stores` where `shop_stores`.`deleted_at` is null;

برای این منظور میتوانیم از متد subFrom در query builder لاراول استفاده کنیم.

        $firstQuery = stores::query();
        $secondQuery = stores::query();

        $secondQuery->fromSub($firstQuery,'shop_stores',function ($join){
            $join->on('shop_stores.id','=','latest_posts.id');
        });

        $secondQuery->dd();

نصب gitea در سرور مجازی ایران

با عرض سلام خدمت شما برنامه نویس گرامی

استفاده از سرویس های کنترل نسخه خارجی دارای مشکلاتی در موضوع تحریم است که با چالش هایی که در ایران هم وجود دارد لازم است که از سرویس جایگزین استفاده شود با توجه به تجربه ای که در استفاده و نصب gitlab داشته باید بگویم که به نسبت سنگینی که دارد خیلی به صرفه نیست معادل بهینه و کارامدتر Gitea است که من میخوام در این آموزش به شما تاکید کنم حتما از نسخه نصب Docker استفاده کنید و روش دستی را تا جایی که مقدور است استفاده نکند .

ابتدا از یکی از شرکتهای معتبر ایرانی یک VPS با سیستم عامل ubuntu 20 با ۲ هسته CPU و ۱ گیگ رم ترجیا ۲ گیگ خریداری کنید .

سپس لازم است که از سرویس شکن استفاده کنید ، باید ns های سرور را به ns های شکن تغییر دهید که بتوانید از docker استفاده کنید و بعد طبق آموزشی که خودم استفاده کرده ام پیش برید.

https://www.digitalocean.com/community/tutorials/how-to-install-gitea-on-ubuntu-using-docker

نحوه ایجاد استرس تست و benchmark از پروژه

یکی از بهترین ابزارها https://github.com/wg/wrk است که با دستور هایی میتواند به صورت همزمان میزان پاسخگویی به کاربران همزمان اپلکیشن شما را انجام دهد

لازم است که حتما در local این تست را بر اساس سخت افزاری که دارید انجام دهید

sudo apt-get install build-essential libssl-dev git -y 
git clone --depth 1 https://github.com/wg/wrk.git wrk
cd wrk 
sudo make 
# move the executable to somewhere in your PATH, ex: 
sudo cp wrk /usr/local/bin 

به طور مثال ۳۰ ثانیه در ۱۲ نخ و ۴۰۰ اتصال همزان با دستور زیر از ادرس زیر به اینصورت است

wrk -t12 -c400 -d30s http://127.0.0.1:8080/index.html

در واقع در تست زیر هرچه میزان درخواست بر ثانیه بیشتر باشد بهتر است

ارسال package public در npm

ابتدا در سایت npmjs.com عضو شوید

سپس در سیستم خود پروژه را که ایجاد کرده اید را روی صفحه github خود ارسال کنید

بعد با دستور npm init –scope=@vahidalvandi اسکوپ را تعریف کنید

بعد جهت ارسال به npm دستور npm publish –access public را ارسال کنید

 

خطای هنگام نصب پکیج local در composer

در صورتی که در نصب پکیج محلی خطای  in the lock file but not in remote repositories, make sure you avoid updating this package to keep the one from the lock file  را داشتید به دلیل عدم وجود فایل composer.json در root هر پکیج است مثلا باید در پروژه پکیچ های محلی در مسیر زیر باشد

packages/namevednor/base

درون base حتما باید composer.json باشد

همچنین دقت کنید که در composer.json اصلی که در root قرار دارد باید مسیر دهی به شکل زیر باشد

repositories": { "namevednor/base": { "type": "path", "url": "packages/namevednor/base" } }

require": {
"namevednor/site": "dev-master"
}

 

 

 

بهینه سازی vendor در پروژه لاراول

جهت اجرای بهینه سازی vendor در لاراول لازم است که دستوراتی را اجرا کنید که تنها وابستگی های که در فایل composer s با اجرای دستور زیر تنها پکیج های الزامی نصب میشوند و پکیج هایی که در بخش توسعه لازم بود حذف میگردند با این روش میتوانید حجم پوشه vendor را تا ۵۰ درصد کاهش دهید

composer update --no-interaction --prefer-dist --optimize-autoloader --no-dev

نحوه تغییر طراحی صفحه خطاهای لاراول

لاراول به صورت پیش فرض یک طراحی پیش فرض دارد مانند تصویر زیر و شامل 404 و 401 و 500

با اجرای دستور php artisan vendor:publish –tag=laravel-errors فایل ها و طراحی ها در پوشه resources/views/errors اضافه میشوند و با تغییر minimal.blade.php میتوان گرافیک مورد نظر هر پروژه را اجرا کنید

 

جمع زدن یک ستون با join دو جدول در mysql

هنگامی که دو جدول دارید و میخواهید بعد از ایجاد join میان آن دو از جدول اول یک مقدار را sum کنید می بینید که عدد اشتباه است این مشکل زمانی دیده میشود که جدول دوم دارای بیش از یک رکورد معادل رکورد در جدول اول باشد . برای حل این مشکل با تکه کد زیر میتوان دو جدول را جمع زد

 
SELECT COUNT(DISTINCT invo.id), SUM(invo.am) 
FROM invo JOIN (SELECT invo_id FROM invo_tm GROUP BY invo_id) AS xx ON (xx.invo_id = invo.id);





آموزش ایجاد فیلدسفارشی در crm vtiger

نرم افزار crm vtiger یک نرم افزار متن باز است که قابلیت های زیادی دارد از جمله امکان ایجاد انواع فیلدهای سفارشی مانند text box یا option select نکته ای که وجود دارد این است که شما میتوانید روی همه فیلدهای هر بخش مثل فرصت ها یا سرنخ ها گردش کار ایجاد کنید مثلا اگر شما یک سرویس میزبانی وب می فروشید لازم است که بعد از یکسال یک وظیفه خودکار ایجاد کند . شاید شرطی را روی گردش کار crm قرار دهید که اگر روی محصول هاست بود این اتفاق رخ دهد و محصول هاست هم یک فیلد سفارش است . توجه کنید که اگر شما محصول هاست را به هاست لینوکس تغییر نام دهید گردش کار اجرا نمیشود و لازم است که مجدد گردش کار را با نام جدید محصول اصلاح کنید .

روش ورود اطلاعات CSV به mysql

رای ورود اطلاعات به mysql میتوان با روش csv اقدام کرد برای این کار فایل اکسل خود را در google sheet باز کنید و بعد اتمام کار از ان خروحی csv comma seperated بگیرد سپس با ورود به جدول مورد نظر در mysql روی دکمه import کلیک کنید و در پایین

تصویر بخش import در جدول مورد نظر mysql

در بخش Column names اگر طبق فایل csv ترتیب همه ستون ها برابر نبود میتوان مطابق ترتیبی که در فایل csv است اینجا وارد کنید و حتما با comma آن را جدا کنید . توجه کنید که در فایل csv نباید ردیف اول شامل تیتر ستون باشد و باید اولین رکورد دیتا قرار بگیرد.

چرا وردپرس جذاب است ؟

بسیاری از دوستان و شرکت هایی که قبلا با وردپرس میانه خوبی نداشتند اما آن را حداقل به عنوان روش دوم در پیاده سازی انواع سایت ها استفاده میکنند این موضوع برای خود من هیچ وقت اینطور نبود من از ابتدای فعالیتم که در سالهای 84 شروع شد با وردپرس شروع کردم و وردپرس را با علاقه دنبال کردم چند چیز برای من جالب بود ابدا سادگی و دومی به روزرسانی خودکار و ساده ای که داشت و من مطمن بودم که همین دو امکان می تواند برای من کافی باشد که همیشه امن باشد و بتوانم مشتری هایی که دارم با آن راضی نگه دارم . خوشبختانه از آن روزها تا الان بیش از 15 سال گذشته است و همچنان وردپرس برای من و بسیاری از منکران آن جذاب شده .

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