<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های روح اله جعفری</title>
        <link>https://virgool.io/feed/@jruhollah</link>
        <description></description>
        <language>fa</language>
        <pubDate>2026-04-15 08:12:37</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/162981/avatar/CrXqlC.jpg?height=120&amp;width=120</url>
            <title>روح اله جعفری</title>
            <link>https://virgool.io/@jruhollah</link>
        </image>

                    <item>
                <title>کوکی در مرورگر چیست و چه اهمیتی دارد؟</title>
                <link>https://virgool.io/cheyab-blog/cookie-cnasembv4mdz</link>
                <description>&gt;_ مشخصات نویسنده مطلب : ایمیل ، لینکدین ، توئیتر ، گیت هابکوکیِ مرورگر یکی از مواردی است که همه در باره‌ی آن شنیده‌اند، اما بسیاری نمی‌دانند چه اهمیتی دارد و چرا همه مرورگرها از آن پشتیبانی می‌کنند. چرا تقریبا تمام وب‌سایت‌ها کوکی اختصاصی خود را بر روی دستگاه کاربر ذخیره می‌کنند؟ کوکی (Cookie) هر چند در دنیای واقعی به شیرینی خوشمزه‌ای گفته می‌شود، اما در دنیای کامپیوتر و اینترنت، تعریف متفاوتی دارد. کوکی در واقع بسته‌ای از اطلاعات است که در قالب یک فایل متنی توسط وب‌سایت‌ها بر روی کامپیوتر کاربر ذخیره می‌شود تا از طریق آن کاربر شناسایی شده و مثلا بدون نیاز به ورود نام کاربر و رمز عبور همواره در سایت لاگین باقی بماند. اما کوکی‌ها استفاده‌های مختلفی دارند و علاوه بر مزایا، مسائلی را نیز به همراه دارند.کوکی چیست؟کوکی‌ها چیزی بیشتر از یک فایل متنی که بر روی کامپیوتر یا موبایل شما ذخیره می‌شوند نیستند. این فایل توسط مرورگر خوانده می‌شود و در آن اطلاعاتی در باره‌ی وب‌سایت‌ مانند مشخصات ورود به سایت و تنظیمات سفارشی شده‌ی کاربر ذخیره می‌شود. در کوکی‌ها همچنین اطلاعات دیگری که وب‌سایت‌ها برای شناسایی کاربر و ارائه‌ی خدمات بهتر به آن نیاز دارد، قرار می‌گیرد. وقتی یک وب‌سایت را باز می‌کنید، درخواستی به مرورگر شما ارسال می‌شود تا فایل کوکی بر روی هارد دیسک ذخیره شود و از آن پس اطلاعات مورد نیاز وب‌سایت برای شناسایی کاربر و ارائه‌ی خدمات اختصاصی شروع می‌شود. مثلا اگر به فروشگاه اینترنتی مراجعه کرده باشید حتی بدون اینکه ثبت نام کرده باشید یا در فروشگاه وارد شده باشید می‌توانید سبد خرید خود را پر کنید. حتی اگر صفحه را ببندید و مجددا آن را باز کنید باز هم محصولاتی که به لیست خرید خود اضافه کرده بودید همچنان در سبد خرید دیده می‌شوند. این کار به کمک کوکی‌ها انجام می‌شود. در واقع در مراجعه‌ی بعدی به وب‌سایت یا یکی از صفحات آن، ابتدا سایت از مرورگر می‌خواهد که فایل کوکی ذخیره شده بر روی حافظه کامپیوتر یا موبایل شما را باز خوانی کند و اگر وجود نداشت آن را ایجاد کند.دلیل وجود کوکی‌ها این است که هر درخواست در پروتوکل HTTP از درخواست بعدی مستقل است و سرورها نمی‌توانند درخواست‌های متعدد کاربران را دسته بندی کنند. با ذخیره‌ی فایل کوچکی از اطلاعات مربوط به کاربر این مسئله حل می‌شود و درخواست‌های هر کاربر از یکدیگر جدا می‌شوند.در حالت کلی دو نوع کوکی وجود دارد: کوکی‌های که مستقیما به وب‌سایتی که باز کرده‌اید تعلق دارند و از آن‌ها با عنوان first-party Cookie یاد می‌شود و کوکی‌هایی که به واسطه‌ی کدهای جاوااسکریپ و برای ثبت فعالیت‌های کاربر ایجاد می‌شوند و عموما برای سرویس‌های تبلیغاتی مورد استفاده قرار می‌گیرند به این کوکی‌های third-party Cookie گفته می‌شود.آیا کوکی‌ها حریم شخصی کاربران را نقض می‌کنند و نباید از آن‌ها استفاده کرد؟براساس آنچه در ابتدای مقاله خواندید، کوکی‌ها توسط وب‌سایتی که از آن بازدید کرده‌اید ساخته می‌شود و تا وقتی که اطلاعات شخصی خود را در اختیارِ وب‌سایت مورد نظر قرار نداده باشید، کوکی‌ها نمی‌توانند به اطلاعات شخصی شما دسترسی داشته باشند.بیشتر کوکی‌ها تنها برای تشخیص شما و حفظ زمان ورود شما به سایت استفاده می‌شود و رمز عبور شما در کوکی‌ ذخیره نمی‌شود و تنها در آن نام کاربری یا ID اختصاصی که وب‌سایت آن را می‌شناسد در کوکی‌ها ذخیره می‌شود. اگر هم وب‌سایتی رمز عبور شما را در فایل کوکی ذخیره کند پیش از ذخیره کردن آن، رمز عبور را رمزگذاری و هش (Hash) می‌کند تا کسی نتواند رمز عبور شما را متوجه شود. همچنین اطلاعات موجود در کوکی‌ها تنها در اختیار خود وب‌سایت مورد نظر شما قرار می‌گیرد و قرار نیست وب‌سایت‌های دیگر بتوانند از آن‌ها استفاده کنند.پس اساسا کوکی‌های first-party حریم شخصی کاربران را نقض نمی‌کنند. از سال ۲۰۱۱ اتحادیه اروپا و امریکا قانونی وضع کردند که وب‌سایت‌هایی که به مردم این کشورها سرویس می‌دهند اگر کوکی بر روی کامپیوتر کاربر ذخیره می‌کنند که فعالیت‌های کاربر را تحت نظر می‌گیرد، باید پیش از ذخیره‌ی آن از کاربر تایید بگیرند. این موضوع بیشتر مربوط به کوکی‌های third-party است که برای تبلیغات فعالیت‌های کاربر را ردیابی می‌کنند.شاید شنیده باشید که از کوکی به عنوان ویروس، بد افزار یا پاپ‌آپ یاد می‌شود، آیا کوکی می‌تواند مضرر باشد؟کوکی‌ها تنها یک فایل متنی ساده هستند، نه امکان اجرای آن‌ها وجود دارد و نه حتما می‌توانند به دیگر اطلاعات ذخیره‌ شده‌ی کاربر دسترسی داشته باشند اما بسیاری از کاربران تصور می‌کنند کوکی حاوی ویروس یا بد افزار جاسوسی است. دلیل این موضوع آن است که تبلیغات منفی بر اساس اطلاعات ناقص در این باره انجام شده است. شاید هم دلیل این موضوع این باشد که نرم‌افزارهای ضد ویروس در زمان اسکن فایل‌ها، بعضی از کوکی‌ها که برای تبلیغات مورد استفاده قرار می‌گیرند را کد جاسوسی می‌دانند و نسبت به حذف آن‌ها اقدام می‌کنند.اما این موضوع که از کوکی‌ها می‌توان برای پخش تبلیغات اسپم یا حتی تبلیغات پاپ‌آپ استفاده کرد حقیقت دارد. تبلیغ کنندگان می‌توانند از کوکی‌ها برای ردیابی کردن آنکه چه پاپ‌پاپی قبلا توسط کاربر مشاهده شده و چه تبلیغی برای وی پخش شود، استفاده کنند. اما کوکی‌ها به تنهایی نه پخش کننده‌ی تبلیغ هستند و نه حاوی بدافزار یا پاپ‌آپ هستند. از کوکی‌ها برای ردیابی کاربر و پخش هدفمند تبلیغات استفاده می‌شود و در واقع آن‌ حاوی هیچ تبلیغی نیستند.پس کوکی‌ها به خودی خود نه تنها مضرر یا خطرناک نیستند بلکه برای استفاده از امکانات سایت‌ها ضرروی بوده و در تجربه‌ی کاربری تاثیر محسوسی دارند.ویروس‌ها یا بدافزارها می‌توانند درون کوکی‌ها را بخوانندتصور غلط دیگری که در باره‌ی کوکی‌ها وجود دارد این است که کوکی‌ها بد هستند چرا که اگر دستگاه شما ویروسی شود، ویروس‌ها می‌توانند درون کوکی‌ها را خوانده و اطلاعات کاربر را بدست آورند. این مفهوم غیرمنطقی است چرا که اگر کامپیوتر شما ویروسی شده باشد، بیشتر از آنکه نگران دزدیده شده اطلاعات موجود در کوکی‌ها باشید باید نگران دیگر اطلاعات ذخیره شده خود در کامپیوتر باشید. اما با این حال ویروس‌ها می‌توانند اطلاعات درون کوکی‌ها را مطالعه کنند، اما اگر رمز عبوری در کوکی‌ها ذخیره شده باشد، این رمزها بصورت رمزگذاری شده ذخیره می‌شود و از این طریق کسی نمی‌تواند به رمز عبور شما دسترسی پیدا کند.کوکی‌ها برای ورود به اکثر سایت‌ها ضروری هستنداکثر وب‌سایت‌های دنیا برای ورود لاگین کردن کاربر به سایت به کوکی نیاز دارند و اگر کوکی‌ها را غیر فعال کنید، امکان ورود به سایت وجود نخواهد داشت. البته در نظر داشته باشید که بعضی از فروشگاه‌های اینترنتی، توکن (Token) مربوط به هر کاربر را در آدرس URL ذخیره می‌کنند، اما این کار چندان رایج نیست. به این کوکی‌ها first-Party گفته می‌شود. چراکه این کوکی‌ها متعلق به همان وب‌سایتی است که در حال بازدید از آن هستید.کوکی‌ها برای تبلیغات و ردیابی کاربران استفاده می‌شوندبله این موضوع حقیقت دارد. از آنجایی که کوکی‌ها با هر بار باز کردن صفحه اطلاعاتی را به وب‌سایت ارسال می‌کنند، برخی از سیستم‌های تبلیغاتی از آن‌ها استفاده می‌کنند تا تبلیغات هدفمند را برای شما به نمایش در آورند. البته این بدین معنی نیست که سرویس‌های تبلیغاتی می‌توانند درون کوکی‌هایی که شما بازدید کرده‌اید را بخوانند، آن‌ها می‌توانند درون کوکی‌های خود را بخوانند، اما از آنجایی که این سرویس‌های تبلیغاتی بعضا از کدهای جاواسکریپت نیز استفاده می‌کنند می‌توانند URLهای صفحاتی که بازدید کرده‌اید را نیز در اختیار داشته باشند که البته این موضوع نیز به کوکی ارتباطی ندارد. در ایران کمتر سرویس تبلیغاتی وجود دارد که تبلیغات را به صورت هدفمند نمایش دهد، اما بسیاری از سرویس‌های تبلیغاتی خارجی، چنین رفتاری دارند و تبلیغاتی را برای کاربر به نمایش می‌گذارند که حدس می‌زنند برای وی جذاب است. به کوکی‌هایی که توسط سرویس‌های تبلیغاتی ایجاد می‌شوند یا به طور کلی به کوکی‌های که توسط خود صفحه‌ای که در حال بازدید از آن هستید ساخته نمی‌شوند، کوکی‌های third-party گفته می‌شود. اکثر مرورگرها قابلیتی را در اختیار شما قرار می‌دهند که به راحتی بتوانید این نوع از کوکی‌ها یا بطور کل کوکی‌ها را غیر فعال کنید.در نظر داشته باشید که حتی با غیرفعال کردن کوکی‌های مربوط به سرویس‌های تبلیغاتی باز هم آن‌ها می‌توانند بخش بزرگی از اطلاعات مورد نیاز خود را بدست آورند. در واقع این سرویس‌ها ترکیبی از آدرس آی‌پی بازدیدکننده، نسخه‌ی مرورگر، موقعیت جغرافیایی و چند فاکتور دیگر را در اختیار دارند و حذف کوکی‌ها تنها قطعه‌ای از پازل بزرگ آن‌ها را حذف می‌کند و مانع عملکرد آن‌ها نمی‌شود. مهم‌ترین و شاید بزرگ‌ترین شرکتی که از چنین بستر پیچیده‌ی تبلیغاتی بهره می‌برد گوگل است که بدون نیاز به این موارد نیز اطلاعات بسیاری از کاربران اینترنت را در اختیار دارد.</description>
                <category>روح اله جعفری</category>
                <author>روح اله جعفری</author>
                <pubDate>Thu, 01 Apr 2021 21:44:25 +0430</pubDate>
            </item>
                    <item>
                <title>داکر چیست و چه کاربردهایی دارد؟</title>
                <link>https://virgool.io/@jruhollah/%D8%AF%D8%A7%DA%A9%D8%B1-%DA%86%DB%8C%D8%B3%D8%AA-%D9%88-%DA%86%D9%87-%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1%D8%AF%D9%87%D8%A7%DB%8C%DB%8C-%D8%AF%D8%A7%D8%B1%D8%AF-dlz7p67lcpwd</link>
                <description>داکر امکانی را فراهم آورده است که پروسه‌ها و نرم‌افزارها به صورت مجزا در محیط کاملا ایزوله‌ای بر روی کرنل لینوکس راه‌اندازی شود که به این محیط و بسته‌ی ایزوله، کانتینر (Container) می‌گویند.کانتینر این امکان را برای برنامه نویسان و توسعه دهندگان اپلیکیشن ها فراهم می کند تا یک برنامه را با تمام ماژول ها و کامپوننت‌های وابسته آن ( مانند کتابخانه ها ، توابع و … ) یکی کرده و به صورت یک پکیج درآورده تا آن برنامه تولید شده در پلتفرم ها و سیستمهای مختلف بدون مشکل اجرا شود، در حقیقت بدون نگرانی از تنظیمات و وابستگیهای یک Application خاص در پلتفرم های دیگر، آن برنامه در هر محیطی اجرا شود. پس اگر برنامه نویسی می کنید حتما استفاده از داکر را به شما توصیه می کنیم.داکر که در بالا به آن اشاره شد وظیفه مدیریت کانتینرها را به عهده دارد و بیشتر شبیه یک ماشین مجازی عمل میکند، تفاوت داکر با ماشین مجازی در این است که در VM (یا ماشین مجازی) برای اجرای اپلیکیشن و برنامه های مختلف که بخواهیم به صورت ایزوله و مجزا از هم کار کنند باید VM های مختلف ساخته شود که همین موضوع بار پردازشی و هدر رفت منابع سیستمی را روی سرور به همراه دارد.ولی در Docker روی یک VM خاص که میتواند دارای سیستم عامل ویندوز یا لینوکس باشد، ماژول داکر نصب شده و سپس روی سرویس داکر، کانتینرهای مختلف حاوی برنامه ها و اپلیکیشن های مختلف نصب و اجرا می‌شوند بدون اینکه کانتینرها به هم دسترسی داشته باشند. بدین صورت کانتینرها از هم ایزوله هستند و نیاز ما برای ایجاد چندین VM را مرتفع میسازند.دلایل محبوبیت داکراگر با مجازی‌سازی آشنا باشید حتماً به خوبی می‌دانید سازوکارهای این کار مانند Hyper-V, KVM و Xen، سخت‌افزار را به صورت مجازی در اختیار مدیران شبکه قرار می‌دهند. در نتیجه این سازوکارها نیازمند منابع سخت‌افزاری قوی هستند.از طرف دیگر کانتینرها از سیستم‌عامل‌های به اشتراک‌گذاری شده بهره می‌گیرند. در نتیجه با روش کارآمدتری طرف هستیم که منابع سیستم را بهینه‌تر استفاده می‌کند. بر خلاف مجازی‌سازی سخت‌افزار، کانتینرها بر بالای یک اینستنس (Instance) لینوکس قرار می‌گیرند و فضایی کوچک و جمع‌و‌جور را برای اپلیکیشن‌های فراهم می‌کنند.به لطف این ویژگی‌ چیزی حدود ۴ تا ۶ برابر اینستنس‌ بیشتری نسبت به فناوری Xen یا KVM VM بر روی یک سخت‌افزار واحد اجرا می‌شود. از طرف دیگر کانتینرها به توسعه‌ دهندگان کمک می‌کنند تا کدهای خود را داخل یک مخزن مشترک قرار دهند. این امر فرآیند کدنویسی را سرعت می‌بخشد و کدها عملکرد بهتری خواهند داشت.داکر توسعه‌دهندگان را قادر می‌سازد تا اپلیکیشن‌های خود را راحت و سریع با حجم کمتری به صورت قابل حمل و پرتابل در یک کانتینر قرار دهند. این اپلیکیشن‌هابه صورت مجازی از هر جایی قابل اجرا هستند.این فرآیند از طریق مجزا کردن کدها در داخل یک کانتینر واحد انجام می‌شود. کاملاً مشخص است چنین کاری بهینه‌سازی و آپدیت برنامه را ساده‌تر می‌کند. از آنجایی که شرکت‌های فعال در عرصه فناوری به دنبال راه‌های بیشتری برای ساخت اپلیکشن‌های پرتابل می‌گردند داکر روز‌‌به‌روز طرفداران جدیدی پیدا می‌‌کند.در این بین اگر با گیت‌هاب آشنا باشید حتماً به خوبی می‌دانید که این بستر شرایط همکاری برای به‌اشتراک گذاشتن کدها میان توسعه‌دهندگان را فراهم کرده است. از این لحاظ می‌توان داکر را به نوعی شبیه به گیت‌هاب دانست چرا که مخزن رسمی گیت‌هاب به شرکت‌های تجاری کمک می‌کند تا نرم‌افزارهای خود را بهینه‌تر کرده و اجرا و مدیریت آن‌ها را ارتقا دهند.از طرف دیگر کانتینرهای داکر به راحتی در فضای رایانش ابری قرار می‌گیرد و به نوعی طراحی شده که تقریباً تمامی اپلیکشن‌هایی که از متدولوژی دواپس (DevOps) بهره می‌گیرند با داکر تعامل داشته باشند.داکر محیطی لوکال را برای توسعه فراهم می‌کند که این محیط دقیقاً عمل‌کرد یک سرور  را در اختیار توسعه‌دهندگان قرار می‌دهد. این امر برای روش توسعه CI/CD کاربرد زیادی دارد. از این طریق می‌توان چندین محیط توسعه را از یک هاست مشخص با یک نرم‌افزار، سیستم‌عامل و تنظیمات واحد اجرا کرد.از طرف دیگر پروژه‌ را می‌توان روی چند سرور جدید و مختلف آزمایش کرد و تمامی اعضای گروه بر روی یک پروژه‌ واحد با تنظیمات همانند قادر به همکاری هستند. این کار توسعه‌دهندگان را قادر می‌سازد تا نسخه‌های جدید برنامه خود را به سرعت آزمایش کرده و از عملکرد صحیح آن اطمینان خاطر حاصل کنند.تاریخچه کانتینرها و شکل گیری داکراگر از قدیمی‌های دنیای کامپیوتر باشید به احتمال زیاد FreeBSD Jail که در اواخر سال ۲۰۰۰ استفاده می‌شد را به خاطر دارید. جالب است بدانید سابقه کانتینرها به همان دوران باز می‌گردد. اوراکل نیز مفهوم خاص خودش را از کانتینرها داشت که با نام Zones شناخته میشد.با این حساب می‌توان گفت توسعه‌دهندگان احتمال دارد تاکنون حتی بدون اینکه بدانند از کانتینرها کمک گرفته باشند. برای نمونه هر زمان که از یکی از سرویس‌های گوگل مانند جیمیل و گوگل داکس استفاده می‌کنید عملاً یک کانتینر جدید برای شما ایجاد شده است.داکر روی LXC سوار می‌شود و همانند سایر کانتینرها به فایل‌های سیستمی، فضای ذخیره‌سازی، پردازنده، رم و دیگر منابع به صورت اختصاصی دسترسی دارد. به این ترتیب می‌توان تفاوت اصلی میان کانتینرها و ماشین‌های مجازی (VM)‌، را در این دانست که وقتی هایپروایزر (Hypervisor) به صورت انتزاعی تمام یک سیستم را ایجاد می‌کند، کانتینرها تنها به صورت انتزاعی کرنل سیستم‌عامل را ایجاد می‌کنند.این امر میلیون‌ها دلار صرفه‌جویی را برای شرکت‌های ارائه‌دهنده خدمات رایانش‌ابری به دنبال دارد و به همین دلیل است که غول‌های فناوری به سرعت به سمت داکر پیش رفته‌اند.استانداردسازی کانتینرهاداکر ارمغان‌‌های جدیدی در اختیار شرکت‌ها قرار داد که پیش از این شاهد آن‌ها نبودیم. در این زمینه می‌توان به ساده‌سازی اجرا و استفاده آن اشاره کرد. از طرف دیگر داکر با کانتینرهای دیگری از کنونیکال، گوگل و ردهت همکاری دارد و در نتیجه استانداردسازی خوبی را برای کانتینرها شاهد هستیم.داکر همچنان به استاندارد سازی ادامه داده و از آنجایی که عملاً این روزها نمی‌توان رقیبی برای داکر متصور شد می‌توان آن را روی هر سیستم‌عاملی اجرا کرد و در نتیجه استانداردسازی مطلوبی را برای داکر شاهد هستیم.نظارت و مدیریت کانتینرهاتمامی زیرساخت‌های IT نیازمند مدیریت و نظارت هستند و در همین راستا کانتینرها نیز باید مانیتور شوند و در حالت کنترل‌شده‌ای قرار بگیرند. درغیر این‌ صورت مشخص نخواهد شد سرور چه برنامه‌هایی را اجرا می‌کند.خوشبختانه از برنامه‌های دواپس می‌توان برای مانیتور کانتینرهای داکر کمک گرفت، اما به این نکته نیز باید اشاره کرد که این برنامه‌ها برای کانتینرها بهینه‌ نشده‌اند. اینجاست که باید سراغ ابزارهای مدیریت و نظارت رایانش ابری را بگیرید.ابزارهایی مانند Docker Swarm, Kubernetes و Mesosphere در این زمینه گزینه‌های خوبی به‌نظر می‌رسند و تجربه نشان داده است در بین این ابزارها Kubernetes محبوبیت بیشتری پیدا کرده است.با کوبرنتیز آشنا شوید.سخن‌ پایانیهمان‌گونه که در بالا هم اشاره شد داکر اجازه اجرای اپلیکیشن‌های بیشتری را نسبت به سایر تکنولوژی‌ها با یک سخت‌افزار مشخص می‌دهد و این امر ساخت و مدیریت اپلیکیشن‌ها را ساده‌تر می‌کند.در پایان پیشنهاد می‌کنیم اگر شما هم به فناوری‌های جدید علاقه‌ دارید و تاکنون از داکر استفاده کرده‌اید. در قسمت نظرات ما و سایر کاربران را در جریان تجربه‌های مفید خود قرار دهید.</description>
                <category>روح اله جعفری</category>
                <author>روح اله جعفری</author>
                <pubDate>Wed, 02 Dec 2020 11:59:54 +0330</pubDate>
            </item>
                    <item>
                <title>کوبرنتیز چیست (Kubernetes) و چرا اینقدر محبوب شده؟</title>
                <link>https://virgool.io/@jruhollah/%DA%A9%D9%88%D8%A8%D8%B1%D9%86%D8%AA%DB%8C%D8%B2-%DA%86%DB%8C%D8%B3%D8%AA-kubernetes-%D9%88-%DA%86%D8%B1%D8%A7-%D8%A7%DB%8C%D9%86%D9%82%D8%AF%D8%B1-%D9%85%D8%AD%D8%A8%D9%88%D8%A8-%D8%B4%D8%AF%D9%87-tkzcm1buygsb</link>
                <description>توسعه‌دهندگان به دلایل زیادی به سیستم‌های متن‌باز برای مدیریت کانتینرها روی آورده‌اند. این امر باعث شده تا بزرگان فناوری نیز دست‌ به کار شوند و پلتفرم‌‌های مختلفی را برای مدیریت کانتینرها معرفی کنند. یکی از این پلتفرم‌های معروف با نام Kubernetes (کوبرنتیز یا k8s) شناخته می‌شود.کوبرنتیز (Kubernetes) در‌ واقع ساز و کار مدیریت کانتینر ها است که توسعه آن را شرکت معظم گوگل انجام داده است و در نتیجه سلاطین فناوری و توسعه‌دهندگان، علاقه زیادی به استفاده از کوبرنتیز نشان می‌‌دهند.این امر باعث شده تا کوبرنتیز روز به روز مصارف بیشتری پیدا کند و به تعداد استفاده‌کنندگان آن افزوده شود. کاملاً مشخص است تعامل بیشتر با این ساز و کار، بهینه‌تر شدن آن را نیز به دنبال دارد.در این مقاله با مفهوم کوبرنیتز و ویژگی‌های آشنا می‌شوید و بعد مقایسه‌ای خواهیم داشت بین کوبرنیتز و داکر.بیایید ابتدا از داستان شکل‌گیری Kubernetes شروع کنیم.داستان ایجاد کوبرنتیز (Kubernetes)همان‌‌گونه که شما بهتر از ما می‌دانید رایانش ابری نیازهای جدیدی را در دنیای سخت‌افزار و نرم‌افزار ایجاد کرد و شاهد نسل جدیدی از فناوری‌ها بودیم که تعامل با رایانش ابری را ساده‌تر می‌کردند. اپلیکیشن‌های بزرگ نیز به سمت ماژولار شدن پیش رفتند تا مدیریت و تعامل با آن‌ها از جانب توسعه‌دهندگان و کاربران ساده‌تر شود.در همین راستا گوگل به عنوان یکی از بزرگترین غول‌های فناوری که حیات خود را مدیون رایانش ابری است به این فکر افتاد تا یکی از پروژه‌های بزرگ خود را که در داخل این مجموعه از آن استفاده می‌کرد به صورت متن باز منتشر کند. این پروژه از زیرساخت‌هایی بر اساس کانتینرها بهره می‌گرفت و در داخل گوگل با نام Borg شناخته می‌شد.جالب است بدانید Borg نقش اساسی در اجرای سرویس‌‌های مهم گوگل مانند جی‌میل و موتور جستجوی این برند داشت. به این ترتیب با متن‌باز شدن این پروژه سایر شرکت‌ها نیز قادر بودند پروژه‌های خود را همانند گوگل در ابعاد بزرگ پیش بگیرند.به این ترتیب به زبان ساده‌تر می‌توان کوبرنتیز را وارث Borg دانست. یکی از خاصیت‌های مهم متن‌باز شدن هر پروژه‌ای توسعه سریع و گسترش آن در میان کاربران است و کوبرنتیز نیز به‌سرعت راه خود را به جوامع فناوری باز کرد و به رقیب بزرگی برای ساز و کارهای دیگر کنترل کانتینرها مانند Apache Mesos و Docker Swarm تبدیل شد.در حال حاضر هزاران توسعه‌دهندگان با اهداف تجاری و شخصی در توسعه و بهینه‌تر کردن کوبرنتیز فعالیت دارند و شاهد ایجاد نسخه‌های تجاری کوبرنتیز نیز هستیم که شر‌کت‌های بزرگی مانند RedHat سرمایه‌گذاری‌های زیادی را برای گسترش آن انجام داده‌اند.کوبرنتیز چیست؟اگر بخواهیم به‌زبان ساده کوبرنتیز را توضیح دهیم باید بگوییم کوبرنتیز اجرا و مدیریت کانتینرهای مختلف را در سرورهای متفاوت که در یک پایگاه داده یا چندین پایگاه قرار گرفته‌اند را بر عهده می‌گیرد. در کوبرنتیز کانتینرهای مختلفی که مشترکاً برنامه کاربردی خاصی را شامل می‌شوند در حالت جداگانه و مستقل تحت عنوان پاد (Pod)‌ دسته‌بندی خواهند شد. این کار فرآیند مدیریت و شناسایی آن‌ها را ساده‌تر می‌کند.به این ترتیب می‌توان گفت سازمان‌ها و شرکت‌هایی که سرویس‌های مختلف نرم‌افزاری را اجرا می‌کنند ابتدا به کانتینرها و در نهایت به ابزارهایی مانند کوبرنتیز نیاز دارند تا با کمک گرفتن از کانتینرها، برنامه‌ها را در بهترین حالت از یکدیگر جداسازی کنند. این فرآیند تولید و آزمایش اپلیکیشن‌ها و سرویس‌ها را ساده‌تر کرده و امکان اجرای آن‌ها در یک زیرساخت مشترک را فراهم می‌کند.کوبرنتیز کمک می‌کند تا کانتینرها در گروهی‌ از ماشین‌ها به صورت خودکار و اتوماتیک اجرا شوند، به این ترتیب به زبان ساده‌تر می‌توان گفت کوبرنتیز نقش سیستم‌عاملی را ایفا می‌کند که بر روی چندین سرور در حالت یکپارچه اجرا می‌شود. در نتیجه نیازی به نگرانی برای وضعیت ماشین‌های مختلف وجود ندارد و کاربران در حالی که هیچ تغییری در سرویس‌های اجرا شده مشاهده نمی‌کنند قابل تعامل با اپلیکیشن‌ها و سرویس‌های مورد نظر هستند.ویژگی‌های و برتری‌های کوبرنتیزبه لطف کوبرنتیز شرکت‌ها قادر هستند در فضای ابری برنامه‌های خود را به پیش بگیرند و کوبرنتیز را به عنوان یک سرویس عرضه نمایند. از طرف دیگر به لطف این قابلیت که کوبرنتیز بستر مناسبی برای راه‌اندازی و اجرای اپلیکیشن‌ها را فراهم می‌کند توسعه‌دهندگان به‌ سادگی می‌توانند اپلیکیشن خود را طراحی نموده و در پلتفرم‌های مختلف منتشر کنند. کاملاً مشخص است چنین ویژگی‌ چالاکی و سرعت توسعه‌دهندگان را افزایش می‌دهد و به تمرکز ‌‌تیم توسعه‌دهنده در حین توسعه اپلیکیشن کمک می‌کند.جالب است بدانید تعداد کانتینرهایی که کوبرنتیس پوشش می‌دهد گاهی اوقات از صدها هزار هم تجاوز می‌کند که تعامل با چنین حجمی از کانتینرها بدون راه‌کارهایی مانند کوبرنتیز عملاً دست‌نیافتنی است.کوبرنتیز قابلیت‌های فنی زیادی را در اختیار توسعه‌دهندگان قرار می‌دهند که در این بین می‌توان به امکان بررسی سلامت و تکثیر برنامه‌ها در مجموعه سرورهای یک مجموعه اشاره کرد. قابلیت تشخیص سرویس‌ها، تعادل حجم‌بار (Load Balancing) و مدیریت تنظیمات برای ایجاد سیستم‌هایی که از فناوری معماری Microservice Architecture بهره می‌برند اشاره کرد.داکر یا کوبرنتیز، کدام را انتخاب کنیم؟هرکجا که صحبت از کوبرنتیس به میان می‌آید اشاره‌ای به داکر نیز می‌شود و این دو پلتفرم به‌عنوان رایج‌ترین ابزارها برای مدیریت کانتینرها شناخته می‌شوند، به این ترتیب کاملاً طبیعی است این سؤال برای توسعه‌دهندگان پیش بیاید که داکر بهتر است یا کوبرنتیز؟در این زمینه نمی‌توان نسخه واحدی پیچید و باید موارد مختلفی را در نظر داشت، داکر یک سال زودتر از کوبرنتیز راهی بازار شده و طبیعتاً محبوبیت بیشتری دارد، از طرف دیگر داکر آن‌چنان که باید شاید نمی‌تواند نیاز توسعه‌دهندگان را در زمینه مدیریت کلاسترها پاسخگو باشد و انصافاً باید گفت کوبرنتیز قدرت بیشتری در این زمینه دارد. به این نکته نیز اشاره کنیم که در داکر شاهد ابزارهای حرفه‌ای و لازم برای مشاهده گزارش عمل‌کرد و مانیتور فضای کاری وجود ندارد.کوبرنتیز ابزارهای بسیار متنوعی برای پیاده‌سازی و مدیریت کانتینرها دارد و فریم‌ورک امن‌ داکر را یکی از نقاط مختلف آن می‌شناسند. جالب اینجاست که کوبرنتیز قادر است از موتور داکر به‌عنوان ابزاری برای افزایش امکانات مدیریتی خود بهره بگیرد.در مجموع می‌‌توان گفت داکر و کوبرنتیز به لحاظ امکانات تفاوت‌هایی با هم دارند اما این تفاوت‌ها بسته به نیاز یک مجموعه اهمیت پیدا می‌کند و به همین دلیل بسیاری از توسعه‌دهندگان کوبرنتیز را به دلیل قابلیت‌های ماژولار آن انتخاب می‌کنند.نصب کوبرنتیز (Kubernetes)برای نصب کوبرنتیز روی ماشین مجازیتان، از طریق این مخزن گیت استفاده کنید.سخن‌ پایانیکوبرنتیز تاریخچه‌ای ۱۵ ساله دارد و به لطف این پشتوانه و جامعه بزرگ توسعه‌دهندگانی که آن را بهینه می‌کنند توانسته است به یکی از موفق‌ترین نمونه‌ها در دنیا متن‌باز تبدیل شود و انتظار می‌رود در آینده نیز شاهد افزایش و پیشرفت این ساز و کار کارآمد باشیم.در پایان پیشنهاد می‌کنیم اگر شما هم تجربه خوبی در زمینه کار با کوبرنتیز دارید یا اینکه اطلاعات دیگری به نظرات رسیده است، در قسمت نظرات ما و سایر کاربران را در جریان این موارد قرار دهید.</description>
                <category>روح اله جعفری</category>
                <author>روح اله جعفری</author>
                <pubDate>Wed, 02 Dec 2020 11:43:40 +0330</pubDate>
            </item>
                    <item>
                <title>ریپازیتوری چیست و چرا باید از آن استفاده کنیم؟</title>
                <link>https://virgool.io/@jruhollah/%D8%B1%DB%8C%D9%BE%D8%A7%D8%B2%DB%8C%D8%AA%D9%88%D8%B1%DB%8C-%DA%86%DB%8C%D8%B3%D8%AA-%D9%88-%DA%86%D8%B1%D8%A7-%D8%A8%D8%A7%DB%8C%D8%AF-%D8%A7%D8%B2-%D8%A2%D9%86-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%DA%A9%D9%86%DB%8C%D9%85-zt6atxqmwvk5</link>
                <description>معنی لغوی رپوزیتوری مخزن و یا ذخیره کردن اطلاعات می باشد و شگردی جدید در برنامه نویسی محسوب می شود.به طور کلی بعد از سپری شدن سالیان متمادی برنامه نویسان یادگرفته اند برای کاهش کد های زائد خود تدابیر خاصی بیندیشند و تمام تلاش خود را صرف این نمایند که با نوشتن کمتر کد در برنامه خود بیشترین بازده را از برنامه ها طلب نمایند. بعد از به وجود آمدن برنامه نویسی شی گرا برنامه نویسی وارد مرحله تازه ای شد به خصوص بعد از معرفی نسل جدید معماری برنامه نویسی سمت وب MVC دیگر کمتر شرکت آینده نگری را یافت خواهید کرد که از معماری MVC استفاده نکند.در این معماری از الگویی به نام ریپازیتوری استفاده می شود.ریپازیتوری یک استراتژی برای دسترسی به داده ها است.ریپازیتوری در حقیقت مانع تکرار در نوشتن Logic پروژه و Query های شما خواهد شد.به حداقل رساندن وابستگی لایه دیتا به تکنولوژی هااز موضوع‌های مهم دیگر میتوان به تست واحد پروژه اشاره کرد که قطعا با استفاده از Repository Pattern بسیار ساده‌تر و قابل اطمینان‌تر است.یکی دیگر از دلایل استفاده از ریپوزیتوری این است که سوئیچ کردن از یک دیتابیس به دیتابیس دیگر بسیار مشکلات کمتری را خواهد داشت. که این موضوع به دلیل جدا بودن پروژه شما از کوئری‌های مختلف در کلاس‌های متفاوت است.مزایا:بالابردن خوانایی و نگهداری منطق تجاری با جداسازی دسترسی به دیتاکنترل مرکزی نسبت به دسترسی به دیتاامکان تعویض تکنولوژی مربوط به دسترسی به دیتا در آیندهنوشتن تست های واحد (Unit Test) به جای تستهای یکپارچه (Integration Test)کاهش پیچیدگی در سطح کد و نیز کاهش کد نویسیبا توجه به تعریف ریپازیتوری مشخص است که هدف اصلی آن مخفی کردن پیچیدگی های لایه ی دسترسی به دیتاست.باید بدانید که رقیب سرسخت این الگو ORM است.ORM چیست؟ORM چیست؟ORM یا Object-Relational Mapping روشی مدرن برای مدیریت اطلاعات است. ORM یا Object-relational mapping یک تکنیک برنامه نویسی برای ارتباط بین دیتابیس و برنامه شئ گرای ما می باشد. مهمترین مزیت ORM ها این است که عملیات CRUD یا Create-Read-Update-Delete را به راحتی برای ما انجام می دهند.با این وجود و با تمام مخالفان و موافقان باید بگوییم هر کدام به نوبه ی خود مزایا و معایب خاص خود را دارند.</description>
                <category>روح اله جعفری</category>
                <author>روح اله جعفری</author>
                <pubDate>Fri, 11 Sep 2020 19:35:31 +0430</pubDate>
            </item>
                    <item>
                <title>تفاوت بین field ، property و متغیر (local variable) در #C</title>
                <link>https://virgool.io/@jruhollah/%D8%AA%D9%81%D8%A7%D9%88%D8%AA-%D8%A8%DB%8C%D9%86-field-property-%D9%88-%D9%85%D8%AA%D8%BA%DB%8C%D8%B1-local-variable-%D8%AF%D8%B1-c-ddgnixquvr7m</link>
                <description>پراپرتی (property) ها معمولا اعضای Public یک کلاس هستند و مشخصه ی اصلی آنها Accessor های get  و set است. از دیگر ویژگی های پراپرتی ها هم این است که میتوان آنها را در یک اینترفیس تعریف کرد.فیلد (field) ها در واقع متغیر (variable) های عضو یک کلاس هستند که به صورت مستقیم در خود کلاس تعریف میشوند و در سطح آن در دسترس هستند. اگر این متغیر ها به صورت مستقیم داخل بدنه یک متد تعریف شوند به آنها local variable گفته میشود.طبق اصول برنامه نویسی شئ گرا، دنیای خارج از یک کلاس نباید از عملیات صورت گرفته داخل آن کلاس با خبر باشد، برای همین، فیلدها که از مشخصه های یک کلاس هستند معمولا به صورت private تعریف می شودند و هرجا که نیاز باشد دنیای خارج بتواند مقادیر آنها را مشاهده کند و یا تغییری در آنها صورت دهد از پراپرتی ها استفاده میکنیم.در پراپرتی ها  با استفاده از get و set می توان انعطاف یک متد را داشت و قبل از برگشت مقدار یک فیلد، یا مقداردهی آن، پردازشی را انجام داد. اما باید دقت داشت که این پردازش باید بسیار ساده باشد و اگر خطوط آن زیاد شد و به سمت پیچیدگی رفت بهتر است از یک متد استفاده شود و تحت هر شرایط باید سادگی و خوانایی get و set حفظ شود.حرف اول فیلد ها و متغیر ها را با حروف کوچک و حرف اول پراپرتی ها را با حروف بزرگ مینویسیم.در اینجا نمونه ای از استفاده ی این اعضا را در یک کلاس مشاهده می کنید :public interface IUser
 {
    int Id { get; set; }
    string Name { get; set; }
    void PrintUserInfo();
 }


 public class User : IUser
 {
    //fileds
    private int id;
    private string name;

    //properties
    public int Id
    {
       get { return id; }
       set { id = value; }
    }
    public string Name
    {
      get { return string.IsNullOrEmpty(name) ? &amp;quotA girl has no name&amp;quot : name }
       set { name = value; }
    }


  public void PrintUserInfo()
  {
    //local variable
    string toPrint = string.Format(&amp;quotUser Id = {0} , User Name= {1}&amp;quot, id, name);
    Console.WriteLine(toPrint);
  }
 }
 class Program
 {
  static void Main(string[] args)
  {
  User user = new User();
  user.Id = 99;
  user.Name = &amp;quothamed&amp;quot
    user.PrintUserInfo();
    Console.ReadKey();
  }
 }
