ایجاد زیردایرکتوری‌های دلخواه برای ریسورس‌ها به کمک گردل

اگه برای اندروید برنامه‌نوشتید یا قصد یادگیری اون رو دارید حتما با این محدودیت روبرو شدید یا خواهید شد که شمارو مجبور میکنه تمامی تصاویر و وکتورها و layout و دیگر فایل‌های لازم خودتون رو درون دایکتوری ‍ res قرار بدید ، حالا اینکه به شما اجازه میده تا برای رزولوشن‌های مختلف دایرکتوری‌های جدا داشته باشید چندان فرقی نمی‌کنه چون باز هم فولدر‌های شما ممو از فایل‌های مختلفی هست که کمتر ارتباط معنایی باهم دارند، مثلا تصاویری که برای ایجاد بخش راهنمای نرم‌افزار دارید و کنار آیکون‌ها میتونید ببینید و خلاصه در یک برنامه نسبتا بزرگ دایرکتوری شما بیشتر از صد تا فایل خواهد داشت که مدیریت اونها سخت و خسته کننده است.
هرچند من دل خوشی از gradle ندارم ولی در این مورد گردل میتونه بکار بیاد و کمک کنه تا بتونید به فولدربندی دلخواه خودمون فایل‌ها رو کمی بهتر مدیریت بکنیم. این رو هم توجه کنید که گردل موقع کامپایل برنامه دوباره تمامی دایرکتوری‌هایی که ما ایجاد کردیم و مشخص کردیم رو باهم ادغام می‌کنه و درون فایل اجرایی برنامه همچنان بصورت یک دایکتوری ذخیره میشه.
نحوه کار خیلی ساده است، فایل build.gradle برنامه خودتون رو باز کنید و درون اسکوپ android کد زیر رو اضاف کنید. بعد اضافه کردن کد زیر میتونید به دایرکتوری ریسورس برنامه برید و دایکتوری‌ای به نام test ایجاد کنید. درون این دایرکتوری دقیقا مثل دایرکتوری اصلی res میتونید فولدر‌های drawable یا layout … خودتون رو ایجاد کنید و ریسورسهای خودتون رو توی اونها ایجاد کنید. موقع کامپایل برنامه گردل این دایرکتوری‌ها رو ادغام و بصورت یک دایرکتوری واحد درمیاره.

1
2
3
4
5
6
7
8
9
 sourceSets {
main {
res.srcDirs =
[
'src/main/res/test',
'src/main/res'
]
}
}

Resource sub-directory
برای استفاده از ریسورس‌ها هم مثل قبل عمل میشه و لازم به کار اضافه‌ای نیست، یعنی برای استفاده از تصویر birthday_alert.png میشه نوشت R.drawable.birthday_alert .

کاهش حافظه مصرفی php-fpm و MySQL

وقتی سروری دارید که حافظه اصلیش کمه و باید سرویس‌های مختلفی رو روی اون اجرا کنید تازه میفهمید که هرکدوم از سرویس‌ها چقدر حافظه مصرف میکنند و چجوری حافظه مصرفی رو کاهش بدید. وقتی با حافظه کم دارید از mysql و php-fpm استفاده می‌کنید بهتره سری به تنظیماتشون بزنید و چند تغییر کوچک توی اونها بدید تا حجم کمتری از حافظه اصلی رو اشغال کنند.

اول بریم سراغ php-fpm که اگه باعث میشه حافظه مصرفی به میزان چشمگیری کاهش پیدا بکنه. فایل /etc/php-fpm.d/www.conf رو با ویرایشگر دلخواه خودتون ویرایش کنید و تنظیمات زیر رو توی اون اعمال کنید.

1
2
3
4
5
6
7
8
; Change process manager from default (dynamic) to ondemand
pm = ondemand
; Maximum number of child processes
pm.max_children = 50
; The number of seconds after which an idle process will be killed.
pm.process_idle_timeout = 10s
; The number of requests each child process should execute before respawning.
pm.max_requests = 500

