<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های جعفر اسماعیلی</title>
        <link>https://virgool.io/feed/@jaffar_esmaili</link>
        <description>توسعه دهنده ، دوستدار روانشناسی ،هوش مصنوعی ،کارآفرینی،برنامه نویسی</description>
        <language>fa</language>
        <pubDate>2026-06-16 09:48:46</pubDate>
        <image>
            <url>https://static.virgool.io/images/default-avatar.jpg</url>
            <title>جعفر اسماعیلی</title>
            <link>https://virgool.io/@jaffar_esmaili</link>
        </image>

                    <item>
                <title>چارچوب حاکمیت هوش مصنوعی هند: الگویی برای کشورهای در حال توسعه</title>
                <link>https://virgool.io/@jaffar_esmaili/%DA%86%D8%A7%D8%B1%DA%86%D9%88%D8%A8-%D8%AD%D8%A7%DA%A9%D9%85%DB%8C%D8%AA-%D9%87%D9%88%D8%B4-%D9%85%D8%B5%D9%86%D9%88%D8%B9%DB%8C-%D9%87%D9%86%D8%AF-%D8%A7%D9%84%DA%AF%D9%88%DB%8C%DB%8C-%D8%A8%D8%B1%D8%A7%DB%8C-%DA%A9%D8%B4%D9%88%D8%B1%D9%87%D8%A7%DB%8C-%D8%AF%D8%B1-%D8%AD%D8%A7%D9%84-%D8%AA%D9%88%D8%B3%D8%B9%D9%87-yngce80s99ts</link>
                <description>india ai governance guidlinesهدف هند از برنامه راهبری هوش مصنوعی این است که از ظرفیت هوش مصنوعی برای دست‌یابی به توسعه همه منظوره و رقابت‌پذیری جهانی و در عین حال مقابله با خطراتی است که این فناوری ممکن است برای افراد و جامعه ایجاد کند.کمیته دستورالعمل‌ حاکمیتی هوش مصنوعی هند که توسط وزارت الکترونیک و فناوری اطلاعات تشکیل شد تا مأموریت اش ارایه چارچوبی باشد که میان این دو هدف تعادل برقرار کند. حکم و دستور کار این کمیته بهره‌گیری از ادبیات پژوهشی موجود بازنگری قوانین فعلی مطالعه تحولات جهانی و تدوین رهنمودهای مناسب برای حاکمیت هوش مصنوعی در هند است.این کمیته پس از تحقیقات گسترده، رایزنی‌ها و بررسی بازخوردهای عمومی، چارچوب حاکمیتی مذکور را در هفت اصل ارائه داد:این اصول برای به‌کارگیری در تمامی بخش‌ها متناسب‌سازی شده و با اولویت‌های ملی هم‌راستا گردیده‌اند.هفت اصل راهنما (سوترا) برای حاکمیت هوش مصنوعی:۱. اعتماد به عنوان بنیان و اساس: بدون وجود اعتماد، نوآوری و پذیرش عمومی این فناوری متوقف خواهد شد.۲. اولویتِ مردم: تأکید بر طراحی انسان‌محور نظارت انسانی و توانمندسازی افراد.۳. برتری نوآوری بر محدودیت: در شرایط برابر باید نوآوری مسئولانه را بر محدودیت‌های احتیاطی مقدم دانست.۴. انصاف و عدالت: ترویج توسعه همه‌شمول و پرهیز از هرگونه تبعیض.۵. مسئولیت‌پذیری: تخصیص شفاف مسئولیت‌ها و اجرای دقیق مقررات.۶. قابل‌فهم بودن در طراحی: ارائه افشاگری‌ها و توضیحات شفاف به نحوی که برای کاربر نهایی و نهادهای نظارتی قابل‌درک باشد.۷. ایمنی، تاب‌آوری و پایداری: ساخت سیستم‌های ایمن امن و قدرتمند که توانایی ایستادگی در برابر شوک‌های ساختاری را داشته و از نظر زیست‌محیطی نیز پایدار باشند.بررسی مسائل کلیدی مدیریت هوش مصنوعی بر اساس در شش محور :زیرساختظرفیت‌سازیسیاست‌گذاری و مقرراتکاهش ریسکمسئولیت‌پذیرینهادهاکلیت برنامه اقدامکوتاه‌مدتتأسیس نهادهای کلیدی حاکمیتی، توسعه چارچوب‌های ریسک ویژه هند، پذیرش تعهدات داوطلبانه، پیشنهاد اصلاحات قانونی.میان‌مدتتوسعه نظام‌های شفاف مسئولیت‌پذیری، گسترش دسترسی به زیرساخت‌ها، راه‌اندازی برنامه‌های آگاهی‌بخشی، افزایش دسترسی به ابزارهای ایمنی هوش مصنوعی، انتشار استانداردهای مشترک، اصلاح قوانین و مقررات، عملیاتی‌سازی سیستم‌های گزارش‌دهی حوادث هوش مصنوعی.بلندمدتاجرای سندباکس‌های مقرراتی، گسترش ادغام زیرساخت‌های دیجیتال عمومی با هوش مصنوعی، تداوم تعاملات جاری ، بازنگری و به‌روزرسانی چارچوب‌های حاکمیتی برای تضمین پایداری اکوسیستم دیجیتال، تدوین قوانین جدید بر اساس ریسک‌ها و قابلیت‌های نوظهور.اصل اول اعتماد به عنوان بنیان و اساس:اعتماد برای حمایت از نوآوری، پذیرش و پیشرفت، و همچنین کاهش ریسک، امری ضروری است. بدون اعتماد، مزایای هوش مصنوعی در مقیاس کلان محقق نخواهد شد. اعتماد باید در سراسر زنجیره ارزش نهادینه شود به این معنا که هم در فناوری زیربنایی، هم در سازمان‌هایی که این ابزارها را می‌سازند، هم در نهادهایی که مسئولیت نظارت را بر عهده دارند، و هم در اطمینان از اینکه افراد از این ابزارها به‌صورت مسولانه استفاده خواهند کرد، وجود داشته باشد. بنابراین، اعتماد اصلی بنیادین است که تمامی فرآیندهای توسعه و استقرار هوش مصنوعی در هند را هدایت می‌کند.اصل دوم اولویت مردم:چارچوب‌های حاکمیت هوش مصنوعی باید انسان‌محور باشند. این بدان معناست که سیستم‌های هوش مصنوعی باید به‌گونه‌ای طراحی و مستقر شوند که افراد را توانمند سازند و بازتاب‌دهنده نظام ارزشی مردمی باشند که این فناوری برای خدمت به آن‌ها ساخته شده است. از دیدگاه حاکمیتی، رویکرد اولویت مردم به این معناست که انسان‌ها باید تا حد امکان کنترل نهایی سیستم‌های هوش مصنوعی را در دست داشته باشند و نظارت انسانی برای حفظ مسئولیت‌پذیری ضروری است. رویکرد اولویت مردم ، توسعه ظرفیت‌های انسانی، محافظت‌های اخلاقی، اعتماد و ایمنی را در اولویت قرار می‌دهد.اصل سوم برتری نوآوری بر محدودیت:نوآوری هدایت‌شده توسط هوش مصنوعی مسیری برای دستیابی به اهداف ملی از جمله توسعه اجتماعی اقتصادی، رقابت‌پذیری جهانی و تاب‌آوری است. بنابراین، چارچوب‌های حاکمیت هوش مصنوعی باید فعالانه پذیرش این فناوری را تشویق کرده و به عنوان کاتالیزوری برای نوآوری‌های تأثیرگذار عمل کنند. با این حال، نوآوری باید به شیوه‌ای مسئولانه انجام شود و هدف آن به حداکثر رساندن منافع کلی در عین کاهش آسیب‌های احتمالی باشد. در شرایط برابر، نوآوری مسئولانه باید بر محدودیت‌های احتیاطی مقدم شمرده شود.اصل چهارم انصاف و عدالت:یکی از اهداف کلیدی رویکرد هند به حاکمیت هوش مصنوعی، ترویج توسعه همه جانبه است. بنابراین، سیستم‌های هوش مصنوعی باید به گونه‌ای طراحی و آزمایش شوند که اطمینان حاصل شود نتایج آن‌ها منصفانه و بدون سوگیری بوده و علیه هیچ فردی، از جمله افراد متعلق به جوامع به حاشیه رانده شده، تبعیض قائل نمی‌شوند.اصل پنجم مسئولیت‌پذیری:برای اطمینان از اینکه اکوسیستم هوش مصنوعی هند بر پایه اعتماد پیش می‌رود، توسعه‌دهندگان و مستقرکنندگان (کاربران اصلی) هوش مصنوعی باید شفاف و پاسخگو باشند. مسئولیت‌پذیری باید بر اساس عملکرد انجام‌شده، سطح خطر آسیب و شرایط راستی‌آزمایی و دقت کافی به وضوح تخصیص یابد. این مسئولیت‌پذیری می‌تواند از طریق طیف متنوعی از مکانیسم‌های سیاستی، فنی و مبتنی بر بازار تضمین شود.اصل ششم قابل‌فهم بودن در طراحیدرک‌پذیری برای ایجاد اعتماد بنیادین است و باید یکی از ویژگی‌های اصلی طراحی باشد، نه چیزی که در مراحل بعدی به سیستم اضافه شود. اگرچه سیستم‌های هوش مصنوعی احتمال‌محور هستند، اما باید توضیحات و افشاگری‌های شفافی داشته باشند تا به کاربران و نهادهای نظارتی کمک کنند که (تا حد امکان فنی) درک کنند سیستم چگونه کار می‌کند، چه معنایی برای کاربر دارد و نتایج احتمالی مورد نظر نهادهای مستقرکننده آن چیست.اصل هفتم ایمنی تاب‌آوری و پایداری:سیستم‌های هوش مصنوعی باید با تدابیر حفاظتی به منظور به حداقل رساندن خطرات آسیب، طراحی شده و از استحکام و تاب‌آوری برخوردار باشند. این سیستم‌ها باید قابلیت تشخیص ناهنجاری‌ها و ارائه هشدارهای زودهنگام برای محدود کردن پیامدهای زیان‌بار را داشته باشند. تلاش‌های مربوط به توسعه هوش مصنوعی باید از نظر زیست‌محیطی مسئولانه و از نظر مصرف منابع بهینه باشند؛ همچنین استفاده از مدل‌های کوچک‌تر، کارآمد و سبک‌وزن باید تشویق شود.راهبردهای آینده‌نگرانه و جمع‌بندیپیشرفت سریع هوش مصنوعی و ظهور «عوامل هوش مصنوعی» (AI Agents) خودمختار و همکاری‌های چندعاملی، نیازمند بازنگری در رویکردهای فعلی است. چارچوب‌های حاکمیتی باید آینده‌نگر، انعطاف‌پذیر و چابک باشند.توصیه‌های نهایی کمیته:تدوین چارچوب‌های اصولی: توسعه چارچوب‌های متعادل، منعطف و مبتنی بر اصل که امکان بازنگری دوره‌ای داشته باشند.اصلاحات قانونی هدفمند: بازنگری در قوانین فعلی (مانند کپی‌رایت و حفاظت از داده‌ها) برای تشویق نوآوری و شفاف‌سازی مسئولیت‌ها.استانداردهای مشترک: ایجاد معیارهای مشترک برای احراز اصالت محتوا، یکپارچگی داده‌ها و انصاف الگوریتمی.ایجاد سندباکس‌های مقرراتی: فراهم کردن محیط‌های آزمایشی برای توسعه فناوری‌های پیشرفته با اعطای مصونیت‌های قانونی مشروط، به شرط شفافیت در گزارش‌دهی ریسک‌ها و تدابیر حفاظتی.دیپلماسی فعال: مشارکت در مجامع ملی، منطقه‌ای و چندجانبه برای پیشبرد منافع هند در حوزه‌های حکمرانی هوش مصنوعی.آینده‌پژوهی: انجام تحلیل‌های افق‌کاوی (Horizon-scanning) و برنامه‌ریزی سناریو برای پیش‌بینی تحولات هوش مصنوعی که ممکن است در آینده نیازمند واکنش‌های سیاستی یا مقرراتی باشند.برنامه اقدامکوتاه مدت:ایجاد گروه حکمرانی هوش مصنوعی (AIGC) به‌عنوان یک نهاد دائمی سیاست‌گذاری در سطح عالی.تشکیل کمیته تخصصی فناوری و سیاست (TPEC) برای پشتیبانی از AIGC.توسعه چارچوب‌های ارزیابی و طبقه‌بندی ریسک هوش مصنوعی متناسب با شرایط و نیازهای هند، با مشارکت بخش‌های مختلف.انجام تحلیل شکاف‌های مقرراتی و ارائه پیشنهاد برای اصلاح قوانین و مقررات مرتبط.پذیرش چارچوب‌های داوطلبانه به‌منظور ترویج نوآوری مسئولانه و کاهش ریسک‌ها.انتشار یک بخشنامه جامع شامل مقررات قابل‌اجرا و بهترین رویه‌ها برای حمایت از انطباق.فراهم‌سازی زیرساخت اولیه برای پایگاه داده حوادث هوش مصنوعی و سازوکارهای رسیدگی به شکایات.تدوین رژیم‌های شفاف مسئولیت‌پذیری در سراسر زنجیره ارزش هوش مصنوعی.گسترش دسترسی به زیرساخت‌های پایه شامل داده، توان محاسباتی و مدل‌های هوش مصنوعی.اجرای برنامه‌های آگاهی‌بخشی عمومی و آموزشی برای شهروندان و نهادهای نظارتی درباره قابلیت‌ها و ریسک‌های هوش مصنوعی.نتایج مورد انتظار:ایجاد نهادهای قدرتمند برای هماهنگی حکمرانی هوش مصنوعی.تدوین چارچوب‌های طبقه‌بندی و کاهش ریسک متناسب با شرایط هند.شکل‌گیری فرهنگ پایبندی داوطلبانه در صنعت.شناخت بهتر شکاف‌ها و نیازهای مقرراتی.ایجاد زیرساخت برای گزارش‌دهی حوادث و رسیدگی به شکایات.افزایش اعتماد اجتماعی و سواد عمومی در حوزه هوش مصنوعی.میان مدت:انتشار استانداردهای مشترک در حوزه‌هایی مانند:احراز اصالت محتوایکپارچگی داده‌هاانصاف و عدالتامنیت سایبریعملیاتی‌سازی پایگاه ملی حوادث هوش مصنوعی همراه با سامانه‌های بومی گزارش‌دهی و حلقه‌های بازخورد.اصلاح قوانین در صورت نیاز برای رفع خلأهای مقرراتی.اجرای پایلوت «سندباکس‌های مقرراتی» (Regulatory Sandboxes) در حوزه‌های پرریسک.حمایت از ادغام زیرساخت عمومی دیجیتال (DPI) با هوش مصنوعی از طریق توانمندسازهای سیاستی.نتایج مورد انتظار:شکل‌گیری چارچوب حکمرانی بالغ و استانداردشده.ایجاد محیطی امن برای آزمایش و نوآوری.گسترش استفاده از سامانه‌های هوش مصنوعی مبتنی بر DPI.تسهیل انطباق با قوانین از طریق راهنماها و قوانین به‌روز.ایجاد سازوکار مؤثر رسیدگی به شکایات شهروندان.بلند مدت:بازبینی و پایش مستمر چارچوب حکمرانی و فعالیت‌های پیش‌بینی‌شده در این برنامه اقدام.تصویب قوانین جدید برای پاسخگویی به ریسک‌ها و قابلیت‌های نوظهور.گسترش تعاملات دیپلماتیک بین‌المللی و مشارکت در تدوین استانداردهای جهانی.انجام آینده‌پژوهی و برنامه‌ریزی سناریویی برای آمادگی در برابر ریسک‌ها و فرصت‌های آیندهنتایج مورد انتظار:نتایج مورد انتظار:ایجاد یک چارچوب حقوقی بالغ، متوازن و چابک.کسب اعتبار و جایگاه بین‌المللی در رهبری حکمرانی هوش مصنوعی.استقرار نظام پاسخگویی مؤثر در قبال آسیب‌های ناشی از هوش مصنوعی.ایجاد نظام حکمرانی آینده‌نگر برای مدیریت ریسک‌های نوظهور.پیشنهاد های عملیبرای صنعت (فعالان هوش مصنوعی):انطباق قانونی: رعایت تمامی قوانین داخلیاقدامات داوطلبانه: پذیرش اصول اخلاقی، انتشار گزارش‌های شفافیت و استفاده از مکانیسم‌های رسیدگی به شکایاتراهکارهای فنی-حقوقی (Techno-legal): استفاده از ابزارهای حفظ حریم خصوصی، ممیزی الگوریتم‌ها و قابلیت‌های شناسایی سوگیری در طراحی سیستم‌هابرای رگولاتورها:تعادل میان نوآوری و ریسک: هدف اصلی حمایت از رشد است بنابراین رگولاتورها باید از تحمیل مقررات سنگین (مانند مجوزهای اجباری دست‌وپاگیر) خودداری کنند مگر در موارد ضروری.انعطاف‌پذیری: چارچوب‌ها باید چابک بوده و بر اساس بازخوردهای دوره‌ای، بازنگری و اصلاح شوند.پرهیز از بار اضافی: اولویت دادن به ابزارهای سیاستی که کمترین بار اداری را برای فعالان صنعت ایجاد می‌کنند (مانند کدهای اخلاقی یا استانداردهای فنی به جای قوانین سفت‌وسخت).نتیجه‌گیری نهاییهند با تمرکز بر این چارچوب اصول‌محور، چابک و منعطف به دنبال تبدیل شدن به قطب هوش مصنوعی جهان است. این نقشه راه با ترکیب ابزارهای فنی (مانند سیستم‌های گزارش‌دهی حوادث و احراز اصالت)، نهادی مانند AIGG۱ و حقوقی قصد دارد ضمن پیشرفت علمی و اقتصادی، از سلامت و امنیت جامعه در برابر مخاطرات هوش مصنوعی محافظت کند.تحلیل بر اساس مدل توسعه سیستم پویا(Dynamic System):لایه آمادگی سخت: زیرساخت فیزیکی و فنی (امنیت، تجهیزات، شبکه ارتباطی) پایه‌ای‌ترین لایه است. سند در اصل هفتم تأکید می‌کند سیستم‌های هوش مصنوعی باید از استحکام و تاب‌آوری برخوردار باشند و در برنامه کوتاه‌مدت نیز گسترش دسترسی به زیرساخت‌های پایه شامل داده، توان محاسباتی و مدل‌ها را اولویت قرار دهدلایه آمادگی نرم: منابع انسانی، مالی، فرهنگ، استاندارد و مقررات، احل حاکم بر کل سیستم هستند. این لایه را در چندین اصل پوشش داده مشود از اصل دوم (توانمندسازی انسانی) تا اصل چهارم (انصاف و عدالت) و اصل ششم (استانداردسازی قابل‌فهم).لایه عملیاتی جریان سیاستگذاری به سازمان الکترونیکی و نظارت دوگانه بر فرایند و برونداد، دقیقاً همان چیزی است که سند هند در اصل پنجم (مسئولیت‌پذیری) و برنامه میان‌مدت دنبال می‌کند.تحلیل مفاد سند بر اساس مدل STEEPLV:مدل STEEPLVنکته: بخش‌های در راستای مدل STEEPLV نبود طبیعتاً اشاره‌ای هم نخواهیم کرد.عوامل ارزشیارزش‌ها و هنجار ها: سند به‌صراحت بر اعتماد به عنوان بنیادی‌ترین ارزش تأکید می‌کند و آن را پیش‌شرط نوآوری و پذیرش عمومی می‌داند. . ارزش‌ها در تمام زنجیره ارزش هوش مصنوعی از توسعه تا استقرار نهادینه شده‌اند.عدالت: سند بر توسعه همه جانبه تاکید دارد و از سیاست گذاران می‌خواهد که بدون سوگیری و تبعیض برنامه را طراحی کنند و در برنامه میان مدت هم طرح های مطرح شده است.عوامل اجتماعیفرهنگ: اصل دوم (اولویت مردم) بر لزوم بازتاب نظام ارزشی مردم در سیستم‌های هوش مصنوعی تأکید دارد. همچنین اصل سوم تلویحاً به فرهنگ نوآوری به عنوان یک هنجار اجتماعی مطلوب اشاره دارد.منابع انسانی: سند به ظرفیت‌سازی به عنوان یکی از شش محور اصلی اشاره می‌کند. در برنامه اقدام میان‌مدت، راه‌اندازی برنامه‌های آگاهی‌بخشی پیش‌بینی شده است.آموزش: آموزش هم در سطح عمومی برای پذیرش فناوری و کاهش ترس از آن و هم د محور ظرفیت‌سازی برای تربیت متخصصان آینده به عنوان یک ابزار حاکمیتی در نظر گرفته شده است.عوامل فناورانهزیرساخت‌های ارتباطی: سند به ادغام زیرساخت دیجیتال عمومی (DPI) با هوش مصنوعی در بازه میان‌مدت و بلندمدت اشاره می‌کند.زیرساخت‌های تجهیزاتی: در برنامه میان‌مدت به گسترش دسترسی به زیرساخت‌ها اشاره شده.محتوای الکترونیکی: سند به استانداردهای احراز اصالت محتوا و یکپارچگی داده‌ها اشاره دارد. همچنین پایگاه داده حوادث هوش مصنوعی در برنامه کوتاه‌مدت پیش‌بینی شده است.کالاها و خدمات: اصل سوم مستقیما به توسعه محصولات و خدمات هوش مصنوعی اشاره می‌کند . سندباکس‌های مقرراتی در بلندمدت برای آزمایش خدمات نوین پیش‌بینی شده‌اند.امنیت: اصل هفتم این بعد را پوشش می‌دهد. سیستم‌های تشخیص ناهنجاری، هشدار زودهنگام و سیستم‌های گزارش‌دهی حوادث از ابزارهای پیش‌بینی‌شده هستند. همچنین اصل ششم به امنیت نظارتی کمک می‌کند.عوامل اقتصادیبازار: اصل سوم با اولویت دادن به نوآوری بر محدودیت، رویکردی بازارمحور اتخاذ می‌کند. توصیه به رگولاتورها برای پرهیز از مجوزهای اجباری دست‌وپاگیر نیز نشان‌دهنده حمایت از رقابت آزاد استعوامل سیاسیتحقیق و توسعه: اصل سوم نوآوری را به عنوان مسیر دستیابی به اهداف ملی تعریف می‌کند. در توصیه‌های نهایی آینده‌پژوهی و تحلیل افق‌کاوی پیش‌بینی شده استمسائل بین‌المللی: به دیپلماسی فعال و مشارکت در مجامع ملی، منطقه‌ای و چندجانبه برای پیشبرد منافع هند تأکید شده است.مدیریت: نهادهای جدید AIGG و PEC مکانیسم‌های نظارتی سندباکس‌های مقرراتی و سیستم‌های گزارش‌دهی. اصل پنجم (مسئولیت‌پذیری) تخصیص شفاف مسئولیت‌ها را الزامی می‌کند.عوامل قانونیقوانین و مقررات: اصلاح مقررات در میان‌مدت، و تدوین قوانین جدید برای ریسک‌های نوظهور در بلندمدت. توصیه صریح به رگولاتورها برای پرهیز از مقررات سنگین وجود دارد.استانداردها: در میان‌مدت انتشار استانداردهای مشترک برای احراز اصالت محتوا، یکپارچگی داده‌ها و انصاف الگوریتمی پیش‌بینی شده است.</description>
                <category>جعفر اسماعیلی</category>
                <author>جعفر اسماعیلی</author>
                <pubDate>Tue, 09 Jun 2026 11:25:07 +0330</pubDate>
            </item>
                    <item>
                <title>آمار  تولد و ازدواج</title>
                <link>https://virgool.io/@jaffar_esmaili/%D8%B1%D9%88%D9%86%D8%AF-%D8%B1%D8%B4%D8%AF-%D9%81%D8%B1%D8%B2%D9%86%D8%AF-%D8%A2%D9%88%D8%B1%DB%8C-%D9%88-%D8%A7%D8%B2%D8%AF%D9%88%D8%A7%D8%AC-wfmr9ehtlzot</link>
                <description>در این نوشته روند رشد فرزندآوری و ازدواج را بررسی می کنیم.بررسی روند تغییرات فرزندآوردیبراساس داده‌های مرکز آمار روند تغییرات جمعیت رو اول به تفکیک روستایی و شهری بررسی می‌کنیم و پس از آن اطلاعات کل کشور رو مورد بررسی قرار می‌دهیم.روند تغییرات جمعیت روستایی :روند رشد و تغییرات جمعیت روستاییهمانطور که مشاهده می‌کنید روند رشد جمعیتی با یک شیب ملایمی رو به رشد است که اوج آن سال‌های پنجاه نه و شصت است و پس از آن یک دفعه افت پیدا می‌کند .یک نکته‌ای مهمی که است از اویل دهه ای شصت روند فرزند آوری و جمعیت روستایی رو به کاهش است البته باید توجه کرد ریشه این تغییر در اصلاحات ارضی که در دهه ای سی شمسی اتفاق افتاده که در سه لایحه اجرا شد و باعث شد نرخ شهر نشینی از روستای نشینی و عشایری بیشتر شود. پس آن از در دهه ای هفتاد با یک شیب بسیار ملایمی رو به کاهش است و مجدداً در دهه ای هشتاد افزایش نسبی می‌کند و در اواخر دهه ای هشتاد و اویل دهه ای نود رو به کاهش است و بعد از آن به خاطر اتفاق های مثبت در کشور مجدداً از سال نودودو افزایش پیدا می‌کند که دوبار در سال نودشش شروع به کاهش می‌کند که شاید دلیل اش به خاطر اتفاق تلخ و وضعیت معشیت است.روند تغییرات جمعیت شهری :روند رشد و تغییرات جمعیت شهری ایراناویل دهه ای چهل روند جمعیت کشور رو به کاهش است و از اواسط دهه ای چهل به بعد میزان روند رشد جمعیت زیاد می‌شود که این تغییر گویای وضعیت اقتصادی خوب است که در این دهه ایران تجربه کرد در دهه ای چهل ایران رشد اقتصار بالای ۷ درصد داشت که با تلاش‌های دکتر عالیخانی وزیر اقتصاد آن زمان اتفاق افتاد و اثراتش در میزان جمعیت کشور کاملاً مشهود است. در بررسی میزان روند جمعیت روستایی گفتیم که به خاطر اصلاحات ارضی و انقلاب باعث شد جمعیت زیادی وارد شهر ها بشوند و از طرفی در اطراف شهر ها کارخانه های صنعتی شکل گرفته بودند که نیاز به نیروی کار داشتند این دو اتفاق باعث شد که جمعیت شهری رشد زیادی داشته باشند و این افزایش جمعیت تا سال شصت چهار ادامه دارد و بعد از با یک شیب ملایمی جمعیت شهری رو به کاهش است و مجدداً در سال هفتاد پنج شروع می‌کند به رشد. از اواسط دهه ای هفتاد به خاطر آرامی نسبی کشور و امکانات رفاهش مراکز شهری روند جمعیت رو به افزایش است که اوج اون رو می‌شود در سال نودچهار و نودپنج مشاهده کرد.بعد از اتفاقات سال نودشیش و نود هفت روند جمعیت شهری با سرعت بیشتری رو به کاهش است و یک شوک جمعیتی به روند شهری وارد می‌شود که ریشه آن در تجملاتی شدن جامعه و وضعیت اقتصادی می‌تواند مربوط شود.روند تغییرات جمعیت کل کشور :روند رشد و تغییرات جمعیت کشورروند رشد و کاهش جمعیتی کل کشور جمع از روند جمعیتی شهری و روستایی است همان‌طور که در توضیحات هر کدام گفته شد در دهه ه ای چهل به خاطر رشد اقتصاد خوب روند به افزایش است و پس از آن دچار یه افت با شیب ملایمی می‌شود و سال به سال روند رشد جمعیت کشور کاهش می‌کند و در اواخر دهه ای هفتاد مجداا رو یک شیب نسبتاً زیادی رو به رشد است و اوج اون در سال نودشیش است و پس از آن متأسفانه روند جمعتی کشور به کاهش است و طبق برداشت‌های کارشناس خیلی طول می‌کشد دوباره روند جمعیت رو به افزایش باشد شاید هم تا ۵۰ سال آینده این اتفاق نیافتد.راه حل و سناریو ها:یکی از ارکان مهمی که باعث می‌شود زوجین و خانواده‌ها را تشویق به فرزندآوری کند ایجاد زیرساخت های شهری و امکاناتی رفاهی , درمانی و آموزشی است که زوجین حس بهتر نسبت به محل زندگی‌شان می‌کند و باعث می‌شود که روند نرخ رشد فرزندآوری زیاد شود.اختصاص دادن یارانه , مرخصی طولانی مدت برای زنان شاغل ,طرح های حمایتی مثل مهدکودک رایگان و ارزان‌قیمت و دیگر طرح که باعث شود خانواده رو فرزنداوری بیاورند.نتیجه گیری: به نظرم بنده همه ای طرح های که در این گزارش آمده و طرح های دیگری که در کشور های مختلف اجرا شده هر چند باعث می‌شود که زوجین به فرزند آوری فکر کنند اما دلیل اصلی فرزند آوری همان سناریو اولی که گفته شد مربوط می‌شود باید فضا مناسب باشد تا ذهن و روان زوجین آرام شود تا به فرزنداوری روی بیاورند.بررسی روند تغییرات ازدواجبراساس اطلاعات مرکز آمار داده‌های فقط از پنجاه و هشت به بعد موجود بود و ما هم براساس آن بررسی می‌کنیم. به طور کلی روند ازدواج تا سال هشتادو شش رو به افزایش است و اگر بخواییم دقیق‌تر بررسی کنیم اول روند تغییرات ازدواج صعودی است و در سال بعد اش یعنی پنجاه و نه تا شصت رو به کاهش است و پس از آن تقریباً تا سال شصت چهار رو به افزایش است بین سال‌های شصت پنج تا شصت هشت کاهش می‌یابد شاید به خاطر جنگ باشد و از سال شصت هشت به بعد رو افزایش است .تا سال هشتاد یک با یک شیب ملایمی رو به افزایش است که در بررسی نرخ رشد جمعیتی هم گفتیم در این دهه ای رشد جمعیتی صعودی است اما بین سال‌های هشتاد دو و هشادو چهار یک دفعه کاهش می‌یابد و مجدداً افزایش می‌یابد, این افزایش تا سال نود ادامه دارد که اتفاق بسیار خوبی در کشور است اما بعد از آن روند تغییرات از ازدواج رو به کاهش است . تا جای کاهش پیدا می‌کند که در سال نود سه میزان طلاق از ازدواج بیشتر می‌شود. دلیل اصلی اینکه آمار طلاق رو اینجا آوردیم به همین خاطر است متأسفانه هر چقدر میزان روند ازدواج رو به کاهش است میزان طلاق بالا می‌رود و این آمار بسیار بسیار نگران کننده ای است که نشان دهنده ای این است که بنیان خانواده دچار مشکل اساسی شده و وضعیت معیشتی را هم اگر اضافه کنیم می‌ شود این اتفاق تلخ و ناگوار. با توجه به اتفاقات و جریان های سال‌های اخیر باید این انتظار رو داشت این روند نرخ ازدواج و طلاق ادامه دار باشد.روند تغییرات ازدواج در ایرانراه حل و سناریو ها:اگر شرایط رفاهی و محیط جامعه مساعد باشد یعنی افراد فکر کنند می توانند برای اینده خود برنامه ریزی کنند رشد کنند ,موانع مو تجملات کم شود نه تنها نرخ ازدواج زیاد می شود بلکه نرخ فرزندآوری هم رشد خواهد کرد.منابع:همه ای داده های طبق اعلامی مرکز آمار ایران بررسی شده است.</description>
                <category>جعفر اسماعیلی</category>
                <author>جعفر اسماعیلی</author>
                <pubDate>Sun, 31 May 2026 16:59:52 +0330</pubDate>
            </item>
                    <item>
                <title>الگوریتم Bloom Filter  چیست ؟</title>
                <link>https://virgool.io/@jaffar_esmaili/%D8%A7%D9%84%DA%AF%D9%88%D8%B1%DB%8C%D8%AA%D9%85-bloom-filter-%DA%86%DB%8C%D8%B3%D8%AA-eneb5rompgek</link>
                <description>فرض کنید در حال ایجاد حساب کاربری در Gmail هستید، می خواهید یک نام کاربری خاص انتخاب کنید،   پیامی با عنوان &quot;Username از قبل گرفته شده است&quot; دریافت می کنید. شما تاریخ تولد خود را به همراه نام کاربری اضافه کردید، هنوز شانسی وجود ندارد که نام کاربری مورد علاقه تان را انتخاب کنید.  واقعا ناامید کننده است، نه؟اما آیا تا به حال به این موضوع فکر کرده اید که  با جستجوی میلیون ها نام کاربری ثبت شده با آن، دسترسی به نام کاربری را با چه سرعتی بررسی می کند. راه های زیادی برای انجام این کار وجود دارد.به طور مثال می توان از جستجوی خطی یا دویی استفاده کرد اما روش و الگوریتمی خوبی نیست چون در داده های زیاد زمان اجرای بیشتری دارند. اینجاست که باید دنبال روش بهینه ای باید باشیم!Bloom Filter یک ساختار داده ای است که این کار را به صورت بهینه انجام می دهدبرای درک Bloom Filter، باید بدانید که Hash چیست. یک تابع درهم ساز ورودی و خروجی ها را یک شناسه منحصر به فرد با طول ثابت می گیرد که برای شناسایی ورودی استفاده می شود.تعریف Bloom Filterدر واقع  یکBloom Filter ساختار داده هست که برای بررسی   احتمالاتی کارآمد در یک فضا است که برای تست اینکه آیا یک عنصر(نام کاربری) عضو یک مجموعه (لیست نام کاربری ها) است یا خیر استفاده می شود. به عنوان مثال، بررسی در استفاده نشدن نام کاربری مساله عضویت تنظیم شده است، که در آن مجموعه لیست تمام نام های کاربری ثبت شده است. هزینه ای که ما برای کارایی می پردازیم این است که در ذات احتمالاتی است. یعنی ممکن است نتایج مثبت کاذبی وجود داشته باشد. به معنای مثبت کاذب، ممکن است بگوید که نام کاربری داده شده قبلا استفاده شده است اما در واقع اینطور نیست.ویژگی های جذاب و جالب Bloom Filterبرخلاف یک جدول هش استاندارد، یک Bloom Filter با اندازه ثابت می تواند مجموعه ای با تعداد دل خواه از عناصر را نشان دهد.اضافه کردن یک عنصر هرگز به مشکل نمی خورد. با این حال، نرخ مثبت کاذب به طور پیوسته با اضافه شدن عناصر افزایش می یابد تا زمانی که تمام بیت های فیلتر بر روی 1 تنظیم شوند، که در آن نقطه همه پرس و جوها نتیجه مثبت می دهند.Bloom Filter هرگز نتیجه منفی کاذب ایجاد نمی کنند، یعنی به شما می گویند که یک نام کاربری زمانی که واقعا وجود دارد، وجود ندارد.حذف عناصر از فیلتر ممکن نیست، زیرا  اگر یک عنصر را با پاک کردن بیت ها در شاخص های تولید شده توسط k تابع هش  حذف کنیم، ممکن است باعث حذف چند عنصر دیگر شود. مثال – اگر با پاک کردن  بیت در ۱، ۴ و ۷، “nerd” را حذف کنیم (در مثال زیر)، ممکن است در نهایت  “nerd” را حذف کنیم همچنین چون بیت در اندیس ۴ ۰ می شود و فیلتر شکوفه ادعا  می کند که “nerd” وجود ندارد.طبق تعریف بلوم فیلتر می‌تونه یک مقدار را در حالت‌های “احتمال وجود آن در مجموعه است” یا “قطعا در آن مجموعه نیست” بررسی کند. تفاوت ظریف بین احتمالا و قطعا نه در اینجا بسیار مهم است.فرض کنیم در یک کتاب خانه هر کتابی که به کتاب خانه اضافه می کنیم در یک  لیستی بنویسیم حال اگر بخواهیم یک کتابی به نام X را جستجو کنیم دیگه کل   کتاب خانه رو دنبال کتاب نمی گردیم لیست را نگاه می کنیم اگر در لیست بود  می گویم که کتاب در لیست هست و احتمال دارد که کتابی در کتاب خانه باشد ولی  در لیست نباشد.آرایه ای از m بیت است که همگی روی صفر تنظیم شده اندبرای محاسبه هش ها برای یک ورودی داده شده به k عدد تابع هش نیاز داریم.  وقتی می خواهیم یک آیتم را به فیلتر اضافه کنیم، بیت ها در k اندیس (h۱)  (x)، h۲ (x)،… hk (x) تنظیم می شوند، که در آن اندیس ها با استفاده از  توابع درهم ساز محاسبه می شوند.به طور مثال – فرض کنید می خواهیم “geeks” را در فیلتر وارد کنیم، ما از  ۳ تابع هش و یک آرایه بیتی با طول ۱۰ استفاده می کنیم، که در ابتدا همه آن  ها روی صفر تنظیم شده اند. ابتدا هش ها را به صورت زیر محاسبه می کنیم:h1(“geeks”) % 10 = 1h2(“geeks”) % 10 = 4h3(“geeks”) % 10 = 7دوباره می خواهیم وارد “nerd” شویم، به همین ترتیب، هش ها را محاسبه خواهیم کرد.h1(“nerd”) % 10 = 3h2(“nerd”) % 10 = 5h3(“nerd”) % 10 = 4بیت ها را در شاخص های ۳، ۵ و ۴ به ۱ تنظیم کنیدحال اگر بخواهیم بررسی کنیم که “geeks” در فیلتر وجود دارد یا خیر. ما  هم همین فرآیند را انجام خواهیم داد اما این بار به ترتیب معکوس. ما هش های  مربوطه را با استفاده از h۱، h۲ و h۳ محاسبه می کنیم و بررسی می کنیم که  آیا تمام این شاخص ها در آرایه بیتی روی 1 تنظیم شده اند یا خیر. اگر تمام  بیت ها تنظیم شده باشند، می توانیم بگوییم که ” geeks” احتمالا وجود دارند.  اگر هر یک از بیت های این شاخص ها ۰ باشند، آنگاه “geeks” قطعا وجود  ندارد.مثبت کاذب در  Bloom Filterسوال این است که چرا گفتیم “احتمالا وجود دارد“،  چرا این عدم قطعیت هست. بیایید این موضوع را با یک مثال درک کنیم. فرض  کنید می خواهیم بررسی کنیم که آیا “cat” وجود دارد یا خیر. ما هش ها را با  استفاده از h۱، h۲ و h۳ محاسبه خواهیم کرد.h1(“cat”) % 10 = 1h2(“cat”) % 10 = 3h3(“cat”) % 10 = 7اگر آرایه بیتی را بررسی کنیم، بیت های این شاخص ها روی 1 تنظیم می شوند  اما می دانیم که “cat” هرگز به فیلتر اضافه نشده است. بیت در اندیس 1 و 7  زمانی که “geeks” را اضافه کردیم و بیت 3 تنظیم شد “nerd” را اضافه کردیم.بنابراین، از آنجا که بیت ها در شاخص های محاسبه شده قبلا توسط مورد  دیگری تنظیم شده اند، Bloom Filter به اشتباه ادعا می کند که “cat” وجود  دارد و نتیجه مثبت کاذب ایجاد می کند. بسته به کاربرد، ممکن است عیب بزرگ یا نسبتا خوب باشد.ما می توانیم احتمال مثبت کاذب را با کنترل اندازه فیلتر بلوم کنترل  کنیم. فضای بیشتر به معنای نکات مثبت کاذب کم تر است. اگر بخواهیم احتمال  نتیجه مثبت کاذب را کاهش دهیم، باید از تعداد بیشتری تابع هش و آرایه بیتی  بزرگ تر استفاده کنیم. این کار علاوه بر آیتم و بررسی عضویت، تاخیر را هم  اضافه می کند.عملیات  اصلی درBloom Filterدرج (x): برای درج یک عنصر در فیلتر بلوم.جستجوی (x): برای بررسی این که آیا یک عنصر در فیلتر بلوم با احتمال کاذب مثبت وجود دارد یا خیر.نکته: نمی توانیم یک آیتم را در Bloom Filter حذف کنیم.برنامه های از Bloom Filter استفاده می کنند:گوگل کروم: برای شناسایی URL های مخربمدیوم: برای پیشنهاد مقالات مرتبطگوگل و Apache برای جستجو و فیلتر کردن استفاده می کنندحتی توی شبکه برای ارسال و دریافت بسته مورد استفاده قرار می گیردکاربرد های Bloom Filterبرای جستجو و فیلتر کردن در دیتابیسبرای آمار بازدید کنندگان از  سایتبرای بررسی و چک کردن قوی یا ضعیف بودن پسورد و اشتباه تایپی متن یا کلمهبرای Redisنکات بد و معایب Bloom Filterالگوریتم Bloom Filter از عملیات حذف پشتیبانی نمی کندنرخ مثبت کاذب را نمی توان به صفر کاهش دادالگوریتم Bloom Filter روی دیسک به دلیل شاخص های تصادفی تولید شده توسط توابع هش به دسترسی تصادفی نیاز دارد.</description>
                <category>جعفر اسماعیلی</category>
                <author>جعفر اسماعیلی</author>
                <pubDate>Tue, 22 Oct 2024 13:31:23 +0330</pubDate>
            </item>
                    <item>
                <title>سریالایزشن در پایتون - Python Serialization</title>
                <link>https://virgool.io/@jaffar_esmaili/%D8%B3%D8%B1%DB%8C%D8%A7%D9%84%D8%A7%DB%8C%D8%B2%D8%B4%D9%86-%D8%AF%D8%B1-%D9%BE%D8%A7%DB%8C%D8%AA%D9%88%D9%86-python-serialization-pxndrfzr9yhd</link>
                <description> در واقع Serialization  یک فرآیند برای تبدیل شی داده مانند object پایتون یا مدل های پایتون تنسورفلو به یک فرمت خاص است. این فرمت به کاربر اجازه ذخیره یا حتی انتقال داده را می دهد. سپس داده ها هر زمان که نیاز باشد شی را با فرایندی به نام سریالایزشن بازسازی می کنند. سریالایزشن یک فرآیند مهم برای کارهای مربوط به برنامه نویسی و وب سرویس ها است.در این مطلب با نحوه استفاده از دو کتابخانه سریالایزشن رایج در پایتون برای سریالایزشن اشیا داده ای مانند دیکشنری ها و مدل های کاربردی هوش مصنوعی مانند تنسورفلو در پایتون برای ذخیره سازی و انتقال آشنا خواهید شد.کی و کجا استفاده کنیم؟به ذخیره سازی و جابه جای یک مقدار مشخصی یا یک عدد صحیح فکر کنید؛ چگونه می توانید آن را در یک فایل ذخیره یا انتقال دهید؟ حال اگر بخوایم یک شی یا آرایه پیچیده و یا کلاس را در جایی ذخیره کنیم و به برنامه های دیگر منتقل کنیم؟ در اینجاست که مبحث سریالایزشن مطرح میشود که بتوان با یک فرمت استاندارد این کار را کردفرمت های مختلفی برای سریالایزشن داده ها وجود دارد، برای مثال JSON، XML، HDF۵، و Pickle برای اهداف مختلف JSON، یک فرم رشته قابل خواندن توسط انسان را برمی گرداند، در حالی که کتابخانه Pickle می تواند یک آرایه بایت را برگرداند.دو روش مرسوم serialization در پایتون بسیار رایج وجود دارند که آبجکت ها داده را در پایتون سریال سازی می کنند.JSONBinary Fileبرای باینری فایل ها در پایتون کتابخانه های مختلفی مانند Pickle, Marshal و HDF۵ وجود دارد ولی Marshal خیلی ابتدایی تر از Pickle ها هست به همین خاطر اکثرا از Pickle استفاده می شود.برخی مزایا استفاده Pickle ها نسبت به Marshal:در کتابخانه Marshal اگر ارجاعات مختلفی به یک object اشاره کند به احتمال خیلی زیاد interpreter پایتون کرش می کنددر Pickle ها برای ارجاعات فعلی تا اونجای که امکانش باشد از ارجاعات قبلی استفاده میشود و به همین دلیل حجم سایز Pickle معمولا به کمتر هستندروش Marshal serialization ممکن هست بین نسخه های مختلف پایتون خروجی متفاوتی داشته باشدتفاوت های اساسی بین پروتکل های Pickle و JSON وجود دارد:JSON یک فرمت سریال سازی متن است کدگذاری می شود، در حالی که Pickle یک فرمت سریال سازی باینری است؛JSON قابل خواندن توسط انسان است، در حالی که Pickle نیست؛JSON در خارج از اکوسیستم پایتون قابل تعامل و استفاده است، در حالی که Pickle مختص خود پایتون و داخل خود برنامه قابلیت serialize deserialize است.JSON به طور پیش فرض، تنها می تواند زیرمجموعه ای از انواع داده های پایتون کار کند و هیچ کلاس یا نوع داده ای سفارشی ندارد اما Pickle می تواند تعداد بسیار زیادی از انواع داده ای پایتون و غیره کار کند.بر خلاف Pickle خود JSON به خودی خود یک آسیب پذیری اجرای کد ایجاد نمی کند.Pickle اغلب برای تولید داده های حجیم تو حوزه هوش مصنوعی استفاده می شود که فقط تبادل دیتا بین خود کتابخانه ها استفاده شود.نکته : کتابخانه ای Pickle امن نیست و ممکن هست موقع unpack کردن داده ها ویروس یا آسیب پذیری وارد سیستم شود در نتیجه داده های که ازشان اطمینان دارید unpack کنید. اگر می خواهید از داده مطمعن شوید که دستکاری یا آلوده نشده اند می توانید از hmac برای امضا وبررسی کردن استفاده کنید.نمونه کد استفاده از کتابخانه ای Pickleimport pickle

