xaker
COM в ловушке. Атакуем Windows через объекты Trapped COM

COM-объекты в Windows могут застревать в неожиданных местах — и это не баг, а фича, которой можно воспользоваться. Через интерфейс IDispatch и библиотеки типов можно не просто управлять удаленными объектами, а внедрять код в защищенные процессы (PPL), обходя механизмы безопасности Microsoft. Последнее исследование Project Zero рассказывает, как это сделать.

  • среда, 12 февраля 2025 г. в 00:00:35
habrahabr
Модернизация настольных электромеханических часов

У меня есть старые электромеханические часы «Янтарь», которым почти 50 лет. По паспорту их продали в 1976 году. Эти часы дороги мне как память, потому что достались от бабушки с дедушкой.1. Внешний вид часовОни до сих пор исправно ходят, но точность хода у них низкая. Погрешность набегает настолько быстро, что я перестал их подводить, и показывают они плюс-минус полчаса. Я решил исправить эту проблему, чтобы они радовали не только связанными воспоминаниями, но и надежным выполнением своей функц…

  • среда, 12 февраля 2025 г. в 00:00:35
habrahabr
Оживляем раритетное этажное табло от лифта

Приветствую всех! Давным-давно, когда лифты были ещё релейными, на некоторые из них ставились довольно характерного вида табло на вакуумно-люминесцентных индикаторах. Обычно таковыми являлись административные лифты, однако подобные указатели можно было встретить и в некоторых жилых домах. И вот однажды мне стало интересно: а как вообще устроены такие табло и чем там управляется этот индикатор? Самое время это узнать. Заодно запустим такой девайс и посмотрим на начинку более поздних экземпляр…

  • среда, 12 февраля 2025 г. в 00:00:16
habrahabr
Математики решили знаменитую «задачу о диване»

В конце декабря 2024 года математики получили ответ на вопрос о том, какой самый большой диван можно пронести вокруг угла. Ответ, который искали 58 лет. Наверняка вы когда-либо пытались пронести громоздкий диван через узкий коридор и в процессе задавались вопросом: «А влезет ли он?». А когда понимали, что не пролезает, весело проводили время, разбирая мебель или круша стены. Математики диван не таскали, но тоже задавали себе такой же вопрос. Ну, почти такой же.Задачу о том, какой самый большой …

  • среда, 12 февраля 2025 г. в 00:00:14
habrahabr
Почему мы перешли на RAID 10

Недавно у нас развалился RAID 5. Один диск на первом году своей жизни умер сам от естественных причин. Такое может быть и в период трёхлетней гарантии — нечасто, но может. Мы вынули его, поставили на его место диск из горячего резерва — и во время ребилда в массиве умер второй диск. Данные умерли вместе с ним. Один из пользователей, чьи данные там были, очень живо интересовался тем, что за конфигурация у нас была. Вплоть до моделей дисков, дат их производства и серийных номеров. Он, вероятн…

  • среда, 12 февраля 2025 г. в 00:00:13
habrahabr
Как пустой S3 бакет может вас обанкротить

Представьте, что вы создали пустую, приватную корзину (их ещё называют «бакетами» — от «bucket») AWS S3 в выбранном вами регионе. Каким будет счёт за услуги AWS на следующее утро?Несколько недель назад я начал работу над прототипом системы индексирования документов для моего клиента. Я создал одну корзину S3 в регионе eu-west-1 и загрузил туда несколько файлов для тестирования. Через два дня я проверил мою страницу выставления счетов AWS, заглянув туда, преимущественно, для того, чтобы проверит…

  • среда, 12 февраля 2025 г. в 00:00:13
golang
Идеи стоящие за дизайном языков программирования

Когда смотришь на дизайн синтаксиса того или иного языка программирования невольно задумываешься, почему сделано так, а не иначе. Тут я обозреваю лишь некоторые идеи стоящие за этим: "программисту нельзя доверять", "язык должен быть удобен для пользователя", "каким качеством должен обладать язык программирования, чтобы заменить другой?".Программисту нельзя доверятьВсе начиналось с С, сего девизом: «Доверяй программисту», на данный момент всем понятно, что это было ошибко…

  • среда, 12 февраля 2025 г. в 00:00:11
golang
Удобная ORM для Go с генерацией миграций и Query Builder’ом: Gormite

GitHubВ процессе разработки на Go нередко встаёт вопрос о создании удобного уровня абстракции для работы с базой данных: хочется иметь и простую генерацию миграций, и гибкий Query Builder. Проект Gormite был создан как раз для решения этих задач. Он предлагает облегчённый подход к ORM, при этом сохраняя гибкость при формировании SQL-запросов.Знакомство с GormiteGormite – это CLI-инструмент, которая не нуждается в прямой интеграции в go.mod. Она читает конфигурацию (mapping) из YAML-файла и по у…

  • среда, 12 февраля 2025 г. в 00:00:10
javascript
Как мы боролись с лишними рендерами в react

Привет, друзья!Давайте представим себе такую задачку. Есть страница, где в ее правой части располагается множество всевозможных виджетов - таблицы, списки, графики и многое многое другое. Все эти компоненты сами по себе довольно сложные и мы не хотим, чтобы происходил их ререндер без особой на то надобности. В левой части страницы располагается своего рода меню - список с названиями каждого виджета и счетчиком около названия. Этот счетчик показывает количество данных того или иного виджета. При…

  • среда, 12 февраля 2025 г. в 00:00:08