احمد نادری

توسعه دهنده فول استک

author
author

احمد نادری

توسعه دهنده فول استک

پروژه nextjs

ایجاد پروژه جدید :

npx create-next-app ahmad-teams-app

 

اجرای پروژه

npm run dev

اگر میخوایم پوشه assets خونده بشه باید اون رو داخل public  بزاریم .

خروجی گر فتن : 

فایل next.config.js پروژه رو به این شکل تغییر میدیم :

const nextConfig = {
  reactStrictMode: true,
  output: 'export',
}
module.exports = nextConfig

حالا وقتی خروجی گرفته میشه علاوه به فولدر .next یک فولدر out هم ایجاد میشه که باید به هاست منتقل بشه  .

Encapsulation (کپسوله‌ سازی) در انگولار

@component{
  ...
  encapsulation: ViewEncapsulation.None
  encapsulation: ViewEncapsulation.Native
  encapsulation: ViewEncapsulation.Emulated
}

کپسوله‌ سازی در انگولار چیست؟

در انگولار کپسوله سازی به معنای جداسازی فایل‌های HTML, CSS و همچنین View کامپوننت موردنظر از سایر کامپوننت‌هاست.

ViewEncapsulation.None: در این حالت هیچگونه استایل و قالبی به صورت اختصاصی برای این کامپوننت درنظر گرفته نمی‌شود.

ViewEncapsulation.Native: در این حالت استایل‌ها به صورت ذاتی از مرورگر شما گرفته می‌شوند و سایر استایل‌هایی که در فایل component.css نوشته خواهد شد در بستر استایل‌های توکار مرورگر رخ می‌دهند.

ViewEncapsulation.Emulated: این حالت به صورت پیشفرض و خودکار فعال بوده و نیازی به نوشتن آن نیست. در این حالت استایل‌ها و قالب‌ها دقیقا از فایل‌های component.css فراخوانی شده و سپس استایل توکار مرورگر را روی آنها لحاظ می‌کند. یعنی تقدم و اولویت با استایل‌هایی است که توسط شما نوشته می‌شوند.

بهترین حالت برای استفاده از این ساختار ViewEncapsulation.Emulated است که به صورت خودکار در تمام کامپوننت‌ها فعال می‌باشد. زیرا در حال حاضر مرورگرهای بسیار کمی هستند که قالبیت native دارند.

راه اندازی ماشین مجازی روی سرور فیزیک

  1. وارد مدیریت سرور ( ESXI) میشیم و از قسمت سمت چپ وارد  بخش storage میشیم
  2. در منوهای بالا گزینه Datastore browser رو انتخاب میکنیم و فایل iso ( ویندوز – اوبونتو و … ) خودمون رو آپلود میکنیم .
  3. بعد از آپلود روی virtual machines راست کلیک میکنیم و create machine رو انتخاب میکنیم
  4. در این مرحله اسم و مشخصات سیستم عامل رو انتخاب میکنیم و next رو میزنیم .
  5. در مرحله بعدی هارد خودمون رو انتخاب میکنیم
  6. در مرحله بعد باید منابع رو مشخص کنیم  مثلا cpu روی 4 و ram روی 20 میزاریم . فقط توجه داشته باشید که در disk provisioned حتما نروی thin بزارید ! در قسمت cd/dvd هم فایل iso رو انتخاب کنید .
  7. بعد از اتمام نصب و اولین اجرا ماشین ران میشه و باقی مراحل نصب فایل iso رو ادامه میدیم ….

استفاده از DBTransaction در لاراول

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

DB::beginTransaction();
try {
......
} catch (\Exception $e) {
DB::rollBack();
}
DB::commit();

باید توجه داشت که جدول دیتابیس مربوط به تغییرات باید از نوع انجین innoDB باشد چون مثلا myIsam این قابلیت رو نداره .

مفاهیم برنامه نویسی

اصل اول: KISS که مخفف Keep it simple, stupid هستش.
یعنی وقتی کدی می‌نویسید سعی کنید ساده ترین حالت ممکن رو بنویسید.
بعنوان مثال: اگر فانکشن خاصی بلدین که فکر می‌کنید خوبه اما کسی بلد نیست و فهمش سخته بهتره استفاده نکنید. کدی که می‌نویسید باید جوری باشه که هر کسی بتونه به راحتی متوجه اون بشه. بعضی مواقع نوشتن خط کد بیشتر باعث میشه اون کد ساده تر باشه. بهتره کد ساده تر باشه تا اینکه تعداد خط کمتری داشته باشه.

اصل دوم: YAGNI یعنی You aren’t gonna need it
بعضی وقت ها یه کدی رو که مینویسم زمان زیادی رو صرف این می‌کنیم که در آینده این کد نیازهای دیگه رو هم پوشش بده، در صورتی که ممکنه بعضی چیزا رو نیاز نداشته باشیم. مخصوصاً اگر کمالگرا باشین تایم زیادی رو صرف بهینه کردن اون کد می‌کنید.
این مفهوم به این اشاره می‌کنه که اگر کدی که نوشتین تا حد خوبی نیازهای الان شما رو برطرف می‌کنه و درست کار می‌کنه نیازی نیست بیشتر از اون وقت صرف بهبودش کنید و بعداً هر موقع نیاز داشتین میتونید این کد رو ریفکتور کنید.

