Обнаружил шоурум keychron в 5 минутах от своего дома. Божественные клавы с bluetooth и hotswap свитчами. На фото процесс замены дефолтных gateron pro brown на durock silent t1 shrimp 67g.
Архивы автора: vlad
Про современный линукс
Многие годы я восхищался экосистемой linux и opensource. Я видел насколько сложные задачи и интеграционные проблемы решают энтузиасты. Там же миллионы проблем:
— ядро
— bootloader
— драйвера
— тонна мелких утилит
— desktop environment
Про локали C
В наше тяжелое время иногда хочется посмеяться на кем-нибудь другим. Автор mpv аргументированно бомбит на идиотский стандарт локалей: https://github.com/mpv-player/mpv/commit/1e70e82baa9193f6f027338b0fab0f5078971fbe
Очередной сервер
Несколько недель назад, без объявления войны, меня атаковал роскомпозор. Без моего стандартного vpn перестали открываться все сайты *.vtyulb.ru
Сначала сломался акадо, потом получил еще несколько внешних репортов, статистика 50/50. Пытался нагуглить себя в черных списках, не смог.
Спустя пару дней всплыли статьи с хабра:
https://habr.com/ru/news/t/594087/
https://habr.com/ru/news/t/594399/
Как известно, с террористами не договариваются, поэтому теперь у меня новый сервер. Tor relay (exit запрещен) развернут так, чтобы не задевать всех остальных.
Сначала прикрылся cloudflare. По политическим же мотивам, это было временным решением. Не нравится идея, что у кого-то есть полностью расшифрованный трафик. Целая точка отказа на самом деле, у меня же облако тоже здесь поднято.
Давно хотел себе новый сервер, помощнее, и с большим количеством ip-адресов, так что переезд надолго не задержался.
Russian AI Cup 2020: CodeCraft
В этом году узнал о соревновании меньше, чем за неделю до начала. Документация была сложной, графика и плеер боев — страшные и непонятные, но меня купило малое количество участников. У меня было всего несколько дней на написание стратегии, но при 600 участниках это было не важно. Традиционно, основал свою архитектуру на максимальном количестве костылей. Забрал 224 место в первом раунде. После него нашел десятки ключевых багов, но толку исправлять их не было, потому что появилась куча народа, которые не успели написать стратегию к первому раунду. В общем, футболку выиграл, цель выполнил.
Очень обидно, что mail.ru решили не поддерживать старые соревнования. Было бы прикольно сохранить бои / таблицу результатов. А так от воспоминаний осталась только старая запись в блоге: https://blog.vtyulb.ru/?p=1113
Я вот в своей олимпиаде слежу, чтобы все контесты за все время были рабочими: https://ejudge.vtyulb.ru/ejudge/
CTF от безопасников
К сожалению, у меня полностью отсутствует опыт решения CTF-контестов. Олимпиадного программирования — сколько угодно, а вот взламывать сайты мне было научиться негде. Первый раз поучаствовал во внутреннем соревновании яндекса, и решил только первую тестовую задачу. Сейчас уже почти все решения опубликованы, и тут я узнал, что в одной задаче, которую я не прочитал, нужно было взломать cryptsetup зашифрованный диск, имея на руках полный дамп памяти. Это было обидно, такое я мог бы сделать без проблем. Решил развлечься, и проверить на практике.
Спустя 3 инсталляции kali linux и несколько нерабочих (как обычно) инструкций, собрал что-то свое. Забавно, что на моем основном ноуте используется практически тот же режим шифрования, что и в дистрибутиве от безопасников. У меня xts-plain64/256, а у них xts-plain64/512. Интересно насколько реально провернуть такую атаку против ноутбука. Теоретически, наверное можно его охладить жидким азотом и переставить с него планку памяти, но вот смог ли кто-то такое в реальности сделать? Ну и еще интересно можно ли это сделать, если память просто распаяна будет.
Почему L3 лучше чем L2
Про то как в одном госпитале развалилась сеть 2002 году.
https://www.computerworld.com/article/2581420/all-systems-down.html
Цитаты великих
Templates normally delegate all useful work to someone else; their job is obfuscation
thread-safe lock-free shared_ptr — приключение на полгода
Есть такой смешной вопрос «Is shared_ptr thread-safe?». Обычно либо человек сразу понимает о чем речь, либо ответа понять сходу невозможно.
Проблема достаточно простая — shared_ptr нельзя модифицировать и читать из нескольких потоков одновременно. Контрольный блок дает thread-safe гарантии, тогда как сам shared_ptr — нет. Копирование shared_ptr состоит из трех операций:
— Скопировать указатель на объект
— Скопировать указатель на контрольный блок
— В контрольном блоке атомарно поднять refcount
Если во время чтения shared_ptr какие-то из этих полей будут обновлены, то мы можем поднять refcount не у того объекта, либо попытаться получить доступ к уничтоженному контрольному блоку. То что нельзя уничтожать объект shared_ptr во время его копирования достаточно очевидно, но то что его нельзя обновлять (за исключением манипуляций на refcount) — уже не так очевидно.
Баги в продакшене
Bitflip — наша реальность, а также про уже софтовые баги от мира С++. Очень крутой доклад, чужие баги всегда показывают что, где, когда и как было неправильно спроектировано. Это несет максимальное количество ценной информации.