این تنظیمات باعث میشه که پروسس‌های php-fpm در مواقع نیاز(ondemand) ایجاد بشن و بعد از ۱۰ ثانیه بیکار بودن به دیار باقی منتقل بشن. با ایجاد این تغییرات و ریستارت سرویس php-fpm حجم قابل توجهی از حافظه‌ای که قبلا استفاده شده بوده آزاد میشه. چیزی نزدیک ۲۵۰مگ.
برای mysql هم باید سری به تنظیمات innodb بزنیم و اندازه حافظه مورد استفاده اون رو کاهش بدیم، بصورت پیش‌فرض این سرویس ۲۵۶ مگ رم میگیره، اگه فرض کنیم کل رم سرور شما ۵۱۲مگ باشه این میزان دقیقا نصف رم هست که خب این میزان چندان جالب نیست. فایل /etc/my.cnf رو باز کرده و مقدار کلید innodb_buffer_pool_size رو به میزان دلخواه تغییر بدید.

1
2
[mysqld]
innodb_buffer_pool_size = 64M

پس از این هم سرویس مای‌اس‌کیو‌ال رو ریستارت کنید.
در نهایت با استفاده از دستور free -m میتونید میزان حافظه در دسترس سرورتون رو ببینید.

1395

نزدیک بیست دقیقه است که دارم فکر می‌کنم این متن رو چجوری شروع کنم، قضیه اینه که بنا به دستور یکی از دوستان باید انشایی به موضوع «سال ۱۳۹۵ را چگونه گذرانده‌اید» بنویسم، اینجوری هست که من الان درگیرم که چی باید بنویسم و سوال مهمتر اینکه واقعا امسال رو چگونه گذروندم؟!! البته لطفی که در حقم داشتند این بود که عناوینی که باید توی انشاء بهش بپردازم هم برای من مشخص کردند، منم تا جای ممکن سعی میکنم که بپیچونم

کارهای بزرگی که انجام دادی

جواب دادن به این سوال واقعا کار سختیه، کار بزرگ از دید آدما فرق داره، کاری که از دید من کار بزرگی هست از دید دیگران شاید بزرگ نباشه و از طرف دیگه کاری که از دید من بزرگه شاید از دید بقیه کوچک باشه همچنین کاری بزرگ وقتی انجام میشه دیگه کار بزرگی به حساب نمیاد، شاید موقعی که کاری رو انجام دادیم فک کنیم که دممون گرم چقدر کار خفنی بوده ولی بعد مدت کوتاهی دیگه اونکار از دیدمون بزرگ نیست. بنظر من کارهای بزرگ از دید خود آدم فقط کارهایی هستند که هنوز انجامشون ندادیم.
اگه بخوام کلی بیان کنم از دید خودم تنها کار بزرگ سال ۹۵ این بود که تونستم ریسک کنم و کاری که دوساله تو فکرش بودم انجام بدم. درسته تغییر ظاهری چندانی در خروجی زندگی نداشته این عمل ولی تغییر قابل توجهی بوده.

کتاب هایی که خوندی

من زیاد اهل کتاب خوندن نیستم و تقریبا ۹۹٪ زمان کتاب خوندن من وقتی بود که توی رفت و آمد بودم، مترو بهترین مکان برای خوندن کتاب هست، البته دوتا شرط لازم داره، اول اینکه جا برای ایستادن و باز کردن کتاب وجود داشته باشه، دومی که بسته به جذابیت کتاب میشه ازش صرف‌نظر کرد هدفون و آهنگ هست. پنج تا کتابی که همینطوری خوندم به ترتیب انسان در جست‌جوی معنا، هنر عشق ورزیدن، شاگرد قصاب، ناتور دشت و پرتره بوده.

فیلم های قشنگی که دیدی

من بیشتر از فیلم سریال میبینم اگه بخوام اسمشونو بگم اسم زیاده ولی اگه بخوام بهترین‌هاش رو بگم، WestWorld بهتر از بقیه بوده، بعد اون بطبع همه میدونن من عاشق Vikings هستم، ‌BlackSails هم سریال جذابیه. بغیر از اینها انیمه‌های هم جایگاه خودشون رو دارند، هنوز One Piece میبینم و One Punch Man و Soul Eater جزو دیگر خوبایی بودن که دیده شدن.

چندتا موضوع و مطلب جدید در حوزه‌ی کاری خودت یاد گرفتی‎

مطلب جدید زیاده و آدم هرروز با چیزای جدید روبرو میشه و خیلی وقت‌ها انقدر جذابن که نمیشه به راحتی از کنارشون رد شد. مثلا چند روز پیش دیگه نتونستم جلو خودم رو بگیرم و سری به graphQL زدم تا ببینم چی هست. ابتدای امسال برای راه اندازی یک سرور رفته بودم سراغ Config Manager ها و از بین اونها به نظرم ansible از بقیه بهتر می‌نمود. برای راه اندازی یک Mail Server فهمیدم که dovecot و postfix چه هستند و چه می‌کنند، البته قبلا هم باهاشون کار کرده بودم ولی این‌بار کلی چیز جدید داشت چون عمیق تر شدم. اگه عمری هم باقی باشه و اوضاع خوب پیش بره قراره یک قالب مناسب هم برای roundcube بنویسیم و منتشر کنیم.

