Loess.ru

having fun

CI/CD: Многоэтапные (multi-stage builds) сборки в Docker

Лишь сегодня узнал о прекрасной возможности делать docker image компилируемых приложений без оставления зависимостей для этапа компилирования, и без применения тыщи действий для выуживания исполняемых файлов. Выглядит мультиэтапная сборка примерно так (реальный Dockerfile):

FROM debian:stable-slim AS builder

RUN apt-get update && \
apt-get install -y binutils-dev build-essential cmake \
git libcurl4-openssl-dev libdw-dev libiberty-dev \
ninja-build python3 zlib1g-dev \
;

ADD . /src/

RUN mkdir /src/build && \
cd /src/build && \
cmake -G 'Ninja' .. && \
cmake --build . && \
cmake --build . --target install

FROM debian:stable-slim

RUN apt-get update && \
apt-get install -y binutils libcurl4 libdw1 zlib1g && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*

COPY --from=builder /usr/local/bin/kcov* /usr/local/bin/
COPY --from=builder /usr/local/share/doc/kcov /usr/local/share/doc/kcov

CMD ["/usr/local/bin/kcov"]

Служит для, очевидно, деплоя только что собранного приложения в докер образ и, так сказать, запуска-тестирования без отрыва от «производства»
https://habr.com/ru/post/349802/

Биология пандемий


Подборка золотого научпопа про болезни, их исторические последствия, прочую биологию, и даже про зомби:

ВИЧ — нулевой пациент мировой пандемии https://habr.com (pdf)

Рудиментарные дела. Кого, чему, зачем и что не нужно https://habr.com

Охотничьи зоонозы: когда утка опасней ружья https://habr.com (pdf)

SARS нерукотворный? Генеалогия уханьского коронавируса https://habr.com (pdf)

Биологическое оружие против советских граждан. Трагедия в Свердловске-19 https://skrepohistory.livejournal.com/21016.html (pdf)

Зомби: от Гаити до психиатрии https://zen.yandex.ru/ (pdf)

Справочка о рабстве (и немного эзотерики): https://bitcoin-translated.ru/sources/bitcoin-abc/masters-and-slaves-of-money/

Прочие рассказы о паразитарных (и не только) инфекциях тут: https://zen.yandex.ru/scientaevulgaris

Числа с плавающей точкой в компьютере не столь точны, как кажутся

So 0.1 and 0.2 (1/10 and 1/5) while clean decimals in a base 10 system, are repeating decimals in the base 2 system the computer is operating in. When you do math on these repeating decimals, you end up with leftovers which carry over when you convert the computer’s base 2 (binary) number into a more human readable base 10 number.

https://0.30000000000000004.com/

Хабр. Заложники COBOL и математика. Часть 1
Хабр. Заложники COBOL и математика. Часть 2

i  | floating pt    | fixed pt
-- | -------------- | ---------------------------
0  | 4              | 4
1  | 4.25           | 4.25
2  | 4.47058823529  | 4.4705882352941176470588235
3  | 4.64473684211  | 4.6447368421052631578947362
4  | 4.77053824363  | 4.7705382436260623229461618
5  | 4.85570071257  | 4.8557007125890736342039857
6  | 4.91084749866  | 4.9108474990827932004342938
7  | 4.94553739553  | 4.9455374041239167246519529
8  | 4.96696240804  | 4.9669625817627005962571288
9  | 4.98004220429  | 4.9800457013556311118526582
10 | 4.9879092328   | 4.9879794484783912679439415
11 | 4.99136264131  | 4.9927702880620482067468253
12 | 4.96745509555  | 4.9956558915062356478184985
13 | 4.42969049831  | 4.9973912683733697540253088
14 | -7.81723657846 | 4.9984339437852482376781601
15 | 168.939167671  | 4.9990600687785413938424188
16 | 102.039963152  | 4.9994358732880376990501184
17 | 100.099947516  | 4.9996602467866575821700634
18 | 100.004992041  | 4.9997713526716167817979714
19 | 100.000249579  | 4.9993671517118171375788238

Стоит помнить это каждый раз, когда делаешь вычисления с плавающей точкой.

Alternate data stream (ads)

В современных файловых системах существует такая особенность, как запись метаданных к любому файлу. При этом не изменяется его содержимое. Называется в разных фс по-разному, в NTFS — Alternate data stream, или ещё один уровень — extended attributes, в Linux-based ФС — xattr, но по сути — это одно и то же.
Например, самое безобидное применение — перед запуском скачанного из интернета бинарника винда показывает предупреждение:

или в метаданные файла могут быть вписаны абсолютно любые данные, при этом дополнительный поток может быть произвольного размера, в том числе может превышать размер основного файла, а запустить на выполнение такие данные удивительно просто, этим нередко и пользуются всякие зловирусы.
Мало того, у этих streams, как минимум в NTFS, есть несколько слоев и не все они прямо доступны. Но, судя по всему, помочь избавиться от подобной метадаты может простая архивация.
Всегда имейте это в виду, когда сохраняете цопе из браузера хром =)

Cпецслужбы заблокировали себе анус, оказалось — не тот


Чтобы не принимать сообщения о минированиях, фсб попросило МТС блокировать MX protonmail:
https://habr.com/ru/company/tm/blog/443222/ (pdf)
https://roskomsvoboda.org/45587/ (pdf)
, a в итоге заблокировало себе не то и не туда:

Ожирение софта

Спустя ещё два года после «ожирения сайтов» https://loess.ru/ожирение-сайтов/ и ряда катастроф (например, npm и leftpad, M.E.Doc и NotPetya и т.п.), ещё кто-то всё понял:
«Windows 10 takes 30 minutes to update. What could it possibly be doing for that long? That much time is enough to fully format my SSD drive, download a fresh build and install it like 5 times in a row.»
http://tonsky.me/blog/disenchantment/
https://habr.com/post/423889/ (pdf)
деффективный менеджмент и кинопоиск

А вывод прост и очевиден: «не строить софт на базе огромной кучи дерьма, которую поставляют современные инструменты.» А чтобы это делать, надо хорошо учиться и много знать =)