popular_langs=[&amp;quotPython&amp;quot,&amp;quotGo&amp;quot,&amp;quotPhp&amp;quot,&amp;quotJs&amp;quot]

&amp;quot&amp;quot&amp;quot Write pickle binary file &amp;quot&amp;quot&amp;quot
pik_file= open(&amp;quotdata&amp;quot,&amp;quotwb&amp;quot)
pickle.dump(popular_langs,pik_file)
pik_file.close()



&amp;quot&amp;quot&amp;quot Read pickle binary file &amp;quot&amp;quot&amp;quot

load_file=open(&amp;quotdata&amp;quot,&#039;rb&#039;)
load_data=pickle.load(load_file)
load_file.close()
print(load_data)نمونه کد استفاده از کتابخانه ای HDF5import h5py

&amp;quot&amp;quot&amp;quot Write HDF5 binary file &amp;quot&amp;quot&amp;quot
with h5py.File&#40;&amp;quottest.hdf5&amp;quot, &amp;quotw&amp;quot&#41; as file:
    dataset = file.create_dataset(&amp;quottest_data&amp;quot, (۱۰,۲۰,۴۰,))



&amp;quot&amp;quot&amp;quot Read HDF5 binary file &amp;quot&amp;quot&amp;quot
with h5py.File&#40;&amp;quottest.hdf5&amp;quot, &amp;quotr&amp;quot&#41; as file:
    dataset = file[&amp;quottest_data&amp;quot]
    print({
        &amp;quotdata&amp;quot:dataset,
        &amp;quotkeys&amp;quot:file.keys()
    })نتیجه گیریهدف آن ساده سازی روش های ذخیره سازی داده برای یک متخصص داده است. serialization در پایتون یکی از مهم ترین ویژگی هایی است که رابط تبدیل داده ها را آسان می کند. در این مقاله در مورد چرایی نیاز به سریال سازی صحبت کرده ایم. فرآیند serialization به کاربر پایتون اجازه می دهد تا داده های خود را در کنار حفظ ساختار اصلی ارسال، دریافت و ذخیره کند.نسخه ای کامل این مطب در لینک زیر موجود می باشدhttps://devcoach.ir/سریالایزشن-پایتون-python-serialization/</description>
                <category>جعفر اسماعیلی</category>
                <author>جعفر اسماعیلی</author>
                <pubDate>Wed, 28 Jun 2023 17:45:33 +0330</pubDate>
            </item>
                    <item>
                <title>بک آپ گرفتن از دیتابیس در سرور</title>
                <link>https://virgool.io/devcoach/%D8%A8%DA%A9-%D8%A2%D9%BE-%DA%AF%D8%B1%D9%81%D8%AA%D9%86-%D8%AF%DB%8C%D8%AA%D8%A7%D8%A8%DB%8C%D8%B3-mysql-tcgy5orycfry</link>
                <description>backup-mysql-database-on-ubuntuبک آپ گیری از پایگاه دا دهای Mysql در Ubuntu serverامروزه اکثرا وب سایت ها و شرکت های های نرم افزاری مورد حملات گستره قرار می گیرد و هدف از این کار اغلب از بین بردن اطلاعات حیاتی و از دسترس خارج کردن سرور ها هست که اینجا اهمیت گرفتن بک آپ از پایگاه داده و فایل های سرور پر رنگ تر می شود.برای گرفتن بک آپ از نرم افزار بسیار قدرتمند Percona XtraBackup استفاده می کنیم .مرحله اول نصب percona xtraback روی اوبونتو سرور :apt install percona-xtrabackupاگر هم کسی بخواد مستقیم دانلود کند و روی سیستمی که به اینترنت وصل نیست نصب کند روی لینک کلیک کند.روند گرفتن بک آپ با percona اینجوری هست که از همه ای فایل ها مهم یک کپی می گیرد و به آدرسی که ما می دهیم می ریزد و ما باید این فایل ها رو فشرده کنیم و فایل های که ایجاد شده رو حذف کنیم.مرحله دوم گرفتن بک آپ با اجرای دستور زیر:MysqlBackupDir=/home/backups/xtrabackup-files

 xtrabackup --user=bkuser --password=dbpass --host=localhost 
 --port=3306 --socket=/var/run/mysqld/mysqld.sock   --backup --target-dir=${MysqlBackupDir}یک نام کاربری و پسورد با دسترسی کامل به mysql ایجاد می کنیم و داخل دستور با اطلاعات پیش فرض جایگزین می کنیم.و در بخش آخر دستور مسیر گرفتن خروجی رو تعیین می کنیم که من داخل home/backup-files گذاشتم.اگر اطلاعات رو درست وارد کرده باشید باید همچین فایل های رو ایجاد کند.حالا بسته به اینکه شما چند تا دیتابیس داخل mysql دارید می تواند فرق کند.کار بک آپ گیری تمام شد اما مشکلی که هست اینکه اگر قرار باشه هر باز این همه فایل ایجاد بشود بعد از مدتی حجم هارد سرور پر می شود از کلی فایل های بک آپ تکراری . برای حل این مشکل اول باید این فایل ها رو zip کنیم و فایل های باز رو حذف کنیم و بعد از این این روند رو خودکار کنیم تا هر روز به صورت اتوماتیک این کار انجام شود.مرحله سوم فشرده سازی و حذف فایل ها و پوشه های خروجی گرفته شده:اگر روی سرور شما zip نصب نشده هست با دستور زیر ابتدا نصب کنیدapt install zipو سپس با دستور زیر فایل زیب را ایجاد کنیدBackupFile=$(date +%Y-%m-%d_%H-%M-%S)
zip -qr /home/backups/mysql_backup_&amp;quot${BackupFile}&amp;quot.zip ./.ما برای فایل های بک یک نام بر اساس تاریخ و ساعت بک آپ گیری تعیین می کنم که دستور اول همین کار را انجام می دهد و خط دوم فایل زیپ را ایجاد می کند.بعد از ایجاد فایل zip حال فایل های که خروجی گرفته شده بود را حذف می کنیمMysqlBackupDir=/home/backups/xtrabackup-files
rm -rf &amp;quot${BackupDir}&amp;quotمرحله چهارم زمانبدی کردن بک آپ گیری :خب برای راحتی کار دوستان و من همه ای این کار ها رو داخل یک فایل bash آماده کردم و در اختیار شما می زارم و این فایل bash رو داخل crontab اضافه می کنیمیک فایل ایجاد کنید و دستورات زیر را داخل آن کپی کنید .یک فایل ایجاد کنید و دستورات زیر را داخل آن کپی کنید .#!/bin/bash



# Define variables
TmpDir=/tmp
BackupsDir=/backups
MysqlBackupDir=mysql-xtrabackup
BackupDir=$(date +%Y-%m-%d_%H-%M-%S)

# Change the directory into temp
cd ${TmpDir} || exit

# Make sure the backups directory exists
mkdir -p ${BackupsDir}

# Create the backup directory and change the directory into it
mkdir -p &amp;quot${BackupDir}&amp;quot
cd &amp;quot${BackupDir}&amp;quot || exit

# Create a MySQL backup with Percona XtraBackup
echo &amp;quot➤ Creating a full MySQL backup with Percona XtraBackup ...&amp;quot

# Create the MySQL XtraBackup directory
mkdir ${MysqlBackupDir}

# Create backup
  xtrabackup --user=bkpuser --password=dbpass --host=localhost  --port=3306 --socket=/var/run/mysqld/mysqld.sock   --backup --target-dir=${MysqlBackupDir} &amp;&gt; /dev/null

# Compress the backup directory
echo &amp;quot➤ Compressing the backup directory ...&amp;quot
  zip -qr ${BackupsDir}/mysql_backup_&amp;quot${BackupDir}&amp;quot.zip ./.

# Delete the backup directory from the temp directory
cd ..
  rm -rf &amp;quot${BackupDir}&amp;quotبعد از کپی کردن فایل های ابتدا باید فایل ایجاد شده را executeable کنید یعنی بتونه داخل linux اجرا بشه بعد داخل crontabاضافه کنید.دستور زیر این کار را انجام می دهد:chmod a+w /home/mysql_backup.sh
crontab -eاکثرا بک آپ گیری بهتره شب انجام داده بشه موقعی که درخواست ها کم هست و سرور خلوت تر هست من معمولا ساعت یازده به بعد زمانبندی می کنم . یه مثال برای زمانبدی بک آپ گیری برای ساعت ۱۱ شبکثرا بک آپ گیری بهتره شب انجام داده بشه موقعی که درخواست ها کم هست و سرور خلوت تر هست من معمولا ساعت یازده به بعد زمانبندی می کنم . یه مثال برای زمانبدی بک آپ گیری برای ساعت ۱۱ شب0 23  * * * /home/mysql_backup.sh &gt; /dev/null 1&gt;&amp;1نکات پایانی :دوستانی که پروژشون به صورت داکرایز شده هست و می خواهند از ایمیج داکر percona xtraback استفاده کنند از این لینک می توانند استفاده کنند.بعد از انجام همه ای این مراحل توانستم از دیتابیس ها و اطلاعات مهم mysql بک آپ بگیرم اما وقتی سرور مورد حمله قرار گیرد و همه ای اطلاعاتش پاک شود اصلا کار بک آپ گیری ما فایده نداره در نتیجه همیشه بهتر هست فایل های بک آپ رو در یک سرور جداگانه یا جای امن نگهداری شود. در پست بعدی نحوه ای آپلود شدن خودکار فایل های بک آپ روی گوگل درایو رو به شما دوستان عزیر آموزش خواهیم داد.برای مشاهده کامل مقاله می توانید به وب سایت ما مراجعه کنید</description>
                <category>جعفر اسماعیلی</category>
                <author>جعفر اسماعیلی</author>
                <pubDate>Sat, 02 Jul 2022 11:25:51 +0430</pubDate>
            </item>
                    <item>
                <title>قابلیت های php  نسخه ای 8 و اتفاق بزرگی به نام JIT</title>
                <link>https://virgool.io/devcoach/%D9%82%D8%A7%D8%A8%D9%84%DB%8C%D8%AA-%D9%87%D8%A7%DB%8C-php-%D9%86%D8%B3%D8%AE%D9%87-%D8%A7%DB%8C-8-%D9%88-%D8%A7%D8%AA%D9%81%D8%A7%D9%82-%D8%A8%D8%B2%D8%B1%DA%AF%DB%8C-%D8%A8%D9%87-%D9%86%D8%A7%D9%85-jit-dnxucrtmv5pv</link>
                <description>در این پست  تمام ویژگی ها و تغییرات ورژن php 8 را بررسی می کنم . یکی از هیجان انگیز ترین ویژگی آن JIT هست که ادامه توضیح خواهیم داد.چند ماه پیش php نسخه 8 را منتشر کرد که در نسخه ای جدید یک سری ویژگی های خیلی خوب اضافه شده که باعث بهبود سرعت اجرای برنامه می شود.(Just In Time Compilation)JIT چیست؟همان طور که می دانید php یک زبان مفسری هست یعنی برای اجرای برنامه  نیاز به کامپایل کردن یا همون خروجی گرفتن مثل زبان های دیگری مثل Java و یا ++C نیست. یعنی همان لحظه که برنامه اجرا می شود کامپایل می شود و خروجی رو نمایش می دهد اما در نسخه 8 پی اچ پی JIT را به موتور ترجمه خود اضافه کرده که باعث شده هم سرعت اجرا برنامه ها کمتر شود و هم از منابع کمتری برای اجرای برنامه ها استفاده کند. با این قابلیت در های جدیدی بر روی Php باز شده است مثلا در آینده شاهد این باشم که از Php در هوش مصنوعی هم استفاده کنند.در تصویر زیر هم که خود سایت php گذاشته مشاهده می کنید JIT چقدر تاثیر داشته در اجرای برنامه هادیگر ویژگی های PHP 8  را مثال می زنیم و با نسخه ای  PHP 7 مقایسه می کنیمNamed argument :بعضی مواقع برای بعضی از توابع و یا کلاس لازم می شد که چندین پارامتر بفرستیم که بعضی هاشون اختیاری باشن تو نسخه 7 موقع فراخوانی  توابع یا کلاس اگر می خواستم به پارامتر آخر یک مقداری رو پس کنیم (بفرستیم) مجبور بودیم که به اون پارامتر اختیاری که قبل از این پارامتر هست مقدار null بدیم که کار کند .اما در نسخه 8 این مشکلی خیلی خوب حل شده که در نمومه کد زیر قابل مشاهده هست .در واقع با قابلیت  name arugument  می داند که کدام مقدار را به کدام پارامتر بفرستد.class  Blog
{
    public function __construct(
    private string $title,
    private  string|null  $description,
    private string $slug ) {}

}

//   PHP 7
$blog_object = new Blog (
    &#039;New  Devcoach Post&#039;,
    &#039;&#039;,
    &#039;new-post&#039;,
);

// PHP 8
$blog_object = new Blog (
    title : &#039;New  Devcoach Post&#039;,
    slug: &#039;new-post&#039;,
);Attributes ها :جایگزین مناسب برای PHPDoc هست که در نسخه ای 8کد ها خیلی کمتر و خوانا ترم می کند.// PHP 7
class PostsController
{
    /**
     * @Route(&amp;quot/api/posts/{id}&amp;quot, methods={&amp;quotGET&amp;quot})
     */
    public function get($id) { /* ... */ }
}


// PHP 8

class PostsController
{
    #[Route(&amp;quot/api/posts/{id}&amp;quot, methods: [&amp;quotGET&amp;quot])]
    public function get($id) { /* ... */ }
}Constructor property promotion  :این اجازه را به ما می دهد که بتوانیم خصوصیات کلاس رو مستقیم داخل constructor تعریف  و استفاده کنیم بدون اینکه بخوایم  مانند نسخه 7 قبل  از متد  constructor  این خصوصیات رو  تعریف کنیم.// PHP 7
class Blog {
    public string $title;
    public string $description;
    public string $slug;

    public function __construct(
        float $title = &#039;New Devcoach Post&#039;,
        float $description = &#039;This is a post&#039;,
        float $slug = &#039;new-post&#039;
    ) {
        $this-&gt;title = $title;
        $this-&gt;description = $description;
        $this-&gt;slug = $slug;
    }
}

// PHP 8

class Blog {
    public function __construct(
        float $title = &#039;New Devcoach Post&#039;,
        float $description = &#039;This is a post&#039;,
        float $slug = &#039;new-post&#039;
    ) {}
}Union types :یه سری خطا داخل پروژه ها به این  خاطر پیش می آمد که پارامتر درست ارسال نشده بود چون بعضی مواقع نیاز بود یک پارامتر هم عددی باشد و هم اعشاری و این ویژگی نبود که هر دو نوع تایپ را  تعریف کرد.union ها در نسخه ای جدید این مشکل را حل کردن و در های جدیدی برای تعریف متد و فانکشن باز کردند.// PHP 7
class Number {
  /** @var int|float */
  private $number;

  /**
   * @param float|int $number
   */
  public function __construct($number) {
    $this-&gt;number = $number;
  }
}

new Number(&#039;NaN&#039;); // Ok

// PHP 8

class Number {
  public function __construct(
    private int|float $number
  ) {}
}

new Number(&#039;NaN&#039;); // TypeErrorMatch expression :به طور خلاصه این جایگزین خوب و کوتاه تر  برای swicth ها هست که طبق نیازمون می توانیم ازش استفاده کنیم و در ضمن  می توان مقدار پیش فرض مثل swicth ها براش تعریف کرد// PHP 7

switch (8.0) {
    case &#039;8.0&#039;:
        $result = &amp;quotOh no!&amp;quot
        break;
    case 8.0:
        $result = &amp;quotThis is what I expected&amp;quot
        break;
    default:
        $result = &#039;nothing&#039;;
}
echo $result;

// PHP 8

echo match(8.0){
&#039;8.0&#039; =&gt; &amp;quotOh no!&amp;quot,
  8.0 =&gt; &amp;quotThis is what I expected&amp;quot,
    default =&gt; &#039;nothing&#039;
};Nullsafe operator :به نظرم بعد از JIT  یکی از اتفاق های خوب  php نسخه ای  8 هست که انجام شده .در نسخه  7 php من همیشه این مشکل رو داشتم ، یک خطای به خاطر null بودن object رخ داده مخصوصا در لاراول که اکثرا در پروژه ها استفاده می کنم همیشه مسئله بوده که با شرط if بررسی کنم اگر خالی نبود  مقدارشون نمایش بدم. قطعا با  ویژگی ساختار کد ها خیلی تمیز تر ، کمتر و در کنار این همه قابلیت به نظرم تعداد خطای برنامه ها هم خیلی کم تر می شود.// PHP 7

$country =  null;

if ($session !== null) {
  $user = $session-&gt;user;

  if ($user !== null) {
    $address = $user-&gt;getAddress();
 
    if ($address !== null) {
      $country = $address-&gt;country;
    }
  }
}

// PHP 8
$country = $session?-&gt;user?-&gt;getAddress()?-&gt;country;Saner string to number comparisons :در  php 8 برای مقایسه یک عدد با رشته از مقایسه اعداد استفاده می کند .// PHP 7

0 == &#039;foobar&#039; // true

// PHP 8
0 == &#039;foobar&#039; // falseیک سری توابع و کلاس جدید هم در  php نسخه ای 8 اضافه شده که به شرح زیر هست:1.str_contains2.str_start_with3.str_ends_with4.get_debug_type// PHP 8

 str_contains ( string $haystack , string $needle ) : bool
Example:
str_contains(&#039;This is my first blog&#039;, &#039;blog&#039;) // true

str_starts_with (string $haystack , string $needle) : bool
Example:
str_starts_with(&#039;This is my first blog post&#039;, &amp;quotis&amp;quot) // false

str_ends_with (string $haystack , string $needle) : bool
// Example:
str_ends_with(&#039;This is my first blog post&#039;, &amp;quotpost&amp;quot) // true 

$bar = $arr[&#039;key&#039;];
if (!($bar instanceof Foo)) { 
  // this shows the most simple of patterns, to get the real type an assoc array
  // must be present to convert long-form &amp;quotinteger&amp;quot into int etc.
  throw new TypeError(&#039;Expected &#039; . Foo::class . &#039; got &#039; . (is_object($bar) ? get_class($bar) : gettype($bar)));
}
 
// would become
if (!($bar instanceof Foo)) { 
  throw new TypeError(&#039;Expected &#039; . Foo::class . &#039; got &#039; . get_debug_type($bar));
}
 
$bar-&gt;someFooMethod();


class FooBar {
    private WeakMap $cache;
 
    public function getSomethingWithCaching(object $obj) {
        return $this-&gt;cache[$obj] ??= $this-&gt;computeSomethingExpensive($obj);
    }
 
    // ...
}و در آخر من شخصا خیلی هیجان زده شدم از قابلیت و ویژگی های  نسخه 8 مخصوصا با  JIT و Nullsafe که واقعا ویژگی خوبی بودن . امیدوارم تونسته باشم که اکثر ویژگی ها رو با زبان ساده تو این مقاله ارائه بکنم.منبع</description>
                <category>جعفر اسماعیلی</category>
                <author>جعفر اسماعیلی</author>
                <pubDate>Mon, 13 Sep 2021 10:50:04 +0430</pubDate>
            </item>
                    <item>
                <title>خلاصه و برداشتم من از فیلم بنیان گذار</title>
                <link>https://virgool.io/fboard/%D8%AE%D9%84%D8%A7%D8%B5%D9%87-%D9%88-%D8%A8%D8%B1%D8%AF%D8%A7%D8%B4%D8%AA%D9%85-%D9%85%D9%86-%D8%A7%D8%B2-%D9%81%DB%8C%D9%84%D9%85-%D8%A8%D9%86%DB%8C%D8%A7%D9%86-%DA%AF%D8%B0%D8%A7%D8%B1-vvyzweta9rif</link>
                <description>من  فیلم   بنیان گذار رو مشاهده کردم  چند وقت پیش  و بدون فوت وقت بریم سراغ فیلم و درس های که می توان یاد گرفت و برداشتم رو خیلی خلاصه توضییح بدم . آقای ری که همش این ور اون می رفت و دستگاه ابمیوه و وسیله های که برای فست فود و بستی ها لازمه رو اجاره می داد و همش تو راه غذا می خورد که تا اینکه یه بار رفت از مک دونالد برگر سفارش داد که در سریع ترین زمان به دستش رسید و خیلی هم خوشمزه و تازه خیلی تعجب کرد .اخه اکثرا یا غذا زود اماده نمی شد یا اگه زود اماده می شد معلوم بود که از قبل اماده کردن و تازه و خوشمزه نیست. تصمیم گرفت برود و ازشون بپرسه که دلیلش چی بود و اون دوتا برادر (مک دونالد)هم غافل از کشف عالی که کرده بودن توضییح دادن و آقای ری پیشنهاد داد که گسترش بدن چندین شعبه بزنن اما اونا که اصلا از کسب کار چیزی نمی دونستن قبول نکردن اخر با سماجت آقای ری یک قرداد نوشتن که آقای ری این کار رو انجام بده .اقای ری شروع کرد و حتی برادران مک دونالد یه نوعی چینش هم طراحی کرده بودن برای داخل رستوان و بیرون با رنگ قرمز خیلی خوب کوچک و جمع جور بود. آقای ری شروع کرد با وام گرفتن اولین شعبه هاشو به فامیل سپرد اما اونا که ادم کسب کاری نبودن رستوران ها اغلب کثیف و کم کیفیت بود تا اینکه تصمیم گرفت پس بگیره و به ادم های بده که واقعا تشنه ای کار کردن و کسب کار هستن مثل اون اقای یهودی کتاب فروش که همراه با خانومش با عشق کار می کردن.بعد یواش یواش شعبه های مک دونالد بیشتر بیشتر شد و اقای هم پول کم داشت رفت بانک وام بگیره ندادن همونجا با یه آقای آشنا شد که گفتن نقشه و طرح کسب کار شما درست نیست (business plan) شما نباید مغازه اجاره کنید سعی کنید مغازه ها را بخرید و به کسی اجاره بدین اینجوری هم اونا برای شما کار می کنن و هم شما صاحب مغازه می شوید و هر وقت هم مدیریت اون شعبه درست کار نکرد می تونید عوض کنید که یک ایده عالی بود آقای ری هم اینجوری عمل کرد و به یکی از بزرگترین بنگاه داران مغازه در دنیا تبدیل شد. آقای ری همین جوری داشتن پیشرفت می کرد و برادران مک دونالد افسوس و حسرت آخرش برادر بزرگ تر سکته رو کرد  رفت بیمارستان که در آخر آقای ری یه جلسه گذاشت با زور و دعوا دوباره بیشتر سهام را خرید و گفت که درصدی از درآمد ها را می دم که فقط حرف بود و به قولش عمل نکرد. در آخر هم وقتی برادر بزرگتر مک دونالد تو بیمارستان بود آقای ری به ملاقات رفت و یک چک سفید داد گفت کل یه دونه مغازه که به نام اونا بود رو می خرم .درس های که می توان گرفتنتیجه ای که می توان گرفت اینکه برادران مک دوناد با اینکه ایده خوبی داشتن و عملی کردن اما چون آدم بیزینسی نبودن نتونستن گسترشش بدن حتی یه جای آقای ری با کمک یکی از مدیر های شعبه که همسر اون خانوم رستوران داشت یک پودری درست کردن که در سریع ترین زمان و بدون مصرف برق شیر موز درست می شد با همون طعمی که دستی و تازه درست می شد بازم مثل دفعات قبل برادران مک دونالد قبول نکردن .اگه شما هم این فیلم رو مشاهده کردین خوشحال می شم که نظر شما را بشنوم</description>
                <category>جعفر اسماعیلی</category>
                <author>جعفر اسماعیلی</author>
                <pubDate>Mon, 30 Aug 2021 00:01:17 +0430</pubDate>
            </item>
                    <item>
                <title>حذف و غیر فعال سازی ویروس kdevtmpfsi</title>
                <link>https://virgool.io/devcoach/%D8%AD%D8%B0%D9%81-%D9%88-%D8%BA%DB%8C%D8%B1-%D9%81%D8%B9%D8%A7%D9%84-%D8%B3%D8%A7%D8%B2%DB%8C-%D9%88%DB%8C%D8%B1%D9%88%D8%B3-kdevtmpfsi-gu4pcrku1fs2</link>
                <description>devcoachمدیر سیستم بودن دردسر ها و استرس های خودشو داره یکی از حساس ترین کارها اینکه باید امنیت سرور رو تامین کنی داستان از جای شروع می شه که بچه های تیم گفتن که گیت لب کار نمی کنه و خیلی کند شده این رو هم بگم که ما یه سرور داریم که گیت لب رو روی اون نصب کردیم و پروژه هامون رو روی سرور با داکر اجرا می کنیم بعد منم رفتم لاگین کنم تست کنم ببینم داستان از چه قرار که سرعت سرور خیلی پایین اومده بود بالاخره با کندی وارد سیستم شدم لیست تسک های که در حال اجرا بود رو دیدم یه چیزی به اسم kdevtmpfsi با دستور kill استاپش کردم اما بعد چند دقیقه دوبراه اجرا می شد هی من استاپش می کردم دوباره اجرا می شد سرچ زدم داخل استک اورفلو و سایت های دیگر یه چیز های اورده بود انجام دادم اما فایده نداشت دوباره اجرا می شد.بالاخره بعد کلی تحقیق متوجه شدم که داخل یکی از ایمج های داکر می اد و خودشو اجرا می کنه احتمال های دادم و چیزی هم که بود داخل فروم ها بود داخل ایمیج redis ویا php هست دوباره از اول جذف کردم این ایمیج ها رو و نصب کردم اما فایده نداشت دوباره اجرا می شد.در آخر بهترین روشی که پیدا کردم این بود که با استفاده از دستور زیر اول مسیر ویروس رو پیدا کنم و حذف کنم که کلا از بین برهبرنامه مشاهده ادامه بر روی لینک کلیک کنید</description>
                <category>جعفر اسماعیلی</category>
                <author>جعفر اسماعیلی</author>
                <pubDate>Sun, 22 Aug 2021 21:46:26 +0430</pubDate>
            </item>
                    <item>
                <title>نصب و فعال Https روی Apache در لینوکس</title>
                <link>https://virgool.io/devcoach/%D9%86%D8%B5%D8%A8-%D9%88-%D9%81%D8%B9%D8%A7%D9%84-https-%D8%B1%D9%88%DB%8C-apache-%D8%AF%D8%B1-%D9%84%DB%8C%D9%86%D9%88%DA%A9%D8%B3-g4tsvpbzgrzj</link>
                <description>در پست می خوایم نحوه ای نصب کردن گواهی نامه SSL یا همون  https  روی سرور های لینوکس بر روی وب سرور apache رو  آموزش بدم  و در پست بعدی نحوه ای نصب روی وب سرور  nginx اموزش خواهم داد.اینکه https چیه و چه مزایای نسبت به http داره می تونید از این لینک در موردش بخونید و در یک جمله اینو بگم که فرق بین http و https  اینکه در پروتکل  ارتباطی  https  ارتباط بین کاربر و سرور به صورت امن خواهد بود و از نظر سئو هم تاثیر داره بر روی سایت.فرق بین https با httpیکی از راه های نصب و فعال کردن  https  خرید گواهینامه  SSL  یا همون  TLS از سایت معتبر هست که بعد از خرید سه تا فایل می دن که اون ها روی سرور  آپلود می کنید یا اگه از  CDN استفاده می کنید  روی سرویس CDN که از آن استفاده می کنید , آپلود می کنید ولی ما در این پست نحوه ای نصب و استفاده از  https  های رایگان که در سطح اینترنت هستند رو آموزش می دیم. در واقع  TLS  همون نسخه ای ارتقا یافته ای  SSL  هست  ورژن  SSL 3.1 همان TLS 1.0 است. در حال حاضر   TLS  به ورژن 1.2 ٰرسیده و در هریک از این آپدیت‌ها امکانات امنیتی جدیدی افزوده و معرفی می شود.این نکته رو هم بگم که گواهینامه های پولی مدت اعتبارشون 1 سال هست ولی گواهینامه های رایگان مدتش 90 روزه که می شه دوباره تمدید کردخب بریم سراغ آموزش ما در این پست می خوایم از  Let&#x27;s Encrypt استفاده کنیم ما داخل سرور ممکنه چندن دامنه و ساب دامنه داشته باشه که برای هر کدوم باید جداگانه نصب کنیم https  رو. اول apache رو نصب می کنیم یا اگه نصب بررسی می کنیم که نسخه چنده رو نصب کردیم می توانید از دستور برای بررسی نصب بودن روی سرور چک کنید :apache2-v و اگه نصب نیست با این دستور نصب کنید :sudo apt install apache2 بعد از نصب بررسی می کنیم که نصب شده و فعال هست :sudo systemctl status apache2 خب یک پوشه ایجاد می کنیم  sudo  mkdir/var/www/html/api.ir داخل پوشه api.ir به فایل به نام   index.html ایجاد می کنیم که محتواش می تونه هر چی باشه:sudo  nano/var/www/html/api.ir/index.html داخل فایل : https://virgool.io/d/g4tsvpbzgrzj/edit خب یه فایل server block برای دامنه ایجاد می کنیم:sudo nano/etc/apache2/sites-available/api.ir.conf و داخلش این تنظیمات مربوط به  server block رو کپی می کنیم :ServerAdminadmin@example.com
ServerName api.ir
ServerAlias www.api.ir
DocumentRoot/var/www/html/api.ir
و با این دستور این server block رو به پوشه اس site-enable لینک می کنیم :ln  -s  /etc/apache2/sites-available/api.ir/      etc/apache2/sites-enabled/api.ir سیستم کلی وب سرور اینجوری که یه پوشه برای سایت ها و دامنه ای در دسترس وجود و هر کدوم رو خواستم لینک می کنیم به پوشه سایت های فعال حتی nginx هم این روند رو دارهحالا تنظیمات مربوط به وب سرور تموم هست می ریم Let&#x27;s Encrypt رو نصب کنیمsudo apt install certbot بعد از نصب برای اینکه بتوانیم از پلاگین webroot   استفاده کنیم یک پوشه ایجاد می کنیم بعد سطح دسترسی به اون رو تغییر می دیم:sudo mkdir  -p  /var/lib/letsencrypt/.well-known
sudo chgrp www-data/var/lib/letsencrypt
sudo chmod   g+s   /var/lib/letsencrypt  https://virgool.io/d/g4tsvpbzgrzj/sudomkdir-p/var/lib/letsencrypt/.well-knownsudochgrpwww-data/var/lib/letsencryptsudochmodg+s/var/lib/letsencrypt  sudo  nano   /etc/apache2/conf-available/well-known.conf  و داخلش این دستورات رو کپی می کنیم و در اخر ذخیره می کنیم و از فایل بیرون می ایم Alias/.well-known/acme-challengeهمه ای دامنه ها به یه ip آدرسی  که مربوط به سرور هست اشاره می کنند و بعد از رسیدن به سرور این apache هست که این درخواست رو هندل می کنه و برای اینکه برای این درخواست ها گواهینامه ssl رو فعال کنیم باید این کامند ها رو اجرا کنیم sudo a2enmod ssl
sudo a2enmod headers
sudo a2enmod http2
sudo a2enconf well-knownبعد از فعال کردن apache رو ریستارت می کنیم sudo systemctl restart apache2 خب بعد از اینکه گواهینامه ssl رو فعال کردیم باید برای هر دامنه یا ساب دامنه یک بار https رو نصب کنیم ما اینجا یک دامنه به آدرس api.ir ایجاد کردیم که بدین صورت خواهد بودsudo certbot certonly   --agree-tos  --email    admin@api.ir  --webroot  -w       /var/lib/letsencrypt/   -d   api.ir   -d  www.api.ir اگه درست نصب شده باشه باید با خروجی زیر رو به رو بشیم که می گه تبریک با موفقیت نصب شده importantnotes:-Congratulations!Yourcertificateandchainhavebeensavedat:/etc/letsencrypt/live/api.ir/fullchain.pemYourkeyfilehasbeensavedat:/etc/letsencrypt/live/api.ir/privkey.pemYourcertwillexpireon2020-06-27.Toobtainanewortweakedversionofthiscertificateinthefuture,simplyruncertbotagain.Tonon-interactivelyrenew*all*ofyourcertificates,run خب برای اینکه  بخواهیم تبادل اطلاعات  بین کاربر و سرور به صورت رمز نگاری شده باشد باید یک کلید تبادل  به مقدار 2048 تولید کنیمsudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048دوباره فایل  server block که برای دامنه api.ir ایجاد کرده بودیم رو باز می کنیم و به این صورت ویراش می کنیم &lt;VirtualHost *:80&gt;      
    ServerAdmin admin@example.com     
    ServerName api.ir
    ServerAlias www.api.ir    
    DocumentRoot /var/www/html/api.ir  
     ErrorLog ${APACHE_LOG_DIR}/api.ir-error.log 
&lt;/VirtualHost&gt;

&lt;VirtualHost *:443&gt;
  ServerName api.ir
  ServerAlias www.api.ir 
  DocumentRoot /var/www/html/api.ir

  Protocols h2 http:/1.1

  &lt;If &amp;quot%{HTTP_HOST} == &#039;www.api.ir&#039;&amp;quot&gt;
    Redirect permanent / https://api.ir/
  &lt;/If&gt;
  
  ErrorLog ${APACHE_LOG_DIR}/api.ir-error.log
  CustomLog ${APACHE_LOG_DIR}/api.ir-access.log combined

  SSLEngine On
  SSLCertificateFile /etc/letsencrypt/live/api.ir/fullchain.pem
  SSLCertificateKeyFile /etc/letsencrypt/live/api.ir/privkey.pem
  SSLOpenSSLConfCmd DHParameters &amp;quot/etc/ssl/certs/dhparam.pem&amp;quot
  
  SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH
  SSLProtocol All -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
  SSLCompression off
  SSLUseStapling on

&lt;/VirtualHost&gt;برای اینکه پروتکل https هم بتونه اطلاعات رو کش کنه و از کش بخونه باید تنظیمات مربوط به ان را توی تنظیمات apache فعال کنیم فایل ssl.conf رو باز می کنیم :sudo nano /etc/apache2/mods-available/ssl.confبعد  دارکتیو SSLStaplingCache  رو اضافه می کنیم # Set the location of the SSL OCSP Stapling Cache
 SSLStaplingCache shmcb:/tmp/stapling_cache(128000)  و مرحله ای آخر apache  رو ریستارت می کنیمsudo systemctl restart apache2برای اینکه هر 30 روز به صورت خودکار اعتبار گواهینامه دوباره تمدید بشه البته گفتم  مدت اعتبارش 90 روزه داخل cronjob این دستور رو اضافه می کنیم :0 1 * * * /usr/bin/certbot renew &amp; &gt; /dev/nullبرای اینکه تست کنیم تمدید تاریخ اعتبار به درستی کار می کنه یه بار دستی تست می کنیمsudo certbot renew --dry-runتبریک می گم شما تونستید گواهینامه  SSL  رو  روی دامنه خود نصب کنید و از این به بعد ارتباط بین سرور و کاربر شما به صورت امن و رمز نگاری خواهد شد .</description>
                <category>جعفر اسماعیلی</category>
                <author>جعفر اسماعیلی</author>
                <pubDate>Thu, 05 Mar 2020 18:42:57 +0330</pubDate>
            </item>
                    <item>
                <title>Mysql Storage Engine</title>
                <link>https://virgool.io/devcoach/mysql-storage-engine-anf3zybqexw0</link>
                <description>همه ای پایگاه داده ها از موتورهای  ذخیره سازی (storage engine) برای انجام پردازش و مدیریت عملیات CURD استفاده می کنند.پایگاه دادی Mysql هم از انواع موتور های ذخیره سازی ازجملهInnoDB,MyISAM,CSV,Memory,SEQENCE,پشتیبانی می کند.به صورت پیش فرض موتور ذخیره InnoDB فعال هست و اکثرا توسعه دهندگان حالت پیش فرض رو انتخاب می کنند و بعدا طبق نیاز پروژه عوض می کنند چون هر موتور ذخیره سازی کاربرد های خودش را دارد.برای مشاهده همه ای موتور های ذخیره و پردازش اطلاعات می توان از دستور زیر استفاده کرد:SELECT ENGINE, SUPPORT FROM INFORMATION_SCHEMA.ENGINES;بعد از اجرای دستور بالا لیست موتور های Mysql نمایش داده می شود همان طور که می بینید InnoDB به صورت پیش فرض  برای همه ای جدول ها ها فعال هست.حالا چند تا از موتور های دخیره سازی مشهور که اکثرا استفاده می شود بررسی می کنیم و شما بسته به نیاز پروژه می توانید از آن استفاده کنید. ویژگی های  InnoDB Storage Engineپشتیبانی از تراکنش ها پشتبانی کامل از خاصیت ACIDپشتیبانی از کلید خارجیظرفیت ذخیره سازی تا 64TBاگر نمی دانید خاصیت ACID چی هست می توانید از این لینک که دوستان زحمت کشیدن نوشتن استفاده کنید.مفهوم ACID چیست و بعنوان یک توسعه دهنده چگونه در باره‌ی آن فکر کنیم؟مشخصه های اصلی یک تراکنش ( ACID )ویژگی های MyISAM Storage Engineمناسب برای داده های سنگینعدم پشتیبانی از تراکنش هاعدم پشتیبانی از خاصیت ACIDعدم پشتیبانی از کلید خارجیظرفیت ذخیره سازی تا 256TBویژگی های CSV Storage Engineداده های به صورت متن ساده ذخیره می شوند و می توان از فایل csv مستقیم داده وارد کردعدم پشتیبانی از تراکنش هاعدم پشتیبانی از خاصیت ACIDعدم پشتیبانی از کلید خارجیویژگی های NDB Storage Engineپشتیبانی از بانک اطلاعاتی کلاسترینگپشتیبانی از تراکنش ها پشتیبانی از ویژگی های موتور ذخیره سازی Memory Storage Engineظرفیت ذخیره سازی تا 384EBمنظور از  بانک اطلاعاتی کلاسترنیگ این است که می توان داده های در جا و سرور های مختلفی با قابلیت تحمل خطای بالا ذخیره و بازیابی کرد.برای تکثیر اطلاعات به چندین سرور نیاز داریم و برای عملکرد و سرعت زیاد بهتر است سرور ها در یک مرکز باشند.به صورت پیش فرض در اکثرا نسخه های Mysql این موتور ذخیره سازی پشتیبانی نمی شود و بهتر است که نسخه ای MySQL community Edition داخل سرور نصب شود.ویژگی های Memory Storage Engineبرای ذخیره داده ها از RAM استفاده می کندعدم پشتیبانی از کلید خارجی و تراکنش هاظرفیت ذخیره سازی بسته به مقدار RAM سیستم یا سرورمناسب برای داده های که نیاز به خواندن دارند. و یه نکته به هر دلیلی سیستم یا سرور دوباره راه اندازی (restart) شود  همه ای داده های از بین می رود بنابراین بهتر است که برای داده ای مهم و حیاطی از این موتور ذخیره سازی استفاده نشود.  برای مشاهده جزیئات ویژگی های هر موتور ذخیره سازی از این دستور می توانید استفاده کنید.SHOW ENGINES; برای مشاهده همه ای ویژگی های هر موتور ذخیره سازی بر روی این لینک کلیک کنید.</description>
                <category>جعفر اسماعیلی</category>
                <author>جعفر اسماعیلی</author>
                <pubDate>Tue, 12 Nov 2019 23:20:27 +0330</pubDate>
            </item>
            </channel>
</rss>