برنامه فوق باعث چاپ خروجی زیر خواهد شد :User Id = 99 , User Name= hamedپراپرتی خودکار ( Automatic properties )زمانی که در سطح کد نیازی به logic بیشتر داخل Accessor های get و set نیست یعنی نیازی نیست داخل get یا set شرط خاصی را بررسی کنیم و عملیات خاصی را انجام دهیم و فقط به شکل ساده میخواهیم با set مقدار فیلد را در پراپرتی قرار داده و با get مقدار فیلد را از پراپرتی بگیریم از شکل ساده ی تعریف یک پراپرتی بدون تعریف هیچ بدنه ای برای get و set استفاده کرده و بدون تعریف فیلد خصوصی به شکل زیر پراپرتی را تعریف میکنیم :public string Name { get; set; }با تعریف فوق خود کامپایلر وقتی با این شکل ساده از پراپرتی برخورد میکند در پشت صحنه خودش یک فیلد private برای آن پراپرتی تعریف کرده و get و set را پیاده سازی میکند.به این شکل از تعریف یک پراپرتی ، پراپرتی خودکار ( Automatic properties ) گفته میشود. پراپرتی های خودکار از ویژگی های جدید ارائه شده در سی شارپ 6 هستند. میتوانیم به آنها مقدار اولیه بدهیم و یا با تعریف فقط get ،یک پراپرتی فقط خواندنی داشته باشیم و ...</description>
                <category>روح اله جعفری</category>
                <author>روح اله جعفری</author>
                <pubDate>Sat, 04 Jul 2020 14:42:55 +0430</pubDate>
            </item>
                    <item>
                <title>سطوح دستیابی (access modifiers)</title>
                <link>https://virgool.io/@jruhollah/%D8%B3%D8%B7%D9%88%D8%AD-%D8%AF%D8%B3%D8%AA%DB%8C%D8%A7%D8%A8%DB%8C-access-modifiers-egd7f0ljy2ti</link>
                <description>در #C ما 4 ماژول  access modifiers داریم.1- public2-private3-protected4-Internal5- Protected IntenalPublicبا استفاده از public یک رویداد یا متغیر می تواند از خارج از کلاس قابل دستیابی باشد. جایی که متعلق به آن است. و همینطور خارج از assemblyPrivateاستفاده از متدها و متغیرها را تنها در کلاس خودش محدود می کند و خارج از کلاس نمی تواند استفاده شود. همانطور که یک سازنده private از یک کلاس را اعلان می کنید. که نمی تواند خارج از کلاس قابل استفاده باشد. و نمی توان از آن کلاس یک شی ایجاد کنید.Protectedprotected اجازه دسترسی متغیرها و متدها از کلاس و زیرکلاس را می دهد. بدین معنا که متدها می توانند از داخل کلاس و کلاسی که از آن ارث بری کرده است قابل دسترسی باشند.Internalinternal در #C معرفی شده است. در جاوا ما این سطح دسترسی را نداریم. این دستیابی بعد از Protected می باشد. protected اجازه دستیابی از کلاس و زیرکلاس را می دهد.  assembly را به آن اضافه می کند. بدین معنا که متغیرها ومتدها می توانند درون assemly جایی که کلاس به آن تعلق دارد قابل دسترسی باشند. assembly و NameSpace اندکی متفاوت می باشند. یک assembly می تواند بیش از یک namespace را نگهداری کند. assemblyها در واقع Dllهای یک پروژه می باشند.Protected Internalاجازه دسترسی از کلاس و زیرکلاس را می دهد. هچنین اجازه دسترسی از همان assembly را می دهد. بدین معنا که در protected اگر کلاس ارث بری کرده باشد، super class و متد یا متغیر protected می باشند، سپس دسترسی assembly مهم نیست. اما در Internal اگر کلاس ارث بری کرده باشد assembly مهم می باشد. در زیر می بینید که چرا از Protected Internal استفاده می کنیم.بطور خلاصهpublic: در هرجایی از کلاسPrivate: فقط داخل کلاسProtected: تنها در آن کلاس و زیرکلاس هایشInternal: داخل assemly کلاسProtected Intenal: داخل آن کلاس، زیرکلاس هایش و assembly</description>
                <category>روح اله جعفری</category>
                <author>روح اله جعفری</author>
                <pubDate>Sat, 04 Jul 2020 12:59:12 +0430</pubDate>
            </item>
            </channel>
</rss>