VueJS جایگزین قوی‌تری برای نسخه اول آنگولار هست که توانایی‌های بالایی داره، برای این از لفظ جایگزین استفاده میکنم چون استفاده ازش مقدار زیادی شبیه نسخه اول آنگولار هست. یکی از خوبی ‌های VueJS این هست که میشه تو پروژه‌ هرجایی که دوست داشتید ازش استفاده کنید، برخلاف ‌React و Angular که باید کمی ساختار قبلی کدتون رو دستکاری کنید.

اگه تا اینجا خوندید حتما متوجه شدید که من چقدر در انشا نوشتن تخصص دارم.

تقسیم یک فایل به چند فایل کوچک‌تر با استفاده از awk

یادمه اون موقع که حرف از کامپایلر می‌زدیم، حرف از Aho هم می‌زدیم، بعدها بزرگ‌تر شدیم و وقتی از الگوریتم Aho-Corasick حرف می‌زدیم، ناخواسته از Aho حرف می‌زدیم و می‌گفتیم grep هم از Aho-Corasick استفاده می‌کنه، انقدر الگوریتم خوبیه. بزرگ‌تر شدیم و از grep استفاده می‌کردیم می‌گفتیم چیز خوبیه، خیلی بدرد می‌خوره، دمشون گرم چی نوشتن. یخورده دیگه بزرگ‌تر شدیم اومدیم از awk استفاده کنیم، دیدیم ای دل غافل اینم که Aho, Weinberger, Kernighan نوشتن. خلاصه که Aho آدم بزرگیه

از این داستان ابتدای پست بگذریم، چند وقت پیش لازم بود یک فایل چند گیگی رو به چند فایل کوچک‌تر تقسیم کنیم، به این صورت که سطر‌هایی که دسته‌بندی مشترکی دارند توی یک فایل قرار بگیرند. اینجا بود که دست به دامان awk شدیم. اول لازم بود هر سطر فایل رو با ویرگول جدا کنیم تا بتونیم دسته‌بندی رو بعد از اولین ویرگول بدست بیاریم

1
awk -F, '{print $2}' input.csv

بعد اون لازم بود که سطر مورد پردازش رو به فایل دسته‌بندی خودش اضافه کنیم.

1
awk -F, '{print >> ($2".csv")}' input.csv

کار تمومه :) اگه ما توی فایل input.csv چهارتا دسته‌بندی داشته باشیم، با اجرای این دستور سطر‌های فایل اصلی برحسب دسته‌بندی خودشون به چهارتا فایل تقسیم می‌شن.

!!! اگه با مک کار می‌کنید و لینوکسی نیستید ی قدم دیگه هم جلوتر برید، چون توی مک فایل‌هایی که باز می‌شن تا سطری به اونها اضافه بشه خودبه‌خود بسته نمی‌شن و ما باید از دستور close برای بستن فایل استفاده کنیم وگرنه با خطای ‍makes too many open files مواجه می‌شیم.

1
awk -F, '{print >> ($2".csv"); close($2".csv")}' input.csv

این رو هم اضافه کنم که توی رفرنس‌ها هرچی تب باز از awk داشتم رو لینک دادم و الزاما از اون‌ها برای این چهار خط مطلب استفاده نکردم.

چند خط درمورد یکی از دایرکتوری‌های XCode که فضای زیادی اشغال می‌کند

یکی از دلایل بروز درگیری بین من و لپتاپم کمبود فضای خالی بوده و هست، همیشه من درگیر اینم که بهش بقبولونم که داشتن فضای خالی چیز خوبیه و باعث میشه آدم بتونه چیزای بیشتری نصب کنه، ولی خب به خرجش نمیره. xcode یکی از برنامه‌هایی هست که به هیچ وجه نمیتونم باهاش کنار بیام، xcode وقتی میخواد جواب سلام آدم رو بده 10 گیگ فضا لازم داره، اگه این شرط رو برای شروع معاشرت باهاش قبول کنیم، اونموقع است که پررو میشه، هر وقت شما یک آیفون یا آیپد بهش وصل کنید، شروع میکنه به دانلود کردن یسری دیتا از دستگاه روی لپتاپ. اگه چندتا دستگاه با ورژن‌های مختلف iOS داشته باشید برای هر ورژن یک فولدر میسازه و چند صد مگی حجم میگیره، البته از iOS 9 به بعد کمی پراشتها شده و چند گیگ میگیره.
خلاصه اینکه از ما پاک کردن و از xcode دانلود اون فایل‌ها. اگر شما هم xcode دارید و مشکل فضا دارید سری به آدرس زیر بزنید

