oleg_log
1.72K subscribers
1.88K photos
131 videos
9 files
2.82K links
Shelter for antisocial programmers "Oleg"

halp: @olegkovalov
web: https://olegk.dev
fov: @oleg_fov
chat: @oleg_log_blabla
podcast: @generictalks
Download Telegram
я не понял но кек
Forwarded from iggisv9t channel
Надо ж было всё обозначить как μ. Кажется, μ stands for μalkovich
Правда, SQLite, как по мне, недооценен в мелких веб-проектах. Конечно же, есть свои минусы, что он лежит файликом рядом, но вот для всяких прогонов по данным - самое то.

https://antonz.org/sqlite-is-not-a-toy-database/
40,000 lines of flawed code almost made it into FreeBSD's kernel—we examine how.

#интригирасследования

https://arstechnica.com/gadgets/2021/03/buffer-overruns-license-violations-and-bad-code-freebsd-13s-close-call/

Sleep to mitigate race conditions
Validation functions which simply return true
Catastrophic cryptographic vulnerabilities
Pieces of the wg protocol left unimplemented
Kernel panics
Security bypasses
Printf statements deep in crypto code
"Spectacular" buffer overflows
Mazes of Linux→FreeBSD ifdefs
Давайте я вам расскажу, как я расчленил убил где-то 8ч дебага на docker-compose и nginx.

Есть некий абстрактный docker-compose.yml в котором есть нгинх и контейнер с докой, ну просто как Суэтский канал.

...
some-docs:
image: some-image:main
ports:
- 8001:8000


Конфиг нгинх не на много больше:
  upstream somedocs {
server some-docs:8001;
}

server {
listen 80;
server_name _;

location /docs {
proxy_pass http://somedocs;
}
}


Но вот с таким раскладом все нехорошо, стабильно летит [error] 23#23: *8 connect() failed (111: Connection refused) while connecting to upstream и ему подобные.

Откинув мои потраченные часы, избавившись от network-ов докера, от доп конфигов нгинх, хттпс, убрав Cloudflare, пропинговав контейнеры между собой оказывается....надо лучше читать доку Докера (кто-то читает её лол?)

Для тех, кто хочет проверить свои скилы, можете мне свои догадки в лс написать, дальше будет ответ....




Так вот. Нарвавшись на 150 вкладку с проблемой, я нахожу хорошие слова `"ports" is only needed to expose a port outside of Docker` (сурс https://stackoverflow.com/a/41574448/433041)

А теперь щелчок загоревшейся лампочки - нгинх-то стучит в контейнер внутри сети докера(компоуз) ! значит 8001 ему не нужен, ему только 8000 надо на хосте some-docs.

Самое забавное, что нгинх при старте проверяет доступность хостов в upstream и они всегда были доступны(иначе нгинх не вставал), но вот то, что порт ему не подходит, я не догонял, надо было бросить все вечером и проспаться. Делайте выводы.

Хотелось бы сказать спасибо @sysadmin_tools & @golangdigest но они тоже не заметили проблемы))) (почему я не тыкнул других умников, я хз, берегитесь)
Мне кажется эту штучку мы давно-давно в подкасте обсуждали. Или не...Кстати канал хороший, советую.
Наконец-то я дождался real-shit от eBPF, а то все вот эти фильтры пакетиков это круто, но слишком однообразно. До сейчас.

BPF for storage: an exokernel-inspired approach

We explore using BPF to reduce this overhead, by injecting user-de ned functions deep in the kernel’s I/O
processing stack. When issuing a series of dependent I/O
requests, this approach can increase IOPS by over 2.5×
and cut latency by half, by bypassing kernel layers and
avoiding user-kernel boundary crossings

Слова из твитора:
Their example use case of performing application-level B-tree lookups (e.g. database indexes) within the kernel make a lot of sense.

https://arxiv.org/pdf/2102.12922.pdf
Issue 44 in leveldb: reappearing "ghost" key after 17 steps

Штука с 2011 и естественно пофикшена, но почему-то от таких вещей становится страшно.

Если проект(продукт) дорастает до того, что 17 (давайте скажем примитивных) действий убивают его, то кому можно верить? :(

(дада, leveldb это не примитивная штука, тут это работает как аргумент против и как аргумент за).

А найдено это (вроде) было фаззингом, поэтому низкий поклон автоматическим fuzz тестам БД.

https://groups.google.com/g/leveldb/c/gnQEgMhxZAs?pli=1

PS: там сам Sanjay в ответах, он же (ко)автор LevelDB.
Что я узнал о Cloudflare Cache. Точнее о Development Mode.

What does Development Mode do?

This is useful if you need to see changes immediately. Once enabled, Development Mode lasts for three hours and then automatically turns off.

Круто не забывать. КРУТО не забывать.
Malicious Commits to PHPs Git Repository https://news-web.php.net/php.internals/113838
Хороший сборник советов по Go network и как лишний раз потом это не дебажить. Таймауты всем известны, но иногда этого не хватает. Короч пролистайте.

https://martin.baillie.id/wrote/gotchas-in-the-go-network-packages-defaults/#timeouts