<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>نوشته های مصطفی نورزاده</title><link>https://virgool.ir/feed/@mostafanorzade</link><description>برنامه نویس مبتدی ولی سخت کوش ( آکادمی لامینور  laminor.org)</description><language>fa</language><pubDate>2026-11-11 20:22:06</pubDate><image><url>https://files.virgool.ir/upload/users/7305/avatar/mluLaM.jpeg</url><title>مصطفی نورزاده</title><link>https://virgool.ir/@mostafanorzade</link></image><item><title>تغییر دایرکتوری public_html در دایرکت ادمین</title><link>https://virgool.ir/wptips/تغییر-دایرکتوری-publichtml-در-دایرکت-ادمین-dj6zetxaky5c</link><description>عکس تزئینی !سلام دوستان عزیز . بعضی وقت ها شما دوست داری که اطلاعات شما در وب سرور از طریق پوشه public_html خوانده نشه و دایرکتوری دلخواه شما به عنوان روت اصلی شناخته شود . من تو پروژه های لاراولی خودم برای اینکه موقع git pull و git push کردن به مشکل نخورم ، دایرکتوری اصلی ام رو تغییر میدم . یعنی کافسیت شما وارد دایرکتوری زیر تو سرورتون بشید :home/admin/domains/yourDomain.com/ و بعد با دستور زیر کل پروژه لاراولی تون رو کلون کنید در کنار دایرکتوری public_html . (بیرون دایرکتوری public_html )git clone Https://github.com/YourRepository.gitخب با این کار هنوز پروژه ما بالا نمیاد . چون روت اصلی ما همچنان دایرکتوری public_html هست . حالا وارد دایرکت ادمین بشید :دقت کنید که در مود admin Level باشید حتمابعد از ورود به دایرکت ادمین وارد بخش Custom HTTPD Configuration شوید .دامنه مورد نظر خودتون رو انتخاب کنید . همون جایی که من روش خط کشیدم .تنظیمات HTTPDحالا در این بخش کد زیر رو وارد کنید :|*if !SUB|ServerAlias *.|DOMAIN||?DOCROOT=/home/Your_User/domains/YourDoamin/ProjectDirectoryName/public||*endif|فقط فراموش نکنید که نام دامنه و اسم فولدر پروژه (نام ریپازیتوری گیت هابتون ) و نام کاربرتون رو جایگزین کنید تو کد بالا .تمام.با این کار دایرکتوری اصلی شما از public_html به public پروژه لاراولی تون تغییر کرد .دیگه برای کار کردن با گیت مشکلی نخواهید داشت و کافیه هر دفعه بعد از پوش کردن تغییرات روی گیت ، به دایرکتوری پروژه تون روی سرورتون برید و پروژه خودتون رو پول کنید تا آپدیت بشه .امیدوارم براتون مفید واقع بشه .</description><category>مصطفی نورزاده</category><author>مصطفی نورزاده</author><pubDate>Fri, 21 Feb 2020 18:57:19 +0330</pubDate></item><item><title>کلاس‌های تک اکشن در کنترلر لاراول با متد __invoke()</title><link>https://virgool.ir/laravel-community/کلاسهای-تک-اکشن-در-کنترلر-لاراول-با-متد-invoke-u7zu2kt3z8r7</link><description>پیش به سوی کدنویسی تمیز تر ...سلام دوستان . تو این مقاله میخوام درباره کلاس های تک اکشن تو لاراول صحبت کنیم . و اینکه اصلا به چه کاری میاد این روش استفاده از کنترلر .بعضی وقتا کنترلر شما بجز متد های show , update , store , index , delete, ... شامل خیلی متدهای دیگه هم شاید باشه . اونوقت که هر وقت سروکارت به این کنترلر بیوفته باید کلی دنبال کدهاتون بگردید و ... وای به روزی که داکیومنت نویسی هم نکرده باشی ...متد جادویی invoke در php : زبان php یکسری متد پیشفرض داره به اسم مجیک متد ( magic method ) . یا همون متدهای جادویی . این متدها با ۲ تا آندرلاین ( ــ ) شروع میشن . این اسامی توسط php رزرو شدن و شما نمیتونید اسم متدهاتون رو شبیه شون بزارید .تو php ورژن 5.3 یه متدی جادویی به اسم __invoke اضافه شد. __invoke() یک تابع magic در php است و هنگامی که ما می‌خواهیم یک نمونه از کلاس ایجاد کنیم یا به این کلاس فراخوانی کنیم __invoke() به صورت خودکاربارگیری می‌شود.ایجاد کلاس تک اکشن در کنترلر :برای اینکه کنترلرمون رو خلوت کنیم کافی مثلا برای یکی از متدهایی که تو کنترلرمون داریم ، یه کلاس جداگونه بسازیم . مثلا من مدل Book دارم و یه کنترلر BookController .این کنترلر ما یه متد داره مثلا به اسم registerBook . کافی ما یه کنترلر بسازیم برای این متد :namespace App\Http\Controllers;  &#xA;use Illuminate\Http\Request;  &#xA;&#xA;class RegisterBookController extends Controller {    &#xA;        public function __invoke() {         &#xA;                // any things   &#xA;         } &#xA;}حالا هرکاری که قرار بود این متد انجام بده داخل متد invoke بنویسید .برای این کنترلر هم باید روت مخصوص به خودش نوشته بشه :Route::post(&#39;registerBook&#39;, &#39;RegisterBookController&#39;); نکته : اگر از این روش استفاده کنید نمیتونید از resource روت ها استفاده کنید !ما تونستیم با این کار یه متد از کلاس کنترلر اصلی Book کم کنیم و کدمون رو واضح تر کنیم . امیدوارم این چند خط نوشته به درد شما بخوره .موفق باشید .</description><category>مصطفی نورزاده</category><author>مصطفی نورزاده</author><pubDate>Wed, 23 Oct 2019 00:51:45 +0330</pubDate></item><item><title>آموزش بک آپ گرفتن از تمام ریپازیتوری های گیت هاب ( تحریم گیت هاب )</title><link>https://virgool.ir/@mostafanorzade/بک-آپ-گرفتن-از-تمام-ریپازیتوری-های-گیت-هاب-تحریم-گیت-هاب-urqhhqjb1ngm</link><description>تحریم شدن ایران توسط گیت هابسلام دوستان خبرهایی اخیرا شنیده میشه بابت تحریم کردن کاربران ایرانی از سمت گیت هاب ( Github ) .گویا اکانت بعضی از ایرانی ها هم از دسترس خارج شده . من خودم هنوز از صحت این خبر صد درصد مطمئن نیستم . ولی عقل حکم میکنه از ریپازیتوری های گیت هابمون یه بک آپ بگیریم . #!/usr/bin/env bash &#xA;# Clone all github.com repositories for a specified user. &#xA;tput reset &#xA;resetColor=$(tput sgr0) &#xA;redColor=$(tput setaf 1) &#xA;greenColor=$(tput setaf 2) &#xA;if [[ $# -lt 1 || $# -gt 1 ]]; then     &#xA;    echo &#34;${redColor}Usage: $0 &lt;user_name&gt;${resetColor}&#34;     &#xA;    exit &#xA;fi &#xA;USER=$1 &#xA;if [ ! -e $USER ]; then     &#xA;    echo &#34;${greenColor}Creating $USER directory${resetColor}&#34;     &#xA;    mkdir -p $USER &#xA;fi &#xA;cd $USER &#xA;# clone all repositories for user specifed &#xA;repos=$(curl -s https://api.github.com/users/$USER/repos?per_page=1000 |grep git_url |awk &#39;{print $2}&#39;| sed &#39;s/&#34;\(.*\)&#34;,/\1/&#39;) &#xA;while IFS= read -r repo ; do   &#xA;    echo &#34;${redColor}Cloning $repo${resetColor}&#34;   &#xA;    git clone $repo &#xA;done &lt;&lt;&lt; $repos&#xA;این اسکریپت به صورت اتوماتیک تمام ریپازیتوری های شما رو clone میکنه . البته باید ریپازیتوری هاتون public باشن . این اسکریپت رو تو هر مسیری که خواستید داخل یه فایلی ذخیره کنید با نام دلخواه ( مثلا .githubBackup )بعد با دستور زیر فایل رو اجرا کنید :bash ./fileName.sh GITHUB_USER_NAMEبا دستور بالا در مسیر جاری یه فولدر با نام کاربری گیت هاب شما درست میکنه و تمام ریپازیتوری هاتون رو کلون میکنه داخلشامیدوارم براتون مفید باشه .</description><category>مصطفی نورزاده</category><author>مصطفی نورزاده</author><pubDate>Fri, 26 Jul 2019 00:59:33 +0430</pubDate></item></channel></rss>