1
~/Library/Developer/Xcode/iOS DeviceSupport

و با خیال راحت محتوای درون این دایرکتوری‌ رو پاک کنید. حذف این فایل‌ها موجب ایجاد اختلالی نمیشه و فقط باعث میشه دفعه بعدی که دستگاه رو به سیستم وصل می‌کنید، کمی کندتر باشه تا xcode دوباره این فایل‌ها رو از روی دستگاه دانلود کنه به سیستم.
!! البته این تنها دایرکتوری xcode نیست که حجم زیادی می‌گیره و ما می‌تونیم در مواقع نیاز محتواش رو پاک کنیم تا فضا رو خالی کنیم. اگه لازم دارید سری به لینک منبع پست بزنید.

ثبت تغییرات فایل‌ها بصورت خودکار توسط Git

ابزارها برای این بوجود میان که ما بتونیم به اهداف خودمون برسیم، هرچه سریعتر به هدف برسیم و خروجی بهتری داشته باشیم می‌تونیم بگیم که از ابزار مناسبی استفاده کرده بودیم.
چند وقتی بود بعضی کدها شروع کرده بودن به مفقود شدن، درست مثل اینکه یکی اونارو گروگان گرفته باشه ولی تماسی برای دریافت پول نکرده. برای همین تصمیم گرفتیم که تو اون محله شهر که کدها مفقود میشن سیستمی راه بندازیم که بطور دائم و بصورت بازه‌ای کدهارو ارسال کنه به یک سرور دیگه و بقولی بکاپ بگیره ازشون.
پس یک ریپوزیتوری گیت راه انداختیم و بکمک xargs و cron job بطور متناوب فایل‌های تغییر یافته رو به یک ریپوزیتوری تو سرور دیگه پوش می‌کنیم.
فایل زیر وظیفه کامیت و پوش کردن فایل‌های تغییر یافته رو برعهده داره

1
2
3
4
5
#!/bin/sh
cd /PATH/TO/REPO
find . | grep -i '\.r$' | xargs -i git add {}
git commit -am "modified files on `date +'%Y-%m-%d %H:%M:%S'`";
git push origin master

مهمترین یخش کد فوق، سطر سوم هست که فایل‌های با پسوند .r رو پیدا کرده و اونارو به گیت اضافه می‌کنه. گیت خودبه‌خود امکان جست‌جوی فایل‌ها در لایه‌های مختلف درون دایرکتوری‌ها رو نداره و نمی‌تونیم مستقیما به گیت بگیم هرچی فایل با پسوند .r درون فولدرها هست رو اضافه کن برای همین دست به دامان find، grep و xargs شدیم.
کد فوق رو درون یک فایل به اسم autobackup.sh ذخیره و دسترسی اجرایی بهش دادیم. در نهایت هم چون میخوایم فایل‌ها بصورت دوره‌ای بکاپ گرفته بشن یک cron job ایجاد میکنیم تا هر ساعت فایل autobackup.sh رو اجرا بکنه.
برای ایجاد یک job جدید هم کافیه دستور crontab -e رو اجرا کرده و کد زیر رو انتهای فایل اضافه کنیم.

1
0 * * * * /usr/bin /PATH/TO/autobackup.sh

تنظیمات hibernate در مک

