IT мемы с которыми я столкнулся
Бибайт мем
Во многих источниках часто говорят что в килобайте 1024 байт, и прочий бред. На самом деле в килобайте 1000 байт. Но в кибибайте 1024. Часто где эти понятия используются взаимозаменяемо, но на самом деле это абсолютно разные понятия.
В основном этот мем происходит в старой технической литературе, и в учебниках по информатике которые были написаны во времена Брежнева, и которые перепечатывались без проверки информации специалистами.
Мем с Systemd
Systemd это часть юникс систем которая позволяет настраивать запуск программ. Например если у вас есть программа-вебсервер то после перезагрузки машины вы хотите чтобы программа запустилась при старте, после инициализации системы. Каждая програма в Systemd представлена Unit-ом который можно настроить.
Мем состоит в том что у systemd unit есть 2 режима работы: simple, и forking. И многие люди неразбивающиеся как это работает ставят случайно эти режимы, взависимости от того какой шаблон юнита они нашли.
В итоге это приводит к тому что при неправильном выборе типа, systemd уходит в бесконечный перезапуск сервиса и последствия могут быть от неадекватной работы программы, до краша всей ОС.
Суть в том что forking ожидает от процесса самодемонизации и выхода. Ждет он этого примерно 5 минут, а потом убивает программу и рестартит её.
Если программа неподдержиает демонизацию, то следует использовать режим simple. Иначе systemd unit некогда не перейдёт в состояние успешной активации, и будет бесконечно пытатся рестартнуть программу.
Мем с сравнением [] в JS
Мне пришлось кучу времени потратить на дебагинг своего кода, чтобы понять что проблема была лишь в том что я сравнивал арейки JS через ===. В JS сравнение массивов происходит не по их содержанию, а по айди объекта в памяти. Поэтому при сравнении любых двух массивов []===[] будет всегда false, независимо что находится внутри массивов.
Поэтому перед сравнением арреек надо их превращать в неизменяемый тип, например string. JSON.stringify(a1)==JSON.stringify(a2).
Мем с конфликтом black с isort
Тк у нас был крупный проект, мы решили сделать все как полагается. Настроили кучу статических анализаторов кода, mypy, black, isort итд. В итоге почемуто когда я запускал black локально, то все проходило ок. А как загружал на наш CI/CD то всё валилось.
Причиной оказалось то что у нас сначала isort менял импорты, а потом black их менял под свой лад. В итоге и получилось что при запуске CI/CD они ломали друг друга из-за конфликтов. Оказалось что это не я один такой, и конфликт надо решать через конфиг profile = "black".
Комментарии
Отправить комментарий