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"

Мем с джанга невидит миграци если удалить папку миграций

На начальных этапах создания джанго веб приложений часто приходится менять модели/миграции тк часто нужно переносить их в разные части проекта. Поэтому, проще удалять папку миграций и БД целиком, вместо того чтобы каждый раз писать миграции. Тк данные реального приложения ещё не помещены, то так делать можно.
Но если удалить папку migrations/ с джанго проекта, то makemigrations перестаёт видить изменения моделей из этой папки.

Комментарии

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

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

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

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