به ندرت پیش میاد که آدم بخواد لپتاپ رو خاموش کنه، چون همیشه چیزی وجود داره که آدم میخواد تو همون حالت حفظش کنه، یک برنامه باز، یک کد ذخیره نشده یا هرچیزی که روزمره با اون سر و کار داریم. sleep توی سیستم عامل مک قابلیت خیلی مفیدی هست، که با بسته شدن در لپتاپ تمامی کامپوننت‌های لپتاپ مثل هارد و مانیتور و … غیرفعال می‌شن و تنها رم هست که همچنان توی مدار قرار میگیره تا محتویاتش حفظ بشه و با باز کردن دوباره در لپتاپ بشه بسرعت وضعیت پیشین سیستم رو بازگردانی کرد.
این قابلیت تا زمانی کاربرد داشت که لپتاپم هنوز عمری از باتریش باقی بود و می‌شد اسلیپ کرد تا هنگام نقل مکان از جایی به جای دیگه روشن بمونه، ولی نزدیک یک ماهه که باتری لپتاپ عمرش رو به بقیه کامپوننت‌ها داده و دیگه نمیشه اسلیپش کرد. برای همین روی آوردم به روش کهن hibernate.
hibernate توی مک دو حالت مختلف داره

  • حالت اول که بصورت پیش‌فرض رول لپتاپ‌ها فعاله در حقیقت همون اسلیپ هست، که تمامی کامپوننت‌های سیستم رو بجر رم غیرفعال میکنه، و محتوات رم رو روی هارد بصورت کامپرس شده دخیره میکنه تا درصورت قطع شدن منبع انرژی مطمئن باشیم که میتونیم حالت قبلی رو بازگردانی کنیم.
  • حالت دوم کل اطلاعات رم و روی هارد ذخیره میکنه و سیستم رو خاموش میکنه (همون هایبرنیت معروف که توی ویندوز کلی پرکاربرده)
  • حالت سومی هم هست که غیر فعال کردن نام داره :)

توی لپتاپ‌ها بصورت پیش‌فرض حالت اول فعال هست، اگه شما هم مثل من با مشکل نبود باتری مواجه هستید یا به هر دلیل دیگه‌ای میخواید به حالت دوم تغییر حالت بدید کافیه Terminal رو باز کنید و دستور زیر رو اجرا کنید.

1
sudo pmset -a hibernatemode 25

توجه کنید که با فعال کردن این حالت اگر در لپتاپ رو ببندید سیستم خاموش میشه و زمان بازگردانی وضعیت قبلی سیستم تو این حالت طولانی‌تر از حالتی هست که رم فعاله.
اگر توی حالت دوم هستید میخواید استفاده از رو فعال کنید بجای 25 مقدار 3 رو در دستور بالا قرار بدید، برای غیرفعال کردن هایبرنیت هم از مقدار 0 استفاده کنید.

1
sudo pmset -a hibernatemode 3

اگه بیشتر از این کنجکاوید، به Manual دستور pmset که لینکش توی منابع مطلب هست سری بزنید.

اندازه‌گیری زمان اجرای تکه‌ ‌‌کدها در پایتون

کتابخانه numpy در پایتون یکی از نیازهای اولیه هر برنامه‌نویس پایتون است، اگر کار علمی با پایتون انجام می‌دهید یا با اعداد ارقال سروکار دارید، زندگی بدون numpy جهنم است.
مثل اکثر مطالب دیگر بلاگ که پاراگراف اول چندان به موضوع اصلی نوشته ارتباطی ندارد، این پست نیز از همین قانون پیروی می‌کند و چندان ارتباطی با کتابخانه numpy ندارد. فرض کنید میخواهیم بدانیم بهینه‌ترین راه برای ایجاد یک آرایه با مقادیر اولیه خاص به کمک کتابخانه numpy در پایتون کدامیک از روش‌های زیر است.

1
2
3
import numpy as np;a = np.empty((1000, 1000)); a.fill(5.0)
import numpy as np;a = np.empty((1000, 1000)); a[:] = 5.0
import numpy as np;a = np.full((1000, 1000), 5.0)

کتابخانه timeit ساده‌ترین راه برای اندازه‌گیری زمان اجرای تکه کدهای پایتون و انتخاب روش بهینه میان این گزینه‌ها است، این کتابخانه را می‌توان مستقیما در ترمینال فراخوانی کرد.
برای آزمایش سه راه حل بالا دستور اجرایی مورد نظر ما چنین خواهند بود.

1
2
3
4
5
6
$ python -m timeit "import numpy as np;a = np.empty((1000, 1000)); a.fill(5.0)"
10 loops, best of 3: 7.19 msec per loop
$ python -m timeit "import numpy as np;a = np.empty((1000, 1000)); a[:] = 5.0"
10 loops, best of 3: 7.24 msec per loop
$ python -m timeit "import numpy as np;a = np.full((1000, 1000), 5.0)"
10 loops, best of 3: 6.87 msec per loop

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

