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"

Комментарии

Популярные сообщения из этого блога

DOS атака при помощи Python

Ведем телеграм канал через питон

Django migrations не видит изменения моделей