<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های علیرضا تحریری</title>
        <link>https://virgool.io/feed/@alirezatahriri</link>
        <description>سلام علیرضا تحریری هستم برنامه نویس بک اند که با فریم های Laravel،‌ Livewire، Lumen، Tailwind CSS، Alpine JS و ... کد مینویسم.</description>
        <language>fa</language>
        <pubDate>2026-04-14 09:07:42</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/1607763/avatar/IYntzX.jpg?height=120&amp;width=120</url>
            <title>علیرضا تحریری</title>
            <link>https://virgool.io/@alirezatahriri</link>
        </image>

                    <item>
                <title>کلیه چیست؟ | آناتومی، فیزیولوژی کلیه و نقش آن در تنظیم فشار خون و ادرار</title>
                <link>https://virgool.io/@alirezatahriri/%DA%A9%D9%84%DB%8C%D9%87-%DA%86%DB%8C%D8%B3%D8%AA-%D8%A2%D9%86%D8%A7%D8%AA%D9%88%D9%85%DB%8C-%D9%81%DB%8C%D8%B2%DB%8C%D9%88%D9%84%D9%88%DA%98%DB%8C-%DA%A9%D9%84%DB%8C%D9%87-%D9%88-%D9%86%D9%82%D8%B4-%D8%A2%D9%86-%D8%AF%D8%B1-%D8%AA%D9%86%D8%B8%DB%8C%D9%85-%D9%81%D8%B4%D8%A7%D8%B1-%D8%AE%D9%88%D9%86-%D9%88-%D8%A7%D8%AF%D8%B1%D8%A7%D8%B1-j8573n61vwsp</link>
                <description>آناتومی، فیزیولوژی کلیهکلیه‌‌ها از مهم‌ترین ارگان‌های حیاتی بدن انسان هستند که نقشی اساسی در حفظ تعادل آب و الکترولیت‌ها، دفع مواد زائد، تنظیم فشار خون، تولید هورمون‌ها و تنظیم pH خون ایفا می‌کنند. از تولد تا کهولت سن، ساختار و ظرفیت عملکردی کلیه‌ها به‌تدریج تغییر می‌کند. فیزیولوژی کلیه شامل چهار فرایند اصلی فیلتراسیون خون، بازجذب، ترشح و دفع است و ادرار نرمال نشان‌دهنده عملکرد صحیح این مراحل می‌باشد. هورمون‌هایی مانند رنین، اریتروپوئتین و فرم فعال ویتامین D از محصولات ترشحی کلیه هستند که در تنظیم فشار خون، تولید گلبول قرمز و متابولیسم کلسیم نقش کلیدی دارند. اختلال در عملکرد کلیه می‌تواند منجر به پیامدهای بالینی جدی و تهدیدکننده زندگی شود.سوالات متداول درباره کلیهکلیه چیست و چه وظایفی در بدن دارد؟آناتومی کلیه چگونه است؟ساختار کلیه از دوران نوزادی تا پیری چگونه تغییر می‌کند؟نفرون چیست و از چه اجزایی تشکیل شده است؟فیزیولوژی کلیه شامل چه مراحلی است؟ویژگی‌های ادرار نرمال چیست؟کلیه چگونه فشار خون را تنظیم می‌کند؟هورمون‌های مترشحه از کلیه کدام‌اند؟نقش کلیه در تعادل مایعات و اسید–باز چیست؟کاهش عملکرد کلیوی چه اثری بر سلامت انسان دارد؟کلیه چیست و کارکرد کلی آن در بدنکلیه‌ها دو عضو لوبیایی‌شکل هستند که در قسمت پشتی حفره پریتوئن (Retroperitoneal) و در دو طرف ستون فقرات قرار دارند. وظیفه اصلی کلیه فیلتر کردن خون برای حذف مواد زائد متابولیکی مانند اوره، کراتینین و اسید اوریک است. در عین حال، کلیه‌‌ها با بازجذب دقیق آب، یون‌ها، گلوکز و اسیدهای آمینه، تعادل داخلی بدن را حفظ می‌کنند.آناتومی کلیه و تغییرات آن از نوزادی تا سالمندیموقعیت: کلیه‌ها معمولاً در سطح مهره‌های T12 تا L3 قرار دارند؛ کلیه راست به دلیل وجود کبد کمی پایین‌تر است.پوشش خارجی: شامل کپسول فیبروزی محافظ، چربی اطراف کلیه و بافت همبند.ساختار داخلی: کلیه از دو بخش اصلی قشر (Cortex) و مغز (Medulla) تشکیل شده است.هرم‌های کلیوی: در بخش مدولا قرار دارند و ادرار را به کالیکس‌ها هدایت می‌کنند.لگنچه کلیوی: محل تجمع ادرار پیش از انتقال به حالب است.نفرون؛ واحد عملکردی کلیههر کلیه در انسان بالغ حدود یک میلیون نفرون دارد که واحد اصلی عملکرد کلیه محسوب می‌‌شود. هر نفرون از بخش‌‌های زیر تشکیل شده است:گلومرول و کپسول بومنلوله پیچ‌خورده نزدیکحلقه هنلهلوله پیچ‌خورده دورمجاری جمع‌کننده ادرارتغییرات کلیه در طول عمردر نوزادی، کلیه‌ها از نظر تعداد نفرون‌ها تقریباً کامل هستند اما اندازه کوچکتری دارند. با افزایش سن، اندازه کلیه و قطر عروق افزایش می‌یابد. در سالمندی، به‌تدریج تعداد نفرون‌ها کاهش یافته، فیلتراسیون گلومرولی افت می‌کند و ظرفیت تنظیم آب و الکترولیت‌ها کاهش می‌یابد.فیزیولوژی کلیه و مراحل تشکیل ادرارفیلتراسیون: عبور آب و مواد محلول از گلومرول به کپسول بومن.بازجذب: بازگشت مواد مفید مانند آب، گلوکز و یون‌ها به جریان خون.ترشح: انتقال یون‌ها و مواد زائد از خون به لوله کلیوی.دفع: تشکیل ادرار نهایی و انتقال آن به مثانه.ادرار نرمال چیست و چه ویژگی‌‌هایی دارد؟حجم روزانه: حدود ۰.۸ تا ۲ لیتررنگ: زرد روشن تا کهرباییشفاف و بدون کدورتفاقد گلوکز و پروتئین قابل‌توجهpH حدود ۵.۵ تا ۷نقش کلیه در تنظیم فشار خونتنظیم حجم مایعات و سدیم بدنفعال‌سازی سیستم رنین–آنژیوتانسین–آلدوسترون (RAAS)تأثیر هورمون ADH بر بازجذب آب و حجم ادرارهورمون‌‌های مترشحه از کلیهرنین: تنظیم فشار خون و حجم خوناریتروپوئتین: تحریک تولید گلبول‌های قرمزویتامین D فعال: جذب کلسیم و سلامت استخوانجمع‌بندیکلیه یکی از حیاتی‌ترین ارگان‌های بدن است که در حفظ هموستاز، تنظیم فشار خون، تولید گلبول قرمز و تعادل اسید–باز نقش کلیدی دارد. شناخت آناتومی و فیزیولوژی کلیه، نقش مهمی در پیشگیری، تشخیص زودهنگام و کاهش عوارض بیماری‌های کلیوی ایفا می‌کند.منبع: دیالیز ایران</description>
                <category>علیرضا تحریری</category>
                <author>علیرضا تحریری</author>
                <pubDate>Tue, 09 Dec 2025 03:00:24 +0330</pubDate>
            </item>
                    <item>
                <title>‫انواع مختلف دیالیز (معرفی و مقایسه کامل همودیالیز و دیالیز صفاقی)‬</title>
                <link>https://virgool.io/@alirezatahriri/%E2%80%AB%D8%A7%D9%86%D9%88%D8%A7%D8%B9-%D9%85%D8%AE%D8%AA%D9%84%D9%81-%D8%AF%DB%8C%D8%A7%D9%84%DB%8C%D8%B2-%D9%85%D8%B9%D8%B1%D9%81%DB%8C-%D9%88-%D9%85%D9%82%D8%A7%DB%8C%D8%B3%D9%87-%DA%A9%D8%A7%D9%85%D9%84-%D9%87%D9%85%D9%88%D8%AF%DB%8C%D8%A7%D9%84%DB%8C%D8%B2-%D9%88-%D8%AF%DB%8C%D8%A7%D9%84%DB%8C%D8%B2-%D8%B5%D9%81%D8%A7%D9%82%DB%8C%E2%80%AC-led1gscl65wk</link>
                <description>‫انواع مختلف دیالیز (معرفی و مقایسه کامل همودیالیز و دیالیز صفاقی)‬دیالیز یک روش درمانی است که زمانی استفاده میشود که عملکرد کلیهها به کمتر از ‪ 10‬تا ‪ 15‬درصد‬ ‫عملکرد طبیعی کاهش یافته باشد‪.‬البته از دیالیز به عنوان یک درمان موقتی نیز میتوان در نارسایی‬ حاد کلیه و مسمومیتها استفاده کرد؛ اما بیشترین کاربرد ان در نارسای ی مزمن کلیه است‪ .‬این‬ ‫روش به جای کلیهها‪ ،‬مواد زائد‪ ،‬سموم و مایعات اضافی را از بدن دفع میکند‪ .‬دو روش اصلی دیالیز‬ ‫شامل همودیالیز (‪ (Hemodialysis‬و دیالیز صفاقی (‪ (Peritoneal Dialysis‬هستند‪.‬‬سواالت کلیدی‪:‬‬‫‪ .1‬دیالیز چیست و چه نقشی در درمان نارسای ی کلیه دارد؟‬‫‪ .2‬همودیالیز چیست و چگونه انجام میشود؟‬‫‪ .3‬دیالیز صفاقی چیست و چگونه عمل میکند؟‬‫‪ .4‬تعداد دفعات انجام هرکدام از روش های دیالیز چگونه است؟‬‫‪ .5‬چه شرایطی برای انجام همودیالیز و یا دیالیز صفاقی نیاز است؟‬‫‪ .6‬مزایای همودیالیز نسبت به دیالیز صفاقی چیست؟‬‫‪ .7‬معایب همودیالیز در مقایسه با دیالیز صفاقی چیست؟‬‫‪ .8‬کدام روش دیالیز برای بیماران فعالتر و شاغل مناسبتر است؟‬‫‪ .9‬ایا هر دو روش دیالیز امکان انجام در منزل دارند؟‬‫‪ .10‬انتخاب بین همودیالیز و دیالیز صفاقی بر چه اساسی انجام میشود؟‬ همودیالیزهمودیالیز‫همودیالیز فرایندی است که طی ان خون بیمار از بدن‪ ،‬از طریق دسترسیای که قبال ایجاد شده (‬‫مثل فیستول یا کتتر) خارج میشود و از طریق دستگاه دیالیز تصفیه میشود و مواد زائد و مایع‬ ‫اضافی ان گرفته میشود و سپس خون تصفیه شده به بدن بازمیگردد‪.‬‬دستگاه دیالیزنحوه انجام:در همودیالیز، یک دسترسی عروقی (معمولاً فیستول شریانی-وریدی) ایجاد می‌شود. بیمار معمولاً سه بار در هفته و هر جلسه حدود ۴ ساعت به دستگاه دیالیز متصل می‌شود. در این مدت خون از بدن خارج شده، از میان فیلترهای مخصوص عبور می‌کند و مواد زائد دفع می‌شود.مرکز دیالیزپیش‌نیازها:ایجاد فیستول یا کاتتر، مراقبت از فیستول و کتتر دیالیز،کنترل فشار خون، هماهنگی با برنامه کلینیک دیالیز، رفت و آمد به مرکز دیالیز، رعایت رژیم غذایی و محدودیت مصرف مایعات بین جلسات دیالیز.مزایا:+ انجام تحت نظر تیم پزشکی متخصص وباتجربه.+ پاک‌سازی مؤثرتر در جلسات طولانی‌تر.+ نیاز کمتر به همکاری بیمار در فرایند فنی.+ مناسب تر برای بیماران دیابتی کنترل نشده.+ حذف سریعتر مواد زائد در موارد اورژانسی.معایب:- نیاز به مراجعه منظم به مرکز دیالیز.- محدودیت زمانی و انعطاف‌پذیری و استقلال کمتر.- احتمال افت فشار خون و گرفتگی عضلانی و سردرد پس از جلسات.- خطر بیشتر عفونت¬های خونی (سپسیس).- افزایش ریسک مشکلات قلبی-عروقی.- محدودیت های غذایی و مایعات بیشتر.- خستگی و بی حالی پس از جلسات دیالیز. دیالیز صفاقیدیالیز صفاقیدیالیز صفاقی نوعی از دیالیز است  که در این روش، از طریق دسترسی ای که قبلاایجاد شده (کتتر صفاقی)، مایع دیالیز صفاقی وارد حفره شکم می¬شود. در طی مدتی که مایع در حفره شکم وجود دارد، مواد زائد و مایعات اضافی از طریق پرده صفاق(پرده¬ای که احشا شکمی را می¬پوشاند)، وارد این محلول شده و پس از چند ساعت این محلول از طریق کتتر تخلیه شده و مایع دیالیز صفاقی جدید، جایگزین آن می¬شود. نکته حائز اهمیت در این روش، انجام تمام مراحل آن توسط خود بیمار و در منزل بیمار است ونیاز به انجام توسط تیم درمانی نیست.نحوه انجام دیالیز صفاقینحوه انجام:بیمار از طریق کاتتر دائمی که برای او تعبیه می شود(روی شکم)، مایع دیالیز را وارد حفره شکمی می کند و پس از چند ساعت، محلول وارد شده از طریق کاتتر تخلیه شده و محلول جدید وارد می‌شود. درواقع در این روش همیشه حفره شکمی بیمار دارای مایع دیالیز است و معمولا نیاز به تعویض 3 یا 5 مرتبه در روز می باشد که تمام مراحل توسط خود بیمار در منزل انجام می شود. البته این نوع دیالیز روش انجام دیگری هم دارد که تعویض مایع توسط یک دستگاه و در طی شب انجام می شود، که متاسفانه در ایران موجود نیست.پیش‌نیازها: نصب کاتتر صفاقی، آموزش بیمار و خانواده، رعایت اصول استریلیتی، انجام 4 مرتبه در روز، داشتن امکان دفع مایع دیالیز مصرفی، مراقبت از کاتتر.مزایا:+ امکان انجام در منزل.+ آزادی و انعطاف پذیری بیشتر در برنامه روزانه.+ حفظ بهتر عملکرد باقیمانده کلیه در مراحل اولیه.+ عدم نیاز به دسترسی عروقی.+ روش بهتر برای بیماران قلبی-عروقی.+ کنترل بهتر فشار خون در برخی بیماران.+ آزادی بیشتر در رژیم غذایی و مصرف مایعات.+ مناسب برای کودکان و افراد مسن.معایب:- خطر عفونت صفاق (پریتونیت).- نیاز به همکاری و رعایت بهداشت دقیق.- ممکن است برای بیماران با سابقه جراحی شکمی مناسب نباشد.- جذب قند از محلول دیالیز صفاقی و افزایش وزن.- احتمال بروز فتق شکمی.- کاهش تدریجی ظرفیت صفاقی با گذشت زمان.- یاز به فضای مناسب در منزل برای انجام دیالیز و نگهداری محلول ها.- احتمال کنترل ضعیف¬تر سطح اوره و کراتینین. مقایسه همودیالیز و دیالیز صفاقی+ محل انجام: همودیالیز عمدتاً در مراکز درمانی؛ دیالیز صفاقی عمدتاً در منزل.+ فرد انجام دهنده: همودیالیز پرستار متخصص ؛ دیالیز صفاقی توسط خود بیمار.+ تعداد جلسات: همودیالیز ۳ بار در هفته؛ دیالیز صفاقی روزانه 4 مرتبه.+ انعطاف‌پذیری: دیالیز صفاقی انعطاف‌پذیرتر است.+ خطر عفونت: همودیالیز با خطر عفونت خونی؛ دیالیز صفاقی با خطر پریتونیت.+ حفظ عملکرد کلیه: دیالیز صفاقی در مراحل اولیه عملکرد کلیه را بهتر حفظ می‌کند.+ ظرفیت عملکردی: ظرفیت عملکردی همودیالیز نسبت به دیالیز صفاقی بیشتر است.+ تغذیه و مصرف مایعات: همودیالیز محدودیت رژیم غذایی و مصرف مایعات بیشتری دارد.چه روشی مناسب‌تر است؟انتخاب روش دیالیز بستگی به شرایط بیمار دارد:+ بیماران با حمایت خانوادگی و توانایی انجام مراقبت‌های خانگی→ دیالیز صفاقی.+ بیماران با بیماری‌های شکمی یا ناتوانی در رعایت بهداشت → همودیالیز.+ بیماران با شغل ثابت و برنامه زمانی محدود → همودیالیز.+ بیماران فعال که سفرهای مکرر دارند → دیالیز صفاقی.+ بیماران مسن و کودکان → دیالیز صفاقی.+ بیماران با عدم کنترل رژیم غذایی و مصرف مایعات → دیالیز صفاقی نتیجه گیری:دیالیز یک درمان حیاتی برای بیماران کلیوی است و انتخاب نوع مناسب آن نیازمند مشورت با پزشک متخصص است. همودیالیز و دیالیز صفاقی هر کدام مزایا و معایب خاص خود را دارند. بهترین انتخاب، روشی است که بیشترین سازگاری را با شرایط پزشکی و سبک زندگی بیمار داشته باشد و هدف این مقاله، معرفی تفاوت های این دو روش دیالیز به شما عزیزان است تا با بررسی شرایط خود بهترین تصمیم گیری را همراه با پزشک خود داشته باشید.منبع: دیالیز ایران</description>
                <category>علیرضا تحریری</category>
                <author>علیرضا تحریری</author>
                <pubDate>Fri, 28 Nov 2025 00:57:00 +0330</pubDate>
            </item>
                    <item>
                <title>نحوه استفاده از API در لاراول: راهنمای گام‌به‌گام همراه با کد</title>
                <link>https://virgool.io/@alirezatahriri/%D9%86%D8%AD%D9%88%D9%87-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-api-%D8%AF%D8%B1-%D9%84%D8%A7%D8%B1%D8%A7%D9%88%D9%84-%D8%B1%D8%A7%D9%87%D9%86%D9%85%D8%A7%DB%8C-%DA%AF%D8%A7%D9%85-%D8%A8%D9%87-%DA%AF%D8%A7%D9%85-%D9%87%D9%85%D8%B1%D8%A7%D9%87-%D8%A8%D8%A7-%DA%A9%D8%AF-nxrto6pzbmer</link>
                <description> نحوه استفاده از API در لاراول: راهنمای گام‌به‌گام همراه با کدمقدمهامروزه در دنیای توسعه وب، اضافه کردن داده‌های real-time آب‌وهوا به اپلیکیشن‌ها به یک ویژگی محبوب و پرکاربرد تبدیل شده است. لاراول (Laravel)، با امکانات قدرتمند و ساختار ساده‌اش، فرآیند کار با APIها و داده‌های خارجی (External Data) را به‌شدت آسان می‌کند. در این مقاله قصد داریم با استفاده از OpenWeather API در لاراول، برنامه‌ای طراحی کنیم که بتوانید داده‌های آب‌وهوا را به‌صورت real-time در پروژه‌های خود به کار بگیرید.پیش‌نیازهاقبل از شروع کنیم:1. باید لاراول را یاد داشته باشید.2. از قبل یک پروژه لاراولی روی کامپیوترتون نصب کرده باشید.قدم اول - نصب Guzzle HTTP Clientبرای کار با API ها در لاراول، ما از Guzzle استفاده خواهیم کرد که یک HTTP Client بسیار محبوب است. برای نصب آن با استفاده از Composer، دستور زیر را در ترمینال سیستم اجرا کنید. (باید این دستور را داخل پروژه لاراولی که از قبل نصب کردید اجرا کنید)composer require guzzlehttp/guzzleقدم دوم - ساخت یک Controllerیک فایل Controller جدید برای مدیریت درخواست های API بسازید. برای اینکار دستور زیر را در ترمینال اجرا کنید:php artisan make:controller WeatherControllerقدم سوم - تعریف مسیر (route)وارد فایل routes/web.php بشوید و یک route جدید تعریف کنید و آن را به WeatherController متصل کنید:use App\Http\Controllers\WeatherController;

Route::get(&#039;/weather&#039;, [WeatherController::class, &#039;getWeather&#039;]);قدم چهارم - ارسال درخواست به OpenWeather APIداخل فایل کنترلر (controller) که ایجاد کردیم، یک متد جدید به اسم getWeather ایجاد کنید تا درخواست های API را به وبسایت OpenWeather API ارسال کند.&lt;?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use GuzzleHttp\Client;

class WeatherController extends Controller
{
    public function getWeather()
    {
        // Replace &#039;YOUR_API_KEY&#039; with your OpenWeather API key
        $apiKey = &#039;YOUR_API_KEY&#039;;
        
        // Create a new Guzzle client instance
        $client = new Client();

        // API endpoint URL with your desired location and units (e.g., London, Metric units)
        $apiUrl = &amp;quothttp://api.openweathermap.org/data/2.5/weather?q=London&amp;units=metric&amp;appid={$apiKey}&quot;

        try {
            // Make a GET request to the OpenWeather API
            $response = $client-&gt;get($apiUrl);

            // Get the response body as an array
            $data = json_decode($response-&gt;getBody(), true);

            // Handle the retrieved weather data as needed (e.g., pass it to a view)
            return view(&#039;weather&#039;, [&#039;weatherData&#039; =&gt; $data]);
        } catch (\Exception $e) {
            // Handle any errors that occur during the API request
            return view(&#039;api_error&#039;, [&#039;error&#039; =&gt; $e-&gt;getMessage()]);
        }
    }
}قدم پنجم - ایجاد فایل Bladeحالا باید دو فایل Blade در پوشه resources/views ایجاد کنید، فایل های weather.blade.php و api_error.blade.php را ایجاد کنید.محتوای فایل weather.blade.php:&lt;!DOCTYPE html&gt;
&lt;html&gt;
&lt;head&gt;
    &lt;title&gt;Weather Information&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
    &lt;h1&gt;Current Weather in {{ $weatherData[&#039;name&#039;] }}&lt;/h1&gt;
    &lt;p&gt;Description: {{ $weatherData[&#039;weather&#039;][0][&#039;description&#039;] }}&lt;/p&gt;
    &lt;p&gt;Temperature: {{ $weatherData[&#039;main&#039;][&#039;temp&#039;] }} &#8451;&lt;/p&gt;
    &lt;!-- Additional weather data can be displayed as per the API response --&gt;
&lt;/body&gt;
&lt;/html&gt;محتوا فایل api_error.blade.php:&lt;!DOCTYPE html&gt;
&lt;html&gt;
&lt;head&gt;
    &lt;title&gt;API Error&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
    &lt;h1&gt;An error occurred while fetching weather data:&lt;/h1&gt;
    &lt;p&gt;{{ $error }}&lt;/p&gt;
&lt;/body&gt;
&lt;/html&gt;قدم ششم - تست کردن OpenWeather APIبرنامه لاراولی خود را با استفاده از دستور زیر اجرا کنید و آدرس http://localhost:8000/weather را داخل قسمت سرچ مرورگر وارد کنید. اگر که اطلاعات مربوط API KEY به درستی وارد شده باشد، باید اطلاعات آب و هوای London (یا هر شهری که وارد کرده‌اید) به شما نمایش داده شود.تبریگ میگوییم!با پیروی کردن از این راهنمای قدم به قدم، شما یاد گرفته اید که چطوری با OpenWeather Api در لاراول با استفاده از Guzzle HTTP Client کار بکنید. استفاده از داده‌های real-time با استفاده از APIهای خارجی (External APIs) عملکرد و تجربه کاربری استفاده از اپلیکیشن شما را افزیش میدهد. با ارتقا دانش خود در استفاده از APIها، می‌توانید نقاط انتهایی (endpoints) بیشتری از APIها یاد بگیرد، مکانیزم caching را پیاده‌سازی کنید و نمایش اطلاعات را متناسب با نیازهای برنامه خود شخصی‌سازی کنید. با انعطاف‌پذیری (flexibility) لاراول و دسترسی به اطلاعات OpenWeather API، میتوانید برنامه‌های مبتنی بر اطلاعات آب و هوا را طراحی کنید که میتواند برای کاربران سراسر جهان جذاب و کاربردی باشد.اکنون با داشتن دانش برای کار با OpenWeather API در لاراول، میتوانید که سفری جدید برای توسعه برنامه های کاربردی و نوآورانه شروع کنید که به سریع‌ترین شکل ممکن به اطلاعات آب و هوا شهر موردنظرتون دسترسی داشته باشید.منبع: وبسایت میموک#برنامه‌_نویسی #لاراول #OpenWeatherApi</description>
                <category>علیرضا تحریری</category>
                <author>علیرضا تحریری</author>
                <pubDate>Tue, 17 Dec 2024 06:57:13 +0330</pubDate>
            </item>
                    <item>
                <title>چطور یک فلش را در مک (macOS) فرمت کنیم؟ – آموزش گام به گام</title>
                <link>https://virgool.io/@alirezatahriri/%DA%86%D8%B7%D9%88%D8%B1-%DB%8C%DA%A9-%D9%81%D9%84%D8%B4-%D8%B1%D8%A7-%D8%AF%D8%B1-%D9%85%DA%A9-macos-%D9%81%D8%B1%D9%85%D8%AA-%DA%A9%D9%86%DB%8C%D9%85-%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%DA%AF%D8%A7%D9%85-%D8%A8%D9%87-%DA%AF%D8%A7%D9%85-yg7n47jyocvl</link>
                <description>چطور یک فلش را در مک (macOS) فرمت کنیم؟ – آموزش گام به گامآیا تا به حال به این فکر کرده‌اید که چگونه می‌توانید یک USB را در مک فرمت کنید؟ جای نگرانی نیست! فرمت کردن درایوهای USB در مک یک فرآیند ساده و سریع است. بیشتر USBها (که به آن‌ها فلش درایو یا flash drives نیز گفته می‌شود) به‌صورت پیش‌فرض با مک سازگار هستند و به صورت plug-and-play کار می‌کنند. با این حال، برخی از درایوهای USB نیاز به فرمت دارند تا بتوانند به درستی با سیستم‌عامل مک کار کنند.اگر قصد فرمت کردن USB در ویندوز را دارید، روش انجام این کار کمی متفاوت است، اما در این مورد هم می‌توانیم راهنمایی کنیم. مک‌ها به صورت پیش‌فرض با برنامه‌ای قدرتمند به نام Disk Utility عرضه می‌شوند. این ابزار کاربردی می‌تواند کارهایی مانند بررسی و تعمیر دیسک، ایجاد پارتیشن و فرمت کردن درایوها را انجام دهد.فرمت کردن USB در مک - ۱۰ مرحله ساده با استفاده از Disk Utility1. وارد برنامه Finder شوید.2. پوشه Applications را باز کنید.3. پوشه Utilities را باز کنید.4. برنامه Disk Utility را اجرا کنید.زمانی که برنامه اجرا شد، پنجره اصلی ظاهر می‌شود. در سمت چپ، فهرستی از دستگاه‌های ذخیره‌سازی موجود را مشاهده می‌کنید و در سمت راست، گزینه‌های مختلف مدیریت دیسک قرار دارند. در پایین پنجره، اطلاعات کاملی درباره دستگاه ذخیره‌سازی انتخاب‌شده نمایش داده می‌شود. این اطلاعات شامل موارد زیر است:توضیحات دیسک (Disk Description)نوع اتصال (Connection Type)شماره سریال USBظرفیت کل (Total Capacity)وضعیت دسترسی نوشتن (Write Status)وضعیت S.M.A.R.Tپارتیشن‌بندی (Partition Scheme)5. درایو مورد نظر را از فهرست سمت چپ انتخاب کنید.تا زمانی که این مرحله را انجام ندهید، نمی‌توانید به مراحل بعدی بروید.6. روی گزینه &quot;Erase&quot; کلیک کنید.7. یک نام برای درایو انتخاب کنید.پیش از شروع فرمت، لازم است که یک نام برای درایو وارد کنید. سپس:فرمت را روی ExFAT تنظیم کنید. طرح‌بندی پارتیشن را GUID Partition Map انتخاب کنید (مگر اینکه به دلیل سازگاری، نیاز به طرح‌بندی دیگری داشته باشید).8. روی گزینه &quot;Erase&quot; کلیک کنید.9. تأیید نهایی در صورت نیاز.اگر پنجره تأیید دیگری ظاهر شد، دوباره روی &quot;Erase&quot; کلیک کنید.10. تمام شد!پس از تکمیل فرآیند، روی گزینه &quot;Done&quot; کلیک کنید.تبریک می‌گوییم! اکنون فلش درایو شما فرمت شده و آماده انتقال فایل‌ها است.منبع: وبسایت میموک#mac #macos #مک</description>
                <category>علیرضا تحریری</category>
                <author>علیرضا تحریری</author>
                <pubDate>Sun, 15 Dec 2024 04:09:47 +0330</pubDate>
            </item>
                    <item>
                <title>آموزش فعال‌سازی فایل htaccess در وب‌سرور Apache روی سرور مجازی لینوکس (VPS)</title>
                <link>https://virgool.io/@alirezatahriri/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D9%81%D8%B9%D8%A7%D9%84-%D8%B3%D8%A7%D8%B2%DB%8C-%D9%81%D8%A7%DB%8C%D9%84-htaccess-%D8%AF%D8%B1-%D9%88%D8%A8-%D8%B3%D8%B1%D9%88%D8%B1-apache-%D8%B1%D9%88%DB%8C-%D8%B3%D8%B1%D9%88%D8%B1-%D9%85%D8%AC%D8%A7%D8%B2%DB%8C-%D9%84%DB%8C%D9%86%D9%88%DA%A9%D8%B3-vps-bkcrxylbxhid</link>
                <description> آموزش فعال‌سازی فایل htaccess در وب‌سرور Apache روی سرور مجازی لینوکس (VPS)فایل‌های .htaccess این امکان را به شما می‌دهند که دستورات Apache را برای هر دایرکتوری به‌طور مجزا اعمال کنید. وب‌سرور Apache در اکثر توزیع‌های لینوکس به‌طور پیش‌فرض دستورات موجود در فایل‌های .htaccess را نادیده می‌گیرد. بنابراین، اگر نیاز دارید که دستورات Apache را از طریق فایل‌های .htaccess اجرا کنید، باید این قابلیت را در فایل پیکربندی اصلی سرور فعال کنید.از نظر امنیتی، اگر به فایل پیکربندی اصلی سرور دسترسی دارید، بهتر است از استفاده از فایل‌های .htaccess خودداری کنید. تمامی دستوراتی که می‌توانید در فایل‌های .htaccess وارد کنید، قابل تنظیم در یک بلوک Directory در فایل پیکربندی اصلی سرور است. با این حال، بسیاری از برنامه‌های تحت وب مدرن مانند فروشگاه‌های اینترنتی و سیستم‌های مدیریت محتوا (CMS) برای عملکرد صحیح خود به این قابلیت نیاز دارند.باز کردن فایل پیکربندی Apache در سرور مجازی لینوکسدر سیستم‌عامل CentOS، فایل پیکربندی Apache در مسیر /etc/httpd/conf/httpd.conf قرار دارد. برای ویرایش آن، دستور زیر را وارد کنید:sudo vi /etc/httpd/conf/httpd.confویرایش دستور AllowOverrideباید خطی را که شامل دستور AllowOverride است پیدا کنید و دقت کنید که تنها نمونه مرتبط با دایرکتوری صحیح را ویرایش کنید. معمولاً این دستور زیر دایرکتوری root قرار دارد، یعنی در بلوک &lt;Directory /&gt; یا &lt;Directory /var/www/html&gt;. این بلوک معمولاً به شکل زیر است:&lt;Directory /var/www/html&gt;
    Options Indexes FollowSymLinks MultiViews
    AllowOverride None
    Order allow,deny
    allow from all
    # Uncomment this directive if you want to see Apache&#039;s
    # default start page (in /apache2-default) when you go to /
    # RedirectMatch ^/$ /apache2-default/
&lt;/Directory&gt;تغییر AllowOverride به Allدستور AllowOverride را از None به All تغییر دهید. همچنین می‌توانید این مقدار را برای انواع خاصی از دستورات که می‌خواهید مجاز کنید، تنظیم کنید. برای اطلاعات بیشتر در مورد انواع دستورات مجاز در یک سرور لینوکس، به وب‌سایت Apache.org مراجعه کنید.اگر تمامی انواع دستورات را مجاز کردید، بلوک نهایی &lt;Directory&gt; شما باید به شکل زیر باشد:&lt;Directory /var/www/html&gt;
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    Order allow,deny
    allow from all
    # Uncomment this directive if you want to see Apache&#039;s
    # default start page (in /apache2-default) when you go to /
    # RedirectMatch ^/$ /apache2-default/
&lt;/Directory&gt;ذخیره فایل و راه‌اندازی مجدد Apacheپس از انجام تغییرات، فایل httpd.conf را ذخیره کرده و از ویرایشگر خارج شوید.برای اعمال تغییرات، باید وب‌سرور Apache را با دستور زیر راه‌اندازی مجدد کنید:sudo service httpd restartحالا شما قابلیت .htaccess را برای دایرکتوری /var/www/html در وب‌سرور Apache خود فعال کرده‌اید. برای تغییراتی که در تنظیمات پیش‌فرض Apache اعمال کرده‌اید، اطمینان حاصل کنید که این قابلیت را برای دایرکتوری‌ها به صورت صحیح تنظیم شده است.مبنع: وبسایت میموک</description>
                <category>علیرضا تحریری</category>
                <author>علیرضا تحریری</author>
                <pubDate>Wed, 11 Dec 2024 22:36:02 +0330</pubDate>
            </item>
                    <item>
                <title>آموزش اضافه کردن Bootstrap در HTML (گام به گام)</title>
                <link>https://virgool.io/@alirezatahriri/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D8%A7%D8%B6%D8%A7%D9%81%D9%87-%DA%A9%D8%B1%D8%AF%D9%86-bootstrap-%D8%AF%D8%B1-html-%DA%AF%D8%A7%D9%85-%D8%A8%D9%87-%DA%AF%D8%A7%D9%85-rn6gh2u3dcgu</link>
                <description> آموزش اضافه کردن Bootstrap در HTML (گام به گام)بوتاسترپ (Bootstrap) یکی از محبوبترین فریمورکهای HTML، CSS و JavaScript است که به توسعهدهندگان کمک میکند طراحی وبسایتها را سریعتر و سادهتر انجام دهند. احتمالاً این سؤال برای شما پیش آمده که چگونه میتوان بوتاسترپ را به HTML اضافه کرد. در این مقاله، روشهای مختلفی را بررسی میکنیم که به شما امکان میدهد به سادگی بوتاسترپ را به پروژه HTML خود لینک کنید یا ادغام نمایید، بسته به اینکه چگونه قصد دارید از آن در وبسایت خود استفاده کنید.اگر در حال یادگیری و کدنویسی با فریمورک های CSS هستید و میخواهید که به صورت دقیق متوجه تفاوت های بین Bootstrap و Tailwind CSS شوید، پیشنهاد میکنیم که مقاله معرفی و مقایسه فریم ورک Tailwind CSS و Bootstrap را در وبسایت میموک مطالعه کنید.آخرین نسخه بوتاسترپ، Bootstrap 5 است. مراحلی که برای اضافه کردن بوتاسترپ به HTML باید دنبال کنید، بسته به نسخهای که قصد استفاده از آن را دارید، کمی متفاوت است. برای شروع کار با بوتاسترپ، نیاز به دانش پایهای در HTML، CSS و JavaScript دارید. میتوانید یکی از سه روش زیر را برای افزودن بوتاسترپ به HTML انتخاب کنید.روش اول: استفاده از شبکه توزیع محتوا (CDN) بوتاسترپاستفاده از CDN بوتاسترپ یک روش عالی برای راهاندازی سریع و کارآمد محتوای وبسایت شما به کاربران بر اساس موقعیت جغرافیایی آنها است و همچنین باعث بهبود عملکرد سرور وبسایت شما میشود. برای لینک کردن بوتاسترپ به HTML با استفاده از این روش:اضافه کردن Bootstrap 4 CDN در HTMLبرای CSS:لینک زیر را کپی کرده و داخل تگ &lt;head&gt; فایل HTML مورد نظر خود قرار دهید:&lt;link rel=&amp;quotstylesheet&amp;quot href=&amp;quothttps://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css&amp;quot rel=&amp;quotnofollow&amp;quot integrity=&amp;quotsha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm&amp;quot crossorigin=&amp;quotanonymous&amp;quot&gt;برای /p&gt;لینکهای زیر را در قسمت پایین تگ &lt;body&gt; فایل HTML مورد نظر خود قرار دهید:&lt;script src=&amp;quothttps://code.jquery.com/jquery-3.2.1.slim.min.js&amp;quot integrity=&amp;quotsha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN&amp;quot crossorigin=&amp;quotanonymous&amp;quot&gt;

&lt;script src=&amp;quothttps://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js&amp;quot integrity=&amp;quotsha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q&amp;quot crossorigin=&amp;quotanonymous&amp;quot&gt;

&lt;script src=&amp;quothttps://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js&amp;quot integrity=&amp;quotsha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl&amp;quot crossorigin=&amp;quotanonymous&amp;quot&gt;نکته:عملکرد برخی از اجزای JavaScript مانند تبها و منوهای کشویی به کتابخانههای Popper.js و jQuery وابسته است. بنابراین، قبل از بارگذاری فایل JavaScript بوتاسترپ (bootstrap.min.js)، ابتدا باید CDNهای jQuery و Popper را بارگذاری کنید.اضافه کردن Bootstrap 5 CDN در HTMLبا توجه به اینکه جاوا اسکریپت به تنهایی قادر به ارائه همان عملکرد است، Bootstrap 5 از jQuery بینیاز شده است. برای اضافه کردن CDN بوتاسترپ 5 به HTML، مراحل زیر را دنبال کنید.برای CSS:لینک زیر را کپی کرده و داخل تگ &lt;head&gt; فایل HTML مورد نظر خود قرار دهید:&lt;link rel=”stylesheet” href=”https://stackpath.bootstrapcdn.com/bootstrap/5.0.0-alpha1/css/bootstrap.min.css”rel=”nofollow” integrity=”sha384-r4NyP46KrjDleawBgD5tp8Y7UzmLA05oM1iAEQ17CSuDqnUK2+k9luXQOfXJCJ4I” crossorigin=”anonymous”&gt;برای JS:لینکهای زیر را در قسمت پایین تگ &lt;body&gt; فایل HTML مورد نظر خود قرار دهید:&lt;script src=”https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js” integrity=”sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo” crossorigin=”anonymous”&gt;

&lt;script src=”https://stackpath.bootstrapcdn.com/bootstrap/5.0.0-alpha1/js/bootstrap.min.js” integrity=”sha384-oesi62hOLfzrys4LxRF63OJCXdXDipiYWBnvTl9Y9/TRlw5xlKIEHpNyvvDShgf/” crossorigin=”anonymous”&gt;توجه داشته باشید که باید Popper.js را قبل از Bootstrap.js فراخوانی کنید.روش دوم: دانلود فایلها و استفاده از آنها به صورت محلی (local) روی کامپیوترروش دیگری برای افزودن بوتاسترپ به HTML این است که فایلها را مستقیماً در پوشه پروژه HTML خود دانلود کنید. میتوانید فایلها را از طریق لینکهای زیر دانلود کنید:Bootstrap 4: https://getbootstrap.com/docs/4.3/getting-started/downloadBootstrap 5: https://v5.getbootstrap.com/docs/5.0/getting-started/downloadپس از دانلود فایلهای مربوط به نسخه مورد نظر بوتاسترپ:برای CSS:یک لینک به فایل bootstrap.min.css در قسمت &lt;head&gt; فایل HTML خود اضافه کنید. با این کار، میتوانید از بخشهای CSS بوتاسترپ بر اساس نیاز خود استفاده کنید.برای JS:یک لینک به فایل bootstrap.min.js را قبل از پایان قسمت &lt;body&gt; فایل HTML خود اضافه کنید. این کار امکان استفاده از بخشهای جاوااسکریپت بوتاسترپ را فراهم میکند.نکته:فایلهای jquery.min.js و popper.min.js باید قبل از بارگذاری bootstrap.min.js اضافه شوند، حتی اگر فایلها را به صورت محلی دانلود کرده باشید.روش سوم: استفاده از package manager برای افزودن Bootstrap به HTMLسامانه مدیریت بسته (package manager) مثل npm و yarn میتوانند یک روش کارآمد دیگر برای افزودن Bootstrap به HTML بهصورت ساده و سریع باشند. از آنجا که npm محبوبترین package manager است، مثال زیر نشان میدهد چگونه میتوان Bootstrap را نصب کرده و به هر پروژهای اضافه کرد.برای انجام این کار، یکی از دستورات زیر را در پوشه پروژه خود وارد کنید. (این در صورتی کار میکند که npm در پروژه شما از قبل نصب شده باشد):برای Bootstap 4:npm install bootstrapبرای Bootstrap 5:npm install bootstrap@nextاکنون کپی از نسخه موردنظر از Bootstrap در پوشهی node_modules پروژه شما دانلود میشود.بعد از نصب نسخه موردنظر Bootstrap:برای CSS:فایل bootstrap.min.css را در بخش &lt;head&gt; فایل HTML خود وارد کنید تا بتوانید از اجزای CSS مربوط به Bootstrap استفاده کنید.برای JS:فایل bootstrap.min.js را قبل از انتهای بخش &lt;body&gt; فایل HTML خود قرار دهید تا بتوانید از اجزای جاوااسکریپت Bootstrap استفاده کنید.توجه داشته باشید که فایلهای jquery.min.js و popper.min.js باید قبل از بارگذاری فایل bootstrap.min.js فراخوانی شود.استفاده از Bootstrap در HTML:پس از ادغام CSS نسخههای Bootstrap 4 یا 5 با HTML، میتوانید بهسادگی از کلاسهای Bootstrap استفاده کرده و فایلهای HTML خود را به شکلی که میخواهید استایلدهی کنید. برای آشنایی با کلاسهایی که میتوانید استفاده کنید و عملکرد هرکدام، به مستندات Bootstrap نسخه موردنظر خود مراجعه کنید. به همین صورت، بعد از ادغام جاوااسکریپت Bootstrap با HTML، میتوانید از اجزای JS مربوطه با استفاده از data attributes مستقیم در نشانهگذاری HTML یا با استفاده از jQuery بهره ببرید. همچنین برای درک نحوه عملکرد این اجزا و ویژگیهایی که ارائه میدهند، به مستندات Bootstrap مراجعه کنید.منبع: وبسایت میموک</description>
                <category>علیرضا تحریری</category>
                <author>علیرضا تحریری</author>
                <pubDate>Mon, 09 Dec 2024 23:39:20 +0330</pubDate>
            </item>
                    <item>
                <title>چطوری حالت تاریک (Dark Mode) را در Tailwind CSS فعال کنیم؟</title>
                <link>https://virgool.io/@alirezatahriri/%DA%86%D8%B7%D9%88%D8%B1%DB%8C-%D8%AD%D8%A7%D9%84%D8%AA-%D8%AA%D8%A7%D8%B1%DB%8C%DA%A9-dark-mode-%D8%B1%D8%A7-%D8%AF%D8%B1-tailwind-css-%D9%81%D8%B9%D8%A7%D9%84-%DA%A9%D9%86%DB%8C%D9%85-zlpgn5uk3oqq</link>
                <description>چطوری حالت تاریک (Dark Mode) را در Tailwind CSS فعال کنیم؟اگر قصد دارید حالت Dark Mode را در وبسایت خود فعال کنید، Tailwind CSS امکانات داخلی قدرتمندی برای این کار ارائه میدهد. این ویژگی به برنامهنویسان اجازه میدهد نسخهای تاریک از قالب وبسایت خود را بهراحتی طراحی و پیادهسازی کنند. با تنظیم Dark Mode در فایل تنظیمات Tailwind و استفاده از کلاس dark، میتوانید استایلهای تاریک (dark) را بهآسانی و بدون مشکل برای بخشهای مختلف وبسایت خود اعمال کنید.دو روش اصلی برای فعال کردن حالت تاریک در Tailwind CSS عبارتند از:فهرست مطالبپیکربندی حالت تاریک (dark mode) با استفاده از کلاس darkفعالسازی حالت تاریک (dark mode) با استفاده از جاوااسکریپتروش اول: استفاده از پیکربندی کلاس Darkروش پیکربندی کلاس Dark در Tailwind CSS با افزودن تنظیم &#x60;darkMode: &#x27;class&#x27;&#x60; به فایل کانفیگ، حالت تاریک (dark mode) را فعال میکند. این روش امکان اعمال استایلهای سفارشی برای حالت تاریک را با استفاده از پیشوند &#x60;dark:&#x60; فراهم کرده و تغییر تمها را از طریق اضافه کردن کلاس &#x60;dark&#x60; به عناصر ممکن میسازد.
    tailwind.config = {
        darkMode: &#039;class&#039;,
    }
مثال 1: در این مثال، از Tailwind CSS برای پیادهسازی حالت تاریک (dark mode) استفاده شده است. محتوای صفحه شامل یک عنوان و پاراگراف است که رنگ پسزمینه و متن آنها به صورت پویا بین تمهای روشن و تاریک تغییر میکند.&lt;!doctype html&gt;
&lt;html&gt;

&lt;head&gt;
    &lt;meta charset=&amp;quotUTF-8&amp;quot&gt;
    &lt;meta name=&amp;quotviewport&amp;quot content=&amp;quotwidth=device-width, initial-scale=1.0&amp;quot&gt;
    &lt;script src=&amp;quothttps://cdn.tailwindcss.com&amp;quot&gt;
    
    &lt;script src=
&amp;quothttps://cdn.tailwindcss.com?plugins=forms,typography,aspect-ratio,line-clamp&amp;quot&gt;
    
&lt;/head&gt;

    tailwind.config = {
        darkMode: &#039;class&#039;,
    }

&lt;style&gt;
    body {
        color: #fff;
        height: 800px;
    }

    .bg-white {
        height: 100%;
    }
&lt;/style&gt;

&lt;body class=&amp;quotdark&amp;quot&gt;
    &lt;div class=&amp;quotbg-white dark:bg-gray-900&amp;quot&gt;
        &lt;h1 class=&amp;quottext-gray-900 dark:text-white&amp;quot&gt;
            GeeksforGeeks&lt;/h1&gt;
        &lt;p class=&amp;quottext-gray-600 dark:text-gray-300&amp;quot&gt;
            GeeksforGeeks is Computer Science Education Portal.
        &lt;/p&gt;
        &lt;p&gt;GeeksforGeeks&lt;/p&gt;
    &lt;/div&gt;
&lt;/body&gt;

&lt;/html&gt;روش دوم: استفاده از قابلیت سوئیچ بین حالتها با جاوااسکریپتقابلیت سوئیچ با جاوااسکریپت، حالت تاریک را با سوئیچ کردن یک کلاس سفارشی (مثلاً .dark-mode) روی عناصر فعال میکند. توابع جاوااسکریپت بهصورت پویا این کلاس را اضافه یا حذف میکنند و به کاربران این امکان را میدهند که با کلیک کردن روی یک دکمه یا آیکون مشخص، بین حالت روشن (light) و تاریک (dark) سوئیچ کنند، مثال:onclick=&amp;quotdocument.body.classList.toggle(&#039;dark-mode&#039;)&amp;quotدر این مثال، ما حالت تاریک (dark) را با استفاده از یک کلاس سفارشی .dark-mode که در بخش &lt;style&gt; تعریف شده است، سوئیچ میکنیم. کلیک کردن روی دکمه &quot;Switch theme&quot; باعث تغییر رنگ پسزمینه و متن در عنصر &lt;body&gt; به حالت تاریک میشود.&lt;!doctype html&gt;
&lt;html&gt;

&lt;head&gt;
    &lt;meta charset=&amp;quotUTF-8&amp;quot&gt;
    &lt;meta name=&amp;quotviewport&amp;quot 
          content=&amp;quotwidth=device-width, 
                   initial-scale=1.0&amp;quot&gt;
    &lt;script src=&amp;quothttps://cdn.tailwindcss.com&amp;quot&gt;
    
    &lt;script src=
&amp;quothttps://cdn.tailwindcss.com?plugins=forms,typography,aspect-ratio,line-clamp&amp;quot&gt;
    
&lt;/head&gt;

&lt;style&gt;
    .dark-mode {
        background-color: rgb(12, 12, 23);
        color: white;
    }
&lt;/style&gt;

&lt;body class=&amp;quotdark-mode&amp;quot&gt;
    &lt;div class=&amp;quotjustify-center grid items-center h-screen&amp;quot&gt;
        &lt;div class=&amp;quotbg-dark-mode-white&amp;quot&gt;
            &lt;p class=&amp;quottext-dark-mode-black&amp;quot&gt;GeeksForGeeks&lt;/p&gt;

            &lt;button class=&amp;quotborder p-2&amp;quot 
                    =&amp;quotdocument.body.classList.toggle(&#039;dark-mode&#039;)&amp;quot&gt;
                Switch theme
            &lt;/button&gt;
        &lt;/div&gt;
    &lt;/div&gt;
&lt;/body&gt;

&lt;/html&gt;فعالسازی حالت تاریک در Tailwind CSS – سوالات متداولچگونه میتوانم رنگهای حالت تاریک را در Tailwind CSS سفارشیسازی کنم؟مراحل افزودن رنگهای سفارشی برای تمهای حالت تاریک (dark mode) در فایل tailwind.config.js.چرا حالت تاریک (dark mode) در پروژه Tailwind CSS من کار نمیکند؟رفع مشکلات رایج مانند تنظیمات نادرست در فایل tailwind.config.js یا ناسازگاری نسخه CDN با حالت تاریک (dark mode).در این مقاله با &#x60;چطوری حالت تاریک (Dark Mode) را در Tailwind CSS فعال کنیم؟&#x60; آشنا شدید. امیدوارم که این مقاله برای شما مفید بوده باشد. اگر هر سوال/مشکلی در خصوص این مقاله داشتید حتما در قسمت نطرات سایت با ما در میان بگذارید.منبع: وبسایت میموک</description>
                <category>علیرضا تحریری</category>
                <author>علیرضا تحریری</author>
                <pubDate>Sat, 07 Dec 2024 23:21:11 +0330</pubDate>
            </item>
                    <item>
                <title>تصور پرداخت با یک کلیک از حساب بانکی: انقلاب در راحتی و امنیت معاملات</title>
                <link>https://virgool.io/@alirezatahriri/%D8%AA%D8%B5%D9%88%D8%B1-%D9%BE%D8%B1%D8%AF%D8%A7%D8%AE%D8%AA-%D8%A8%D8%A7-%DB%8C%DA%A9-%DA%A9%D9%84%DB%8C%DA%A9-%D8%A7%D8%B2-%D8%AD%D8%B3%D8%A7%D8%A8-%D8%A8%D8%A7%D9%86%DA%A9%DB%8C-%D8%A7%D9%86%D9%82%D9%84%D8%A7%D8%A8-%D8%AF%D8%B1-%D8%B1%D8%A7%D8%AD%D8%AA%DB%8C-%D9%88-%D8%A7%D9%85%D9%86%DB%8C%D8%AA-%D9%85%D8%B9%D8%A7%D9%85%D9%84%D8%A7%D8%AA-ob0ppjtusuv2</link>
                <description>پیمان: راهکار پرداخت مستقیمدر دنیای پرشتاب امروز، فناوری‌های نوین، به ویژه در زمینه مالی، دگرگونی عظیمی در نحوه انجام معاملات و پرداخت‌ها ایجاد کرده‌اند. از سیستم‌های پیچیده بانکی تا برنامه‌های ساده موبایلی، هر کدام در تلاش‌اند تا راحتی و سرعت را برای کاربران به ارمغان بیاورند. در این میان، یکی از مهم‌ترین تحولات، پرداخت با یک کلیک از حساب بانکی است. این روش پرداخت نه تنها سرعت انجام تراکنش‌ها را افزایش می‌دهد، بلکه امنیت بیشتری را نیز به همراه دارد. در این مقاله، به بررسی این مفهوم و تاثیر آن بر زندگی روزمره، به‌ویژه در پرداخت‌های روزانه و مدیریت مالی، خواهیم پرداخت.پرداخت با یک کلیک: مفهومی ساده، اما کارآمدپرداخت با یک کلیک به معنای انجام تراکنش‌های مالی تنها با یک حرکت ساده است. در این روش، پس از وارد کردن اطلاعات حساب بانکی یک بار، کاربر می‌تواند تنها با یک کلیک، تمامی مراحل پرداخت را انجام دهد. این فرآیند می‌تواند برای خرید کالا و خدمات، پرداخت قبوض یا حتی تسویه حساب‌های مختلف در زندگی روزمره مورد استفاده قرار گیرد.در سیستم‌های پرداخت با یک کلیک، اطلاعات بانکی و کارت‌های اعتباری کاربران به‌صورت امن ذخیره می‌شود، و در هر تراکنش جدید، نیازی به وارد کردن مجدد اطلاعات نیست. این فرآیند باعث می‌شود تا انجام پرداخت‌ها سریع‌تر و راحت‌تر انجام شود.مزایای پرداخت با یک کلیکسرعت و راحتی بالا:در دنیای امروز، که همه چیز در حال تغییر و تحول است، سرعت اهمیت زیادی دارد. پرداخت با یک کلیک، بدون نیاز به وارد کردن اطلاعات مختلف هر بار، سرعت انجام تراکنش‌ها را به‌شدت افزایش می‌دهد. این ویژگی به‌ویژه برای پرداخت‌های روزانه و به‌طور کلی تراکنش‌هایی که به‌طور مکرر انجام می‌شوند، بسیار مفید است.کاهش خطای انسانی:یکی از مشکلات رایج در پرداخت‌های آنلاین، اشتباهات انسانی مانند وارد کردن اشتباه اطلاعات بانکی یا کارت اعتباری است. در روش پرداخت با یک کلیک، اطلاعات پس از وارد کردن یک بار، به‌طور خودکار برای استفاده‌های بعدی ذخیره می‌شود. این ویژگی احتمال اشتباهات انسانی را به حداقل می‌رساند.تجربه خرید راحت‌تر و به‌صرفه‌تر:خرید آنلاین با استفاده از سیستم پرداخت با یک کلیک، برای مشتریان تجربه‌ای راحت و سریع به ارمغان می‌آورد. افراد می‌توانند در عرض چند دقیقه تمامی خریدهای خود را انجام دهند، بدون اینکه نیازی به وارد کردن مجدد اطلاعات داشته باشند. این ویژگی برای افرادی که از خریدهای آنلاین به‌طور مداوم استفاده می‌کنند، بسیار مفید است.مدیریت بهتر مالی:از آنجا که پرداخت با یک کلیک نیازی به وارد کردن اطلاعات بانکی در هر بار خرید ندارد، این روش امکان نظارت و کنترل بهتر بر تراکنش‌ها و وضعیت مالی شخصی را فراهم می‌کند. این سیستم باعث می‌شود که افراد به‌راحتی پرداخت‌ها و تسویه حساب‌های خود را مدیریت کنند و در نتیجه از هزینه‌های اضافی جلوگیری نمایند.چالش‌های پرداخت با یک کلیکبا وجود تمامی مزایای این روش، چالش‌هایی نیز در مسیر استفاده از آن وجود دارد:مسائل امنیتی:امنیت اطلاعات بانکی یکی از بزرگ‌ترین نگرانی‌ها در سیستم‌های پرداخت با یک کلیک است. ذخیره اطلاعات کارت و حساب بانکی در سیستم‌های آنلاین، اگر به‌طور مناسب محافظت نشود، ممکن است منجر به سرقت یا تقلب شود. برای حل این مسئله، پلتفرم‌ها باید از رمزنگاری‌های پیچیده و سیستم‌های امنیتی مطمئن استفاده کنند تا اطلاعات کاربران در امنیت کامل قرار بگیرد.اعتماد به پلتفرم‌ها:برای استفاده از این سیستم، کاربران باید به پلتفرم‌ها و وب‌سایت‌هایی که اطلاعات بانکی خود را در آن‌ها ثبت کرده‌اند، اعتماد داشته باشند. این اعتماد در بسیاری از موارد می‌تواند چالش‌برانگیز باشد، به‌ویژه در صورتی که امنیت پلتفرم‌ها مورد تایید نباشد.محدودیت‌های قانونی و مقرراتی:برخی از کشورها قوانین خاصی برای استفاده از سیستم‌های پرداخت آنلاین دارند. این قوانین می‌توانند شامل مسائل مرتبط با حریم خصوصی و حفاظت از داده‌ها باشند. به همین دلیل، کاربران ممکن است نتوانند از خدمات پرداخت با یک کلیک در برخی مناطق یا کشورهای خاص استفاده کنند.آینده پرداخت با یک کلیکبا پیشرفت تکنولوژی و ارتقاء سیستم‌های امنیتی، استفاده از پرداخت با یک کلیک به روش اصلی انجام تراکنش‌ها تبدیل خواهد شد. در حال حاضر، بسیاری از بانک‌ها و پلتفرم‌های مالی در تلاش‌اند تا سیستم‌های خود را به‌گونه‌ای ارتقا دهند که هم راحتی بیشتری برای کاربران فراهم کنند و هم امنیت بیشتری را به آن‌ها ارائه دهند.در آینده، ممکن است پرداخت‌های با یک کلیک به‌طور کامل از هرگونه خطر امنیتی مصون شوند و قابلیت‌های جدیدی مانند تأسیس حساب‌های مشترک، پرداخت‌های گروهی، و حتی پرداخت‌های بین‌المللی بدون مرز نیز به این سیستم اضافه شود. این امر می‌تواند به‌طور گسترده‌ای در زندگی روزمره افراد تأثیر بگذارد و نحوه مدیریت مالی شخصی را دگرگون کند.نتیجه‌گیریپرداخت با یک کلیک، به‌ویژه در تراکنش‌های روزانه و خریدهای آنلاین، یکی از نوآوری‌های مهم در دنیای دیجیتال است که به طور قابل توجهی راحتی، سرعت و امنیت را برای کاربران به ارمغان می‌آورد. این روش پرداخت به‌طور خاص در شرایطی که سرعت و کارایی بالا مورد نیاز است، بهترین گزینه است. با این حال، چالش‌هایی مانند مسائل امنیتی و اعتماد به پلتفرم‌ها همچنان وجود دارند که باید به‌طور جدی به آن‌ها پرداخته شود. در نهایت، پرداخت با یک کلیک می‌تواند به یک ابزار انقلابی در مدیریت مالی شخصی تبدیل شود که نه تنها در پرداخت قبوض و خریدهای آنلاین، بلکه در تمامی جنبه‌های مالی زندگی روزمره افراد مؤثر باشد.در دنیای امروز، پیشرفت تکنولوژی به‌طور شگفت‌انگیزی روش‌های زندگی و کارکرد روزمره ما را تغییر داده است. یکی از این تغییرات مهم، نحوه انجام تراکنش‌های مالی است. پرداخت‌های آنلاین با استفاده از سیستم‌های مختلف پرداخت دیجیتال، که بیشتر از هر زمان دیگری در دسترس ما قرار دارند، به طرز چشمگیری تجربه خرید، پرداخت قبوض و انجام تراکنش‌ها را آسان‌تر و سریع‌تر کرده‌اند. در میان این روش‌ها، تصور پرداخت با یک کلیک از حساب بانکی، به‌ویژه در تراکنش‌های روزمره، به یکی از روش‌های محبوب و کارآمد تبدیل شده است. در این مقاله، به بررسی این مفهوم پرداخته و جنبه‌های مختلف آن را از جنبه‌های راحتی، امنیت، و تاثیرات آن بر مدیریت مالی کاربران تحلیل می‌کنیم.پرداخت با یک کلیک: مفهومی ساده، اما کارآمدتصور پرداخت با یک کلیک، به معنای انجام تراکنش‌های مالی تنها با یک حرکت ساده است. به‌طور خاص، این روش در قالب پلتفرم‌هایی مانند اپلیکیشن‌های موبایلی، وب‌سایت‌های فروشگاهی و حتی برنامه‌های کاربردی مختلف مالی معرفی می‌شود. در این سیستم‌ها، کاربران تنها با ثبت اطلاعات بانکی خود، از جمله شماره کارت یا جزئیات حساب، می‌توانند با یک کلیک، خرید خود را تکمیل کرده و مبلغ مورد نظر را پرداخت کنند. این فرآیند بسیار ساده است و نیاز به وارد کردن مجدد اطلاعات بانکی برای هر تراکنش جدید را از بین می‌برد.به عنوان مثال، در بسیاری از اپلیکیشن‌های پرداخت، پس از وارد کردن جزئیات حساب برای یک بار، می‌توان از آن برای پرداخت‌های بعدی استفاده کرد و تنها با یک لمس یا کلیک، تراکنش به‌سرعت انجام می‌شود. این روش علاوه بر اینکه سرعت انجام تراکنش‌ها را بالا می‌برد، به‌طور قابل توجهی از میزان خطا و اشتباهات انسانی نیز می‌کاهد.چرا پرداخت با یک کلیک محبوب است؟راحتی و سرعت بالا:در دنیای پرشتاب امروز، همه ما به دنبال راه‌هایی برای تسهیل کارهای روزمره خود هستیم. پرداخت‌های آنلاین با یک کلیک، راهی سریع و راحت برای انجام تراکنش‌ها است. نیازی به وارد کردن طولانی اطلاعات نیست و کاربر تنها با چند حرکت ساده، پرداخت را انجام می‌دهد.کاهش اشتباهات انسانی:هنگامی که اطلاعات بانکی یکبار به‌درستی وارد شود، نیازی به وارد کردن مجدد آن برای هر خرید جدید نخواهد بود. این یعنی کمتر شدن احتمال اشتباه در وارد کردن شماره کارت یا تاریخ انقضا که ممکن است به تأخیر در انجام تراکنش یا حتی رد شدن آن منجر شود.تجربه خرید راحت‌تر برای مصرف‌کنندگان:بسیاری از فروشگاه‌های آنلاین و پلتفرم‌های خدماتی برای جذب مشتریان بیشتر و ارائه تجربه خرید بهتر، از گزینه پرداخت با یک کلیک استفاده می‌کنند. این روش به کاربران این امکان را می‌دهد که به‌راحتی و بدون نیاز به وارد کردن مجدد اطلاعات، خریدهای خود را به سرعت انجام دهند و به راحتی از خدمات استفاده کنند.مزایای پرداخت با یک کلیکتسهیل فرآیند خرید:تصور کنید وارد یک وب‌سایت خرید آنلاین می‌شوید و تنها با یک کلیک، تمامی مراحل پرداخت انجام می‌شود. این راحتی برای کسانی که زمان زیادی برای وارد کردن جزئیات پرداخت ندارند، بسیار جذاب است.افزایش وفاداری مشتری:از آنجا که فرآیند خرید با یک کلیک بسیار راحت است، احتمال خریدهای مکرر و تکراری از همان فروشگاه یا پلتفرم افزایش می‌یابد. این امر باعث می‌شود تا مشتریان وفادارتر شوند و فروشندگان نیز از این طریق سود بیشتری کسب کنند.کاهش سبدهای خرید رها شده:یکی از چالش‌های بزرگ فروشگاه‌های آنلاین، سبدهای خرید رها شده است. وقتی فرآیند پرداخت پیچیده و زمان‌بر باشد، بسیاری از مشتریان از تکمیل خرید خود منصرف می‌شوند. اما با استفاده از پرداخت با یک کلیک، این مشکل به‌شدت کاهش می‌یابد، زیرا فرآیند خرید سریع‌تر و بدون دردسر است.کاهش ریسک تقلب:در برخی از روش‌های پرداخت آنلاین، اطلاعات کارت بانکی هر بار وارد می‌شود که این ممکن است منجر به افزایش خطر تقلب یا سرقت اطلاعات شود. اما در سیستم‌هایی که پرداخت با یک کلیک را فراهم می‌کنند، با استفاده از رمزنگاری و امنیت بالای اطلاعات، احتمال این خطرات به حداقل می‌رسد.چالش‌های پرداخت با یک کلیکهرچند که پرداخت با یک کلیک مزایای زیادی دارد، اما چالش‌هایی نیز به‌دنبال دارد که باید به آن‌ها توجه کرد:مسائل امنیتی:یکی از بزرگ‌ترین نگرانی‌ها در خصوص پرداخت با یک کلیک، امنیت اطلاعات کاربران است. اطلاعات حساب بانکی و کارت‌های بانکی به‌صورت آنلاین ذخیره می‌شود و اگر سیستم امنیتی پلتفرم مورد استفاده ضعیف باشد، ممکن است این اطلاعات در معرض خطر قرار بگیرد.محدودیت‌های قانونی و مقرراتی:در برخی کشورها و مناطق، قوانین خاصی برای استفاده از سیستم‌های پرداخت آنلاین وجود دارد که ممکن است مانع از استفاده گسترده از پرداخت با یک کلیک شود. به همین دلیل، برخی از کاربران ممکن است نتوانند از این سرویس‌ها استفاده کنند.اعتماد به پلتفرم‌ها:برای استفاده از این سیستم‌ها، کاربران باید به پلتفرم‌ها و وب‌سایت‌هایی که اطلاعات بانکی خود را در آن‌ها ثبت می‌کنند، اعتماد کنند. عدم اعتماد به امنیت پلتفرم‌ها ممکن است باعث شود که افراد از استفاده از این سیستم‌ها خودداری کنند.آینده پرداخت با یک کلیکبا توجه به روند پیشرفت تکنولوژی و بهبود ابزارهای امنیتی، می‌توان گفت که در آینده‌ای نزدیک، پرداخت با یک کلیک به روش غالب انجام تراکنش‌ها تبدیل خواهد شد. بسیاری از بانک‌ها و مؤسسات مالی در حال کار بر روی تقویت سیستم‌های امنیتی خود هستند تا کاربران با اطمینان بیشتری از این روش استفاده کنند.نتیجه‌گیریپرداخت با یک کلیک، انقلابی در دنیای پرداخت‌های آنلاین است که راحتی، سرعت و امنیت را برای کاربران به ارمغان می‌آورد. این روش، نه‌تنها تجربه خرید و پرداخت را برای کاربران راحت‌تر کرده است، بلکه به فروشندگان و کسب‌وکارها نیز این امکان را می‌دهد تا فروش خود را افزایش دهند و مشتریان وفادارتری جذب کنند. البته با تمام مزایای آن، مسائل امنیتی و اعتماد به پلتفرم‌ها همچنان از چالش‌های اصلی این روش به شمار می‌آید که باید در آینده به‌طور جدی‌تر بررسی و حل شوند.#پرداخت_مستقیم_پیمان</description>
                <category>علیرضا تحریری</category>
                <author>علیرضا تحریری</author>
                <pubDate>Sat, 07 Dec 2024 23:13:12 +0330</pubDate>
            </item>
                    <item>
                <title>آموزش استفاده از ماژول‌ها برای بهینه‌سازی کد در جاوااسکریپت</title>
                <link>https://virgool.io/@alirezatahriri/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-%D9%85%D8%A7%DA%98%D9%88%D9%84-%D9%87%D8%A7-%D8%A8%D8%B1%D8%A7%DB%8C-%D8%A8%D9%87%DB%8C%D9%86%D9%87-%D8%B3%D8%A7%D8%B2%DB%8C-%DA%A9%D8%AF-%D8%AF%D8%B1-%D8%AC%D8%A7%D9%88%D8%A7%D8%A7%D8%B3%DA%A9%D8%B1%DB%8C%D9%BE%D8%AA-qs5nvagp2phl</link>
                <description> آموزش استفاده از ماژول‌ها برای بهینه‌سازی کد در جاوااسکریپتماژول‌های جاوااسکریپت (JavaScript modules) ابزاری قدرتمند برای کپسوله‌سازی (encapsulation) و سازمان‌دهی کد (organizing code) هستند که با تقسیم آن به فایل‌ها یا ماژول‌های مستقل (independent modules)، مدیریت برنامه‌های پیچیده (complex applications) و نگهداری (maintainability) آن‌ها را ساده‌تر می‌کنند. این ماژول‌ها کد را به بخش‌های کوچک‌تر و قابل استفاده مجدد (reusable parts) تقسیم می‌کنند که دارای رابط‌های کاملاً تعریف‌شده (well-defined interfaces) هستند. این رویکرد به نوشتن کدی تمیزتر (cleaner code)، کاهش تداخل در نام متغیرها و توابع (naming conflicts)، و افزایش قابلیت استفاده مجدد (reusability) کمک می‌کند. در میان انواع قالب‌های موجود برای ماژول‌ها (module formats)، ES6 modules به‌عنوان استانداردی در جاوااسکریپت مدرن (modern JavaScript) شناخته می‌شوند.ایجاد ماژول:در یک ES6 module، هر فایل جاوااسکریپت به‌عنوان یک ماژول در نظر گرفته می‌شود. شما می‌توانید با استفاده از کلمه کلیدی export توابع (functions)، متغیرها (variables) یا کلاس‌ها (classes) را خروجی بگیرید (export):// math.js (module file)
   export function add(a, b) {
     return a + b;
   }

   // main.js
   import { add } from &#039;./math.js&#039;;

   const result = add(2, 3);
   console.log(result); // 5خروجی پیش‌فرض (Default Exports):شما می‌توانید یک مقدار &quot;default&quot; را از یک ماژول خروجی بگیرید، که برای خروجی گرفتن از یک تابع (function) یا کلاس (class) به‌عنوان خروجی اصلی ماژول بسیار کاربردی است:// calculator.js (module file)
   export default function add(a, b) {
     return a + b;
   }

   // main.js
   import add from &#039;./calculator.js&#039;;

   const result = add(2, 3);
   console.log(result); // 5فراخوانی ماژول‌ها (Importing Modules):شما می‌توانید مقادیر export شده را از سایر ماژول‌ها با استفاده از دستور import فراخوانی کنید. این امکان به شما اجازه می‌دهد تا از قابلیت‌های موجود در فایل‌های دیگر، در داخل برنامه خود استفاده کنید:// main.js
   import { add } from &#039;./math.js&#039;;

   const result = add(2, 3);
   console.log(result); // 5مزایای ماژول‌ها (Module Benefits):+ Encapsulation (کپسوله‌سازی): ماژول‌ها به شما امکان می‌دهند عملکردها را کپسوله کنید، خطر تداخل در متغیرهای سراسری (global variable conflicts) را به حداقل برسانید و ساختاری سازمان‌یافته‌تر برای کد خود ایجاد کنید.+ Reusability (قابلیت استفاده مجدد): ماژول‌ها به شما این قابلیت را می‌دهند تا به‌راحتی از بخش‌های کدنویسی‌شده در قسمت‌های مختلف برنامه یا حتی پروژه‌های دیگر بهره ببرید.+ Maintenance (نگهداری): ماژول‌ها فرآیند مدیریت و به‌روزرسانی بخش‌های جداگانه کد را آسان‌تر می‌کنند، به گونه‌ای که تغییرات در یک بخش تأثیری بر کل برنامه نخواهد داشت.+ Dependency Management (مدیریت وابستگی‌ها): با ماژول‌ها می‌توانید وابستگی‌ها را بین بخش‌های مختلف برنامه به‌طور شفاف تعریف کنید، که این کار باعث می‌شود روابط میان اجزای مختلف برنامه به‌راحتی قابل درک و پیگیری باشد.استفاده از JavaScript modules یکی از اصول کلیدی best practices در ساختاردهی و سازمان‌دهی کد در برنامه‌های مدرن جاوااسکریپت است. این رویکرد مزایایی مانند modularity (ماژولار بودن)، maintainability (نگهداری‌پذیری) و reusability (قابلیت استفاده مجدد) را ارائه می‌دهد، که همگی برای توسعه نرم‌افزارهای مقیاس‌پذیر (scalable) و قابل نگهداری حیاتی هستند.منبع: وبسایت میموک</description>
                <category>علیرضا تحریری</category>
                <author>علیرضا تحریری</author>
                <pubDate>Mon, 18 Nov 2024 20:33:02 +0330</pubDate>
            </item>
                    <item>
                <title>۱۱ تکنیک طلایی برای بهینه‌سازی پایگاه داده: افزایش عملکرد و کارایی</title>
                <link>https://virgool.io/@alirezatahriri/%DB%B1%DB%B1-%D8%AA%DA%A9%D9%86%DB%8C%DA%A9-%D8%B7%D9%84%D8%A7%DB%8C%DB%8C-%D8%A8%D8%B1%D8%A7%DB%8C-%D8%A8%D9%87%DB%8C%D9%86%D9%87-%D8%B3%D8%A7%D8%B2%DB%8C-%D9%BE%D8%A7%DB%8C%DA%AF%D8%A7%D9%87-%D8%AF%D8%A7%D8%AF%D9%87-%D8%A7%D9%81%D8%B2%D8%A7%DB%8C%D8%B4-%D8%B9%D9%85%D9%84%DA%A9%D8%B1%D8%AF-%D9%88-%DA%A9%D8%A7%D8%B1%D8%A7%DB%8C%DB%8C-ftpz0mcgy0zs</link>
                <description> ۱۱ تکنیک طلایی برای بهینه‌سازی پایگاه داده: افزایش عملکرد و کاراییپایگاه داده معمولاً یکی از بخش‌های کند در عملکرد نرم‌افزارها است. داشتن پایگاه داده‌ای که خوب بهینه شده باشد برای سیستم‌های پرسرعت ضروری است. در ادامه چند تکنیک کاربردی برای بهینه‌سازی پایگاه داده معرفی می‌کنم:1. Indexingایجاد ایندکس‌ها: ایندکس‌ها مثل فهرست هستند و به پایگاه داده کمک می‌کنند که اطلاعات موردنیاز را سریع‌تر پیدا کند. با مرتب کردن داده‌ها، ایندکس‌ها باعث می‌شوند تا پایگاه داده راحت‌تر سطرهایی را که شرط WHERE را دارند پیدا کند و سرعت کوئری‌های SELECT افزایش یابد. البته، ایندکس‌ها ممکن است سرعت عملیات نوشتن (مثل INSERT و UPDATE) را کمی کند کنند، پس باید بین سرعت خواندن و نوشتن تعادل برقرار کنیم.CREATE INDEX idx_username ON users(username);2. Using Composite Indexesایندکس‌های ترکیبی: ایندکس‌های ترکیبی شامل چند ستون هستند و برای وقتی که در کوئری‌ها باید چند شرط مختلف بررسی یا داده‌ها بر اساس چند ستون مرتب شوند، کاربرد دارند. این کار باعث می‌شود به جای ایندکس‌های جداگانه روی هر ستون، فقط یک ایندکس استفاده کنیم و پایگاه داده سریع‌تر به نتیجه برسد.CREATE INDEX idx_name_age ON employees(name, age);3. Normalization and Denormalizationنرمال‌سازی (Normalization): این فرآیند داده‌ها را به گونه‌ای سازمان‌دهی می‌کند که از تکرار و وابستگی‌های غیرضروری کاسته شود و احتمال خطا در داده‌ها کاهش یابد. با تقسیم جداول بزرگ به جداول کوچک و مرتبط، نرمال‌سازی به یکپارچگی داده‌ها کمک می‌کند. البته، ممکن است کوئری‌ها را پیچیده‌تر کند.مثال کد SQL (Normalization در فرم سوم):CREATE TABLE customers (
    customer_id INT PRIMARY KEY,
    customer_name VARCHAR(100),
    address VARCHAR(255)
);

CREATE TABLE orders (
    order_id INT PRIMARY KEY,
    customer_id INT,
    order_date DATE,
    FOREIGN KEY (customer_id) REFERENCES customers(customer_id)
);دنرمال‌سازی (Denormalization): در حالی که نرمال‌سازی از تکرار داده‌ها جلوگیری می‌کند، دنرمال‌سازی با افزودن تکرار به‌صورت کنترل‌شده، سرعت کوئری‌ها را (به‌ویژه برای عملیات خواندن زیاد) افزایش می‌دهد. این کار ممکن است شامل افزودن ستون‌ها یا جداول تکراری به شکل استراتژیک باشد تا دسترسی به داده‌ها سریع‌تر انجام شود.CREATE TABLE denormalized_orders (
    order_id INT PRIMARY KEY,
    customer_id INT,
    customer_name VARCHAR(100),
    order_date DATE
);4. Query Optimizationبهینه‌سازی کوئری‌ها: کوئری‌هایی که زیاد استفاده می‌شوند را به‌طور مرتب بررسی و بهینه‌سازی کنید. از ابزارهایی مثل EXPLAIN استفاده کنید تا برنامه اجرای کوئری را ببینید و نقاط قابل بهبود را شناسایی کنید.EXPLAIN SELECT * FROM orders WHERE customer_id = 123;**اجتناب از استفاده از SELECT ***: به‌جای انتخاب همه ستون‌ها، فقط ستون‌های موردنیاز را بازیابی کنید. این کار مقدار داده‌های منتقل‌شده و پردازش‌شده را کاهش می‌دهد و عملکرد کوئری را بهبود می‌بخشد.SELECT order_id, order_date FROM orders WHERE customer_id = 123;5. Partitioningپارتیشن‌بندی جداول: پارتیشن‌بندی به معنای تقسیم جداول بزرگ به قطعات کوچکتر و قابل مدیریت‌تر است. این کار می‌تواند عملکرد کوئری را به‌طور قابل‌توجهی بهبود بخشد، زیرا موتور پایگاه داده می‌تواند بر روی زیرمجموعه‌های کوچکتر داده کار کند و به این ترتیب زمان اجرای کوئری کاهش می‌یابد.CREATE TABLE sales (
    sale_id INT PRIMARY KEY,
    sale_date DATE,
    amount DECIMAL(10, 2)
) PARTITION BY RANGE (YEAR(sale_date)) (
    PARTITION p0 VALUES LESS THAN (1990),
    PARTITION p1 VALUES LESS THAN (2000),
    PARTITION p2 VALUES LESS THAN (2010),
    PARTITION p3 VALUES LESS THAN (2020),
    PARTITION p4 VALUES LESS THAN (MAXVALUE)
);پارتیشن‌پروینیگ (Partition Pruning): اطمینان حاصل کنید که برنامه‌ریز کوئری در حین اجرای کوئری، پارتیشن‌های غیرضروری را حذف می‌کند. این کار از اسکن کل مجموعه داده جلوگیری می‌کند و به بهبود عملکرد کمک می‌کند.SELECT * FROM sales WHERE sale_date &gt;= &#039;2022-01-01&#039; AND sale_date &lt; &#039;2023-01-01&#039;;6. Cachingکشینگ کوئری: یک مکانیزم کش برای ذخیره نتایج کوئری‌های پرکاربرد پیاده‌سازی کنید. این کار بار روی پایگاه داده را کاهش می‌دهد و با ارائه نتایج کش‌شده، زمان پاسخگویی را افزایش می‌دهد.-- Pseudocode
DECLARE @cacheKey NVARCHAR(255) = &#039;query_cache_key&#039;;
DECLARE @cachedResult NVARCHAR(MAX);

SET @cachedResult = REDIS.GET(@cacheKey);

IF @cachedResult IS NULL
BEGIN
    -- Execute the query and store the result in the cache
    SET @cachedResult = EXECUTE_QUERY(&#039;SELECT * FROM large_table&#039;);
    REDIS.SET(@cacheKey, @cachedResult, EXPIRY_TIME);
END

-- Use @cachedResult for further processingکشینگ شیء (Object Caching): اشیاء یا داده‌های پرکاربرد را در لایه اپلیکیشن کش کنید تا تعداد کوئری‌ها به پایگاه داده کاهش یابد. این کار می‌تواند با استفاده از کتابخانه‌ها یا فریم‌ورک‌های کشینگ در حافظه انجام شود.from django.core.cache import cache

def get_user_data(user_id):
    # Try to fetch user data from cache
    user_data = cache.get(f&#039;user_{user_id}&#039;)

    if user_data is None:
        # If not in cache, fetch from the database
        user_data = User.objects.get(id=user_id)

        # Store the data in cache for future requests
        cache.set(f&#039;user_{user_id}&#039;, user_data, TIMEOUT)

    return user_data7. Regular Maintenanceبه‌روزرسانی آمار: به‌روز نگه‌داشتن آمار برای برنامه‌ریز کوئری بسیار مهم است تا تصمیمات بهتری درباره برنامه‌های اجرایی بگیرد. به‌طور منظم آمار را به‌روزرسانی کنید تا از بهینه‌سازی دقیق و کارآمد کوئری‌ها اطمینان حاصل شود.-- Update statistics for a table
UPDATE STATISTICS table_name;8. Data Archivingبایگانی داده‌ها: داده‌های قدیمی که دیگر به آن‌ها نیازی نیست را بایگانی یا حذف کنید. این کار می‌تواند عملکرد کوئری‌ها را بهبود بخشد و نیاز به فضای ذخیره‌سازی را کاهش دهد، به‌ویژه در سیستم‌هایی که دارای مجموعه‌داده‌های تاریخی بزرگ هستند.-- Archive data older than a certain date
DELETE FROM historical_data WHERE date &lt; &#039;2020-01-01&#039;;9. Hardware Optimizationبهینه‌سازی پیکربندی سرور: تنظیمات و پیکربندی‌های سرور پایگاه داده را بر اساس بار کاری و قابلیت‌های سخت‌افزاری تنظیم کنید. این شامل پارامترهایی مانند اندازه بافرها، تنظیمات کش و محدودیت‌های اتصال می‌شود.-- Example: Increase the size of the query cache
SET GLOBAL query_cache_size = 256M;استفاده از SSDها: از درایوهای حالت جامد (SSDs) برای ذخیره‌سازی استفاده کنید. SSDها به‌طور قابل توجهی نسبت به درایوهای سخت (HDDها) دسترسی سریع‌تری به داده‌ها ارائه می‌دهند که منجر به بهبود عملکرد کلی پایگاه داده می‌شود.10. Concurrency Controlسطوح ایزولاسیون: سطوح ایزولاسیون را بر اساس نیازهای اپلیکیشن خود تنظیم کنید. سطوح ایزولاسیون کنترل می‌کنند که تغییرات ایجاد شده توسط یک تراکنش برای سایر تراکنش‌ها چقدر قابل مشاهده باشد. انتخاب سطح ایزولاسیون مناسب برای برقراری تعادل بین سازگاری و عملکرد بسیار مهم است.-- Set isolation level to READ COMMITTED
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;11. Using Connection PoolingUsing Connection Pooling: از اتصال‌های پایگاه داده استفاده مجدد کنید تا از بار اضافی ایجاد اتصال‌های جدید برای هر درخواست جلوگیری شود. اتصال‌های استخر به بهینه‌سازی مدیریت و استفاده مجدد از اتصالات پایگاه داده کمک می‌کنند و از این رو عملکرد کلی اپلیکیشن را بهبود می‌بخشند.// Example using Node.js with mysql2
const pool = mysql.createPool({
    host: &#039;localhost&#039;,
    user: &#039;root&#039;,
    password: &#039;password&#039;,
    database: &#039;my_database&#039;,
    connectionLimit: 10
});

// Using a connection from the pool
pool.getConnection((err, connection) =&gt; {
    if (err) throw err;
    // Use the connection
    connection.query(&#039;SELECT * FROM users&#039;, (error, results) =&gt; {
        // Release the connection back to the pool
        connection.release();
    });
});نتیجه‌گیریبهینه‌سازی پایگاه داده یک فرآیند مستمر است که شامل ارزیابی و بهبود مداوم است. با پیاده‌سازی این تکنیک‌ها می‌توانید عملکرد پایگاه داده را بهبود بخشید و تجربه کاربری بهتری برای کاربران خود فراهم کنید. توجه داشته باشید که انتخاب تکنیک‌ها باید بر اساس نیازهای خاص اپلیکیشن شما و نوع بار کاری انجام شود.منبع: وبسایت میموک</description>
                <category>علیرضا تحریری</category>
                <author>علیرضا تحریری</author>
                <pubDate>Thu, 31 Oct 2024 00:07:09 +0330</pubDate>
            </item>
                    <item>
                <title>راهنمای کامل استفاده از Math.trunc() در جاوااسکریپت زمان مطالعه:4دقیقه</title>
                <link>https://virgool.io/@alirezatahriri/%D8%B1%D8%A7%D9%87%D9%86%D9%85%D8%A7%DB%8C-%DA%A9%D8%A7%D9%85%D9%84-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-mathtrunc-%D8%AF%D8%B1-%D8%AC%D8%A7%D9%88%D8%A7%D8%A7%D8%B3%DA%A9%D8%B1%DB%8C%D9%BE%D8%AA-%D8%B2%D9%85%D8%A7%D9%86-%D9%85%D8%B7%D8%A7%D9%84%D8%B9%D9%874%D8%AF%D9%82%DB%8C%D9%82%D9%87-r7pm0qedui1w</link>
                <description>راهنمای کامل استفاده از Math.trunc() در جاوااسکریپت
زمان مطالعه:4دقیقه
این متد که در نسخه ES6 جاوااسکریپت معرفی شده که با حذف قسمت اعشاری، بخش صحیح یک عدد را برمی‌گرداند. برخلاف روش‌های گرد کردن که عدد را به بالا یا پایین تغییر می‌دهند، ()Math.trunc فقط اعشار را حذف کرده و عدد صحیح را بدون هیچ تغییری برمی گرداند، مثال:console.log(Math.trunc(13.37));
// Expected output: 13

console.log(Math.trunc(42.84));
// Expected output: 42

console.log(Math.trunc(0.123));
// Expected output: 0

console.log(Math.trunc(-0.123));
// Expected output: -0ساختار (Syntax)Math.trunc(x)پارامترها (Parameters)X: عددی که باید پردازش شود.مقدار بازگشتی (Return Value)بخش صحیح عدد X.توضیحات (Description)برخلاف سه متد دیگر در Math یعنی Math.floor() ، Math.ceil و ()Math.round، متد ()Math.trunc بسیار ساده عمل می‌کند. این متد، نقطه و ارقام سمت راست آن را حذف می‌کند، بدون توجه به اینکه عدد مثبت یا منفی باشد.  از آنجایی که trunc یک متد ایستا (static) در Math است، همیشه به صورت ()Math.trunc استفاده می‌شود و نیازی به ساختن یک شیء جدید از Math نیست (چرا که Math یک constructor نیست).مثال‌ها (Examples)استفاده از ()Math.truncMath.trunc(-Infinity); // -Infinity
Math.trunc(&amp;quot-1.123&amp;quot);  // -1
Math.trunc(-0.123);    // -0
Math.trunc(-0);        // -0
Math.trunc(0);         // 0
Math.trunc(0.123);     // 0
Math.trunc(13.37);     // 13
Math.trunc(42.84);     // 42
Math.trunc(Infinity);  // Infinityاستفاده از عملگرهای بیت‌وایز برای حذف اعشار (Using Bitwise No-Ops to Truncate Numbers)در جاوااسکریپت، می‌توان از عملگرهای بیت‌وایز برای حذف قسمت اعشاری عدد استفاده کرد. این روش‌ها به‌طور خودکار عدد را به مقدار صحیح آن تبدیل می‌کنند، مشابه عملکرد ()Math.trunc . به عنوان مثال:console.log(13.37 | 0);   // 13
console.log(42.84 | 0);   // 42
console.log(-0.123 | 0);  // 0
console.log(-13.37 | 0);  // -13عملیات بیت‌وایز عملگرهای خود را به اعداد صحیح 32 بیتی تبدیل می‌کنند و در طول تاریخ، برنامه‌نویسان از این ویژگی برای کوتاه کردن اعداد اعشاری استفاده کرده‌اند. تکنیک‌های رایج عبارتند از:const original = 3.14;
const truncated1 = ~~original; // Double negation
const truncated2 = original &amp; -1; // Bitwise AND with -1
const truncated3 = original | 0; // Bitwise OR with 0
const truncated4 = original ^ 0; // Bitwise XOR with 0
const truncated5 = original &gt;&gt; 0; // Bitwise shifting by 0توجه داشته باشید: این عمل در واقع به toInt32 شبیه است که با Math.trunc متفاوت است. اگر مقداری که می‌خواهیم تبدیل کنیم بین اعداد  −2147483649 تا 2147483648 نباشد، عمل تبدیل با خطای سرریز (Overflow Error) مواجه می‌شود.const a = ~~2147483648; // -2147483648
const b = ~~-2147483649; // 2147483647
const c = ~~4294967296; // 0تنها زمانی از ~~ به عنوان جایگزینی برای Math.trunc() استفاده کنید که مطمئن باشید ورودی‌ها در محدوده اعداد صحیح 32 بیتی قرار دارند.در این مقاله با &#x60;متد Math.trunc در جاوااسکریپت&#x60; آشنا شدید. امیدوارم که این مقاله برای شما مفید بوده باشد. اگر هر سوال/مشکلی در خصوص این مقاله داشتید حتما در قسمت نطرات سایت با ما در میان بگذارید.منبع: وبسایت میموک</description>
                <category>علیرضا تحریری</category>
                <author>علیرضا تحریری</author>
                <pubDate>Tue, 29 Oct 2024 14:52:09 +0330</pubDate>
            </item>
                    <item>
                <title>اصول SOLID در PHP: بهترین روش‌ها برای نوشتن کد تمیز و مقیاس‌پذیر</title>
                <link>https://virgool.io/@alirezatahriri/%D8%A7%D8%B5%D9%88%D9%84-solid-%D8%AF%D8%B1-php-%D8%A8%D9%87%D8%AA%D8%B1%DB%8C%D9%86-%D8%B1%D9%88%D8%B4-%D9%87%D8%A7-%D8%A8%D8%B1%D8%A7%DB%8C-%D9%86%D9%88%D8%B4%D8%AA%D9%86-%DA%A9%D8%AF-%D8%AA%D9%85%DB%8C%D8%B2-%D9%88-%D9%85%D9%82%DB%8C%D8%A7%D8%B3-%D9%BE%D8%B0%DB%8C%D8%B1-ebnfmxuux3io</link>
                <description> اصول SOLID در PHP: بهترین روش‌ها برای نوشتن کد تمیز و مقیاس‌پذیرSOLID چیست؟شاید تا به حال این اصطلاح SOLID را در تقریباً هر شرح شغلی شنیده باشید و از خود بپرسید چرا اینقدر مهم است. اصول SOLID مجموعه‌ای از پنج راهنمای طراحی هستند که هدف آن‌ها قابل فهم‌تر کردن، انعطاف‌پذیرتر کردن و نگهداری آسان‌تر طراحی‌های نرم‌افزار است. این اصول به طور گسترده در برنامه‌نویسی شی‌ءگرا استفاده می‌شوند، اگرچه می‌توان آن‌ها را در سایر پارادایم‌ها نیز به کار برد.ارکان اصول SOLIDکلمه اختصاری SOLID به معنای:اصل مسئولیت یگانه (SRP)اصل باز-بسته (OCP)اصل جایگزینی لیسکوف (LSP)اصل جداسازی رابط (ISP)اصل وارونگی وابستگی (DIP)1. اصل مسئولیت یگانه (Single Responsibility Principle)یک کلاس باید تنها یک دلیل یا هدف برای سرویس‌دهی داشته باشد. به این معنا که کلاس باید تنها یک مسئولیت داشته باشد. من هرکدام را به همراه مثال‌هایی در PHP توضیح خواهم داد.// Single Responsibility Principle

// Shouldn&#039;t do
class Report {
    public function generate() {
        // generating report
    }

    public function saveToFile($filename) {
        // save report to file
    }
}

// Should do
class Report {
    public function generate() {
        // generating report
    }
}

class ReportSaver {
    public function saveToFile(Report $report, $filename) {
        // save report to file
    }
}2. اصل باز-بسته (Open-Closed Principle)اشیا باید برای توسعه باز و برای تغییر بسته باشند. به این معنا که اشیا (کلاس‌ها، توابع، ماژول‌ها و غیره) باید قابلیت گسترش توسط اشیای دیگر را داشته باشند، اما نباید اجازه تغییر مستقیم در آن‌ها داده شود.// Open Close Principle

// Shouldn&#039;t do
class Rectangle {
    public $width;
    public $height;
}

function area($rectangle) {
    return $rectangle-&gt;width * $rectangle-&gt;height;
}

// Should do
interface Shape {
    public function area();
}

class Rectangle implements Shape {
    public $width;
    public $height;

    public function area() {
        // w * h
    }
}

class Circle implements Shape {
    public $radius;

    public function area() {
        // πr2
    }
}3. اصل جایگزینی لیسکوف (Liskov Substitution Principle)این به این معناست که اشیای یک کلاس والد باید بتوانند بدون تأثیر بر درستی برنامه، با اشیای کلاس‌های فرزند جایگزین شوند. این یعنی برنامه باید بتواند به‌درستی با اشیای کلاس‌های فرزند همان‌طور که با کلاس والد کار می‌کند، کار کند. حالا برای روشن‌تر شدن این موضوع، بیایید کد نمونه را ببینیم.// Liskov Substitution Principle

// Shouldn&#039;t do
class Animal {
    public function jump() {
        // code for jumping
    }
}

class Snail extends Animal {
    public function jump() {
        // Sanil can&#039;t jump
    }
}

// Good example
abstract class Animal {
    abstract public function eat();
}

class Snail extends Bird {
    public function eat() {
        // every animal can eat
    }
}

class Tiger extends Bird {
    public function eat() {
        // every animal can eat
    }
}4. اصل جداسازی رابط (Interface Segregation Principle)نباید اشیا را مجبور کنیم که رابط‌هایی را پیاده‌سازی کنند که به آن‌ها نیازی ندارند. ما باید رابط‌ها را به گونه‌ای طراحی کنیم که در بیشتر موارد انعطاف‌پذیر باشند.// Interface Segregation Principle

// Shouldn&#039;t do
interface Human {
    public function walk();
    public function swim(); // not everyone can swim
}

// Should do
interface Walkable {
    public function walk();
}

interface Swimmable {
    public function swim();
}

class People implements Walkable, Swimmable {
    public function walk() {
        // walking
    }

    public function swim() {
        // swimming
    }
}5. اصل وارونگی وابستگی (Dependency Inversion Principle)این اصل با معرفی یک لایه انتزاعی بین ماژول‌های سطح بالا (که عملکرد پیچیده‌ای را ارائه می‌دهند) و ماژول‌های سطح پایین (که عملکردهای پایه‌ای را فراهم می‌کنند)، هدفش جدا کردن این دو نوع ماژول است. این لایه انتزاعی باعث می‌شود که هم ماژول‌های سطح بالا و هم سطح پایین به انتزاعات وابسته باشند، نه به پیاده‌سازی‌های ثابت. نتیجه این کار افزایش انعطاف‌پذیری، توسعه‌پذیری و قابلیت نگهداری سیستم است.// Dependency Inversion Principle

// Shouldn&#039;t do
class Book {
    public function getContent() {
        // return contents
    }
}

class Printer {
    public function printBook(Book $book) {
        $content = $book-&gt;getContent();
        // print the content
    }
}همان‌طور که در مثال بالا مشاهده می‌کنید، کلاس Printer به شیء Book وابسته است و فقط می‌تواند برای کتاب چاپ کند. حالا اگر کلاسی دیگر به نام Article وجود داشته باشد که بخواهد از پرینتر استفاده کند، چه باید کرد؟ نباید کلاس Printer را تغییر دهیم تا اشیاء بیشتری را بپذیرد. در عوض، باید یک لایه انتزاعی بین آن‌ها ارائه دهیم.// Dependency Inversion Principle

// Should do
interface Printable {
    public function getContent();
}

class Book implements Printable {
    public function getContent() {
        return &amp;quotThis is the book content&quot;
    }
}

class Article implements Printable {
    public function getContent() {
        return &amp;quotThis is the article content&quot;
    }
}

class Printer {
    public function printContent(Printable $printable) {
        $content = $printable-&gt;getContent();
        echo &amp;quotPrinting content: &amp;quot . $content;
    }
}در PHP، این اصول به ایجاد یک پایگاه کد تمیز کمک می‌کنند که اشکال‌زدایی، درک و گسترش آن آسان‌تر است. با توجه به اینکه برنامه‌های PHP معمولاً در طول زمان تکامل می‌یابند، اعمال اصول SOLID می‌تواند به‌طور چشمگیری مشکلات مرتبط با رشد و نگهداری را کاهش دهد.در این مقاله با &#x60;اصول SOLID در PHP&#x60; آشنا شدید. امیدوارم که این مقاله برای شما مفید بوده باشد. اگر هر سوال/مشکلی در خصوص این مقاله داشتید حتما در قسمت نطرات سایت با ما در میان بگذارید.منبع:‌ وبسایت میموک</description>
                <category>علیرضا تحریری</category>
                <author>علیرضا تحریری</author>
                <pubDate>Fri, 13 Sep 2024 04:35:23 +0330</pubDate>
            </item>
                    <item>
                <title>آموزش کامل اضافه کردن مسیر Flutter به‌صورت دائمی در مک 💪</title>
                <link>https://virgool.io/@alirezatahriri/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%DA%A9%D8%A7%D9%85%D9%84-%D8%A7%D8%B6%D8%A7%D9%81%D9%87-%DA%A9%D8%B1%D8%AF%D9%86-%D9%85%D8%B3%DB%8C%D8%B1-flutter-%D8%A8%D9%87-%D8%B5%D9%88%D8%B1%D8%AA-%D8%AF%D8%A7%D8%A6%D9%85%DB%8C-%D8%AF%D8%B1-%D9%85%DA%A9-gper56wsqaux</link>
                <description>آموزش کامل اضافه کردن مسیر Flutter به‌صورت دائمی در مک 💪در این مقاله قصد داریم نحوه اضافه کردن مسیر Flutter به‌صورت دائمی در سیستم‌عامل مک را به شما آموزش دهیم. Flutter یک فریم‌ورک منبع باز &#x60;Open-source&#x60; از گوگل است که برای توسعه برنامه‌های موبایل، وب و دسکتاپ با استفاده از یک کد پایه واحد استفاده می‌شود. اضافه کردن مسیر Flutter به‌صورت دائمی در مک، به شما این امکان را می‌دهد که از هر مکانی در ترمینال به دستورات Flutter دسترسی داشته باشید و به راحتی پروژه‌های خود را مدیریت کنید. با ما همراه باشید تا به شما نشان دهیم چگونه این کار را انجام دهید.مراحل انجام کار:1. باز کردن ترمینالابتدا ترمینال را باز کنید. برای این کار می‌توانید از جستجوی Spotlight یا از مسیر Applications &gt; Utilities &gt; Terminal استفاده کنید.2. ویرایش فایل .zshrcبرای ویرایش فایل .zshrc که شامل تنظیمات شل (Shell) شما است، دستور زیر را در ترمینال وارد کنید:nano ~/.zshrc3. اضافه کردن مسیر Flutter به فایل .zshrcدر فایل باز شده، خط زیر را اضافه کنید:export PATH=[PATH_TO_FLUTTER_GIT_DIRECTORY]/flutter/bin:$PATHبه جای &#x60;[PATH_TO_FLUTTER_GIT_DIRECTORY]&#x60; مسیر دایرکتوری Flutter را که دانلود کرده‌اید وارد کنید. به عنوان مثال، اگر Flutter را در پوشه Documents خود دانلود کرده‌اید، این خط به صورت زیر خواهد بود:export PATH=/Users/YOUR_USERNAME/Documents/flutter/bin:$PATH4. خروج از ویرایشگر نانوپس از اضافه کردن خط بالا، برای خروج از ویرایشگر نانو، کلیدهای &#x60;Control&#x60; + &#x60;X&#x60; را فشار دهید. سپس با فشار دادن کلید &#x60;Y&#x60; تغییرات را ذخیره کنید و کلید &#x60;Enter&#x60; را بزنید.5. بارگذاری مجدد تنظیمات شلبرای بارگذاری مجدد تنظیمات شل و اعمال تغییرات، دستور زیر را وارد کنید:source ~/.zshrc6. راه‌اندازی مجدد ترمینالبرای اطمینان از اعمال تغییرات، ترمینال را ببندید و مجدداً باز کنید.7. بررسی نصب Flutterبرای بررسی نصب موفق Flutter و اطمینان از درستی مسیر اضافه شده، دستور زیر را در ترمینال وارد کنید:flutter --versionاگر مسیر به‌درستی اضافه شده باشد، نسخه Flutter نمایش داده می‌شود و شما می‌توانید به راحتی از دستورات Flutter استفاده کنید.با انجام این مراحل، شما موفق به اضافه کردن مسیر Flutter به‌صورت دائمی در سیستم‌عامل مک خود شده‌اید و اکنون می‌توانید به راحتی پروژه‌های Flutter خود را مدیریت کنید.منبع: وبسایت میموک</description>
                <category>علیرضا تحریری</category>
                <author>علیرضا تحریری</author>
                <pubDate>Fri, 12 Jul 2024 05:53:44 +0330</pubDate>
            </item>
                    <item>
                <title>چگونه موجودی یک آدرس کیف پول ارز دیجیتال را با پایتون بررسی کنیم؟</title>
                <link>https://virgool.io/@alirezatahriri/%DA%86%DA%AF%D9%88%D9%86%D9%87-%D9%85%D9%88%D8%AC%D9%88%D8%AF%DB%8C-%DB%8C%DA%A9-%D8%A2%D8%AF%D8%B1%D8%B3-%DA%A9%DB%8C%D9%81-%D9%BE%D9%88%D9%84-%D8%A7%D8%B1%D8%B2-%D8%AF%DB%8C%D8%AC%DB%8C%D8%AA%D8%A7%D9%84-%D8%B1%D8%A7-%D8%A8%D8%A7-%D9%BE%D8%A7%DB%8C%D8%AA%D9%88%D9%86-%D8%A8%D8%B1%D8%B1%D8%B3%DB%8C-%DA%A9%D9%86%DB%8C%D9%85-bklsitb2iaiq</link>
                <description> چگونه موجودی یک آدرس کیف پول ارز دیجیتال را با پایتون بررسی کنیم؟برای بررسی مقدار موجودی یک آدرس خاص در یک کیف پول ارز دیجیتال (Cryptocurrency) با استفاده از پایتون، می‌توانید از کتابخانه web3 استفاده کنید. web3 یک کتابخانه پایتون است که به شما امکان تعامل با بلاک‌چین اتریوم را می‌دهد و به طور ساده‌ای می‌توان با استفاده از آن موجودی یک آدرس را بررسی کرد.در اینجا یک مثال از کد پایتون آورده شده است که از کتابخانه requests برای بررسی موجودی یک آدرس کیف پول اتریوم استفاده می‌کند:import requests

address = &amp;quot1BvBMSEYstWetqTFn5Au4m4GFg7xJaNVN2&amp;quot # replace with the address you want to check

url = f&amp;quothttps://api.blockcypher.com/v1/btc/main/addrs/{address}/balance&amp;quot

response = requests.get(url)

if response.status_code == 200:
    balance = response.json()[&amp;quotbalance&amp;quot]
    print(f&amp;quotThe balance of address {address} is {balance} satoshis&amp;quot)
else:
    print(f&amp;quotFailed to retrieve balance for address {address}&amp;quot)در کد بالا، ابتدا آدرسی که می‌خواهیم بررسی کنیم را تعریف می‌کنیم. سپس، URL API را با جایگزینی جای‌نگهدار {address} با آدرس خودمان ایجاد می‌کنیم. با استفاده از کتابخانه requests یک درخواست GET به این URL ارسال می‌کنیم و اگر پاسخ موفقیت‌آمیزی (کد وضعیت 200) دریافت کنیم، موجودی را از پاسخ JSON استخراج کرده و آن را در کنسول چاپ می‌کنیم. در غیر این صورت، یک پیام خطا چاپ می‌کنیم.توجه داشته باشید که این مثال مخصوص بیت‌کوین است و API و URL نقطه پایانی ممکن است برای ارزهای دیجیتال دیگر متفاوت باشد. همچنین، مهم است که به پیامدهای امنیتی استفاده از یک API عمومی برای دسترسی به داده‌های بلاک‌چین توجه کنید، زیرا ممکن است اطلاعات حساسی درباره تراکنش‌ها و موجودی کیف پول شما را فاش کند.در این مقاله با &#x60;بررسی موجودی کیف پول ارز دیجیتال&#x60; آشنا شدید. امیدوارم که این مقاله برای شما مفید بوده باشد. اگر هر سوال/مشکلی در خصوص این مقاله داشتید حتما در قسمت نطرات سایت با ما در میان بگذارید.منبع: وبسایت میموک</description>
                <category>علیرضا تحریری</category>
                <author>علیرضا تحریری</author>
                <pubDate>Fri, 12 Jul 2024 05:52:58 +0330</pubDate>
            </item>
                    <item>
                <title>نحوه راه اندازی IPv6 در سرور لینوکس Ubuntu</title>
                <link>https://virgool.io/@alirezatahriri/%D9%86%D8%AD%D9%88%D9%87-%D8%B1%D8%A7%D9%87-%D8%A7%D9%86%D8%AF%D8%A7%D8%B2%DB%8C-ipv6-%D8%AF%D8%B1-%D8%B3%D8%B1%D9%88%D8%B1-%D9%84%DB%8C%D9%86%D9%88%DA%A9%D8%B3-ubuntu-eaaevtplnvw4</link>
                <description>نحوه راه اندازی IPv6 در سرور لینوکس Ubuntuفعال‌سازی IPv6 بر روی سرور لینوکس اوبونتو، در این مقاله به چگونگی تنظیم یا تغییر یک آدرس IPv6 در چند مرحله بسیار ساده خواهیم پرداخت.در دنیای پویا و در حال تحول فناوری شبکه، انتقال از IPv4 به IPv6 به یک مرحله حیاتی برای بهبود قابلیت‌های ارتباطی آنلاین تبدیل شده است. این راهنما با تمرکز بر &#x27;چگونگی تنظیم IPv6 بر روی سرور لینوکس اوبونتو&#x27;، به یکی از موضوعات مهم برای مدیران شبکه و متخصصان IT می‌پردازد. تنظیم IPv6 بر روی یک سرور اوبونتو شامل درک الگوی جدید آدرس‌دهی و پیکربندی سرور برای مدیریت کارآمد این آدرس‌ها است. از آنجا که اوبونتو به عنوان یک سیستم‌عامل سرور به طور گسترده‌ای استفاده می‌شود، تسلط بر این تنظیمات برای اطمینان از سازگاری با استانداردهای جدید شبکه و بهره‌گیری از امنیت و سرعت بهبود یافته‌ای که IPv6 ارائه می‌دهد، ضروری است. ما از طریق مراحل لازم برای دستیابی به یک پیکربندی IPv6 بدون مشکل و کارآمد بر روی سرور اوبونتو شما پیش خواهیم رفت.چگونه IPv6 را بر روی اوبونتو تنظیم کنیم؟تنظیم IPv6 بر روی سرور لینوکس اوبونتو شما یک گام حیاتی برای آماده‌سازی سیستم شما برای دنیای مدرن اینترنت است. IPv6 با فضای آدرس‌دهی بزرگتر، امنیت بهبود یافته و اتصال بهتر را به ارمغان می‌آورد. در این راهنما، ما شما را گام به گام از طریق فرآیند تنظیم هدایت می‌کنیم، به طوری که حتی مبتدیان نیز بتوانند به راحتی مراحل را دنبال کنند.مرحله اول: تغییر فایل sysctl.confبرای انجام این تنظیمات، لازم است که به عنوان کاربر (root) وارد سیستم شده باشید. اگر شما به عنوان کاربر (root) وارد سیستم نشده باشید، میتوانید با وارد کردن دستور زیر و پسورد با کاربر (root) لاگین کنید.sudo –iحالا ما نیاز داریم تا تنظیمات مربوط به IPv6 را فعال کنیم.اکنون باید پیکربندی‌های IPv6 را فعال کنیم و برای انجام این کار، در طول این مقاله با ویرایشگر nano کار خواهیم کرد. می‌توانید از هر ویرایشگر فایلی که ترجیح می‌دهید استفاده کنید.ابتدا، شما باید فایل sysctl.conf را ویرایش کنید که می‌توانید با استفاده از کد زیر این کار را انجام دهید:~# nano /etc/sysctl.confدر پایین فایل باز شده، این دو خط را اضافه کنید و پس از ذخیره تغییرات، ویرایشگر را ببندید.net.ipv6.conf.default.disable_ipv6 = 0net.ipv6.conf.all.disable_ipv6 = 0اکنون زمان تغییر IPv6 شماست. برای این کار، کد زیر را در ترمینال خود وارد کنید.nano /etc/network/interfacesمرحله ۲: ویرایش فایل interfacesهنگامی که در ویرایشگر هستید، در انتهای فایل، کد زیر را اضافه کنید.iface enp0s3 inet6 staticpre-up modprobe ipv6address Your-IPv6-Addressnetmask 64gateway Your-Ipv6-Gateway-Addressتوجه داشته باشید که این آدرس‌ها مثال‌هایی از آدرس‌های IPv6 هستند و در این قسمت‌ها باید آدرس IPv6 مورد نظر خود را وارد کنید. تغییرات را در فایل ذخیره کنید و از ویرایشگر خارج شوید.مرحله ۳: راه‌اندازی مجدد سرویس شبکه (network service)اکنون برای اعمال این تغییرات، باید سرویس شبکه (network service) خود را با استفاده از دستور زیر راه‌اندازی مجدد کنید:~#sudo systemctl restart networkingتمام سرورهای مجازی لینوکس MonoVM با آدرس عمومی IPv6 فعال خواهند شد. همچنین، ما hostname records معتبر را ارائه می‌دهیم که می‌توانید به راحتی از IPv6 خود استفاده کنید.مرحله ۴: بررسی نصب IPv6 بر روی اوبونتوبرای تأیید اینکه IPv6 اکنون بر روی سرور اوبونتو شما فعال است، از دستور زیر استفاده کنید:ifconfig | grep inet6شما باید آدرس‌های IPv6 مرتبط با رابط‌های شبکه خود را مشاهده کنید. این نشان‌دهنده موفقیت‌آمیز بودن تنظیم IPv6 بر روی سرور لینوکس اوبونتو شما میباشد.دلایل غیرفعال کردن IPv6 در اوبونتو چیست؟با وجود اینکه فعال کردن IPv6 بر روی اوبونتو مزایای زیادی دارد، در برخی موارد ممکن است بخواهید آن را غیرفعال کنید. درک دلایل پشت چنین تصمیمی برای مدیریت مؤثر شبکه ضروری است.Network Compatibility Issuesاگرچه IPv6 با ویژگی‌های امنیتی پیشرفته‌ای طراحی شده است، برخی از مدیران ممکن است به دلیل ناآشنایی یا درک خطرات امنیتی، تصمیم به غیرفعال کردن آن بگیرند. این تصمیم اغلب ناشی از عدم آگاهی از ویژگی‌های امنیتی IPv6 یا نگرانی درباره آسیب‌پذیری‌های احتمالی است.IPv4 Preferenceبرای برنامه‌های قدیمی یا محیط‌هایی که به شدت به IPv4 وابسته هستند، مدیران ممکن است IPv6 را برای حفظ سازگاری و سادگی در پیکربندی‌های شبکه غیرفعال کنند. این می‌تواند یک تصمیم عملی باشد زمانی که انتقال به IPv6 فوراً ضروری نیست.Troubleshooting and Debuggingغیرفعال کردن IPv6 همچنین می‌تواند یک گام عیب‌یابی (troubleshooting) در برخی سناریوها باشد. اگر با مشکلات یا ناهنجاری‌های شبکه مواجه شدید، غیرفعال کردن موقت IPv6 می‌تواند کمک کند تا مشخص شود که آیا مشکلات به تنظیمات IPv6 مربوط هستند یا از منابع دیگری نشأت می‌گیرند.Resource Optimizationدر محیط‌های خاصی که منابع محدود دارند، مدیران ممکن است IPv6 را برای حفظ منابع سیستم غیرفعال کنند. اگرچه سیستم‌های مدرن به طور کلی قادر به مدیریت هر دو پروتکل IPv4 و IPv6 هستند، غیرفعال کردن IPv6 می‌تواند یک انتخاب استراتژیک برای بهینه‌سازی استفاده از منابع در برخی شرایط باشد.Personal Preference or Policyتصمیمات مدیریتی گاهی به ترجیحات شخصی یا سیاست‌های سازمانی بستگی دارد. اگر استفاده از IPv6 برای شما ضروری نیست یا اگر سازمان شما سیاستی دارد که IPv4 را ترجیح می‌دهد، غیرفعال کردن IPv6 با این ترجیحات سازگارتر است.چگونه IPv6 را در اوبونتو غیرفعال کنیم؟غیرفعال کردن IPv6 بر روی سرور اوبونتو شما ممکن است به دلایل مختلفی که قبلاً بحث شد، ضروری باشد. خوشبختانه، فرآیند بسیار ساده است و روش‌های متعددی برای تنظیم آن وجود دارد. ما شما را با روش‌های مختلف برای غیرفعال کردن IPv6 در سیستم اوبونتو آشنا خواهیم کرد.روش ۱: غیرفعال کردن IPv6 در اوبونتو با استفاده از دستور &quot;sysctl&quot;دستور sysctl به شما امکان تغییر پارامترهای هسته در زمان اجرا را می‌دهد. برای غیرفعال کردن IPv6 با استفاده از این روش، ترمینال خود را باز کرده و دستورات زیر را اجرا کنید:sudo sysctl -w net.ipv6.conf.all.disable_ipv6=1sudo sysctl -w net.ipv6.conf.default.disable_ipv6=1این دستور به طور فوری IPv6 را در سرور اوبونتو شما غیرفعال می‌کند. با این حال، به یاد داشته باشید که این تغییرات پس از راه‌اندازی مجدد سیستم حفظ نمی‌شوند.روش ۲: غیرفعال کردن IPv6 در اوبونتو با ویرایش فایل “/etc/sysctl.conf”برای یک راه‌حل پایدارتر، می‌توانید فایل sysctl.conf را ویرایش کنید. فایل را با ویرایشگر متن مورد علاقه خود باز کرده و خطوط زیر را در انتهای آن اضافه کنید:# Disable IPv6net.ipv6.conf.all.disable_ipv6 = 1net.ipv6.conf.default.disable_ipv6 = 1فایل را ذخیره کرده و با اجرای دستور زیر تغییرات را اعمال کنید:sudo sysctl -pاین کار باعث می‌شود IPv6 حتی پس از راه‌اندازی مجدد سیستم نیز غیرفعال بماند.روش ۳: غیرفعال کردن IPv6 در اوبونتو با استفاده از GRUBGRUB (Grand Unified Bootloader) مسئول مدیریت فرآیند بوت است. برای غیرفعال کردن IPv6 با استفاده از GRUB، فایل پیکربندی GRUB را ویرایش کنید. فایل معمولاً در مسیر &quot;/etc/default/grub&quot; قرار دارد. آن را باز کرده و خط زیر را به GRUB_CMDLINE_LINUX اضافه کنید:ipv6.disable=1فایل را ذخیره کرده و GRUB را به‌روزرسانی کنید:sudo update-grubسیستم خود را راه‌اندازی مجدد کنید تا تغییرات اعمال شوند.غیرفعال کردن IPv6 در اوبونتو (Ubuntu Disable IPv6)در نهایت، تنظیم و مدیریت IPv6 بر روی سرور لینوکس اوبونتو شما یک گام حیاتی برای اطمینان از اتصال و امنیت بهینه در دنیای دیجیتال همیشه در حال تغییر است. مزایای IPv6 با فضای آدرس‌دهی گسترش‌یافته و ویژگی‌های پیشرفته آن، رویکردی آینده‌نگرانه به شبکه‌سازی ارائه می‌دهد. با این حال، درک دلایل و روش‌های غیرفعال کردن IPv6 نیز به همان اندازه مهم است، به‌ویژه در مواردی که مشکلات سازگاری شبکه، نگرانی‌های امنیتی یا سیاست‌های سازمانی که IPv4 را ترجیح می‌دهند، مطرح باشند. چه بخواهید IPv6 را بر روی سرور اوبونتوی خود فعال یا غیرفعال کنید، راهنمای جامع ارائه شده در اینجا شما را با دانش و گام‌های عملی لازم برای اتخاذ تصمیمات آگاهانه که با نیازهای خاص شما همخوانی دارد، توانمند می‌سازد. با تغییرات فناوری سازگار باشید و اطمینان حاصل کنید که سرور اوبونتوی شما برای چالش‌های اینترنت مدرن مقاوم و مناسب باقی می‌ماند.امیدوارم که این مقاله مورد استفاده شما قرار گرفته باشه اگر پیشنهاد/سوالی در خصوص این مقاله داشتید حتما در قسمت نظرات سایت با ما در میان بگذارید.منبع: وبسایت میموک</description>
                <category>علیرضا تحریری</category>
                <author>علیرضا تحریری</author>
                <pubDate>Mon, 03 Jun 2024 00:11:29 +0330</pubDate>
            </item>
                    <item>
                <title>۱۱ دستور ترمینال که حتما باید یاد داشته باشید</title>
                <link>https://virgool.io/iran-linux/%DB%B1%DB%B1-%D8%AF%D8%B3%D8%AA%D9%88%D8%B1-%D8%AA%D8%B1%D9%85%DB%8C%D9%86%D8%A7%D9%84-%DA%A9%D9%87-%D8%AD%D8%AA%D9%85%D8%A7-%D8%A8%D8%A7%DB%8C%D8%AF-%DB%8C%D8%A7%D8%AF-%D8%AF%D8%A7%D8%B4%D8%AA%D9%87-%D8%A8%D8%A7%D8%B4%DB%8C%D8%AF-nwmfhwvo54jb</link>
                <description>۱۱ دستور ترمینال که حتما باید یاد داشته باشید
ترمینال به کاربران اجازه می دهد تا به صورت کارآمد و خودکار کارهای کامپیوتری را انجام دهند. در این مقاله می خواهیم با 11 دستور Terminal که برای شروع باید با آنها آشنا باشید، را توضیح می بدهیم.ترمینال ابزاری قدرتمند است که به کاربران اجازه می دهد با کامپیوتر خود تعامل کرده و کارها را به صورت کارآمد و خودکار انجام دهند. در حالی که بسیاری از کاربران به استفاده از رابط کاربری گرافیکی (GUI) با ماوس و کیبورد عادت دارند، ترمینال به کاربران اجازه می دهد تا با تایپ دستورات، دستورات را اجرا و کارها را انجام دهند.استفاده از ترمینال می‌تواند به طور قابل توجهی به بهبود بهره‌وری در بسیاری از کارها، به خصوص کارهای تکراری یا کنترل تعداد زیادی از فایل‌ها کمک کند. در این مقاله به مزایای استفاده از دستورات ترمینال می‌پردازیم و برخی از مهم‌ترین و پرکاربردترین دستورات را معرفی می‌کنیم. همچنین، مثال‌هایی از اینکه چگونه این دستورات می‌توانند کارهای مختلف را ساده‌تر کرده و به بهره‌وری کمک کنند، خواهیم پرداخت.1. دستور cd در ترمینالدستور cd برای تغییر پوشه کاری فعلی (که به همین دلیل cd نامیده می‌شود) و مسیریابی در سراسر دایرکتوری فایل ماشین میزبان استفاده می‌شود.$ cd &lt;path-to-dir&gt;وقتی دستور cd بدون وارد کردن پوشه اجرا می‌شود، کاربر را در پوشه home خود قرار می‌دهد. به عبارت دیگر، cd معادل cd ~ است.به همین ترتیب، دستور cd … کاربر را به پوشه والد منتقل می‌کند. بنابراین، اگر پوشه کاری فعلی /home/username/dir_a/subdir_a باشد، یک دستور cd … ما را به /home/username/dir_a منتقل خواهد کرد.2. دستور ls در ترمینالدستور ls برای لیست کردن فایل‌ها و پوشه‌ها در مسیر خاصی یا در پوشه کاری فعلی استفاده می‌شود.$ ls

Desktop    Downloads   Templates    index.html    Videosگزینه -l برای نمایش اندازه، زمان تاریخچه آخرین تغییرات، همچنین مالکیت و مجوز فایل / پوشه استفاده می‌شود.$ ls -l

total 12
-rw-r--r--. 1 root root   789 Feb 19 09:59 Desktop
-rw-r--r--. 1 root root  6797 Aug 31 11:17 Downloads
drwxr-xr-x. 2 root root  2354 Sep 31 12:48 Templates
-rw-r--r--. 2 root root   123 Jun 31 23:48 index.html
drwxr-xr-x. 4 root root  7896 Jul 16 22:55 Videosاین دستور به کاربران اجازه می‌دهد تا به جز فایل‌ها و پوشه‌های عادی، فایل‌های پنهان را نیز نمایش دهند. فایل‌های پنهان با پیشوند نقطه (.) شروع می‌شوند. برای اضافه کردن چنین فایل‌هایی به خروجی ls، شما باید flag -a استفاده کنید.$ ls -l

total 12
-rw-r--r--. 1 root root   789 Feb 19 08:49 .gitignore
-rw-r--r--. 1 root root   789 Feb 19 09:59 Desktop
-rw-r--r--. 1 root root  6797 Aug 31 11:17 Downloads
drwxr-xr-x. 2 root root  2354 Sep 31 12:48 Templates
-rw-r--r--. 2 root root   123 Jun 31 23:48 index.html
drwxr-xr-x. 4 root root  7896 Jul 16 22:55 Videos3. دستور pwd در ترمینالدستور pwd برای نمایس مسیر کاری فعلی (working directory) و به عنوان نام آن را نشان می‌دهد، برای چاپ مسیر کاری فعلی از این دستور استفاده می‌شود.$ cd ~/Documents
$ pwd
/Users/username/Documents4. دستور mkdir در ترمینالدستور mkdir برای ایجاد پوشه‌های جدید در سیستم فایل استفاده می‌شود. هنگامی که دستور را اجرا میکنید، پوشه ایجاد شده در مسیر کاری فعلی اضافه خواهد شد.$ mkdir projectsبرای ایجاد یک پوشه با یک یا چند زیر پوشه، باید گزینه -p را ارائه دهید.$ mkdir -p projects/first_projectدر ضمن، هنگام اجرای دستور mkdir، شما ممکن است بخواهید مجموعه‌ای از مجوزها را برای پوشه ایجاد شده تازه مشخص کنید. به عنوان مثال، دستور زیر یک پوشه جدید به نام projects را در پوشه کاری فعلی با دسترسی کامل به خواندن، نوشتن و اجرا برای همه کاربران ایجاد می‌کند:$ mkdir –m777 projects5. دستور rmdir در ترمینالدر مقابل mkdir، دستور rmdir برای حذف پوشه‌های بدون فایل استفاده می‌شود.$ rmdir projectsاگر پوشه projects خالی نباشد، دستور فوق با خطای زیر روبرو خواهد شد:rmdir: failed to remove `projects&#039;: Directory not empty6. دستور rm در ترمینالبرای حذف پوشه‌های غیر خالی به همراه زیر پوشه‌ها و فایل‌های آن‌ها، باید دستور rm را با پرچم‌های (flags) -r و -f دستور را اجرا کنید.$ rm -rf projects7. دستور mv در ترمینالدستور mv برای انتقال پوشه‌ها یا فایل‌ها از یک مکان به مکان دیگری استفاده می‌شود.دستور زیر فایل picture.png را که در حال حاضر در پوشه ~/Downloads قرار دارد، به پوشه ~/Documents/Photography/ منتقل می‌کند:$ mv ~/Downloads/picture.png ~/Documents/Photography/picture.png8. دستور cp در ترمینالاگر به جای انتقال پوشه‌ها یا فایل‌ها، می‌خواهید یک کپی از آن‌ها ایجاد کنید، باید از دستور cp استفاده کنید.$ cp ~/Downloads/picture.png ~/Documents/Photographyاگر می‌خواهید به جای یک فایل، یک پوشه کامل و محتوای آن را کپی کنید، حتماً پرچم (flag) -R را اضافه کنید:$ cp ~/Projects ~/Documents/Projectsتوجه داشته باشید که نام پوشه با کاراکتر / به اتمام نمی‌رسد، که باعث تغییر روش کپی کردن پوشه می‌شود.9. دستور cat در ترمینالدستور cat (concatenate) برای خواندن داده‌ها از یک فایل مشخص و چاپ خروجی استفاده می‌شود.فرض کنید یک اسکریپت پایتون به نام hello_world.py با کد زیر داریم:print(&#039;Hello Worlld&#039;)دستور cat محتوای آن را در خروجی چاپ می‌کند:$ cat hello_world.py
print(&#039;Hello World&#039;)شما حتی می‌توانید شماره خط برای هر ردیف مشاهده شده در فایل را با ارائه آرگومان -n چاپ کنید:$ cat hello_world.py
1 print(&#039;Hello World&#039;)
2به هر حال، توجه داشته باشید که دستور cat معمولاً محتوای چندین فایل را به هم می‌چسباند. شما می‌توانید چندین فایل را به عنوان ورودی به دستور ارائه دهید، همانطور که در زیر نشان داده شده است:$ cat file1.txt file2.txt10. دستور less در ترمینالدستور less یک pager ترمینال است که محتوای فایل مشخص شده را به صورت یک صفحه در هر بار چاپ می‌کند. بنابراین، این دستور هنگام بازبینی محتوای فایل‌های بزرگ مانند لاگ‌ها (logs)، مفید است.$ less run-2022-12-12.log11. دستور find در ترمینالدر نهایت، دستور find برای جستجوی فایل‌ها در سیستم فایل استفاده می‌شود. فرض کنید می‌خواهیم پیدا کنیم که دقیقاً فایلی به نام my_file.txt در سیستم فایل کجا قرار دارد. برای این کار، ما می‌توانیم مسیر / را (که معادل با پوشه خانه است، به این معنی که می‌خواهیم find را از پوشه بالایی برای جستجوی آن فایل شروع کنیم) مشخص کنیم و سپس نام فایل را در آرگومان -name مشخص کنیم:find / -name &#039;my_file.txt&#039;ما حتی می‌توانیم wildcards را مشخص کنیم تا مثلاً تمام فایل‌های CSV را در سیستم فایل پیدا کنیم:find / -name &#039;*.csv&#039;نتیجهترمینال ابزاری قدرتمند است که به کاربران اجازه می دهد با کامپیوتر خود به صورت کارآمد تعامل کنند. در این مقاله، مزایای استفاده از دستورات ترمینال را بررسی کردیم و برخی از مهم‌ترین و پرکاربردترین دستورات مانند cd، ls، pwd، mkdir، rmdir و rm را معرفی کردیم. این دستورات می‌توانند برای ساده‌تر کردن کارهای مختلف و بهبود بهره‌وری آنها استفاده شوند. درک اینکه چگونه از این دستورات استفاده کنیم، به کاربران کمک می‌کند تا کارهای خود را به صورت کارآمدتر و سریع‌تر انجام دهند.این‌ها تنها چند مثال از دستورات ترمینال هستند. همیشه بهتر است برای کسب اطلاعات بیشتر در مورد دستورات خاص و گزینه‌های آن‌ها، به مستندات مراجعه کنید. امیدوارم که این مقاله مورد استفاده شما قرار گرفته باشه اگر پیشنهاد/سوالی در خصوص این مقاله داشتید حتما در قسمت نظرات سایت با ما در میان بگذارید.منبع: وبسایت میموک</description>
                <category>علیرضا تحریری</category>
                <author>علیرضا تحریری</author>
                <pubDate>Tue, 06 Feb 2024 01:24:31 +0330</pubDate>
            </item>
                    <item>
                <title>نصب لاراول installer در macos</title>
                <link>https://virgool.io/@alirezatahriri/%D9%86%D8%B5%D8%A8-%D9%84%D8%A7%D8%B1%D8%A7%D9%88%D9%84-installer-%D8%AF%D8%B1-macos-tuy91vagm50g</link>
                <description>نصب لاراول installer در macos
Laravel Installer یک دستور ساده را برای ایجاد پروژه های جدید لاراول ایجاد می کند که در این مقاله میخواهیم که درباره نصب آن در macOS بحث کنیم.برای شروع، پکیج Laravel Installer globally را با استفاده از composer با وارد کردن دستور زیر نصب کنید.composer global require &amp;quotlaravel/installer&amp;quotسپس، با استفاده از Nano وارد bash profile سیستم عامل بشوید و دستور زیر را وارد کنید.nano ~/.bash_profileسپس، کد زیر را در فایل bash profile وارد کنید:export PATH=&amp;quot$PATH:$HOME/.composer/vendor/bin&amp;quotبرای خارج شدن از Nano، کلیدهای CTRL و X را فشار دهید. اگر از شما دو گزینه Yes یا No آمد که فایل را ذخیره کنید، Y را وارد کنید و سپس Enter را بزنید. اگر از شما گزینه ای نخواست که فایل را ذخیره کنید، فقط Enter را بزنید.در نهایت، ترمینال را ببندید و مجددا اجرا کنید، یا می توانید از دستور source برای بارگذاری پروفایل bash استفاده کنید.source ~/.bash_profileدر نهایت شما باید بررسی کنید که نصب Laravel Installer با موفقیت روی سیستم شما انجام شده است یا خیر. اگر Laravel Installer با موفقیت روی سیستم شما نصب شده باشد با وارد کردن دستور laravel در ترمینال باید چیزی شبیه به این ببینید.Laravel Installer 3.0.1
Usage:
  command [options] [arguments]
Options:
  -h, --help            Display this help message
  -q, --quiet           Do not output any message
  -V, --version         Display this application version
      --ansi            Force ANSI output
      --no-ansi         Disable ANSI output
  -n, --no-interaction  Do not ask any interactive question
  -v|vv|vvv, --verbose  Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
Available commands:
  help  Displays help for a command
  list  Lists commands
  new   Create a new Laravel applicationدر این مقاله با نصب لاراول installer در macos آشنا شدید. امیدوارم که این مقاله برای شما مفید بوده باشد. اگر هر سوال/مشکلی در خصوص این مقاله داشتید حتما در قسمت نطرات سایت با ما در میان بگذارید.منبع: وبسایت میموک</description>
                <category>علیرضا تحریری</category>
                <author>علیرضا تحریری</author>
                <pubDate>Tue, 30 Jan 2024 18:52:59 +0330</pubDate>
            </item>
                    <item>
                <title>آموزش PHP: اتصال به MySQL با PDO</title>
                <link>https://virgool.io/@alirezatahriri/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-php-%D8%A7%D8%AA%D8%B5%D8%A7%D9%84-%D8%A8%D9%87-mysql-%D8%A8%D8%A7-pdo-gfcfz7dozsyz</link>
                <description>آموزش PHP: اتصال به MySQL با PDOاتصال به پایگاه داده (Database)خلاصه: در این مقاله ما میخواهیم که قدم به قدم درباره اتصال دیتابس MySQL با استفاده از PDO در PHP آشنا بشویم.پیش نیازهاقبل از اتصال به پایگاه داده MySQL شما باید موارد زیر را داشته باشید.یک سرور دیتابس MySQL، یک پایگاه داده، یک حساب کاربری که به پایگاه داده دسترسی داشته باشد.باید درایور PDO MySQL  در فایل php.ini فعال شده باشد.مرحله 1 - تنظیم پارامترهای پایگاه داده MySQLفرض کنید که یک پایگاه داده MySQL به شکل local دارید که اطلاعات زیر را دارد:اتصال به MySQLخلاصه: در این آموزش، گام به گام یاد خواهید گرفت که چگونه با استفاده از PDO از PHP به پایگاه داده MySQL متصل شوید.پیش نیازهاقبل از اتصال به سرور پایگاه داده MySQL، موارد زیر را باید داشته باشید:یک سرور پایگاه داده MySQL، یک پایگاه داده و یک حساب کاربری که دسترسی به پایگاه داده دارد.در فایل php.ini، درایور PDO MySQL را فعال کنید.تنظیم پارامترهای پایگاه داده MySQLفرض کنید یک سرور پایگاه داده MySQL محلی دارید که اطلاعات زیر را داردمیزبان localhost استنام پایگاه داده bookdb در سرور پایگاه داده localhost.حساب کاربری با نام کاربری root و رمز عبور S@cr@t1! که به پایگاه داده bookdb دسترسی داشته باشد.یک فایل کانفیگ به اسم config.php ایجاد کنید و مقادیر دیتابیس را در آن قرار دهید.&lt;?php

$host = &#039;localhost&#039;;
$db = &#039;bookdb&#039;;
$user = &#039;root&#039;;
$password = &#039;S@cr@t1!&#039;;برای دسترسی به مقادیر دیتابیس در فایل config.php از دستور &#x60;require&#x60; استفاده می کنیم.&lt;?php

require &#039;config.php&#039;;مرحله 2 - فعال کردن درایور PDO_MySQLPDO_MYSQL یک درایور است که رابط PDO را پیاده سازی می کند. PDO از درایور PDO_MYSQL برای اتصال به پایگاه داده MySQL استفاده می کند.برای بررسی اینکه درایور PDO_MYSQL فعال شده است، فایل php.ini را باز کنید. فایل php.ini معمولاً در دایرکتوری php قرار دارد. به عنوان مثال، اگر از XAMPP در ویندوز استفاده می کنید، می توانید فایل php.ini را در زیر دایرکتوری C:\xampp\php پیدا کنید.خط extension در فایل php.ini به شکل زیر نشان داده شده است:;extension=php_pdo_mysql.dllبرای فعال کردن این درایور، باید با حذف نشانه سمیکولون (;) از ابتدای خط، آن را غیرفعال کنید:extension=php_pdo_mysql.dllسپس برای اعمال تغییرات، باید وب سرور را دوباره راه‌اندازی کنید.نام منبع داده MySQL PDOاز نام منبع داده (DSN) استفاده می کند که شامل اطلاعات زیر است:The database server hostThe database nameThe userThe passwordand other parameters such as character sets, etc.PDO از این اطلاعات برای برقراری ارتباط با سرور پایگاه داده استفاده می کند. برای اتصال به سرور پایگاه داده MySQL، از فرمت نام منبع داده زیر استفاده می کنید:&amp;quotmysql:host=host_name;dbname=db_name;charset=UTF8&amp;quotبرای مثال:$dsn = &amp;quotmysql:host=localhost;dbname=bookdb;charset=UTF8&quot;Note that the charset UTF-8 sets the character set of the database connection to UTF-8.اتصال به MySQLاسکریپت فایل index.php زیر نحوه اتصال به پایگاه داده bookdb را در سرور پایگاه داده MySQL با حساب root نشان می دهد:&lt;?php

require &#039;config.php&#039;;

$dsn = &amp;quotmysql:host=$host;dbname=$db;charset=UTF8&quot;

try {
	$pdo = new PDO($dsn, $user, $password);

	if ($pdo) {
		echo &amp;quotConnected to the $db database successfully!&quot;
	}
} catch (PDOException $e) {
	echo $e-&gt;getMessage();
}چطوری کار میکند؟یک شیء جدید ازPDO جدید با (DSN)، کاربر و رمز عبور ایجاد کنید. شیء PDO یک Objecy از کلاس PDO است.در صورت برقراری ارتباط با موفقیت یا وقوع خطا، پیام موفقیت یا پیام خطا را نشان دهید.اگر همه چیز را به درستی تنظیم کرده باشید، پیام زیر را خواهید دید:Connected to the bookdb database successfully!روش های Error handlingPDO سه استراتژی مختلف برای کنترل خطا پشتیبانی می کند:PDO::ERROR_SILENT - PDO یک کد خطا برای بازرسی با استفاده از روش های PDO::errorCode() و PDO::errorInfo() تنظیم می کند.PDO::ERROR_SILENT حالت پیش فرض است.PDO::ERRMODE_WARNING - علاوه بر تنظیم کد خطا، PDO یک پیام E_WARNING صادر می کند.PDO::ERRMODE_EXCEPTION - علاوه بر تنظیم کد خطا، PDO یک PDOException را ارسال می کند.برای تنظیم Error handling strategies، می توانید یک آرایه برای ثبت Attribute به سازنده PDO استفاده کنید، مانند:$pdo = new PDO($dsn, $user, $password, [PDO::ATTR_ERRMODE =&gt; PDO::ERRMODE_EXCEPTION]);یا میتوانید از روش setAttribute() در PDO استفاده کنید، مانند:$pdo-&gt;setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);عیب یابیاکثر خطاهایی را که هنگام اتصال به پایگاه داده MySQL با آن مواجه می شوید:1. اگر شما درایور MySQL را در فایل php.ini فعال نکرده باشید خطای زیر را دریافت خواهید کرد.could not find driver2. اگر رمز عبور را اشتباه وارد کنید خطای زیر را دریافت خواهید کرد.SQLSTATE[HY000] [1045] Access denied for user &#039;root&#039;@&#039;localhost&#039; (using password: YES)3. اگر نام پایگاه داده را اشتباه وارد کنید و پایگاه داده وجود نداشته باشد، خطای زیر را دریافت خواهید کرد.SQLSTATE[HY000] [1049] Unknown database &#039;bookdb&#039;4. اگر اطلاعات مربوط به hostname را اشتباه وارد کنید خطای زیر را دریافت خواهید کرد.SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: No such host is known.خلاصهبرای اتصال به پایگاه داده MySQL از PHP PDO، درایور PDO_MYSQL را در فایل php.ini فعال کنید.یک نمونه از کلاس PDO را برای برقراری ارتباط با پایگاه داده MySQL ایجاد کنید.از سازنده PDO یا متد setAttribute() برای تنظیم Error handling استفاده کنید.شما هم اکنون به پایگاه داده متصل شده اید. خیلی ممنون از شما که این مقاله را مطالعه کردید، اگر در خصوص در این مقاله هرگونه مشکل/سوالی داشتید حتما در قسمت نظرات سایت با ما در میان بگذراید.منبع: وبسایت میموک</description>
                <category>علیرضا تحریری</category>
                <author>علیرضا تحریری</author>
                <pubDate>Mon, 29 Jan 2024 19:51:58 +0330</pubDate>
            </item>
                    <item>
                <title>آموزش کار با متغیرها یا variables در css</title>
                <link>https://virgool.io/@alirezatahriri/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%DA%A9%D8%A7%D8%B1-%D8%A8%D8%A7-%D9%85%D8%AA%D8%BA%DB%8C%D8%B1%D9%87%D8%A7-%DB%8C%D8%A7-variables-%D8%AF%D8%B1-css-jqq65z8tkzwx</link>
                <description>آموزش کار با متغیرها یا variables در cssبرای دسترسی به اطلاعات متغیرها در CSS باید از تابع var() استفاده کنید. متغیرهای CSS دسترسی به DOM دارند، به این معنی که می‌توانید متغیرهایی با دسترسی local یا global ایجاد کنید، میتوانید متغیرها را با جاوااسکریپت بر اساس media queries تغییر دهید. این روش زمانی به کار می آید که شما دیگر نیاز به کپی/پیست کردن hex رنگ‌های قالب ندارید و می‌توانید از این متغیرها استفاده کنید. به عنوان مثال، می‌توانید رنگ‌های مورد استفاده در طراحی خود را در متغیرهای CSS قرار دهید تا بارها و بارها نیاز به تکرار آن‌ها را نداشته باشید.کد CSS بدون استفاده از varاگر مثل کد زیر از var() برای استفاده از پالت های رنگی سایت استفاده نکنیم، مجبور هستیم که کد رنگی را برای هر element به صورت جداگانه تعریف کنیم.body { background-color: #1e90ff; }

h2 { border-bottom: 2px solid #1e90ff; }

.container {
  color: #1e90ff;
  background-color: #ffffff;
  padding: 15px;
}

button {
  background-color: #ffffff;
  color: #1e90ff;
  border: 1px solid #1e90ff;
  padding: 5px;
}ساختار تابع var()از تابع var() برای جایگذاری مقادیر متغیرها در CSS استفاده می شود. ساختار تابع var() به شکل زیر میباشد.var(--name, value)name: الزامی است، برای مشخص کردن اسم متغیر استفاده میشود. (اسم متغیر باید با دو تا dash (--) شروع بشود)value: اختیاری است، برای مشخص کردن مقدار جایگزین متغیر استفاده میشود. (مقدار جایگزین در صورتی که اسم متغیر پیدا نشود)توجه: اسم متغیر باید با دو dash (--) شروع بشود و اسم متغیر حساس به حروف کوچک و بزرگ میباشد.تابع var() چطوری کار میکند؟متغیرهای CSS دارای دو نوع دسترسی local و global می باشند.متغیرهای global را میتوان از طریق document مورد دسترسی/استفاده قرار داد، در صورتی که متغیرهای local را میتوان تنها در داخل selector که در آن معرفی شده استفاده کرد.برای ایجاد یک متغیر با دسترسی global، آن را درون انتخاب کننده :root اعلام کنید. انتخاب کننده :root با عنصر ریشه سند همخوانی دارد.برای ایجاد یک متغیر با دسترسی local، آن را درون selector مورد نظر که قرار است از آن استفاده شود، اعلام کنید.خروجی مثال زیر با مثال بالا یکسان است، اما در اینجا از تابع var() استفاده می کنیم.ابتدا، دو متغیر global با اسامی (–blue و --white) را معرفی می کنیم. سپس، از تابع var() برای درج مقدار متغیرها در بخش استایل بعدی استفاده می کنیم::root {
  --blue: #1e90ff;
  --white: #ffffff;
}

body { background-color: var(--blue); }

h2 { border-bottom: 2px solid var(--blue); }

.container {
  color: var(--blue);
  background-color: var(--white);
  padding: 15px;
}

button {
  background-color: var(--white);
  color: var(--blue);
  border: 1px solid var(--blue);
  padding: 5px;
}مزایای استفاده از تابع var() در کد:1. خوانایی کد را افزایش میدهد.2. تغییر مقدار متغیرها خیلی سریع تر و راحت تر است.برای مثال ما میتوانیم خیلی ساده رنگ آبی و سفید را به آبی روشن و سفید تغییر دهیم، برای اینکار تنها نیاز است که مقادیر متغیرها را تغییر بدهید.:root {
  --blue: #6495ed;
  --white: #faf0e6;
}

body { background-color: var(--blue); }

h2 { border-bottom: 2px solid var(--blue); }

.container {
  color: var(--blue);
  background-color: var(--white);
  padding: 15px;
}

button {
  background-color: var(--white);
  color: var(--blue);
  border: 1px solid var(--blue);
  padding: 5px;
}پشتیبانی مرورگرها:اعداد در جدول اولین نسخه مرورگر را مشخص می کنند که به طور کامل از var() پشتیبانی می کند.Chrome: 49.0 +Microsoft Edge: 15.0 +Firefox: 15.0 +Safari: 9.1 +Opera Mini: 36.0 +در این مقاله با متغیرها یا variables در css آشنا شدید. امیدوارم که این مقاله برای شما مفید واقع شده باشد؛ در صورتی که برای شما در خصوص این مقاله سوالی پیش آمده است، حتما در قسمت کامنت‌ها برای ما ارسال کنید.منبع: وبسایت میموک</description>
                <category>علیرضا تحریری</category>
                <author>علیرضا تحریری</author>
                <pubDate>Sun, 28 Jan 2024 12:45:58 +0330</pubDate>
            </item>
                    <item>
                <title>آموزش نصب و راه اندازی inertia - vue3</title>
                <link>https://virgool.io/avasam-laravel-edu/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D9%86%D8%B5%D8%A8-%D9%88-%D8%B1%D8%A7%D9%87-%D8%A7%D9%86%D8%AF%D8%A7%D8%B2%DB%8C-inertia-vue3-dn3ni9a5fnjl</link>
                <description>آموزش نصب و راه اندازی inertia - vue3Vue.js یک ابزار قدرتمند است که بسیاری از مزایای زیادی نسبت به استفاده از قالب های Blade لاراول را دارد، با این حال در ابتدا ممکن است برای شما سخت باشد که بخش های front-end و backend خود را با هم ترکیب کنید. در اینجا “Inertia” به کمک شما می آید، این ابزار به شما کمک می کند تا ارتباط بین بخش های front-end و backend خود را با یکدیگر برقرار کنید. این روش به عنوان &#x60;modern monolith&#x60; شناخته می شود.نحوه راه اندازی Inertiaموارد زیر مربوط به لاراول 10 (به همراه Vite) است و فرض می‌کنیم که شما از قبل با Vue آشنایی دارید.مرحله 1 - نصب dependenciescomposer require inertiajs/inertia-laravel tightenco/ziggynpm install @inertiajs/inertia @inertiajs/inertia-vue3 @inertiajs/progress @vitejs/plugin-vue vueمرحله 2 - ایجاد ساختار پوشه هاساختار پوشه های پروژه را به شکل زیر ایجاد کنید.resources
--| js
----| Components
----| Layouts
----| Pagesشما میتوانید که ساختار را متناسب با پروژه خودتان شخصی سازی کنید، فقط توجه داشته باشید که حتما باید مسیرها (path) جدید را در فایل های config بروزرسانی کنید.مرحله 3 - ایجاد یک فایل root با فرمت bladeفایل resources/views./app.blade.php را ایجاد کنید و کد زیر را جایگذاری کنید.&lt;!DOCTYPE html&gt;
&lt;html lang=&amp;quot{{ str_replace(&#039;_&#039;, &#039;-&#039;, app()-&gt;getLocale()) }}&amp;quot&gt;
    &lt;head&gt;
        &lt;meta charset=&amp;quotutf-8&amp;quot&gt;
        &lt;meta name=&amp;quotviewport&amp;quot content=&amp;quotwidth=device-width, initial-scale=1&amp;quot&gt;

        &lt;title inertia&gt;{{ config(&#039;app.name&#039;, &#039;Laravel&#039;) }}&lt;/title&gt;

        @routes
        @vite(&#039;resources/js/app.js&#039;)
        @inertiaHead
    &lt;/head&gt;
    &lt;body&gt;
        @inertia
    &lt;/body&gt;
&lt;/html&gt;مرحله 4 - ایجاد middleware مربوط به Inertiaدستور زیر را اجرا کنید تا middleware مربوط به Inertia در مسیر app/Http/Middleware/HandleInertiaRequests.php ایجاد بشود.php artisan inertia:middlewareزمانی که فایل middleware ساخته شد وارد فایل app/Http/Kernel.php بشوید و به عنوان آخرین آیتم در &#x60;web middleware&#x60; کد زیر را جایگذاری کنید.&#039;web&#039; =&gt; [
    // ...
    \App\Http\Middleware\HandleInertiaRequests::class,
],مرحله 5 - تنظیم فایل کانفیگ Viteسپس شما نیاز دارید تا &#x60;Vue plugin&#x60; را در فایل کانفیگ Vite اضافه کنید، کد زیر را در vite.config.js جاگذاری کنید.import { defineConfig } from &#039;vite&#039;;
import laravel from &#039;laravel-vite-plugin&#039;;
import vue from &#039;@vitejs/plugin-vue&#039;;

export default defineConfig({
    plugins: [
        laravel({
            input: [
                &#039;resources/js/app.js&#039;,
                // Add your stylesheet here
            ],
            refresh: true,
        }),
        vue({
            template: {
                transformAssetUrls: {
                    base: null,
                    includeAbsolute: false,
                },
            },
        }),
    ],
    resolve: {
        alias: {
            &#039;@components&#039;: &#039;/resources/js/Components&#039;,
            &#039;@layouts&#039;: &#039;/resources/js/Layouts&#039;,
            &#039;@pages&#039;: &#039;/resources/js/Pages&#039;
        },
    },
});ایجاد یک فایل jsconfig.json هم بسیار مهم است تا به IDE شما کمک کند تا alias هایی که در بالا تعریف کرده ایم را شناسایی کند.{
    &amp;quotcompilerOptions&amp;quot: {
        &amp;quotbaseUrl&amp;quot: &amp;quot.&amp;quot,
        &amp;quotpaths&amp;quot: {
            &amp;quot@components/*&amp;quot: [&amp;quotresources/js/Components/*&amp;quot],
            &amp;quot@pages/*&amp;quot: [&amp;quotresources/js/Pages/*&amp;quot],
            &amp;quot@layouts/*&amp;quot: [&amp;quotresources/js/Layouts/*&amp;quot]
        }
    },
    &amp;quotexclude&amp;quot: [&amp;quotnode_modules&amp;quot, &amp;quotpublic&amp;quot]
}مرحله 6 - ساخت برنامه با Inertiaدر مسیر resources/js/app.js ما نیاز به اجرای برنامه inertia داریم که میتوانید با استفاده از کد زیر این کار را انجام بدهید.import &#039;./bootstrap&#039;;
// Import your stylesheet here 

import { createApp, h } from &#039;vue&#039;;
import { createInertiaApp } from &#039;@inertiajs/inertia-vue3&#039;;
import { InertiaProgress } from &#039;@inertiajs/progress&#039;;
import { resolvePageComponent } from &#039;laravel-vite-plugin/inertia-helpers&#039;;
import { ZiggyVue } from &#039;../../vendor/tightenco/ziggy/dist/vue.m&#039;;

const appName = window.document.getElementsByTagName(&#039;title&#039;)[0]?.innerText || &#039;Reflect&#039;;

createInertiaApp({
    title: (title) =&gt; `${title} - ${appName}`,
    resolve: (name) =&gt; resolvePageComponent(`./Pages/${name}.vue`, import.meta.glob(&#039;./Pages/**/*.vue&#039;)),
    setup({el, app, props, plugin}) {
        return createApp({render: () =&gt; h(app, props)})
            .use(plugin)
            .use(ZiggyVue)
            .mount(el);
    },
}).then(() =&gt; {
    InertiaProgress.init({});
})ساخت بخش front-end برنامهاول از همه، ما باید یک مسیر برای صفحه خود ایجاد کنیم. به جای بازگرداندن یک view، اکنون یک درخواست Inertia برمی گردانیم:Route::get(&#039;/hello-world&#039;, function () {
    return Inertia::render(&#039;HelloWorld&#039;, [
        &#039;message&#039; =&gt; &#039;Look mum, I\&#039;m doing Inertia!&#039;,
    ]);
});همینطور که مشاهده میکنید ما الان با استفاده از متد Inertia::render()، اطلاعات مربوط به کامپوننت Vue را ارسال میکنیم و برای ارسال پارامتر به کامپوننت هم میتوانید مانند لاراول اطلاعات را ارسال کنید. صفحات کامپوننت ها در پوشه resources/js/Pages قرار دارند، اینجا باید یک کامپوننت Vue جدید به اسم HelloWorld.vue ایجاد کنیم.&lt;template&gt;
    &lt;div&gt;
        &lt;h1&gt;Hello World!&lt;/h1&gt;
        &lt;p&gt;{{ message }}&lt;/p&gt;
    &lt;/div&gt;
&lt;/template&gt;


export default {
    props: {
        message: {
            type: String,
            required: true
        }
    }
}
اختیاری - نصب کردن Tailwind CSSدر اینجا ما پروژه Vue خودمون را راه اندازی کرده ایم، حالا وقتشه که قالب پروژه را دیزاین کنیم.مرحله 1 - نصب dependenciesnpm install tailwindcss @tailwindcss/forms @tailwindcss/typography postcss postcss-importautoprefixerاجرا دستور زیر اختیاری میباشد و در صورتی باید اجرا شود که شما بخواهید از Tailwind UI در ظاهر پروژتون استفاده کنید.npm install @headlessui/vue @heroicons/vueمرحله 2 - کانفیگ کردن Tailwind CSSفایل کانفیگ tailwind.config.js را ایجاد کنید، اگر فایل را ایجاد نکنید Tailwind بدون فایل کانفیگ نمیتونه کار کنه./** @type {import(&#039;tailwindcss&#039;).Config} */
module.exports = {
    content: [
        &amp;quot./app/**/*.blade.php&amp;quot,
        &amp;quot./resources/**/*.blade.php&amp;quot,
        &amp;quot./resources/**/*.js&amp;quot,
        &amp;quot./resources/**/*.vue&amp;quot
    ],
    plugins: [
        require(&#039;@tailwindcss/forms&#039;),
        require(&#039;@tailwindcss/typography&#039;),
    ]
}module.exports = {
  plugins: {
    tailwindcss: {},
    autoprefixer: {},
  },
}مرحله 3 - افزودن Tailwind در فایل stylesheetدر نهایت شما باید کد زیر را در فایل stylesheet جایگذاری کنید.@tailwind base;
@tailwind components;
@tailwind utilities;حالا شما میتوانید از Tailwind درون پروژه خودتون استفاده کنید. خیلی ممنون از شما که این مقاله را مطالعه کردید، اگر در خصوص در این مقاله هرگونه مشکل/سوالی داشتید حتما در قسمت نظرات سایت با ما در میان بگذراید.منبع: وبسایت میموک</description>
                <category>علیرضا تحریری</category>
                <author>علیرضا تحریری</author>
                <pubDate>Sat, 27 Jan 2024 23:43:59 +0330</pubDate>
            </item>
            </channel>
</rss>