1
2
import timeit
timeit.timeit("import numpy as np;a = np.empty((1000, 1000)); a.fill(5.0)", number=1000)

مخفی کردن فایل‌های خاص در اتم، سابلایم و ویژال استدیو کد

چند زمانی هست که با پایتون سر و کار دارم و همزمان که پایتون کد میزنم از VSCode و Atom برای کد نوشتن استفاده میکنم، چیزی که در هردو ویرایشگر بصورت مشترک وجود داره و آزار دهنده‌است، نشون دادن فایل‌های .pyc توی لیست فایل‌های پروژه در نوار کناری ویرایشگر هست. برای این میگم اتم و وی‌اس‌کد این رو دارند، چون توی سابلایم‌تکست بصورت پیش‌فرض این فایل‌های مخفی شدند و در لیست فایل‌های نمایش داده نمی‌شوند. خب روده درازی کافیه برای سراغ کار:

Atom

بخش تنظیات اتم همونطور که دیدید گرافیکی هست، به بخش تنظیمات برید (میانبر ctrl+, یا cmd+, ) و در بخش core دنبال فیلد متنی با عنوان Ignored Names بگردید به انتهای اون فیلد عبارت , *.pyc رو اضافه کنید. اگه قصد مخفی کردن فایل‌‌های دیگه‌ای رو هم دارید میتونید عبارت منظم مربوط به تشخیص اون فایل رو هم به این فیلد اضافه کنید، فقط توجه داشته باشید که عبارات منظم نوشته شده توی این فیلد با ویرگول از هم جدا می‌شوند

Atom Ignored Names

Visual Studio Code

در ویژال استدیو کد تنظیمات بصورت متنی و به فرمت json هست و برای مخفی کردن فایل‌های .pyc تنها کافیه به بخش تنظیمات برید (میانبر ctrl+, یا cmd+, ) و کد زیر رو به تنظیمات خودتون اضافه کنید.

1
2
3
"files.exclude": {
"**/*.pyc": true
}

اگه قصد مخفی کردن فایل‌های دیگه‌ای هم هستید متونید مثل کد بالا عمل کنید و پترن مربوط به فایل‌های مدنظر خودتون رو بنویسید.

Sublime Text

قبلا هم گفتم که سابلایم‌تکست خودش بصورت پیش‌فرض فایل‌های .pyc رو مخفی می‌کنه، دلیل که اینجا سابلایم رو هم آوردن اینه که اگه قصد داشتید فایل‌های خاص دیگه‌ای رو مخفی کنید با تنظیمات این ویرایشگر هم کمی آشنا باشید. به بخش تنظیمات برید (میانبر ctrl+, یا cmd+, ) و کد زیر رو به تنظیمات خودتون اضافه کنید.

1
"file_exclude_patterns": ["*.pyc", "*.pyo", "*.exe", "*.dll", "*.obj","*.o", "*.a", "*.lib", "*.so", "*.dylib", "*.ncb", "*.sdf", "*.suo", "*.pdb", "*.idb", ".DS_Store", "*.class", "*.psd", "*.db", "*.sublime-workspace"]

کد بالا تنظیات پیش‌فرضی هست که سابلایم داره و من فقط همون مقدار پیش‌فرض رو اینجا نوشتم، همونطور که خودتون میبینید *.pyc هم جزو پترن‌های مخفی کردن فایل‌ها هست.

NginX: Redirect http requests to https

تو جهان حاضر بعیده کسی دستی تو وب داشته باشه و از خواص امنیتی داشتن SSL آگاه نباشه، امروزه دیگه HTTPS یک نیاز برای سایت‌ها محسوب میشه. برای همین هم سایت‌هایی مثل letsencrypt.org بوجود اومدن تا به افراد بی‌بضاعتی مثل ما که توانایی خرید گواهینامه SSL نداریم کمک کنند. در کل SSL چیز خوبیه که داشته باشیم، البته بگذریم از این که درستش این بود که HTTP وجود نداشت و همه چی HTTPS بود، ولی ما کاری به این کارا نداریم.
اگه گواهینامه معتبری برای دامنه خودتون ندارید پیشنهاد میکنم حتما سری به letsencrypt.org بزنید و یک گواهینام معتبر برای خودتون بگیرید. این گواهینامه‌ها البته محدودیت زمانی دارند ولی تو خود سایت راه رو نشون داده که چجوری خیالتون از منقضی نشدنش راحت بشه.

ادامه را بخوانید