اصل سوم: DRY که مخفف Don’t Repeat yourself هست و همینطور که از اسمش مشخص هست این مفهوم
به این اشاره داره که کدهای تکراری ننویسیم.

معماری چند مستاجری(Multitenancy)

معماری multi-tenant یا multi-tenancy یک معماری نرم افزار است که در آن چند نمونه از یک برنامه روی یک سرور فیزیکی اجرا می شوند تا آن سرور بتواند به چندین مستاجر (tenant) خدمات ارائه کند.

 

https://sokanacademy.com/blog/multi-tenancy-%D9%85%D8%B9%D8%B1%D9%81%DB%8C-%D9%85%D8%B2%D8%A7%DB%8C%D8%A7-%D9%88-%D9%85%D8%B9%D8%A7%DB%8C%D8%A8

https://trailhead.salesforce.com/content/learn/modules/starting_force_com/starting_understanding_arch

مشکل بالا نیامدن المنتور در وردپرس

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

(بیشتر…)

مشکل ioncube در وردپرس با php 8

یک مشکلی که ممکنه برامون پیش بیاد این بود که وردپرس وقتی روی نسخه 8 هست تا این لحظه از ioncube پشتیبانی نمیکنه . بعد اکثر افزونه ها و قالب هایی که توسط سایت های راستچین فروخته میشن نیاز به این مورد دارند و باعث میشه که ارور بده سایتتون .

Site error: the ionCube PHP Loader needs to be installed. This is a widely used PHP extension for running ionCube protected PHP code, website security and malware blocking. Please visit get-loader.ioncube.com for install assistanc

راه حل : عدم استفاده از افزونه های خریداری شده یعنی به جای خرید اونا از راستچین یا نسخه پولی اصلی رو خریداری کنیم یا نسخه های رایگان سطح نت!

حل موضوع ftp وردپرس در سرور مجازی اوبونتو

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

sudo chown -R www-data wordpress

 

راه اندازی سرویس احراز هویت در angular

بعد از ایجاد پروژه انگولار گام اول کار ما ایجاد سرویس احراز هویت هست . ما در اینجا از قبلا api هامونو با فریم ورک لاراول درست کردیم و از سیستم otp استفاده میکنیم .

(بیشتر…)

sass یا scss یا less ?

همشون فریم ورک‌هایی برای نوشتن کدهای CSS بهینه سازی شده و آسون کردن ساخت استایل‌ها در کمترین زمان هستند. مهم‌ترین کارشون هم جلوگیری از تکرار کدهای CSS هست.

(بیشتر…)

GraphQL در لاراول

GraphQL یک زبان کوئری نویسی برای کار با API ها و همچنین یک محیط اجرایی سمت سرور برای اجرای کوئری ها توسط type system هایی است که شما تعریف کرده اید.این نوع api به هیچ نوع پایگاه داده یا موتور ذخیره سازی وابسته نیست و بجای آن از همان کدهایی که نوشته ایم استفاده می کنه.

(بیشتر…)

تغییرات دیتابیس با migrataion در لاراول

تغییرات دیتابیس به صورت دستی یکی از بدترین نوع کار در بک اند هست چون مثلا اگه چند نفر به صورت همزمان روی پروژه کار کننده برای هر تغییر کوچیک در دیتابیس باید به همه اطلاع بدید که اونا هم اونو اعمال کنند . مثلا فرض کنید شما از جدول یوزر ستون name  رو به صورت دستی اضافه میکنید . خب حالا بقیه اعضای پروژه هم باید برن به صورت دستی اونو داخل پروژشون اضافه کنند !

(بیشتر…)

اجرای همزمان چند نسخه php در سرور مجازی اوبونتو

بعضی اوقات پی شمیاد که ما چندین پروژه روی سرورمونداریم که از نسخه های مختلف php استفاده میکنند . مثلا ما یک پروژه لاراولی داریم که از php نسخه 8 استفاده میکنه و یک سایت وردپرسی که از php نسخه ۷.۴ استفاده میکنه . (بیشتر…)

دستورات مهم کامند های artisan در لاراول

لاراول مجموعه ای عالی از دستورات artisan  داره، احتمالاً بیشترین استفاده از آنها عبارتند از make:xxx – مثل make:model یا make:migration و غیره. تو این قسمت توضیحات مخصتری راجبشون میدم .

(بیشتر…)

پکیج احراز هویت مناسب برای لاراول

یکی از مسائل مهمی که باید به اون توجه داشت سیستم احراز هویت در پروژه های لاراولی هست . این موضوع به نوع پروژه بستگی داره که Sanctum یا Passport یا jwt رو انتخاب کنیم ….

(بیشتر…)

مدیریت پروژه با اسکرام و جیرا و گیت لب

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

(بیشتر…)

مشکل Upload folder is not writable. Export and file upload features will not be functional در وردپرس با سرور مجازی اوبونتو

