Рубрика: Программирование
Чек лист сдачи сайта
Создание уникального глобального идентификатора (GUID)
function GUID() { if (function_exists('com_create_guid') === true) { return trim(com_create_guid(), '{}'); } return sprintf('%04X%04X-%04X-%04X-%04X-%04X%04X%04X', mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(16384, 20479), mt_rand(32768, 49151), mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(0, 65535)); }; echo GUID();
Set up Nginx
Now we need to add a new snippet with ssl-params.
Go to snippets directory and create a new one.
cd /etc/nginx/snippets
nano ssl.conf
Add the following lines, save and exit the editor (Ctrl+X
, Y
, Enter
).
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:50m;
ssl_session_tickets on;
ssl_protocols TLSv1.2;
ssl_ciphers ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES256-SHA384;
ssl_ecdh_curve secp384r1;
ssl_prefer_server_ciphers on;
ssl_stapling on;
ssl_stapling_verify on;
add_header Strict-Transport-Security "max-age=15768000; includeSubdomains; preload";
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;
Then you have to create a directory for certificates snippets.
mkdir certs
cd certs
Create a new file that will hold certificate’s params.
nano example.com
Add paths to the wildcard certificate.
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
Про путешествие.
Мало кто помнит, или понимает, что чемоданы с колесиками появились не так давно, лет 10 назад вообще не было чемодана с колесиками. Это легко понять, по еще существующим тележкам в аэропортах, которыми никто не пользуется. И было прямо стремно брать много вещей в поездку, так как это надо будет все нести на себе. Как хорошо, что теперь не так. Ты берешь самый большой чемодан по объему, кидаешь туда пару футболок, кроссовки, и тебя вообще ничего не беспокоит, ты просто вытаскиваешь ручки, и катишь его. Можно даже не знать, сколько он весит.
Феномен Баадера-Майнхоф
Феномен Баадера-Майнхоф представляет собой когнитивное искажение, то есть шаблонное отклонение в мышлении. Нам только кажется, что информации о каком-то феномене стало больше — а если её на самом деле стало больше (просто случайно), мы пытаемся увидеть здесь сверхъестественные закономерности.
Этот процесс в 2005 году описал с научной точки зрения Арнольд Цвики, профессор лингвистики Стэнфордского университета. Он назвал его иллюзией частотности.
Её легко объяснить двумя известными в психологии явлениями: избирательным вниманием и предвзятостью подтверждения (confirmation bias).
Первое означает: как только человек что-то замечает, он становится более внимательным к его проявлениям. Именно поэтому маловероятность при феномене Баадера-Майнхоф часто субъективно завышается: мы выхватываем дублирующуюся информацию и не замечаем, какие её объёмы в целом проходят через нас за день.
Второе можно перевести на русский как «склонность к подтверждению собственной точки зрения». Это тенденция находить информацию, которая согласуется с изначальной установкой, и обесценивать другую.
Вероятно, это усиливается ещё эффектом новизны, когда человек воспринимает только что полученные сведения как более важные. Но, в любом случае, если эмоциональная вовлечённость велика, то и совпадениям будет присвоена бо́льшая значимость, возможно даже мистического порядка.
Проблема феномена в программировании связана в первую очередь с ошибками. Сайт или программа может годами работать с ошибкой и это поведение уже может оказаться стандартным, но стоит ее заметить новому человеку, он все чаще и чаще будет обращать на нее внимание, фокусироваться на нее, искать новые ошибки и в случае успеха возводить важность этой ошибки в степень.
Аналитический паралич
Переизбыток анализа до такой степени, что прогресс и действия останавливаются.
Аналитический паралич — чрезмерное анализирование (или обдумывание) ситуации, так что решение или действие никогда не предпринимаются, фактически парализуя исход. Решение может рассматриваться как слишком сложное, с большим количеством деталей, так что выбор никогда не производится вместо того, чтобы попробовать что-то и произвести изменения в случае возникновения серьезной проблемы.
В разработке ПО аналитический паралич обычно проявляется при водопадной модели с очень длительными этапами планирования проекта, сбора требований, проектирирования и моделирования данных. Эти этапы могут создавать незначительные или вообще не приносящие дополнительного эффекта шаги и подвергать риску многие изменения.
Аналитический паралич часто происходит из-за недостатка опыта со стороны аналитиков бизнес-систем, менеджеров проектов или разработчиков ПО, а также жесткой и формальной организационной культуры.
Почему плохо
Переизбыток анализа может замедлить или остановить прогресс. В тяжёлых случаях, результаты анализа становятся не нужны к тому моменту, когда они готовы, или даже проект вообще не покидает фазу анализа. Часто кажется, что чем больше у вас информации, тем больше это поможет принятию тяжёлого решения.
Как избежать
Наблюдайте за итерациями и улучшениями. Каждая итерация даёт обратную связь и информацию, которую можно использовать для более осмысленного анализа. Без этой информации анализ будет лишь спекулятивным.
Примеры и признаки
Месяцы и годы, проведённые в анализе требований проекта, интерфейса или структуры БД.
В чём сложность
Бывает сложно понять, когда пора переходить от планирования, анализа требований и дизайна к реализации и тестированию.
Слишком длинно, не читал
Вместо чрезмерного анализа и спекуляций используйте пошаговое развитие.
Байкшеддинг
«Эффект велосипедного сарая» — bike-shed
Спорить о цвете велосипедного сарая намного проще, чем об атомной энергии.
«Эффект велосипедного сарая» или «закон тривиальности Паркинсона» был сформулирован Сирилом Норткотом Паркинсоном в 1957 году. Он привел в пример совещание на атомной электростанции, на котором большую часть времени участники потратили на обсуждение мелких и простых для понимания вопросов, таких как цвет велосипедного сарая, а не конструкции самой электростанции. Как объяснил инженер Карл Фогель, «время, потраченное на обсуждение пункта, обратно пропорционально его сложности и важности».
Проще говоря, гораздо проще дискутировать о чем-то тривиальном, нежели о чем-то сложном. У нас у всех есть свое мнение по каким-то бытовым темам, но когда речь заходит о нюансах и многогранности, все не так просто.
Закон нашёл применение в разработке программного обеспечения и других областях. В англоязычной литературе появился термин bike-shed effect (дословно «эффект велосипедного сарая»), ставший метафорой закона тривиальности.
Как избежать
Напоминайте другим членам команды об этой склонности, и о том, что в этих случаях главное – быстрее принять решение (бросить монетку, проголосовать, и т.п.). Если речь идёт о вещах вроде пользовательского интерфейса, обратитесь к A/B тестированию, вместо того, чтобы обсуждать это в команде.
Примеры и признаки
Часы или дни проводятся в обсуждениях цвета фона или расположения кнопки в интерфейсе, или использования табуляции вместо пробелов в коде.
В чём сложность
Байкшеддинг легче заметить и предотвратить, чем преждевременную оптимизацию. Замечайте время, требуемое для принятия решений и сопоставляйте его со сложностью задачи.
Слишком длинно, не читал
Не тратьте много времени на простейшие решения.
VNSTAT
vnstat — очень простой способ считать трафик на сервере. Утилиту удобно использовать в случаях, когда провайдер, по каким-то причинам, статистику по трафику не предоставляет, а лимиты при этом, устанавливает (Aruba, например).
Ставим vnstat из репозитория EPEL:
# yum install epel-release # yum install vnstat
При необходимости, редактируем конфигурационный файл /etc/vnstat.conf, например, параметром SaveInterval задаём интервал, с которым данные будут записываться в базу, по умолчанию там установлено значение 5 минут. Параметром MonthRotate указываем день в месяце, когда статистика будет обнуляться, параметром UnitMode задаём единицы измерения трафика (0 — KiB/MiB/GiB/TiB, 1 — KB/MB/GB/TB). Здесь же можно указать пользователя, от которого будет работать сервис, пути для логов, формат даты и времени, директорию для баз и многое другое.
Запускаем подсчёт с vnstat.
Отредактированный конфиг сохраняем, сервис перезапускаем:
# systemctl restart vnstat
Создаём базу данных для нужного нам интерфейса:
# vnstat -u -i eth0
И продолжаем пользоваться сервером\интернетом в обычном режиме. Спустя указанный в интервале SaveInterval промежуток времени, проверяем что статистика ведётся:
# vnstat
Запуск команды с ключом —help покажет дополнительные возможности вывода статистики, например, ключи -h, -d, -w, -m позволяют вывести часовую, дневную, еженедельную и ежемесячную статистику. Для получения статистики в реальном времени, запускаем программу с -l.
Администратор так же имеет возможность вывести статистику по трафику в виде изображения, делается это с помощью vnstati:
# vnstati -vs -o ~/vnstat01.png
Как видим, утилита простая, в использовании очень удобная, свою задачу решает отлично, так что если вопрос подсчёта трафика и ведения его статистики на сервере стоит — к vnstat имеет смысл присмотреться.