<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های علی نیستانی</title>
        <link>https://virgool.io/feed/@sh4rifi</link>
        <description>اگر نیاز به برنامه نویسی اپلیکیشن موبایل از نوع اندروید یا iOS دارید.. اگر نیاز به هر نوع وبسایت یا وب اپلیکیشنی دارید.. اگر قصد آنلاین کردن کسب و کارتون رو دارید با من تماس بگیرید 09128182951</description>
        <language>fa</language>
        <pubDate>2026-04-14 17:55:49</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/22199/avatar/L7ISGj.jpeg?height=120&amp;width=120</url>
            <title>علی نیستانی</title>
            <link>https://virgool.io/@sh4rifi</link>
        </image>

                    <item>
                <title>سوالات تخصصی مصاحبه مهندس نرم افزار (الگوریتم ها)</title>
                <link>https://virgool.io/@sh4rifi/%D8%B3%D9%88%D8%A7%D9%84%D8%A7%D8%AA-%D8%AA%D8%AE%D8%B5%D8%B5%DB%8C-%D9%85%D8%B5%D8%A7%D8%AD%D8%A8%D9%87-%D9%85%D9%87%D9%86%D8%AF%D8%B3-%D9%86%D8%B1%D9%85-%D8%A7%D9%81%D8%B2%D8%A7%D8%B1-%D8%A7%D9%84%DA%AF%D9%88%D8%B1%DB%8C%D8%AA%D9%85-%D9%87%D8%A7-leao601pnp2z</link>
                <description>دانستن در مورد الگوریتم‌ها برای یک مهندس نرم‌افزار بسیار مهم و حیاتی است، اگر چه میزان اهمیت آن  بستگی به نوع کار و نیاز پروژه دارد. در این پست سعی میکنم سوالات فنی که ممکن است در یک مصاحبه ی شغلی از شما به عنوان یک مهندس نرم افزار با موضوع الگوریتم ها بپرسند را لیست کنم. همچنین جواب هایی را هم به صورت خلاصه برای آن ها قرار می دهم اگرچه که نیاز است شما دانش عمیق تری نسبت به این موضوع داشته باشید و به جواب های کوتاه این پست کفایت نکنید چرا که ممکن است مصاحبه کننده هر یک از جواب های شما را به چالش بکشد و از شما توضیح بیشتری بخواهد یا پاسخ شما را در مواجهه با وضعیت های متفاوت تر بداند:تفاوت بین الگوریتم DFS و BFS چیست؟الگوریتم DFS (عمق اول) به طور پیش‌فرض به عمق یک گراف حرکت می‌کند و تا زمانی که دیگر مسیری برای پیش رفت نداشته باشد، ادامه می‌دهد. از طرف دیگر، الگوریتم BFS (سطح اول) ابتدا به تمام همسایگان یک گره می‌رود و سپس به تمام همسایگان آن‌ها. و به همین ترتیب ادامه می‌دهد.الگوریتم مرتب‌سازی QuickSort چگونه کار می‌کند؟QuickSort یک الگوریتم مرتب‌سازی مبتنی بر تقسیم و حل است. ابتدا یک pivot انتخاب می‌شود و عناصر از داده ورودی به دو بخش تقسیم می‌شوند: کوچکتر یا مساوی pivot و بزرگتر از pivot. سپس مرتباً برای هر بخش، مرحله تقسیم و حل تکرار می‌شود تا لیست به صورت کامل مرتب شود.توضیح دهید چگونه الگوریتم Dijkstra کار می‌کند.الگوریتم دیکسترا Dijkstra برای یافتن کوتاه‌ترین مسیرها در گراف‌های وزن‌دار استفاده می‌شود. این الگوریتم با شروع از یک گره مبدأ، به تمام گره‌ها وزن نامعلوم اختصاص می‌دهد و به تدریج وزن‌ها را با مقادیر دقیق‌تر به روز می‌کند. این فرآیند تا زمانی ادامه پیدا می‌کند که تمام گره‌ها به عنوان نهایی علامت‌گذاری شوند و کوتاه‌ترین مسیرها محاسبه شوند.الگوریتم Binary Search چگونه کار می‌کند؟الگوریتم جستجوی دودویی Binary Search برای جستجو در یک لیست مرتب شده استفاده می‌شود. ابتدا وسط لیست بررسی می‌شود. اگر مقدار مورد نظر برابر با وسط لیست باشد، جستجو پایان می‌یابد. در غیر این صورت، اگر مقدار مورد نظر کوچک‌تر از وسط باشد، جستجو در نیمه چپ لیست ادامه پیدا می‌کند و در غیر اینصورت در نیمه راست لیست ادامه می‌یابد. این فرآیند تا زمانی ادامه می‌یابد که مقدار مورد نظر پیدا شود یا اندازه بازه‌ی جستجو کوچک شودتوضیح دهید الگوریتم Backtracking چیست و در چه مواردی مورد استفاده قرار می‌گیرد؟الگوریتم Backtracking یک روش جستجوی مبتنی بر تلاش متوالی و بازگشتی در فضای جستجو است. این الگوریتم برای حل مسائلی مانند مسائل مسیریابی، مسائل جدول‌بندی، ارتقاء سیستم و... استفاده می‌شود.تفاوت بین الگوریتم Prim و Kruskal برای یافتن کمینه‌ی درخت پوشای کمینه چیست؟هر دو الگوریتم برای یافتن درخت پوشای کمینه در یک گراف وزن‌دار استفاده می‌شوند. اما Prim به طور گام به گام یک درخت پوشای کمینه را با شروع از یک گره و افزودن یال‌های کمینه‌ی وزن به درخت می‌سازد، در حالی که Kruskal تمام یال‌ها را بر اساس وزن‌ها مرتب می‌کند و به تدریج یال‌های کمینه‌ی وزن را به درخت اضافه می‌کند.توضیح دهید الگوریتم  HeapSort چگونه کار می‌کند.HeapSort یک الگوریتم مرتب‌سازی بر مبنای داده‌ساختار برگرداننده است که به نام &quot;هیپ&quot; یا &quot;درخت دودویی مین-هیپ&quot; شناخته می‌شود. در این الگوریتم، ابتدا یک مین-هیپ ساخته می‌شود (درختی که همه گره‌های آن از ویژگی مین-هیپ پیروی کنند)، سپس از ریشه هیپ، گره با کمترین مقدار را حذف و به آخرین جایگاه منتقل می‌کنند. این فرآیند تا زمانی ادامه می‌یابد که هیپ خالی شود و عناصر به ترتیب مرتب شوند.الگوریتم A* چیست و در کدام مسائل استفاده می‌شود؟الگوریتم A* یک الگوریتم جستجوی مبتنی بر اطلاعات است که برای حل مسائل جستجوی مسیر در گراف‌های وزن‌دار با استفاده از ترکیبی از هزینه‌های مسیر تا به حال (هزینه‌ی واقعی) و یک تخمین از هزینه‌ی باقی‌مانده (هزینه‌ی تخمینی) از گره‌ها به هدف استفاده می‌شود.الگوریتم Floyd-Warshall چه کاری انجام می‌دهد؟الگوریتم Floyd-Warshall برای یافتن کوتاه‌ترین مسیرها بین همه‌ی جفت گره‌ها در یک گراف وزن‌دار با استفاده از روش برنامه‌ریزی دینامیکی استفاده می‌شود.توضیح دهید الگوریتم MergeSort چگونه عمل می‌کند.MergeSort یک الگوریتم مرتب‌سازی تقسیم و حل است که لیست را به دو نیمه تقسیم کرده، هر دو نیمه را به صورت مستقل مرتب می‌کند و سپس نتایج را با هم ادغام می‌کند.توضیح دهید چگونه الگوریتم Counting Sort کار می‌کند.الگوریتم Counting Sort یک الگوریتم مرتب‌سازی غیرمقایسه‌ای است که برای مرتب‌سازی اعداد صحیح مثبت با محدوده‌ی مشخص استفاده می‌شود. در این الگوریتم، تعداد وقوع هر عنصر را شمارش و سپس جایگاه‌های مرتب‌شده‌ای از آنها بر اساس تعداد وقوع آنها تعیین می‌شود.الگوریتم Topological Sort چه کاربردی دارد؟الگوریتم Topological Sort در گراف‌های جهت‌دار برای یافتن یک ترتیب خطی از گره‌ها استفاده می‌شود که در هیچ یالی از گره به سمت گره دیگری نرود. این الگوریتم به ویژه در مسائل مرتب‌سازی و برنامه‌ریزی زمانبندی کاربرد دارد.تفاوت بین الگوریتم Bubble Sort و Insertion Sort چیست؟در Bubble Sort، عناصر به تدریج به جلو حرکت کرده و در هر مرحله بزرگترین عنصر به مکان مناسب خود منتقل می‌شود. در Insertion Sort، یک عنصر به ترتیب به لیست مرتب‌شده اضافه می‌شود و در هر مرحله، عناصر جدید به لیست مرتب‌شده اضافه می‌شوند.تفاوت بین الگوریتم Radix Sort و Counting Sort چیست؟هر دو الگوریتم برای مرتب‌سازی اعداد صحیح مثبت مورد استفاده قرار می‌گیرند، اما Radix Sort اعداد را به صورت اعداد دودویی مرتب می‌کند و Counting Sort بر اساس تعداد وقوع عناصر در محدوده‌ی مشخصی آنها را مرتب می‌کند.</description>
                <category>علی نیستانی</category>
                <author>علی نیستانی</author>
                <pubDate>Sat, 12 Aug 2023 14:23:23 +0330</pubDate>
            </item>
                    <item>
                <title>TTL چیست؟</title>
                <link>https://virgool.io/@sh4rifi/ttl-%DA%86%DB%8C%D8%B3%D8%AA-m0oyoqzi408u</link>
                <description>حتما شما هم تا به حال با عبارت TTL در دستورات شبکه مانند ping یا در زمان ست کردن یک رکورد DNS مواجه شده اید. میخواهم با یک مثال ساده TTL را به شما توضیح دهم. تصور کنید یک توریست وارد شهری جدید شده و دنبال یک آدرس مشخص میگردد.توریست کوچه به کوچه دنبال آدرسش میگردد و هر بار به یک نقطه ی جدید سر می زند و مدام در حال پرسه زدن می باشد. حالا فکر کنید توریست های زیادی وارد شهر شوند و همین رفتار را تکرار کنند. طبیعی است که برای شهر مشکلات زیادی به وجود می آید و شهر دچار ترافیک و تراکم بی مورد میشود. حالا فرض کنید در مجلس قانونی تصویب شود که نهایتا هر فرد فقط میتواند تا چند روز به جستجوی خودش ادامه دهد و در صورتی که آدرس مورد نظرش را پیدا نکرد بعد از چند روز باید به جستجوی خود خاتمه دهد و از ایجاد ترافیک و رفت و آمد بی مورد صرف نظر کند در غیر این صورت توسط پلیس دستگیر می شود و شامل مجازات خواهد شد. این دقیقا همان کاری است که TTL انجام میدهد.برای توضیحات بیشتر میتوانید مطلب من در افرانکست را بخوانید.مفهوم TTL چیست  و چه کاربردی دارد</description>
                <category>علی نیستانی</category>
                <author>علی نیستانی</author>
                <pubDate>Thu, 16 Mar 2023 18:07:09 +0330</pubDate>
            </item>
                    <item>
                <title>پیکربندی روتر با پروتکل RIP</title>
                <link>https://virgool.io/@sh4rifi/%D9%BE%DB%8C%DA%A9%D8%B1%D8%A8%D9%86%D8%AF%DB%8C-%D9%85%D8%B3%DB%8C%D8%B1%DB%8C%D8%A7%D8%A8-%D8%A8%D8%A7-%D9%BE%D8%B1%D9%88%D8%AA%DA%A9%D9%84-rip-waylquhsl7wc</link>
                <description>فرض کنید روتر R1 از درگاه Fa0/0 به شبکه 60.0.0.0/8 و از درگاه Fa0/1 به شبکه 70.0.0.0/8 متصل شده است, برای اختصاص IP به هر پورت روتر بعد از اینکه وارد CLI که مخفف Command Line Interface یا محیط دستوری هستش شدیم به صورت زیر عمل می کنیم:خب اول میتونیم با دستور زیر یه سری اطلاعات در مورد روتری که داریم روش کار میکنیم به دست بیاریم ببینیم اصلا چی داره. مثلا چند تا اینترفیس اترنت Ethernet یا فست اترنت Fast Ethernet و یا Gigabit Ethernet دارهshow interface summaryخب حالا برای اینکه IP ها رو به روتر اختصاص بدیم اینجوری عمل میکنیم&gt;en اینجوری هم میشه نوشت enable#password #conf t#hostname R1#Interface FastEthernet 0/0#IP address 60.0.0.1 255.0.0.0اینجا به پورتی که در خط بالا مشخص کردیم آیپی رو اختصاص میدیم#No shutdownهمیشه ضروری نیست. اگر توی خلاصه وضعیت اینترفیس ها دیدیم که اترنت روشن نیست باید بنویسیم. چون توی روتر ها بر خلاف سوییچ ها به صورت دیفالت fast ethernet ها خاموشن.خب دستورات بالا رو برای پورت دیگه تکرار میکنیم#exit#Interface FastEthernet 0/1#IP address 70.0.0.1 255.0.0.0#No shutdown#exit#Writeبعد برای اینکه ببینیم همه چیزو درست انجام دادیم از دستور show ip route استفاده می کنیم. بعدشم میتونیم برای محکم کاری یه ping بگیریم. و در ادامه:Router Ripnetwork 60.0.0.0Router Ripnetwork 70.0.0write</description>
                <category>علی نیستانی</category>
                <author>علی نیستانی</author>
                <pubDate>Fri, 24 Jul 2020 17:53:25 +0430</pubDate>
            </item>
                    <item>
                <title>توضیح Pop یا نقاط حضور Point to Present</title>
                <link>https://virgool.io/@sh4rifi/%D8%AA%D9%88%D8%B6%DB%8C%D8%AD-pop-%DB%8C%D8%A7-%D9%86%D9%82%D8%A7%D8%B7-%D8%AD%D8%B6%D9%88%D8%B1-point-to-present-pnafykygjemy</link>
                <description>نقطه حضور (PoP) یک نقطه عطف مصنوعی یا نقطه رابط بین موجودیت های در حال برقراری ارتباط است. یک مثال رایج ، یک نقطه حضور در اینترنت ، نقطه دسترسی محلی است که به کاربران امکان می دهد با (ISP) به اینترنت متصل شوند. یک PoP معمولاً سرورها ، روترها ، سوئیچ های شبکه ، مالتی پلکسرها و سایر تجهیزات رابط شبکه را در خود جای می دهد و به طور معمول در یک مرکز داده قرار دارد. ISP ها معمولاً دارای چندین PoP هستند. PoP ها اغلب در مراکز تبادل اینترنت و مراکز جمع آوری قرار دارند</description>
                <category>علی نیستانی</category>
                <author>علی نیستانی</author>
                <pubDate>Sat, 18 Jul 2020 18:13:56 +0430</pubDate>
            </item>
                    <item>
                <title>میزبانی وب</title>
                <link>https://virgool.io/@sh4rifi/%D9%85%DB%8C%D8%B2%D8%A8%D8%A7%D9%86%DB%8C-%D9%88%D8%A8-iev8oleummar</link>
                <description>پیش گفتارامروزه اینترنت در زندگی ما نقش مهمی دارد. ما روزانه از سایت ها و اپلیکیشن های مختلفی استفاده می کنیم که حتی تصور زندگی بدون آن ها کسل کننده خواهد بود. روزانه به تعداد کسب و کارهایی که در تلاشند تا از خدمات اینترنت در جهت توسعه کسب و کار خود استفاده نمایند افزوده می شود. بحران کرونا بیش از پیش به ما یادآور شد که اینترنت چقدر می تواند ابزار مهمی باشد.  به عنوان فعال این حوزه در ایام کرونا شاهد تراکم پروژه های پیشنهادی از طرف کسب و کارهایی بودم که میخواستند هرچه زودتر کسب و کار خود را آنلاین نمایند. در این نوشته سعی خواهم کرد علاوه بر معرفی سرویس های قابل ارائه در بستر وب به چگونگی میزبانی آن ها بپردازم و همچنین باز تعریف ساده و روانی از مفاهیم و اصطلاحات مرتبط که روزانه استفاده می شود, ارائه دهم.اپلیکیشناین واژه را روزانه به صورت مکرر استفاده می کنیم اما در بیشتر مواقع منظورمان اپلیکیشن هایی است که تحت موبایل اجرا می شوند. این در حالی است که  تمام نرم‌افزارهایی که روزانه از آن‌ها در کامپیوتر PC یا تلفن ها و یا سایر دیوایس های هوشمند استفاده می‌کنیم به نوعی اپلیکیشن محسوب میشوند و تنها نرم‌افزارهایی مانند سیستم عامل و یا زبان‌های برنامه نویسی, اپلیکیشن‌ به حساب نمی آیند. امروزه اپلیکیشن میتواند بر روی یک تلفن همراه, تبلت, کامپیوتر, ساعت, تلویزیون و .. نصب شود و یا به صورت وب اپلیکیشن ارائه شود. در نتیجه منظور من از اپلیکیشن در این نوشته تعریف صحیح و کلان آن است.وب سایتوبسایت ها صفحات تحت وبی هستند که بیشتر به منظور نمایش محتوا به کار برده می شوند. مثلا سایت جهاد دانشگاهی اراک یک وبسایت است که محتوای خود را به صورت متن, صوت و ویدیو به کاربران خود نمایش می دهد. وبسایت ها نسبت به وب اپلیکیشن تعامل کم تری با کاربر دارند یا بهتر است بگوییم تاکید آن ها بر محتواست.وب اپلیکیشنوب اپلیکیشن, اپلیکیشن تحت وبی است که دسترسی به آن از طریق مرورگر انجام می شود. در یک وب اپلیکیشن بیشتر تاکید بر تعامل با کاربر است. مثلا calendar.google.com یا gmail.com در سرویس جیمیل شما می توانید ایمیل های خود را مدیریت نمایید. آنها را در پوشه های مختلفی دسته بندی نمایید و یا کارهای مرتبط با ایمیل را انجام دهید. در این سرویس محتوایی به شما ارائه نمی شود بلکه ابزاری در اختیار شما قرار گرفته است که با آن میتوانید از پروتکل های مختلف به دریافت و ارسال ایمیل بپردازید و آن ها را مدیریت کنید. همچنین در مورد تقویم گوگل محتوایی به شما ارائه نمی شود. بلکه شما ابزاری در اختیار دارید که میتوانید برنامه های روزانه ی خود را تحت یک تقویم آنلاین در آن مدیریت کنید.اپلیکیشن Nativeاپلیکیشن Native  یک برنامه نرم افزاری است که برای استفاده در یک سیستم عامل یا دستگاه خاص تهیه شده است. از آنجا که یک اپلیکیشن Native برای استفاده در یک دستگاه خاص و سیستم عامل آن ساخته شده است، این قابلیت را دارد که از سخت افزار و نرم افزار خاص دستگاه استفاده کند. معمولا این اصطلاح برای اپلیکیشن های تحت موبایلی که متناسب با آن دستگاه و بیشتر متناسب با سیستم عامل آن اعم از اندروید, iOs و ویندوز فون و .. برنامه نویسی شده است اطلاق می شود.PWAPWA حاصل تلاش هایی است که سعی بر آن داشته تا قابلیت های اپلیکیشن های Native و تحت وب را یکجا داشته باشیم یعنی عملکرد و سرعت Native و پویایی تحت وب. اگر وبسایت دیجی کالا را از طریق مرورگر خود باز کنید. با کلیک بر روی آیکون سه نقطه ای که در نوار بالا قرار دارد گزینه ای را با عنوان Add to Home screen خواهید دید. با کلیک بر روی آن, آیکون دیجی کالا در کنار سایر اپلیکیشن های گوشی هوشمندتان ظاهر خواهد شد که به آن PWA می گویند.اپلیکیشن های تحت وبهر اپلیکیشنی که از وب استفاده نماید و داده های خود را از طریق اینترنت ارسال یا دریافت نماید یک اپلیکیشن تحت وب حساب میشود خواه یک اپلیکیشن Native بر روی ساعت های هوشمند باشد یا یک وب اپلیکیشن یا PWA و یا اپلیکیشن موبایلی که برای مثال اطلاعاتی را از اینترنت دریافت می کند و به کاربران خود نمایش می دهد.اجزای اپلیکیشن های تحت وباین اپلیکیشن ها از دو قسمت front-end و back-end ساخته شده اند. فرانت به قسمتی میگویند که بصری است و کاربر آن را می بینند. مثلا در اپلیکیشن سما لایو که اپلیکیشن بسیار ضعیفی است که نقد آن از حوصله ی این تحقیق خارج است هر آن چیزی که ما به عنوان استاد و دانشجو با آن سروکار داریم و اجزای آن را با چشم میبینیم اعم از انواع فرم ها, منوی سمت راست, پس زمینه, دکمه ها و … فرانت این اپلیکیشن محسوب می شود. فرانت بر روی دیوایسی که از آن استفاده می کنیم دانلود می شود. در اپلیکیشن های Native این موضوع یک بار اتفاق می افتد و شما آن را از مارکتی مانند بازار دانلود می کنید تا زمانی که بخواهید آن را از طریق همان مارکت آپدیت نمایید.همچنین در زمان استفاده از یک وب اپلیکیشن یا وب سایت فرانت آن بر روی مرورگر دانلود و کش میشود. در هر صورت مهم است که بدانیم فرانت بر روی دیوایس ما قرار دارد.برای مثال زمانی که ما فرم ورود سما لایو را پر میکنیم, فرم و اطلاعات ورودی بر روی دیوایس ما که می تواند موبایل یا کامپیوتر ما باشد قرار دارد. اما زمانی که بر روی دکمه ی ورود کلیک می کنیم یک درخواست تحت پروتکل HTTP که حاوی نام کاربری و پسورد ماست به اپلیکیشن دیگری که بر روی سرور قرار دارد و به آن back-end می گوییم ارسال می شود.در فرآیند مذکور back-end وظیفه دارد تا نام کاربری و پسورد را دریافت نماید. آن را اعتبار سنجی کند و پس از آن یک درخواست به دیتابیس بزند و وجود چنین اطلاعاتی را در دیتابیس بررسی نماید. اگر این اطلاعات در دیتابیس وجود نداشت یا با هم مطابقت نداشت برای فرانت یک response (پاسخ) ارسال نماید که کاربر بداند این اطلاعات غلط است. و اگر اطلاعات کاربر درست بود او را به صفحه ی داشبورد هدایت نماید.سرورگفتیم که اپلیکیشن back-end بر روی سرور قرار داد. سرور یک کامپیوتر همیشه روشن و متصل به اینترنت است که منابع مختلفی مانند رم، فضای ذخیره‌سازی، پردازنده و … را برای اپلیکیشن های back-end آماده می نماید.هاستهر کامپیوتری می تواند سرور باشد. اما با توجه به اینکه نیاز است تا این کامپیوتر ها همیشه روشن باشند طبیعی است تا در ساخت آنها از قطعاتی با طول عمر بیشتر استفاده شود که قیمت تمام شده ی آن ها را بالا می برد. در نتیجه کامپیوتر های مخصوصی با نام سرور ساخته می شوند که توان بیشتری نسبت به کامپیوتر های خانگی دارند و مقاومت قطعات آن ها در برابر فشار های مداوم بیشتر است.اما همه ی وبسایت ها از پس مخارج خرید یا اجاره  ی سرور بر نمی آیند. از طرفی برای اینکه سرورها را همیشه روشن و در بهترین وضعیت نگهداری کنیم نیاز به مدیریت دارند. مدیران سرور ها باید دانش خوبی از شبکه و سرویس های آن داشته باشند و معمولا حقوق بالایی مطالبه می کنند. در نتیجه برای کاهش هزینه ها منابع سرور ها را به صورت مجازی به قسمت های کوچکتری تقسیم می کنند و تحت نام هاست به صاحبان کسب و کارهای آنلاین ارائه می دهند. هاست در زبان انگلیسی (Host) به معنای میزبان است که به بخشی از سرور گفته می‌شود که بک-اند را میزبانی می کند. یک سرور می‌تواند به چندین قسمت تقسیم شود (تقسیم‌بندی مجازی) که به هر قسمت آن، هاست گفته می‌شود. یعنی هر بخش از این سرور به عنوان یک هاست از یک وب سایت یا back-end یک اپلیکیشن تحت وب میزبانی می‌کند. هاست در وب و شبکه های کامپیوتری کاربرد زیادی دارد.  همانطور که گفته شد از اصلی ترین وظایف آن دریافت و ارسال داده ها و سرویس های مختلفی می باشد که اپلیکیشن های تحت وب اعم از وبسایت, وب اپلیکیشن و موبایل اپلیکیشن هایی که از بستر اینترنت استفاده می کنند به آن نیاز دارند.دیتاسنترسرور ها نیاز دارند تا همیشه به اینترنت خیلی سریع متصل باشند. همچنین این کامپیوترها باید خنک نگهداری شوند و نسبت به گرما و گرد و خاک ایزوله باشند. از طرفی مقرون به صرفه نیست برای هر سرور یک چنین محیطی تهیه کرد یا مدیری که می تواند به صورت همزمان چند سرور را مدیریت کند فقط از یک سرور مدیریت نماید. در نتیجه مکانهایی با این هدف برای نگهداری سرور ها به وجود آمدند که به آن ها دیتاسنتر می گویند.دیتاسنترها با در اختیار داشتن خطوط پرسرعت اینترنت ، سرورهای قوی و متعدد، تجهیزات پیشرفته تامین برق ، تهویه مناسب و متخصصین مجرب، امكان راه اندازی سرورهای وب را برای عموم مردم ممكن می کنند. شرکت های تجاری ، سازمان ها و مردم عادی می توانند با اجاره كردن فضای محدودی در این دیتاسنترها، سرور های خود را در آن قرار دهند و از سرویس های آن استفاده نمایند.هاستینگهاستینگ ها یا به عبارتی شرکت هایی که به صاحبان اپلیکیشن های تحت وب هاست ارائه می دهند معمولا سرور های خود را در دیتاسنتر قرار می دهند یا سرور هایی را از دیتاسنتر اجاره می نمایند و آن را از راه دور ( Remote ) با ابزارهای خاص كنترل می کنند. آن ها منابع سرور هایی را که در اختیار دارند را به صورت مجازی تقسیم می کنند و این هاست ها را به صورت ماهیانه یا سالیانه به مشتریان خود اجاره می دهند.خدمات هاستینگ هاهاستینگ ها علاوه بر ارائه هاست اشتراکی ممکن است خدمات زیر را نیز به مشتریان خود ارائه دهند که در ادامه به توضیح هر کدام خواهم پرداخت.ابر خصوصی ( private cloud )شاید بهتر باشد قبل از توضیح این خدمات به تشریح مفهوم ابر ( cloud ) بپردازم. یک کلود یا ابر، در حقیقت ردیف گسترده ای از کامپیوترهایی است که به یکدیگر متصل شده‌اند و به عنوان یک اکوسیستم واحد به فعالیت می‌پردازند. ابرها به گونه‌ای پیکربندی می‌شوند تا یک یا چند نوع سرویس به خصوص (نظیر ذخیره‌ی داده، تحویل محتوا، یا اپلیکیشن‌ها) را  به گونه‌ای ارائه کنند که کاربران آن بتوانند از راه دور به این سرویس‌ها دسترسی داشته باشیم.ابر خصوصی ( Private Cloud ) یک مدل خاص از محاسبات ابری ( Cloud Computing ) است که شامل یک محیط مبتنی بر کلود ولی به صورت مجزا و امن می باشد که تنها برای یک مشتری کار می کند. همانند دیگر مدل های کلود، ابر یا کلود خصوصی, قدرت محاسباتی را به عنوان یک سرویس در یک محیط مجازی با استفاده از یک استخر از منابع محاسبات فیزیکی ارائه می دهد. با این حال در این مدل، ابر (استخری از منابع) تنها برای یک سرویس گیرنده با کنترل بالاتر که حفظ حریم خصوصی را در پی دارد در دسترس است.کلاستر دیتابیسمعنی لغوی کلاسترینگ یعنی خوشه بندی .کلاستر کردن دیتابیس عبارت است از سرویس گرفتن یک دیتابیس از چند سرور به عنوان یک سیستم واحد به طوریکه بازدهی آن دیتابیس چند برابر میشود. کلاستر کردن در زمینه های مختلف با اهداف خاصی مورد استفاده قرار میگیره. من این مفهوم را در قالب چند مثال خواهم گفت تا علاوه بر مشخص شدن کاربرد آن راحت تر مفهوم شود : به عنوان مثال کلاستر کردن به منظور cache server به این صورت است که صفحات در هارد سرورهای مختلف ذخیره شده و درخواست کلاینت (کاربر, فرانت) به نزدیکترین سرور می رسد . در صورت مشغول بودن سرور این درخواست به سرور بعدی می رود یا اصلا ممکن است سایت مورد نظر در آن سرور نباشد به این ترتیب سرور اول کلاینت را به سروری هدایت می کند که حاوی این صفحه باشد بدین ترتیب هم حجم هارد را چند برابر کرده ایم و هم سرعت بازیابی صفحه چند برابر شده است. بحث کلاستر کردن بر روی سرورها به این مفهوم است که گروهی از سرورها با هم یک برنامه خاصی را اجرا میکنند و هر سرور به عنوان یک خوشه بخشی از کار را انجام میدهد که نتیجه آن سرعت بالای اجرا می باشد زیرا بار محاسباتی بین این سرورها توزیع شده (load balancing)مزیت دیگر آن است که در صورت حضور چند سرور و کلاستر کردن آن ها اگر یک سرور از کار بیفتد دیگر سرورها به درخواست پاسخ خواهند داد که به این عمل failover می گویند. اکثر وب سرورها از این ساختار استفاده میکنند چون تعداد request های آنها بالاست. کلاستر کردن دیتابیس بیشتر برای سازمان و شرکت هایی به کار میرود که برنامه ی آنها تحت هر شرایطی باید اجرا شود و در حالت اجرا باقی بماند حتی زمانی که یکی از سرورها از سرویس خارج شده باشد. سرورهای کلاستر بیشتر برای برنامه هایی به کار میروند که مدت زمان زیادی را در حافظه می ماند و یا تعویض داده ی بیشتری را انجام میدهند که به آنها Stateful Applications گفته میشود که میتوان سرورهای بانک اطلاعاتی نظیر Microsoft SQL یا سرورهای ایمیل مایکروسافت را نام برد.ایمیل سازمانیایمیل سازمانی به  کاربران اجازه می دهد بدون نیاز به استفاده از سرویس های خدمات دهنده ایمیل نظیر  Gmail و Yahoo و … با نام دامنه اختصاصی خود صاحب یک ایمیل قدرتمند ، پایدار و امن شوند.یکی از سرویس هایی که این خدمت را مهیا می سازد میل سرور قدرتمند Smartermail می باشد. در واقع هاستینگ ها با خریداری لایسنس این سرویس و با بهره گیری از امکانات آن از جمله Raid سخت افزاری، منابع برق اضطراری ، online backup و استفاده از اینترنت متصل به زیرساخت شبکه کشور، خدمات ایمیل سازمانی را در اختیار سازمان ها و شرکت ها قرار می دهند. از طرفی قرار گیری این سرویس ها در دیتاسنتر های ایران موجب می شود تا کاربران با حداکثر سرعت و بدون مواجهه با اختلالات اینترنتی Gmail و Yahoo به ایمیل خود دسترسی یابند. در اعتراضات اخیر ایران شاهد قطعی اینترنت از طرف دولت بودیم در حالی که دسترسی به اینترنت ملی وجود داشت. با توجه با سابقه ی قطعی اینترنت و احتمال پیشامد چنین رخداد هایی در آینده استفاده از این سرویس ها برای شرکت ها و سازمان ها منطقی به نظر می آید.  همچنین سرویس Smartermail دارای قابلیت هایی نظیر متد های آنتی اسپم، آنتی ویروس، مدیریت کاربران، چت داخلی و … می باشد.فضای دیتاسنترفضای دیتاسنتر, سرویسی است که کسب و کار‌ها به واسطه ی آن از فضای دیتاسنتر جهت استقرار سرورها و یا سایر سخت افزارهای خود استفاده می نمایند. در این سرویس محل فیزیکی، برق، سیستم تهویه و خنک‌کننده، پهنای باند و امنیت فیزیکی جهت قرار گرفتن تجهیزات مشتری اجاره داده می شود.هاست ابریهاست ابری برخلاف هاست اشتراکی مناسب برای سایت‌های پر ترافیک است. خرید این هاست ها نسبت به خدماتی که ارائه می دهند ارزان و اقتصادی است؛ زیرا همواره برای میزان استفاده از منابع که لازم دارید، هزینه پرداخت می‌کنید و دیگر دغدغه قیمت‌ هاست را به دلیل پرداخت هزینه‌های غیر موجه نخواهید داشت. همچنین سرورهای ابری مجهز به انواع تجهیزات امنیتی و فایروال ، هارد پرسرعت و Ram DDR4 و انواع آنتی ویروس برای میزبانی سایت هایی که با تکنولوژی های مختلف ایجاد شده اند دارد, علاوه بر این برای نصب انواع CMS های اوپن سورس مناسب می باشد.سرور ابریسرور ابری، نوعی سرور مجازی است که به جای آنکه بر روی یک سرور فیزیکی میزبانی شود، بر روی سرویس های ابری ایجاد می شود. و به همین علت دارای پایداری بالاتری نسبت به سرورهای مجازی(VPS) هستند. وجود سخت افزارهای رزرو در ساختار رایانش ابری، موجب می شود اختلالات سخت افزاری تاثیری روی سرورهای ابری نداشته باشد. همچنین بر خلاف سرورهای مجازی، مصرف بالای منابع سخت افزاری توسط یکی از کاربران، تاثیر منفی بر روی سرویس کاربران دیگر نخواهد گذاشت.سرور مجازیسرور مجازی یا VPS مخفف عبارت Virtual Private Server به معنی سرور مجازی خصوصی است. سرور مجازی بخشی از یک سرور اختصاصی کامل است که با نرم افزارهای مجازی ساز ایجاد شده است. مجازی سازی به این صورت است که یک سرور به چند بخش تقسیم میشود و منابع آن به قسمت های کوچکتری تقسیم می شود. با توجه به اینکه منابع یک سرور کامل به چند بخش تقسیم می شود اغلب و در شرایط یکسان، هزینه خرید سرور مجازی نسبت به سرور اختصاصی پایین تر است. خرید vps به شما این امکان را میدهد، که در صورت نیاز به فضای بیشتر به کمک فناوری ابری، منابع خود را تا ۷۲ هسته CPU و ۲۵۶ گیگابایت RAM ارتقا دهیدسرورهای مجازی معمولا بر اساس سیستم عامل، مدل مجازی سازی و همچنین تکنولوژی آن دسته بندی می شود. در زیر به انواع دسته بندی های سرور مجازی اشاره می شود: سرور مجازی لینوکس (با امکان نصب انواع سیستم عامل های توزیع لینوکس) سرور مجازی ویندوز (با امکان نصب اغلب سیستم عامل های ویندوز سرور) سرور مجازی اختصاصی (با منابع کاملا اختصاصی از قبیل CPU , RAM و …) سرور مجازی اشتراکی (با منابع سخت افزاری اشتراکی) سرور مجازی ابری (با ساختاری متفاوت به منظور بالا رفتن سطح کارایی، پایداری، امنیت و …)هایبرید سرورهمانطور که گفته شد  سرور مجازی خصوصی (Virtual Private Server) ، تمام ویژگی های یک سرور فیزیکی اختصاصی را داراست با این تفاوت که با استفاده از ابزارهای مجازی سازی مانند VMWARE,KVM,XEN,OPENVZ – بر روی یک سرور اختصاصی چندین سرور مجازی راه اندازی می شود.  هایبرید سرور ها نوعی از سرور های مجازی هستند که تمام منابع ماشین مجازی ، رزرو شده و با هیچ ماشین مجازی دیگری مشترک نیست در نتیجه vps شما بدون تاثیری پذیری از مصرف منابع توسط vps های دیگر با منابع ایزوله واختصاصی بصورت پایدار فعالیت خواهد نمود. سرور مجازی هایبرید به این معناست که تمام منابع برای سرور مجازی مورد نظر رزرو شده و اختصاصی می باشد و این منابع با سرورهای مجازی دیگر به اشتراک گذاشته نخواهد شد.هایبرید سرورها در واقع نسل جدید و پیشرفته سرورهای مجازی اختصاصی هستند که با پنل قدرتمند ابری ارائه می‌شوند. در هایبرید سرورها علاوه بر ارائه سخت‌افزار مستقل، امکانات نرم‌افزاری ویژه‌ای نیز در نظر گرفته شده است.ماکرو سرورماکرو سرور بستری کاملا قدرتمند برای ارگان های دولتی٬ نظامی و صنایع بزرگ می باشد که برای پردازش های با مقیاس بالا و ترافیک چند هزار نفر آنلاین در لحظه طراحی شده است و در مقابل حملات تکذیب سرویس کاملا قادر به تمایز پکت ها و پیشگیری از هر گونه اخلال می باشد.CDNCDN یک شبکه توزیع محتوا است. سرورهایی در نقاط مختلف جغرافیایی قرار می گیرند و با توجه به اینکه کدام سرور به موقعیت بازدیدکننده سایت نزدیک تر است به درخواست ها پاسخ داده می شود. در واقع اطلاعات سایت از سروری فراخوانی می شود که به موقعیت کاربر نزدیک تر باشد. بدین ترتیب سایت با سرعت بیشتر لود خواهد شد.SSLپروتکل SSL براي امن کردن پروتکل هاي غير ایمن نظير HTTP ،LDAP ، IMAP و … استفاده مي شود. بر اين اساس يکسري الگوريتم هاي رمزنگاري بر روي داده هاي خام که قرار است از يك كانال ارتباطي غير ایمن مثل اينترنت عبور کنند، اعمال مي‌شود و محرمانه ماندن داده‌ها را در طول انتقال تضمين مي‌کند. در فرآیند ssl شرکتي که صلاحيت صدور و اعطاء گواهي هاي ديجيتال اس اس ال را دارد، براي هر کدام از دو طرفي که قرار است ارتباطات ميان شبکه‌اي امن داشته باشند، گواهي‌هاي مخصوص سرويس دهنده و سرويس گيرنده را صادر مي‌کند و با مكانيزم هاي احراز هويت خاص خود، هويت هر کدام از طرفين را براي طرف مقابل تاييد مي‌کند.  علاوه بر اين تضمين مي کند، اگر اطلاعات حين انتقال به سرقت رفت، براي رباينده قابل درک و استفاده نباشد که اين کار را به کمک الگوريتم هاي رمزنگاري و كليدهاي رمزنگاري نامتقارن و متقارن انجام مي‌دهد.تمدید و ثبت دامنهدر جزوه های دانشگاهی , بارها خدماتی مانند طراحی سایت و ثبت دامنه به عنوان خدمات ISP ها معرفی شده است. در صورتی که طراحی و برنامه نویسی انواع سایت و اپلیکیشن از شاخه مهندسی نرم افزار می باشد و یک کار تخصصی است و با حوزه ی فعالیت ISP ها که بیشتر شبکه های کامپیوتری است کاملا متفاوت است. همچنین ثبت دامنه در اختیار شرکت های معدودی در جهان است. و هر شخص یا شرکت واسطی می تواند بدون آنکه نیاز به احراز هویت خاصی داشته باشد حساب خود در پنل وب سایت این شرکت ها را شارژ نماید و به همان اندازه برای دیگران دامنه ثبت نماید.  در خصوص دامنه های ملی هم, مرکز ثبت دامنه‌های مرتبه‌اول (‎.ir) و (.ایران) مرکز ایرنیک می باشد که از طریق وبسایت nic.ir قابل دسترسی می باشد. سایر شرکت هایی که اقدام به ثبت دامنه های ملی می نمایند در واقع نماینده ی این مرکز می باشند. در هر صورت هاستینگ ها هم معمولا برای کامل کردن خدمات خود اقدام به دریافت نمایندگی ثبت دامنه به صورت ملی و بین المللی می نمایند و این خدمات را ارائه می دهند.هاست لینوکس یا ویندوزحال که در مورد خدمات هاستینگ ها صحبت شد و هر کدام از آن ها را به تفصیل توضیح دادم به موضوعاتی خواهم پرداخت که در زمان خرید هاست با آن مواجه خواهیم شد. یکی از این موضوعات هاست لینوکس یا ویندوز است. گاها خیلی از مشتریان که قصد تهیه ی هاست برای سرویس های خود را دارند تاکید زیادی بر هاست ویندوز دارند. وقتی دلیل آن را جویا می شوم می گویند بخاطر اینکه آشنایی کمی با لینوکس دارند و با توجه به اینکه سیستم عامل خودشان ویندوز است بهتر می بینند هاست آن ها هم ویندوز باشد که تصور اشتباهی است.اما این در حالی است که شما در زمان استفاده از هاست اشتراکی هیچ زمانی فرصت یا بهتر بگوییم اجازه ی روبرویی با سیستم عامل آن را به صورت مستقیم نخواهید داشت. چیزی که شما با آن مواجه خواهید شد پنل هاست است که بر روی این سیستم عامل ها نصب شده است و در ادامه به توضیح آن خواهم پرداخت. در هر صورت منظور از لینوکس یا ویندوز بودن هاست صرفا سیستم عاملی است که بر روی سرور نصب شده است و روی آن نرم افزار های مربوطه نصب شده است. اگر بخواهیم تفاوت های هاست لینوکس و ویندوز را از نظر فنی مقایسه کنیم باید گفت هاست لینوکس از پایگاه داده MySQL به خوبی پشتیبانی میکند ولی هاست ویندوز از پایگاه داده SQL SERVER پشتیبانی بهتری میکند، نکته مهم این است که تمام سیستم های مدیریت محتوا های معروف مانند وردپرس, جوملا  دیتالایف دروپال و … برای عملکرد صحیح به پایگاه داده MySQL نیاز دارند در نتیجه برای استفاده از آنها باید هاست لینوکس تهیه شود. در مورد امنیت هم سرور های لینوکسی امنیت به مراتب بیشتری از هاست های ویندوزی دارند. به جز میزبانی اپلیکیشن هایی که با ASP.NET و تکنولوژی های ویندوزی نوشته شده اند بهتر است همیشه از هاست لینوکس استفاده نماییم.کنترل پنل هاستکنترل پنل هاست یک محیط بصری تحت وب است که توسط شرکت ارائه دهنده خدمات میزبانی هاست اشتراکی ارائه می گردد تا کاربران بتوانند تمام خدمات هاست خود را به صورت یکجا مدیریت نمایند. در واقع فرانت-اند اپلیکیشن مدیریت هاست می باشد که در بالاتر به تشریح مفهوم آن پرداختم.امکانات پنل هاست– مدیریت حساب کاربری مدیریت هاست– مشاهده لاگ ها و گزارش های سرور– جزئیات میزان مصرف شده و میزان خالی فضای حافظه هاست و همچنین میزان مصرف پهنای باند– تنظیمات مربوط به مدیریت حساب های ایمیل، فوروارد کردن، مشاهده ایمیل های دریافتی، ارسال ایمیل، تنظیمات امنیت و…– ایجاد اکانت یا حساب کاربری برای دسترسی امنیتی FTP– مدیریت مراکز داده یا دیتابیس (DataBase)– مشاهده آمار و اطلاعات بازدیدکنندگان به کمک نرم افزار آمار آنالیز یا بررسی لاگ های سایت– مدیریت فایل ها تحت وب به وسیله نرم افزار های مرتبط– ایجاد ساب دامین (زیر دامنه) برای دامنه اصلی هاست– افزودن دامنه به فضای میزبانی– تنظیمات مربوط به زبان های پشتیبانی شده– و بسیاری امکانات دیگر…از پنل های معروف هاست های لینوکسی می توان از Cpanel (سی پنل) ، Plesk (پلسک)،  (دایرکت ادمین) DirectAdmin نام برد،  و از پنل های معروف هاست های ویندوز می توان به وب سایت پنل (WebsitePanel) اشاره کرد که در ادامه به تشریح هر کدام خواهم پرداخت.کنترل پنل Cpanelبه طور کلی، Cpanel منحصرا بر روی سیستم های لینوکسی قابل اجرا می باشد و به طور رسمی از 3 ورژن لینوکس CentOS، CloudLinux و RedHat پشتیبانی می کند. با وجود این محدودیت, از این کنترل پنل بسیار استفاده می شود زیرا استفاده از لینوکس در بازار سرور ها بسیار رایج شده است.کنترل پنل Pleskبرخلاف Cpanel این کنترل پنل تنوع بیشتر از نسخه های لینوکس را پشتیبانی می کند. علاوه بر سه نسخه ی لینوکسی، که توسط Cpanel نیز پشتیبانی می شود ، Plesk می تواند بر روی Ubuntu، Debian و OpenSuse نیز اجرا گردد. اما ویژگی دیگر این پنل پشتیبانی آن از ویندوز است. هم اکنون Plesk از Windows Server 2002 R2 به خوبی پشتیبانی می کند.کنترل پنل DirectAdminدایرکت ادمین بر روی سیستم عامل های لینوکسی و به طور ویژه فقط ورژن های RedHat، CentOs، FreeBSD و Debian اجرا می شود. بدین معنی که با داشتن یک سرور لینوکسی برای شما طیف وسیعی از گزینه ها در کنترل پنل میزبانی فراهم خواهد بود.وبسایت پنل WebsitePanelدر صورت انتخاب هاست ویندوزی از طرف شما به دلیل عدم پشتیبانی اکثر محصولات مرتبط با میزبانی وب از ویندوز،  انتخاب شما به شدت محدود می گردد. با این حال WebsitePanel یک کنترل پنل خوب برای شما خواهد بود.منبع </description>
                <category>علی نیستانی</category>
                <author>علی نیستانی</author>
                <pubDate>Fri, 17 Jul 2020 16:58:26 +0430</pubDate>
            </item>
                    <item>
                <title>تجهیزات T carrier</title>
                <link>https://virgool.io/@sh4rifi/%D8%AA%D8%AC%D9%87%DB%8C%D8%B2%D8%A7%D8%AA-t-carrier-qlnccgmafm7q</link>
                <description>بعد از اجاره خطوط Leased Line مخابرات دستگاهی به نام DSU/CSU سرنام  Channel/Data Service Unit در  اختیار مشترک قرار میدهد که باید بعد از دستگاه اصلی و خارج از شبکه قرار داده شود تا اطلاعات دریافتی از خطوط T1 و E1 را به اطلاعات دیجیتال مورد نیاز در شبکه و بلعکس تبدیل کند. عملکرد این دستگاه مانند مودم است. CSU و DSU دستگاه های مجزایی هستند که البته در قالب یک دستگاه واحد ترکیب می شوند. این دستگاه ها به صورت یک دستگاه اکسترنال مستقل یا یک کارت داخلی که به روتر اضافه می شود ارائه می شود. دستگاه CSU سیگنال های دیجیتالی را ارائه می دهد و مطمئن میشود که ارتباط به درستی برقرار شده است. در حالی کهDSU فریم های دریافتی از خطوط را به فریم های داخل شبکه محلی که مورد استفاده قرار میگیرد و عکس این عمل را انجام میدهد.CSU/DSU هم مانند مودم ها دستگاه هایی در گروه DTE دسته بندی می شوند</description>
                <category>علی نیستانی</category>
                <author>علی نیستانی</author>
                <pubDate>Sun, 12 Jul 2020 19:00:55 +0430</pubDate>
            </item>
                    <item>
                <title>تفاوت خطوط E1 و T1 به زبان ساده</title>
                <link>https://virgool.io/@sh4rifi/%D8%AA%D9%81%D8%A7%D9%88%D8%AA-%D8%AE%D8%B7%D9%88%D8%B7-e1-%D9%88-t1-p74xy344snd1</link>
                <description>خطوط E و T هر دو خطوط اجاره ای یا Leased Line هایی هستند که بصورت سرویس های شبکه های گسترده توسط Service Provider ها یا همان SP ها ارائه می شوند. این خطوط قابلیت انتقال داده ها بصورت Point To Point یا Point To Multi point در سرعت های متفاوت را دارند که معمولا سرعتی بین 64 کیلوبیت بر ثانیه یا 140 مگابیت بر ثانیه می باشند.تفاوت اصلی این تکنولوژی ها در واقع در محل استفاده و استاندارد استفاده آنها است خطوط T در آمریکای شمالی و خطوط E در اروپا و سایر نقاط دنیا مانند ایران مورد استفاده قرار می گیرند و معمولا پارامتر سرعت و تعداد خطوط تلفنی که در هر خط پشتیبانی می شود از تفاوت های آنها می باشد برای مثال در اروپا یا Europe بر اساس سرعت خطوط E1 به دسته بندی های زیر طبقه بندی می شوند0 (64Kbps)E1 = 32 E0 lines (2Mbps)E1 = 128 E0 lines (8Mbps)E3 = 16 E1 lines (34Mbps)E4 = 64 E1 lines (140Mbps)در آمریکای شمالی و به ویژه ایالات متحده این استانداردها به صورت T طبقه بندی و به دسته بندی های زیر طبقه بندی می شوندT1 (1.544 Mbps)T2 = 4 T1 lines (6 Mbps)T3 = 28 T1 lines (45 Mbps)T4 = 168 T1 lines (275 Mbps)</description>
                <category>علی نیستانی</category>
                <author>علی نیستانی</author>
                <pubDate>Sun, 12 Jul 2020 17:29:36 +0430</pubDate>
            </item>
                    <item>
                <title>تفاوت Packet Switching و Cell switching به زبان ساده</title>
                <link>https://virgool.io/@sh4rifi/%D8%AA%D9%81%D8%A7%D9%88%D8%AA-packet-switching-%D9%88-cell-switched-wpn3r1egif7o</link>
                <description>در Packet Switching  داده ها به بسته تقسیم میشوند. یک آدرس مقصد روی هر یک از آنها قرار میگیرد. این شبکه با استفاده از متد best-effort ، سعی در ارسال بسته ها به مقصد می کندCell switching در این نوع از ارتباط داده ها به بسته هایی با اندازه ی ثابت که سلول نامیده میشود تقسیم می شود.به آن ها یک header اضافه شده است که حاوی یک تگ است. مجموعه ی تگ ها به سمت مقصد هدایت می شوند. از تحویل داده ها اطمینان حاصل می شود. و در صورت عدم ارسال خطا به فرستنده گزارش می شود.</description>
                <category>علی نیستانی</category>
                <author>علی نیستانی</author>
                <pubDate>Sun, 12 Jul 2020 15:20:00 +0430</pubDate>
            </item>
                    <item>
                <title>تفاوت شبکه LAN و WAN به زبان ساده</title>
                <link>https://virgool.io/@sh4rifi/%D8%AA%D9%81%D8%A7%D9%88%D8%AA-%D8%B4%D8%A8%DA%A9%D9%87-lan-%D9%88-wan-hheumur9xvyt</link>
                <description>شبکه های LANفقط مناطق محلی (به عنوان مثال خانه ها ، دفاتر ، مدارس)یک منطقه جغرافیایی کوچک را پوشش می دهد ، مانند خانه ، دفتر ، مدرسه یا گروهی از ساختمانها.سرعت بالا (1000 Mbps)شبکه های محلی سرعت انتقال داده بالایی دارند.شبکه موجود در ساختمان اداری می تواند LAN باشدتمایل به استفاده از برخی فناوری های اتصال ، در درجه اول اترنت و Token Ring دارنداز طریق خطوط تلفنی و امواج رادیویی می توان یک LAN را به سایر شبکه ها متصل کرد.دستگاه های لایه 2 مانند سوئیچ ها و پل ها. دستگاه های لایه 1 مانند هاب ها و تکرار کننده ها.شبکه های محلی تمایل دارند مشکلات کمتری در ارتباط با آنها داشته باشند زیرا تعداد سیستم های کمتری برای مقابله با آنها وجود دارد.خطاهای انتقال داده کمتری را تجربه می کنیدبه طور معمول متعلق به یک شخص یا سازمان مجزا ، کنترل و اداره می شود.اگر نیاز به راه‌اندازی چند دستگاه اضافی در شبکه وجود داشته باشد ، انجام این کار خیلی گران نیست.محدوده جغرافیایی کمی داشته باشید و نیازی به خطوط ارتباطی اجاره ای نداریداز آنجا که منطقه جغرافیایی نسبتاً کمی را در بر میگیرد ، LAN با هزینه های نسبتاً کم نگهداری آسان تر است.پهنای باند بالا برای انتقال در دسترس است.تراکم کمترفقط مناطق محلی (به عنوان مثال خانه ها ، دفاتر ، مدارس)شبکه های WANمناطق جغرافیایی بزرگ (به عنوان مثال ، شهرها ، ایالت ها ، کشورها)مساحت وسیعی را دربرمی گیرد (به عنوان مثال ، هر شبکه ای که ارتباطات آن از مرزهای شهری ، منطقه ای یا ملی از مسافت طولانی عبور کند).سرعت کمتر (150 Mbps)WAN ها نسبت به شبکه های محلی سرعت انتقال داده کمتری دارند.اینترنت نمونه خوبی از WAN استWAN ها تمایل دارند از فناوری هایی مانند MPLS ، ATM ، Frame Relay و X25 برای اتصال در مسافت های طولانی تر استفاده کنندرایانه هایی که به یک شبکه گسترده متصل هستند ، غالباً از طریق شبکه های عمومی مانند سیستم تلفن متصل می شوند. آنها همچنین می توانند از طریق خطوط اجاره ای یا ماهواره ای به هم متصل شوند.لایه ها 3 دستگاه روتر ، سوئیچ های چند لایه و دستگاه های خاص فناوری مانند دستگاههای خودپرداز یا فریم رله و غیرهWAN ها گرایش به تحمل پذیری کمتری دارند زیرا از تعداد زیادی سیستم تشکیل شده اند.خطاهای انتقال داده بیشتری در مقایسه با LAN تجربه می کنیدWAN (مانند اینترنت) متعلق به هیچ سازمانی نیست ، بلکه در مالکیت جمعی یا توزیع شده و مدیریت در مسافت های طولانی وجود دارد.از آنجا که شبکه ها در مناطق دور افتاده باید به شبکه وصل شوند ، هزینه های راه اندازی بالاتر است. با این حال شبکه های WAN با استفاده از شبکه های عمومی می توانند بسیار ارزان با استفاده از نرم افزار فقط (VPN و غیره) راه اندازی شوند.محدوده جغرافیایی بزرگی داشته باشید که عموماً در مرزها گسترش می یابد و به خطوط ارتباطی اجاره ای احتیاج داریدبه دلیل پوشش گسترده تر جغرافیایی و هزینه های نگهداری بالاتر ، نگهداری WAN دشوار است.پهنای باند کم برای انتقال در دسترس است.تراکم بیشترمناطق جغرافیایی بزرگ (به عنوان مثال ، شهرها ، ایالت ها ، کشورها)منبع:http://afranext.com/b/%d8%a2%d9%85%d9%88%d8%b2%d8%b4-wan-vs-lan/</description>
                <category>علی نیستانی</category>
                <author>علی نیستانی</author>
                <pubDate>Sun, 12 Jul 2020 13:47:41 +0430</pubDate>
            </item>
                    <item>
                <title>دستورالعمل وزارت بهداشت آمریکا جهت مقابله با کرونا (ترجمه)</title>
                <link>https://virgool.io/@sh4rifi/%D8%AF%D8%B3%D8%AA%D9%88%D8%B1%D8%A7%D9%84%D8%B9%D9%85%D9%84-%D9%88%D8%B2%D8%A7%D8%B1%D8%AA-%D8%A8%D9%87%D8%AF%D8%A7%D8%B4%D8%AA-%D8%A2%D9%85%D8%B1%DB%8C%DA%A9%D8%A7-%D8%AC%D9%87%D8%AA-%D9%85%D9%82%D8%A7%D8%A8%D9%84%D9%87-%D8%A8%D8%A7-%DA%A9%D8%B1%D9%88%D9%86%D8%A7-uzmdfit11y10</link>
                <description>✅وزارت بهداشت و خدمات انسانی ایالات متحده آمریکا (HHS) دستورالعملی کامل برای مشکل کرونا (COVID-19) اماده کرده و در ادارات و اماکن عمومی قرار داده.دستورالعمل جامع مواجه نشدن با بیماری ناشی از ویروس کرونا (2019-nCoV):1- تحت هیچ شرایطی و هیچ وقت دست خود را به صورت خود نزنید. (چشم، بینی و دهان خود را تحت هیچ شرایطی لمس نکنید)2- دست هایتان را به صورت مرتب (هر 1 ساعت یکبار) با آب و صابون (حداقل 20 ثانیه) یا ضدعفونی کننده با الکل بالای 60 درصد (بین 60 تا 95 درصد) بشویید.3- به جز مواقع اجبار از خانه بیرون نروید.4- از دست دادن و روبوسی با دیگران پرهیز کنید.5- فاصله 1 متری با دیگران را رعایت کنید. (به خصوص افرادی که نشانه‌های مریضی از جمله سرفه یا تب دارند)6-  در صورت سرفه یا عطسه کردن، با آرنج خمیده (flexed-elbow) (دست خود را خم کنید و آرنج را جلوی دهن بگذارید) یا دستمال کاغذی (که سریعا به سطل آشغال بسته میندازید) را در مقابل دهن قرار دهید.7- در صورت خارج شدن از خانه و عدم دسترسی به مواد شوینده، از محلول ضدعفونی کننده با الکل بالای 60 درصد (بین 60 تا 95 درصد) استفاده کنید.8- گوشی همراه خود را در خارج از خانه از جیب خود خارج نکنید (مگر در شرایط اضطراری)9- اقدامات زیر در هنگام بازگشت به خانه بسیار بسیار حیاتی می‌باشد و باید گام به گام و با دقت رعایت شود:الف) بعد از ورود به خانه بدون دست زدن به هیچ چیز و بدون برخورد یا نشستن در جایی، مستقیما به دستشویی رفته و دست خود را  به طور کامل بشویید. (در دستشویی را از قبل باز بگذارید، در صورت باز نبودن در، با دستمال کاغذی درب را بازکنید و سریعا دستمال را به سطل آشغال بسته (closed bin) بیندازید و بعد از پایان کار، دستگیره را ضدعفونی کنید)ب) تلفن همراه خود را ابتدا با دستمال مرطوب الکلی و سپس با محلول ضدعفونی الکل بالای 60 درصد به طور کامل ضدعفونی کرده و روی دستمالی بگذارید. (در صورت استفاده از قاب محافظ، قاب محافظ را خارج کرده و هردوی گوشی و قاب محافظ را به طور کامل ضدعفونی کنید)ج) لباس‌های بیرون خود را دربیاورید و در مکانی به دور از لباسهای منزل و دیگر وسایل خانه آویزان کنید. د) مجدد به دستشویی رفته و دست خود را به طور کامل بشویید.ه) در این مرحله می‌توانید لباس منزل خود را بپوشید.اکنون محیط خانه شما امن می‌باشد و به شرط دست نزدن به صورتتان، میتوانید از گوشی همراه خود استفاده کنید.10- دست خود را قبل، در حین و بعد از تهیه غذا، قبل از خوردن غذا و بعد از استفاده از توالت بشویید.فراموش نکنید تحت هیچ شرایطی و در هیچ ساعت روز و در هیچ مکانی به صورت خود (چشم، بینی و دهان) دست نزنید.11- تمام سطوح پرتماس خانه و محل کار (high-touch surfaces) را هرروز با اسپری تمیزکننده بشویید. (از جمله: پیشخوان، رومیزی، میز کار، وسایل </description>
                <category>علی نیستانی</category>
                <author>علی نیستانی</author>
                <pubDate>Wed, 26 Feb 2020 03:54:08 +0330</pubDate>
            </item>
                    <item>
                <title>چطور Eloquent Queries را در لاراول لاگ کنیم؟</title>
                <link>https://virgool.io/laravel-community/%DA%86%D8%B7%D9%88%D8%B1-eloquent-queries-%D8%B1%D8%A7-%D8%AF%D8%B1-%D9%84%D8%A7%D8%B1%D8%A7%D9%88%D9%84-%D9%84%D8%A7%DA%AF-%DA%A9%D9%86%DB%8C%D9%85-lefar9zdjlio</link>
                <description>یه زمانی هست شما میخواید Eloquent Queries که نوشتید رو به صورت جملات sql ببینید یا زمان کویری رو بدونید. این موضوع هم به یادگیری و درک بیشتر شما از Eloquent کمک میکنه هم اینکه شما به کمک اون میتونید کویری خودتون رو بهبود ببخشید. برای این موضوع به شکل زیر عمل کنید:lمخصوصا اسکرین شات میزارم که زحمت تایپش رو به خودتون بدید. عمیقا معتقدم این روش به یادگیری شما کمک میکنهخروجی شما یه همچین چیزی خواهد بود:همونطور که می بینید حالا هم کویری خودتون رو به صورت جملات sql دارید هم تایم کویری رو دارید. این موضوع کمک میکنه برای تست یک یا چند کویری مشخص رو بررسی کنیم.  گاهی اوقات نیازه ما همه ی کویری هایی که استفاده میکنیم رو به صورت لاگ داشته باشیم. برای این موضوع چند راه داریم. روش اول:میتونیم به راحتی با اضافه کردن کدهای زیر به فایل routes/web.php اینکار رو انجام بدیمحالا در مسیر storage/logs کویری هایی که استفاده میشند لاگ میشند.روش دوم:در روش دوم همه چیز پشت پرده انجام میشه. در فایل Providers/AppServiceProvider.phpکدهای زیر را در متد بوت اضافه کنید:یا حتی اگر نیاز دارید لاگ های خودتون رو در یک فایل مشخص اضافه کنید میتونید به حالت زیر عمل کنید.حتی میتونید با اضافه کردن شرط زیر فقط در زمان دیباگ کویری های خودتون رو لاگ کنید.</description>
                <category>علی نیستانی</category>
                <author>علی نیستانی</author>
                <pubDate>Thu, 11 Jul 2019 17:45:29 +0430</pubDate>
            </item>
                    <item>
                <title>تغییر سیستم هشینگ لاراول</title>
                <link>https://virgool.io/@sh4rifi/%D8%AA%D8%BA%DB%8C%DB%8C%D8%B1-%D8%B3%DB%8C%D8%B3%D8%AA%D9%85-%D9%87%D8%B4%DB%8C%D9%86%DA%AF-%D9%84%D8%A7%D8%B1%D8%A7%D9%88%D9%84-by2xpykejsgv</link>
                <description>در قراردادی که این اواخر با یک مشتری داشتیم قرار بود پروژه ای که قبلا با کدایگنایتر نوشته شده بود رو با لاراول 5.8 ریفکتور کنیم. مشکلی که وجود داشت دیتابیس چند ده هزار رکوردی بود که باید به سیستم جدید انتقال پیدا میکرد. همونطور که میدونید کدایگنایتر از یک متد ساده برای هشینگ پسورد با عنوان sha1 استفاده میکنه. این در حالیه که لاراول برای هشینگ از متد قدرتمند bycrypt استفاده میکنه.در هر صورت آموزش رو میتونیم با عنوان زیر هم دنبال کنیم: آموزش تغییر متد هشینگ لاراول از  bycrypt به sha1اگر تا به حال به providers در فایل app.php در پوشه ی کانفیگ لاراول دقت کرده باشید یک provider با عنوان Illuminate\Hashing\HashServiceProvider::class داریم که مسوول هشینگ لاراول هست. پس برای تغییر متد هشینگ لاراول کافیه ما یک provider مشابه بنویسیم و اون رو با provider فعلی جایگزین کنیم.برای این کار در پروژمون یک کلاس ایجاد میکنیم. من این کلاس رو با عنوان ShaHashing در پوشه ای با نام Sh4Classes می سازم. دقت کنید ما باید این کلاس رو از اینترفیس Hasher پیاده سازی کنیم. اگر از phpstorm استفاده میکنید با فشردن alt + enter متدها به صورت اتوماتیک بر اساس interface به کلاس ما اضافه میشند. حالا کافیه ما متد هشینگمون رو در این کلاس اضافه کنیم. من این کار رو از روی خود کلاس لاراول تقلب کردم. &lt;?php
/**
 * Created by PhpStorm.
 * User: sh4rifi@gmail.com
 * Date: 6/11/19
 * Time: 4:52 PM
 */

namespace App\Sh4Classes;

use Illuminate\Contracts\Hashing\Hasher as HashingContract;

class ShaHashing implements HashingContract {

    public function make($value, array $options = array()) {
        $value = env(&#039;SALT&#039;, &#039;&#039;).$value;
        return sha1($value);
    }

    public function check($value, $hashedValue, array $options = array()) {
        return $this-&gt;make($value) === $hashedValue;
    }

    public function needsRehash($hashedValue, array $options = array()) {
        return false;
    }

    public function info($hashedValue)
    {
        // TODO: Implement info() method.
    }
}
خب حالا کافیه ما این کلاس رو به صورت provider جایگزین provider قبلی کنیم. در نتیجه یک provider می سازیم:php artisan make:provider ShaHashServiceProviderحالا وارد service provider ساخته شده بشید و کلاس خودتون رو به صورت زیر رجیستر کنید. $this-&gt;app-&gt;singleton(&#039;hash&#039;, function() { return new ShaHashing(); });</description>
                <category>علی نیستانی</category>
                <author>علی نیستانی</author>
                <pubDate>Tue, 11 Jun 2019 17:41:25 +0430</pubDate>
            </item>
                    <item>
                <title>برنامه نویسی C در لینوکس</title>
                <link>https://virgool.io/coderlife/%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3%DB%8C-c-%D8%AF%D8%B1-%D9%84%DB%8C%D9%86%D9%88%DA%A9%D8%B3-x27c61vusy8f</link>
                <description>برای انجام بخشی از یک پروژه نیاز بود تا از زبان سی استفاده کنم. برای مرور این زبان به کتاب جعفر نژاد قمی که از دوران دانشگاه (سال ۱۳۸۷) برام به یادگار مونده بود رجوع کردم. اون زمان از ویندوز و کامپایلر turbo-C استفاده میکردم. این کامپایلر از هدر &lt;conio.h&gt; پشتیبانی میکرد. اما در کامپایلر GCC این کتابخانه در دسترس نیست. در نتیجه ما در لینوکس به توابعی مانند gotoxy , clrscr و getche  و getch دسترسی نداریم. خب من میخوام در این نوشته نحوه تعریف این توابع رو به شما آموزش بدم.تابع gotoxy برای  GCC Linux گاهی ممکنه نیاز باشه در صفحه ی خروجی مکان نما رو به نقطه ی خاصی انتقال بدیم. برای این منظور از تابع gotoxy استفاده میشه. الگوی این تابع در فایل conio.h وجود داره که همونطور که گفته شد در لینوکس پشتیبانی نمیشه. خب پس ما میتونیم این تابع رو خودمون تعریف کنیم. برای تعریف این تابع به شرح زیر عمل کنید://gotoxy() function definition
void gotoxy(int x,int y)
{
    printf(&quot;%c[%d;%df&quot;,0x1B,y,x);
}‍‍خب یه مثالش این میتونه باشه:#include&lt;stdio.h&gt;

void gotoxy(int x,int y)
{
    printf(&quot;%c[%d;%df&quot;,0x1B,y,x);
}


int main ()
{
    int x=10, y=20;
    gotoxy(x,y); 
    printf(&quot;my email is: sh4rifi@gmail.com!&quot;); 
    return 0;
}
خروجی:  تابع clrscr برای  GCC Linuxبرای پاک کردن اسکرین ما میتونیم از دستورات ترمینال لینوکس استفاده کنیم:#include&lt;stdio.h&gt;
//clrscr() function definition
void clrscr(void)
{
    system&#40;&quot;clear&quot;&#41;;
}

int main ()
{
    clrscr();   //clear output screen
    printf(&quot;Hello. I am sh4rifi!!!&quot;); //print message
    return 0;
}
خروجی:همانطور که می بینید صفحه ابتدا پاک شد بعد دستورات اجرا شدند.تابع getch و getche برای  GCC Linux تابع getch عمل خواندن اطلاعات رو بدون اکو انجام میده. یعنی توی اسکرین نمایشش نمیده. تابع  getche هم کار تابع getch رو همراه با اکو انجام میده. یعنی کاراکتر وارد شده رو در اسکرین  چاپ میکنه. به مثال زیر توجه کنید:#include &lt;termios.h&gt;
#include &lt;stdio.h&gt;

static struct termios old, new;

/* Initialize new terminal i/o settings */
void initTermios(int echo)
{
    tcgetattr(0, &amp;old); //grab old terminal i/o settings
    new = old; //make new settings same as old settings
    new.c_lflag &amp;= ~ICANON; //disable buffered i/o
    new.c_lflag &amp;= echo ? ECHO : ~ECHO; //set echo mode
    tcsetattr(0, TCSANOW, &amp;new); //apply terminal io settings
}

/* Restore old terminal i/o settings */
void resetTermios(void)
{
    tcsetattr(0, TCSANOW, &amp;old);
}

/* Read 1 character - echo defines echo mode */
char getch_(int echo)
{
    char ch;
    initTermios(echo);
    ch = getchar();
    resetTermios();
    return ch;
}

/* 
Read 1 character without echo 
getch() function definition.
*/
char getch(void)
{
    return getch_(0);
}

/* 
Read 1 character with echo 
getche() function definition.
*/
char getche(void)
{
    return getch_(1);
}

int main(void) {
    char c;
    printf(&quot;(getche example) Please enter a character: &quot;);
    c = getche();
    printf(&quot;\nYou entered: %c\n&quot;, c);
    printf(&quot;(getch example) Please enter a character: &quot;);
    c = getch();
    printf(&quot;\nYou entered: %c\n&quot;, c);
    return 0;
}خروجی:</description>
                <category>علی نیستانی</category>
                <author>علی نیستانی</author>
                <pubDate>Fri, 10 May 2019 17:51:24 +0430</pubDate>
            </item>
                    <item>
                <title>تفاوت Cookies و localStorage</title>
                <link>https://virgool.io/@sh4rifi/%D8%AA%D9%81%D8%A7%D9%88%D8%AA-cookies-%D9%88-localstorage-jwmomks5bqk0</link>
                <description>معرفی کوکی ها (Cookies)کوکی ها فایل های کوچکی بر روی کامپیوتر کاربر بوده که شامل یک جفت کلید و مقدار می باشند. یک کوکی را می توان برای مدت زمان دلخواه حفظ کرد.کوکی ها  به منظور ذخیره اطلاعات بین وبسایت و مشتری طراحی شده اند تا سرور و کامپیوتر مشتری بتوانند به این اطلاعات مشترک  دسترسی داشته باشند.  استفاده معمول از کوکی ها به منظور شناسایی کاربر و ارائه‌ی خدمات بهتر به او صورت میگیرد. وقتی یک وب‌سایت را باز می‌کنید، درخواستی به مرورگر ارسال می‌شود تا فایل کوکی بر روی هارد دیسک ذخیره شود و پس از آن اطلاعات مورد نیاز برای شناسایی کاربر و ارائه‌ی خدمات اختصاصی به او شروع شود. مثلا اگر به یک سایت فروشگاهی مراجعه کرده باشید حتی بدون اینکه در آن ثبت نام کنید می‌توانید سبد خرید خود را پر کنید. با بستن مرورگر و باز کردن دوباره ی سایت محصولاتی که به لیست خرید خود اضافه کرده بودید همچنان در سبد خرید دیده می‌شوند. این کار به کمک کوکی‌ها انجام می‌شود.معرفی ذخیره محلی (localStorage)ذخیره محلی یک راه برای ذخیره داده ها در رایانه مشتری بدون تاریخ انقضا است.  آنها فقط از طریق جاوا اسکریپت و HTML5 قابل دسترس هستند. اگرچه، کاربر توانایی پاک کردن داده های مرورگر / حافظه کش را برای پاک کردن تمام داده های LocalStorage دارد. LocalStorage نسبت به کوکی ظرفیت ذخیره سازی بسیار بیشتری را ارایه می دهد. به طور دقیق تر هر کوکی فضایی با حجم 4KB در اختیار ما قرار میدهد در صورتی که این اندازه در localStorage، پنج مگابایت است.در نتیجه ی ذخیره ی اطلاعات سرور در LocalStorage میزان ترافیک بین سرویس گیرنده و سرور کاهش می یابد. نتیجه گیریاز کوکی ها عمدتا جهت اشتراک اطلاعات بین سرور و کامپیوتر کاربر استفاده می شود اما از LocalStorage جهت کاهش درخواست های HTTP بین سرور و کامپیوتر سرور استفاده می شود. همچنین تفاوت بزرگ فنی دیگر میزان ذخیره سازی است.  </description>
                <category>علی نیستانی</category>
                <author>علی نیستانی</author>
                <pubDate>Wed, 24 Apr 2019 14:46:14 +0430</pubDate>
            </item>
                    <item>
                <title>آموزش نصب virtualbox بر روی فدورا یا centos 7</title>
                <link>https://virgool.io/@sh4rifi/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D9%86%D8%B5%D8%A8-virtualbox-%D8%A8%D8%B1-%D8%B1%D9%88%DB%8C-%D9%81%D8%AF%D9%88%D8%B1%D8%A7-%D9%88-centos-7-cotmhjiuc31z</link>
                <description>نرم افزار Oracle VM VirtualBox یه مجازی ساز قدرتمند هستش که توسط شرکت اوراکل توسعه و پشتیبانی میشه که طبیعتا مخاطب این نوشته میدونه چیه پس میریم سراغ آموزش. برای راحتی کار و طبق عادت شخصی با دستور زیر کاربرم رو به روت تغییر میدم اما شما میتونید از sudo استفاده کنید که با توجه به اینکه فدورا به صورت پیش فرض کاربر روت نداره و باید خودتون فعالش کنید میشه نتیجه گرفت منطقی ترم هست.su - ## OR ## sudo -is وارد پوشه زیر بشید و متناسب با لینوکس خودتون یکی رو دانلود کنیدcd /etc/yum.repos.d/ ## Fedora 29/28/27/26 users 
wget http://download.virtualbox.org/virtualbox/rpm/fedora/virtualbox.repo 
## CentOS 7.5/6.10 and Red Hat (RHEL) 7.5/6.10 users 
wget http://download.virtualbox.org/virtualbox/rpm/rhel/virtualbox.repo با دستور زیر پکیج هاتون رو آپدیت کنید## Fedora 29/28/27/26 ##
 dnf update 
 ## CentOS/RHEL 7/6 ##
  yum updateبرای اینکه چک کنید همه چیز طبق انتظار پیش رفته با دستورات زیر آخرین نسخه ی کرنل موجود رو با کرنل خودتون مطابقت بدیدrpm -qa kernel | sort -V | tail -n 1
 uname -rنتیجه ی دستورات بالا در سیسنم منتوجه:  اگر نسخه ها مطابقت نداشت لازمه یک بار سیستم خودتون رو reboot کنید. برای شروع پکیج های مورد نیاز رو متناسب با لینوکس خودتون نصب کنید.برای Centos  ## CentOS 7 and RHEL 7 ##
 rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm 
 ## CentOS 6 and RHEL 6 ##
  rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpmو برای فدورا## Fedora 29/28/27/26 ##
 dnf install binutils gcc make patch libgomp glibc-headers glibc-devel kernel-headers kernel-devel dkms qt5-qtx11extras libxkbcommon 
 ## CentOS/RHEL 7/6 ##
  yum install binutils gcc make patch libgomp glibc-headers glibc-devel kernel-headers kernel-devel dkms 
  ## PAE kernel users install ##
  ## CentOS/RHEL 7/6 ##
    yum install binutils gcc make patch libgomp glibc-headers glibc-devel kernel-headers kernel-PAE-devel dkms حالا وقتشه آخرین ورژن VirtualBox رو نصب کنید ## Fedora 29/28/27/26 ##
 dnf install VirtualBox-6.0 
 ## CentOS/RHEL 7/6 ##
  yum install VirtualBox-6.0با دستورات زیر ماژول های کرنل رو rebuild کنید## Fedora 29/28/27/26 and CentOS/RHEL 7 ##
 /usr/lib/virtualbox/vboxdrv.sh setup 
 ## CentOS/RHEL 6 ##
  /etc/init.d/vboxdrv setup 
  ## OR ##
   service vboxdrv setup در آخر گروه و کاربران VirtualBox خودتون رو بسازیدusermod -a -G vboxusers ali kouroshتبریک میگم حالا میتونید VirtualBox خودتون رو با یک کاربر معمولی بالا بیارید</description>
                <category>علی نیستانی</category>
                <author>علی نیستانی</author>
                <pubDate>Wed, 03 Apr 2019 15:51:57 +0430</pubDate>
            </item>
                    <item>
                <title>فعال کردن کاربر root در فدورا</title>
                <link>https://virgool.io/@sh4rifi/%D8%AF%D8%B1-%D9%81%D8%AF%D9%88%D8%B1%D8%A7-%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1-%D8%B1%D9%88%D8%AA-%D9%86%D8%AF%D8%A7%D8%B1%DB%8C%D8%AF-e1tbl24yxjiz</link>
                <description>اگر در حین نصب نسخه ی ۲۹ به بعد  Workstation فدورا هیچ جایی از شما پسورد کاربر ROOT پرسیده نشده است و حالا پسورد روت را نمی دانید نگران نباشید.فدورا در حالت پیش فرض کاربر روت را غیر فعال کرده است. برای فعال کردن آن کافی است تا شما دستور زیر را اجرا کنیدsudo passwdبه محض اینکه پسورد را ست کنید کاربر روت شما فعال می شود.</description>
                <category>علی نیستانی</category>
                <author>علی نیستانی</author>
                <pubDate>Tue, 26 Mar 2019 05:02:37 +0430</pubDate>
            </item>
                    <item>
                <title>آموزش کد نویسی تمیز Clean Code PHP (توابع)</title>
                <link>https://virgool.io/coderlife/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%DA%A9%D8%AF-%D9%86%D9%88%DB%8C%D8%B3%DB%8C-%D8%AA%D9%85%DB%8C%D8%B2-clean-code-php-%D8%AA%D9%88%D8%A7%D8%A8%D8%B9-%D8%A8%D8%AE%D8%B4-%DB%B1-r5kjovy38qqd</link>
                <description> قسمت های قبلی این آموزش را می توانید در لینک های زیر ببینید:آموزش کد نویسی تمیز Clean Code PHP (متغیرها: بخش ۱)آموزش کد نویسی تمیز Clean Code PHP (متغیرها: بخش ۲)۱- آرگومان های تابع خود را به حداقل برسانیدیک توصیه عمومی وجود داره که میگه اگر آرگومان های یک تابع دو یا کمتر از دو باشند اون تابع در حالت ایده آل خودش به سر میبره. محدود کردن تعداد پارامترهای یک تابع فوق العاده مهمه زیرا باعث می شه به کار بردن تابع و فهم اون ساده تر بشه. خیلی از مواقع ما میتونیم آرگومان های یک تابع رو تبدیل به کلاس کنیم. در چنین حالتی حتی میتونیم از getter و setter استفاده کنیم و ورودی ها رو هرچه بیشتر در کنترل خودمون در بیاریم۲-  تابع فقط باید یک کار انجام بده این مهم ترین قاعده در مهندسی نرم افزار است. وقتی توابع بیش از یک کار انجام دهند، ساختن، تست کردن و استفاده از اونا سخت تر میشه. اگر شما جایی تونستید یک تابع را به عمل های مختلف جدا کنید، بهتره حتما کدتون رو ریفاکتور کنید. خواهید دید کدتون خیلی تمیز تر میشه. اگر از بین این دروس فقط همین یک اصل رو یاد بگیرید و انجامش بدید این نوشته با عنوان آموزش کد نویسی تمیز Clean Code PHP رسالت خودشون رو انجام داده.این مثال خوبی بود تا درک کنید مفهوم clean code لزوما کوتاه کردن کدنویسی نیست بلکه هدف خوانا بودن کد هستش. توضیح و مثال در مورد array_walkتوضیح و مثال در مورد array_filter ۳- نام تابع باید بگوید چه کار می کندبرای نام گذاری توابع خود وقت بگذارید. نام گذاری تابع باید کاری را شرح دهد که انجام میدهد.  اطمینان داشته باشید این کار چندین برابر کدنویسی و توسعه ی آن را در آینده سریع تر خواهد کرد. ۴- از flag ها به عنوان پارامتر  توابع استفاده نکنیدپرچم (flag) ها در واقع به زبان بی زبانی می گویند این تابع بیش از یک کار انجام می دهد. در صورتی که به عنوان مهمترین اصل این آموزش گفتیم توابع بهتر است فقط یک کار انجام دهند. در چنین حالتی بهترین کار این است تابع خود را به توابع بیشتری تقسیم کنیم.برای مرور مفهوم flag در علم کامپوتر این مطلب را بخوانید: تعریف flag  5- تاثیرات جانبی تابع را به حداقل برسانیدتابع خود را به گونه ای بنویسید تا اگر نیاز است یک کاری انجام دهد آن کار را تنها بر روی پارامتر ورودی خود انجام دهد و خروجی را برگرداند در غیر این صورت میتواند در خروجی کل کد شما تاثیر بگذارد و به راحتی خطاهای زیادی به وجود بیاورد. هر توابع باید مانند یک ماژول عمل کند و شما بتوانید آنها را به صورت ابزار های مستقل به کار ببرید. به مثال زیر توجه کنید:در مثال اول اگر تابع دیگری داشته باشیم که از متغیر name استفاده نماید. انتظار پارامتری را دارد که string است در صورتی که یک آرایه تحویل میگیرد</description>
                <category>علی نیستانی</category>
                <author>علی نیستانی</author>
                <pubDate>Fri, 15 Mar 2019 23:28:47 +0330</pubDate>
            </item>
                    <item>
                <title>آموزش کد نویسی تمیز Clean Code PHP (متغیرها: بخش ۲)</title>
                <link>https://virgool.io/coderlife/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%DA%A9%D8%AF-%D9%86%D9%88%DB%8C%D8%B3%DB%8C-%D8%AA%D9%85%DB%8C%D8%B2-clean-code-php-%D9%85%D8%AA%D8%BA%DB%8C%D8%B1%D9%87%D8%A7-%D9%82%D8%B3%D9%85%D8%AA-%D8%AF%D9%88%D9%85-tbespeluozcd</link>
                <description>در ادامه بحث قبل موارد دیگه ای رو امروز دنبال میکنیم:برای دیدن قسمت قبل بر روی لینک آموزش کد نویسی تمیز Clean Code PHP (متغیرها: بخش ۱) کلیک کنید. 6- از پیچیدگی های بی مورد اجتناب کنید. کسی که کد شما رو می بینه باید با یه نگاه کد رو بفهمه و برای اینکه متوجه بشه متغیر شما چیه نیازی نباشه بره خط های بالا تر رو مرور کنه. به مثال زیر توجه کنید۷- در نام گذاری از توضیحات اضافه پرهیز کنید. وقتی اسم کلاس داره در مورد چیزی صحبت میکنه دیگه نیاز نیست توی اسم متغیر ها یا حتی پارامتر های متدها تکرارش کنیم. ۸- از نوع متغیر (variable type) به عنوان شرط استفاده کنیددر مورد مبحث متغیرها نکته ی دیگه ای به ذهنم نمی رسه. با یک توصیه در مورد مقایسه (Comparison) این مطلب رو به اتمام می رسونم. در قسمت بعدی توصیه های مربوط به نوشتن توابع functions رو با هم بررسی می کنیم.مقایسه Comparison- در مقایسه ی دو مقدار identical را حتما در نظر بگیریددر مثال اول دستورات بعد از شرط چون False بر میگردونه اجرا نمیشه. در صورتی که نباید false برگردونه چون در واقع a$ با b$ یکی نیست. چون یکیشون String هستش و یکیشون Integer هست. </description>
                <category>علی نیستانی</category>
                <author>علی نیستانی</author>
                <pubDate>Fri, 15 Mar 2019 20:14:57 +0330</pubDate>
            </item>
                    <item>
                <title>آموزش کد نویسی تمیز Clean Code PHP (متغیرها: بخش ۱)</title>
                <link>https://virgool.io/@sh4rifi/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%DA%A9%D8%AF-%D9%86%D9%88%DB%8C%D8%B3%DB%8C-%D8%AA%D9%85%DB%8C%D8%B2-clean-code-php-tpubc6iuqcrn</link>
                <description> در این نوشته از اصول کتاب مهندسی نرم افزار نوشته ی رابرت مارتین استفاده میکنم و هر جایی هم که مثال یا توضیحی به نظرم بیاد بهش اضافه می کنم. در این مثال ها از PHP ورژن ۷.۱.۳ استفاده شده.چرا باید کد تمیز (Clean Code) بنویسیم؟ خیلی ساده است. بخاطر اینکه درکش راحت تره. دفعه ی بعدی که ادامه ی کار رو خواستیم انجام بدیم فهمش سریع تره. دوباره بتونیم از کدامون استفاده کنیم. بقیه  راحت تر بتونند کد ما رو بفهمن. حتی بعدا بتونیم راحت تر ریفاکتورش کنیم و کلی دلیل دیگه که شما میتونید برای خودتون داشته باشید.و یه نکته اینکه این ها دستورالعمل یا اصول قطعی نیستند و میتونید دنبالش نکنید. صرفا یه توصیه است شاید شما با بعضی از پیشنهادها موافق نباشید یا پیشنهاد بهتری داشته باشید که اگر در کامنت ها مطرح کنید منم میتونم ازشون آگاه و ممنون شما بشم.متغیرها۱- توی نامگذاری متغیر ها از نام های معنی دار استفاده کنید. منظورم این نیست اسم متغیرتون رو بزارید akbar$  یا naghi$ بلکه نامی رو انتخاب کنید که چیزی رو که توی متغیر میریزه رو به خوبی شرح بده: ۲- برای اطلاعاتی که مربوط به یک چیزه از یک متغیر استفاده کنید.از آرایه استفاده کنید۳- به جای مقادیر از ثابت ها(با رعایت اصل یک و نام های قابل جستجو) استفاده کنید یا حتی روش بهتر اینه که از کلاس استفاده کنید. ۴- از متغیر های توضیحی استفاده کنید. در مورد Subpatterns مطالعه کنید5- از به کار بردن جمله های شرطی تو در تو اجتناب کنید و خلاقانه تر کد بنویسید. همچنین برای سادگی بیشتر اگر بعد از جملات شرطی فقط یک جمله اجرا میشه میتونید {} رو حذف کنید. اگر چند جمله ی IF بعد از هم دیگه میان از AND استفاده کنید:* نکته ای که باید بدونید اینه که زمانی که در IF از OR استفاده می کنید. اگر PHP در هر جمله ای به TRUE برسه جملات دیگه رو چک نمی کنه و در AND‌ هم بر عکس این ماجرا وجود داره. </description>
                <category>علی نیستانی</category>
                <author>علی نیستانی</author>
                <pubDate>Fri, 15 Mar 2019 16:40:49 +0330</pubDate>
            </item>
                    <item>
                <title>چگونه پولدار شویم ۲</title>
                <link>https://virgool.io/@sh4rifi/%D8%A7%D9%BE%D8%B1%D8%A7%D8%AA%D9%88%D8%B1-splat-%D8%AF%D8%B1-php-qvlapm1wa0gk</link>
                <description>در پست قبل به اینجا رسیدیم که الان پول ها به صورت رسید طلا در جیب مردم است.حالا چطور این پول ها را از جیب آنها به جیب خودمان جابجا کنیم؟یک راهش این است که فرد این کار را با حیله  و نیرنگ یا توسط زور انجام دهد. هستند آدم هایی که برای این جابجایی این راه را انتخاب کرده اند. دزد های خرد و کلان و زورگیران و اختلاس گران از همین گروه هستند کسانی که برای عزت انسانی خود ارزشی قایل نبوده و مورد بحث ما نیز نیستند.اما چطور است که کاری کنیم مردم با میل و رغبت خود دست مبارک را در جیبشان کنند و این پول ها را به سمت جیب ما حواله کنند؟ طبیعی است افرادی که زندگی سالمی دارند بخاطر  غریزه  و ذات انسان که به صورت پیش فرض به دنبال عزتمندی است این راه را انتخاب میکنند.اما چطور مردم حاضرند دست در جیب مبارکشان کنند؟آنها بابت بدست آوردن کالا یا خدمات این کار را انجام میدهند. طبیعتا اگر از این تجربه راضی باشند دوباره این کار را انجام میدهند و بابتش رسید های طلای خود را خرج میکنند.پس فهمیدیم برای پول دار شدن اول باید کالا یا خدماتی داشته باشید.اما بعد از آن باید مردم را متوجه کالا یا خدمات خود کنیم. هرچه ارتباطاتات ما بیشتر باشد و به واسطه ی آن مردم بیشتری کالا یا خدمات ما را بشناسند امکان جلب توجه آنها و اقدام به خرید آنها بیشتر میشود. و رسید های طلای بیشتری را روانه ی جیب ما میکنند.اما این فقط قسمتی از راه است. بعد از اینکه مردم را به مشتری خود تبدیل کردیم باید بتوانیم آنها را به مشتریان وفادار تبدیل کنیم. و این در صورتی است که بتوانیم رضایت آنها را جلب کنیم. در ثانی داشتن رسیدهای اسکناس کسانی که با کمال میل آن را از جیب خود بیرون کشیده اند به شما پیشکش کرده اند لذتبخش تر است.هر گاه به رسید طلاهای خود نگاه میکنید گویی به لبخند مشتریان خود نگاه میکنید. چنین رسیدهایی فقط اشاره به داشتن طلای بیشتر نیست نشانه ای از عزتمندی و اعتبار و ارتباطات بیشتر است.در نهایت امیدوارم همه ی ما از جمله افرادی باشیم که بتوانیم  حس خوب عرضه کنیم و رسید اعتبار و عزتمندی و لبخند های بیشتری را در جیب خود داشته باشیم و با لبخند آن را از جیب مبارک خارج کنیم.</description>
                <category>علی نیستانی</category>
                <author>علی نیستانی</author>
                <pubDate>Tue, 12 Mar 2019 16:24:53 +0330</pubDate>
            </item>
            </channel>
</rss>