بعد از نصب وردپرس در سرور مجازی ممکنه با ارور Upload folder is not writable. Export and file upload features will not be functional مواجه بشیم که دلیل اون دسترسی های پوشه آپلود هست . برای حلش کافیه از کد زیر در ترمینال روت پروژه استفاده کنیم :‌

chmod a+w wp-content/uploads

 

مشکل نصب wpml در سرور مجازی اوبونتو

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

Fatal error: Uncaught Error: Call to undefined function simplexml_load_file() in /var/www/polilog/wp-content/plugins/sitepress-multilingual-cms/vendor/otgs/installer/includes/class-wp-installer.php:817 Stack trace: #0 /var/www/polilog/wp-content/plugins/sitepress-multilingual-cms/vendor/otgs/installer/includes/class-wp-installer.php(71): WP_Installer->load_repositories_list() #1 /var/www/polilog/wp-content/plugins/sitepress-multilingual-cms/vendor/otgs/installer/includes/class-wp-installer.php(50): WP_Installer->__construct() #2 /var/www/polilog/wp-content/plugins/sitepress-multilingual-cms/vendor/otgs/installer/includes/functions-core.php(3): WP_Installer::instance() #3 /var/www/polilog/wp-content/plugins/sitepress-multilingual-cms/vendor/otgs/installer/installer.php(15): WP_Installer() #4 /var/www/polilog/wp-content/plugins/sitepress-multilingual-cms/vendor/otgs/installer/loader.php(164): include_once('/var/www/polilo...') #5 /var/www/polilog/wp-includes/class-wp-hook.php(286): wpml_installer_instance_delegator('') #6 / in /var/www/polilog/wp-content/plugins/sitepress-multilingual-cms/vendor/otgs/installer/includes/class-wp-installer.php on line 817

(بیشتر…)

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

خب بعد از انجام یکپروژه میرسیم به بخش بارگزاری اون . در بارگزاری پروژه ممکنه خطاهای هم پیش بیاد که اینجا بررسیشون میکنیم .

(بیشتر…)

مبانی لاراول – کلیات

فصل اول

مبانی زبان php

فصل دوم

فصل سوم

فصل چهارم

آموزش نصب phpmyadmin در سرور مجازی اوبونتو

ما به صورت پیش فرض بعد از نصب mysql  با دستورات کامندلاین میتونیم به دیتابیس دسترسی داشته باشیم ولی خب محیط phpmyadmin هم یکی از بهترین ها در مدیریت دیتابیس هست….

(بیشتر…)

آموزش نصب dns server بر روی سرورمجازی اوبونتو ۲۰

برای تنظیم دامنه ما نیاز به dns داریم که از باعث اتصال بین سرور و دامنمون بشه . اینکار داخل سرور مجازی اوبونتو اینجوری انجام میشه .

(بیشتر…)

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

بعد از تهیه سرورمجازی لینوکس و نصب محیط دسکتاپ وقتی میخوایم با نرم افزارهای remote desktop به اون متصل بشیم ممکنه به خطای ۲۰۴ یا ۷۰۴ و غیره مواجه بشیم ..

(بیشتر…)

آموزش نصب سایت php بر روی سرور مجازی اوبنتو

بعد از خریداری سرور لینوکسی  یک آی پی و یوزر و پسورد بهمون میدن که باید ازشون استفاده کنیم . اول نیازه به اون سرور ssh وصل بشیم . ..

(بیشتر…)

MVC الگوی معماری نرم افزار یا طراحی نرم افزار ؟

هر دو بسته به دیدگاه می توانند درست باشند:

MVC می تواند یک الگوی معماری باشد، اگر اساس معماری برنامه را تشکیل دهد.

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

یک پروژه لاراول با چند ساب دامین

بعضی اوقات پیش میاد که مثلا سامانه ی لاراولی داریم که میخواید نسخه های مختلفی از اون بسازیم . مثلا در یکی از پروژه های ما یک سامانه کلی مدیریتی وجود داشت + دو نسخه pwa برای سرویس دهنده و سرویس گیرنده که اومده بودن  ۳ تا پروژه جدا تعریف کرده بودن و همرو به یک دیتابیس متصل کردن .

(بیشتر…)

نمایش صفحات – بلاگ – محصولات در inertiajs (laravel+vue)

گاهی اوقات پیش میاد که ما میخوایم با یک روت ثابت به دیتاهای مختلف دسترسی پیدا کنیم .مثلا با روت blog و id خبر به محتویات اون خبر دسترسی پیدا کنیم مثل localhost.com/blog/1  …

(بیشتر…)

درباره من
  • سلام به وب سایت من خوش اومدید ! از سال 1388 که وارد دنیای برنامه نویسی شدم تجربیات خودم رو از پروژه های مختلف به دست آوردم و همیشه سعی کردم تا مهارت های فنی و رفتاری خودم رو ارتقا بدم تا بتونم برای خودم و سازمانی که در آن کار می کنم بهترین باشم . من عاشق یادگیری هستم و همیشه از چالش های جدید هیجان زده میشم چون اونارو کلید موفقیت و رشد خودم می دونم.
  • @ahmadnaderi01
arrow