oleg_log
1.76K subscribers
1.86K photos
130 videos
9 files
2.78K 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 Кавычка (Emil Lerner)
Знали ли вы, что второй аргумент fopen (тот самый, который w или, например, r+) умеет исполнять код? Ну почти.

Оказывается, glibc поддерживает синтаксис для указания кодировок, это можно сделать вот так: fopen("file", "w,ccs=<encoding>"). Сами кодировки подгружаются динамически, функции для работы с каждой кодировкой лежат в отдельном .so-файле. Конфиг, содержащий пути к этим библиотекам называется gconv-modules и обычно лежит где-нибудь в /usr/lib/x86_64-linux-gnu/gconv/, но если переопределить переменную окружения GCONV_PATH, то он будет браться из указанной директории. И path traversal, конечно, в нем полностью поддерживается.

В итоге, если вы можете для чужого приложения

1) переопределить переменную окружения GCONV_PATH
2) куда-нибудь записать свою so-шку и файл gconv-modules
3) дописать ,css=payload во второй аргумент fopen

то вы получите выполнение кода.

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

Кстати, эта же система кодировок-модулей используется и в iconv (и утилите, и библиотеке), поэтому трюк можно использовать для обхода disabled_functions в php. Правда, для того, чтобы задать GCONV_PATH должен быть разрешен putenv, а это уже само по себе небезопасно.

Подробности можно прочитать в посте японца, который это заметил.
Тут залили видосы с GoLab 2019, правда почему-то дни 2 и 3, а 1го не вижу

https://www.youtube.com/channel/UCMEvzoHTIdZI7IM8LoRbLsQ/playlists
Сборник трешовых айти вакансий, давайте до 4к подписчиков добьём)

https://xn--r1a.website/youhadnojob
There's a balance with both expressiveness and type systems. Too little (PHP, JavaScript) is suboptimal, and too much (Scala, Haskell, Rust) is also suboptimal.

Please note it depends very much on what you're building, as to where that tradeoff lies. For some things I use Rust. For others I use JavaScript. I don't touch PHP, Java, Scala, or Haskell for anything in the world - you can't practically pay me enough to want to work with them. For me, for web applications and server side software, Go is in the sweet spot more than any other language I've tried, and I've tried almost 30 by now.

Go is not always elegant, it's not always the right tool, and sometimes frustrating - but it's incredibly good at enabling better productivity than the alternatives in this niche. Sample size of one, this is my opinion, and other disclaimers apply.
(с) HN
Теперь в VSCode для го можно будет получить покрытие кода, тестами из одного файла. Ноис.

Ишус https://github.com/microsoft/vscode-go/issues/2873
Мой ПР https://github.com/microsoft/vscode-go/pull/2884
my life was a monolith now it's a microservices
Хочется видеть больше таких будней из жизни SRE разных фирм. Конечно же большинство оседает в приватных вики или прост чатах (мыж не пишем мини-постмортемы, да? :)

Конечн ценности в "давайте раскатывать GIN на колонке с текстовым поиском" несет мало ценности, но с кешами нгинх довольно неочевидно.

https://habr.com/ru/company/flant/blog/471892/
(hpts == high perf transaction systems)
Вышел новый VSCode 1.40 и они закрыли 3918 ишусов (правда в этом же время было создано 2195 лол). Мда, менеджить популярный продукт это то еще дело.

Важная фича: VS Code now displays a Show Whitespace Differences button when it detects this case to help you quickly show diffs in whitespace
вот это я понимаю день скидок
http://letsdecrypt.org (хех, телега превью спойлерит)
Узнал, что авторы i18next (популярная либка для и18н) немножко рекламируют сервис для работы с переводами.

https://locize.com/
Завтыкал чуть больше чем на 10 минут читая исходники Citus. Отличный код на Си, теперь в пример буду ставить.

Пример https://github.com/citusdata/citus/blob/master/src/backend/distributed/commands/table.c
Возникло желание купить монитор, возможно 4к. Хотя не знаю, надо ли. Если у вас есть история успеха или история неуспеха (тип модель моника, что стало лучше, что хуже, на что обратить внимание) - с радостью вас выслушаю @olegkovalov
Нашел отличную и официальную организацию от AWS с кучей примеров. В общем-то а как еще втянуть людей в свою секту? Но вещь полезная.

https://github.com/aws-samples?type=source
Еще вчера нашел крутой проект по исправлению/улучшению точности в мат выражениях с плавающей точкой.

Репа на гитхабе живет уже с 6 лет и написано все на Racket. Пока в документацию не влезал, но должно быть интересное чтиво.

Если здесь есть люди, кто кодит математику и вам важна точность, и вот если потестите либку - дайте знать что как, интересно на реальных вещах увидеть :)

Проект http://herbie.uwplse.org/
Репо https://github.com/uwplse/herbie
Почему никому нельзя доверять? Да все просто, есть Couchbase, медиана на ответы 5мс на все операции (get, touch, insert, upsert, remove) и стабильно держит 12-15к запросов.

Но вот рандомно (раз в пару денй, неделю, без какой либо закономерности), латенси может прыгнуть в 10 раз (что сильно заметно), и даже пара случаев в 1000 раз.

При этом со стороны бд все в норме. Грешили на жавовского клиента, добавили прогрев, но все равно не спасло. И вроде не болит, но из-за таймаута получаев 5хх и соотв алёрт (из-за трафика 5хх заметное колво). Мде