Как стать автором
Обновить
0
0
Дмитрий Дзюба @Dzuba

Пользователь

Отправить сообщение

Как я выбирал авто-холодильник для путешествий

Уровень сложностиПростой
Время на прочтение16 мин
Количество просмотров6.6K

Сохранение еды в путешествии – важный фактор комфорта. А охлаждение напитков в жаркий летний день – по-настоящему, бесценно. Раньше это было проблемой. Чего только не придумывали: охлаждали еду и воду, опустив в садке в реку, обматывали мокрыми тряпками, и даже выкапывали погреб в каждом месте стоянки. Всё это, конечно, лучше, чем хранение еды на жаре. Но очень неудобно и неэффективно.

Казалось бы, решение в виде термоэлектрического автомобильного холодильника было найдено еще 50 лет назад. Однако, на практике, такими холодильниками можно худо-бедно пользоваться только «на ходу», потому что они жутко прожорливы и неэффективны. Я сталкиваюсь с выбором авто-холодильника уже не первый раз. И каждый раз это превращается в какое-то хождение по мукам...

К обзору!
Всего голосов 44: ↑54.5 и ↓-10.5+65
Комментарии65

Сложнейшая проблема компьютерных наук: центрирование

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров25K

Заявляю: «Мы, как цивилизация, разучились использовать центрирование». Ну то есть мы, конечно, знаем, как это делать — очень просто:

display: flex;
justify-content: center; /* Горизонтальное центрирование */
align-items: center; /* Вертикальное центрирование */

Не спрашивайте, почему вам нужно запомнить четыре слова вместо просто горизонтальное/вертикальное; всё равно лучше, чем было до этого.

Ещё можно использовать сетку:

display: grid;
justify-items: center; /* Горизонтальное центрирование */
align-items: center; /* Вертикальное центрирование */

Также не спрашивайте, почему выражение justify-content стало justify-items.
Читать дальше →
Всего голосов 185: ↑201 и ↓-16+217
Комментарии54

Библиотека EremexControls.NET для Avalonia UI — Обновление март-апрель 2024

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров2.7K

В предыдущей статье мы рассказали о нашей первой версии библиотеки UI контролов для создания мультиплатформенных приложений под Avalonia UI. С тех пор прошло достаточно времени, в течение которого мы продолжали работать над новой версией Delta Design и расширением линейки контролов для Avalonia UI. Об этом мы поговорим ниже. А также мы пригласим вас на выставку ЭкспоЭлектроника 2024, на которой компания Эремекс будет готова подробно рассказать о новой версии Delta Design и о линейке контролов EremexControls.NET.

Читать далее
Всего голосов 21: ↑23.5 и ↓-2.5+26
Комментарии0

Динамическая JIT компиляция C++

Уровень сложностиСредний
Время на прочтение12 мин
Количество просмотров5.3K


Когда-то давно я писал статью-наблюдение про использование Хабра в качестве площадки для архитектурных ревью технических решений практически любой сложности Хабр — ума палата, и продолжаю пользоваться этим способом на постоянной основе.


А теперь, похоже, я нашел еще один очень полезный Хаброхак, который заключается в использования Хабра как записной книжки, но не как в том анекдоте я думал, что это блокнот для заметок, а всем видно оказывается что я здесь написал, а в самом хорошем смысле — для хранения результатов различных экспериментов, подведения итогов поиска в решения проблем и публикации итоговых выводов.


Так, на днях искал материалы про JIT компиляцию C++ в рантайме с помощью clang/llvm и поиск мне выдал мою же собственную статью трехгодичной давности: Динамическая JIT компиляция С/С++ в LLVM с помощью Clang / Хабр. В результате появилась уже эта новая статья про JIT компиляцию C/С++.

Читать дальше →
Всего голосов 11: ↑10 и ↓1+9
Комментарии4

Всё ещё храните музыку в формате Hi-Res? Тогда мы идем к вам

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров79K

Люди делятся на 2 лагеря: те, кто слышит разницу между lossless и lossy, и те, кто нет. Формат аудио с потерей качества — это интересная тема, но сегодня мы поговорим о звуке в высоком разрешении — это PCM 24/96 и выше, а также DSD во всех его проявлениях. Я не буду рассказывать теорию, чем отличаются эти форматы, такие статьи легко гуглятся. Лишь вскользь упомяну о теореме Котельникова (Найквиста — Шеннона), которая гласит следующее: «Для того, чтобы оцифровать аналоговый сигнал, а потом его БЕЗ ПОТЕРЬ восстановить, необходимо и ДОСТАТОЧНО, чтобы частота дискретизации была в 2 раза СТРОГО больше максимальной частоты полезного сигнала».

Читать далее
Всего голосов 188: ↑184 и ↓4+180
Комментарии449

Современные команды и фичи Git, которыми стоит пользоваться

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров29K

Мы, разработчики ПО, пользуемся git каждый день, однако большинство из нас применяет только самые основные команды, например, addcommitpush и pull, как будто на дворе по-прежнему 2005 год.

С тех пор в Git появилось множество фич, пользование которыми может сильно упросить вашу жизнь. Так давайте исследуем некоторые из недавно добавленных современных команд git, о которых вам стоит знать.

Читать далее
Всего голосов 75: ↑73 и ↓2+71
Комментарии29

Другой способ понять, как работает async/await в C#

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров8.2K

Про закулисье async/await написано предостаточно. Как правило, авторы декомпилируют IL-код, смотрят на IAsyncStateMachine и объясняют, вот дескать какое преобразование случилось с нашим исходным кодом. Из бесконечно-длинной прошлогодней статьи Стивена Тауба можно узнать мельчайшие детали реализации. Короче, всё давно рассказано. Зачем ещё одна статья?

Я приглашаю читателя пройти со мной обратным путём. Вместо изучения декомпилированного кода мы поставим себя на место дизайнеров языка C# и шаг за шагом превратим async/await в код, который почти идентичен тому, что синтезирует Roslyn.

Читать далее
Всего голосов 21: ↑21 и ↓0+21
Комментарии26

Фишинг «фичи» Телеграма

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров32K

Телеграмм старается быть безопасным, но как написано в их BugBounty программе, социальная инженерия - вне скоупа. В этом я с ними абсолютно согласен. Но они считают, что под это попадают и все небезопасно реализованные функции, которые могут использоваться только для социальной инженерии. В этом уже я с ними не согласен.

В этой статье я расскажу вам про две "фичи", которые исправлять мессенджер не намерен, но которые могут быть легко использоваться для социальной инженерии, особенно в связке.

Читать далее
Всего голосов 120: ↑118 и ↓2+116
Комментарии61

Интерпретатор Brainfuck на Brainfuck

Уровень сложностиСложный
Время на прочтение25 мин
Количество просмотров13K

Когда-то давно, году в 2013-м, на глаза мне попался следующий код:

>>>+[[-]>>[-]++>+>+++++++[<++++>>++<-]++>>+>+>+++++[>++>++++
++<<-]+>>>,<++[[>[->>]<[>>]<<-]<[<]<+>>[>]>[<+>-[[<+>-]>]<[[
[-]<]++<-[<+++++++++>[<->-]>>]>>]]<<]<]<[[<]>[[>]>>[>>]+[<<]
<[<]<+>>-]>[>]+[->>]<<<<[[<<]<[<]+<<[+>+<<-[>-->+<<-[>+<[>>+
<<-]]]>[<+>-]<]++>>-->[>]>>[>>]]<<[>>+<[[<]<]>[[<<]<[<]+[-<+
>>-[<<+>++>-[<->[<<+>>-]]]<[>+<-]>]>[>]>]>[>>]>>]<<[>>+>>+>>
]<<[->>>>>>>>]<<[>.>>>>>>>]<<[>->>>>>]<<[>,>>>]<<[>+>]<<[+<<
]<]

Это интерпретатор языка Brainfuck, написанный на самом Brainfuck. Ссылки на оригинал у меня не осталось, только код, так что автора я назвать не смогу.

Мне всегда было безумно интересно узнать, как он работает. И теперь я решил наконец-то это сделать!

Читать далее
Всего голосов 120: ↑118 и ↓2+116
Комментарии20

Взлом аппаратного ключа методом veni, vidi, vici

Уровень сложностиСредний
Время на прочтение19 мин
Количество просмотров16K

К одному очень дорогому оборудованию для работы управляющей программы нужен аппаратный ключ с зашитой датой, указывающей, когда право использования оборудования кончается. За ключи исправно платили заграничному вендору, но после санкций это стало невозможным и оборудование стало простаивать. Важно, что интернет не использовался для активации ключа. Значит всё необходимое в ключ зашито. Если корпус ключа открыть, то видна одна микросхема FT232R с небольшой обвязкой.

Задача: Сделать так, чтобы можно было пользоваться оборудованием. Дистрибутив софта, требующего ключ, есть. Работает он под Windows. Просроченный ключ есть. Оборудованию около 10 лет.

Ниже описан путь решения со всеми ошибками.

Прочитать историю
Всего голосов 188: ↑185 и ↓3+182
Комментарии26

Как установить Windows 11

Уровень сложностиПростой
Время на прочтение10 мин
Количество просмотров81K

Да, статья о том, как установить Windows 11 правильно. Этот процесс нынче сопровождается таким количеством шаманских плясок, что ей-богу, проще Arch устанавливать. Решил вот поместить все познания по этому вопросу из головы в статью.

Читать далее
Всего голосов 143: ↑121 и ↓22+99
Комментарии238

История одной уязвимости в Google Chrome

Уровень сложностиСредний
Время на прочтение11 мин
Количество просмотров15K

Эта статья посвящена уязвимости, которую мне удалось обнаружить в браузере Google Chrome в конце прошлого года, а также рассказывает об истории её возникновения. Уязвимость существовала в течение продолжительного периода и была устранена 31 октября 2023 года. Компания Google оценила её в 16000$

Читать далее
Всего голосов 58: ↑57 и ↓1+56
Комментарии27

Что нам недодали в C++

Уровень сложностиСредний
Время на прочтение12 мин
Количество просмотров24K

C++ последний десяток с лишним лет стремительно развивается. Тем не менее в наших кодовых базах все еще присутствуют многочисленные helper-файлы и классы, которые помогают восполнить пробелы в стандартной библиотеке языка. Как же так вышло, что там в этих ваших helper-файлах, и когда это закончится?

Читать далее
Всего голосов 85: ↑83 и ↓2+81
Комментарии177

Искусственный интеллект для игры Точки

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров5.3K

Кратко о правилах: игроки поочерёдно ставят точки двух цветов в перекрестия линий. Цель — окружить точки соперника замыканием вокруг них непрерывной цепи своих точек.

Читать далее
Всего голосов 30: ↑29 и ↓1+28
Комментарии22

Как IT-специалисты помогли выиграть суд у банка

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров25K

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

Автор статьи выражает благодарность разработчикам Роману и Александру. Специалисты проделали огромную и кропотливую работу, нашли выход в безнадежной (с точки зрения юристов) ситуации.

Читать далее
Всего голосов 202: ↑201 и ↓1+200
Комментарии102

Малоизвестные и интересные особенности C и C++

Уровень сложностиСредний
Время на прочтение43 мин
Количество просмотров45K

В C и C++ есть особенности, о которых вас вряд ли спросят на собеседовании (вернее, не спросили бы до этого момента). Почему не спросят? Потому что такие аспекты имеют мало практического значения в повседневной работе или попросту малоизвестны.

Целью статьи является не освещение какой-то конкретной особенности языка или подготовка к собеседованиям, и уж тем более нет цели рассказать все потайные смыслы языка, т. к. для этого не хватит одной статьи и даже книги. Напротив, статья нужна для того, чтобы показать малоизвестные и странные решения, принятые в языках C и C++. Своего рода солянка из фактов. Вопрос “что делать с этими знаниями?” я оставляю читателю.

Если вы, как и я, любите и интересуетесь C/C++, и эти языки являются неотъемлемой частью вашей жизни, в том числе и его углубленного изучения, то эта статья для вас. По большей части я надеюсь, что эта статья сможет развлечь и заставить поработать головой. И если получится, рассказать что-то, чего вы, возможно, еще не знали.

Читать далее
Всего голосов 161: ↑160 и ↓1+159
Комментарии61

БагБаунти с АстраЛинус или то, что нужно знать о защищённости защищённой ОС

Уровень сложностиПростой
Время на прочтение12 мин
Количество просмотров37K

Хочу поделиться своим опытом участия в программе баг-хантинга ГК Астра (да, да - именно той, которая недавно совершила каминг‑аут IPO) на платформе BI.ZONE Bug Bounty.

Читать далее
Всего голосов 131: ↑129 и ↓2+127
Комментарии151

SQL HowTo: итоги по строкам и столбцам «в одно действие»

Уровень сложностиСредний
Время на прочтение4 мин
Количество просмотров14K

Немного отвлечемся от простых SELECT и посмотрим на реальной бизнес-задаче построения различных "тепловых карт" и "шахматок", как знание возможностей SQL может облегчить жизнь и разработчику, и его базе.

Читать далее
Всего голосов 27: ↑27 и ↓0+27
Комментарии14

Вы точно хотите пойти программистом в gamedev?

Уровень сложностиПростой
Время на прочтение17 мин
Количество просмотров73K

Хочу вас огорчить, программисты не делают игры - их делают дизайнеры и арт. Можно уволить программиста и на его место придет другой и через условные месяц-два-полгода начнет закрывать таски не хуже. Если увольняется дизайнер, его монстр, пушка или контент повисает без хозяина и без "видения". Если её не перехватил сосед (а у соседа свой монстр), то в большинстве случаев его работа просто уходит в стол и монстра пишут заново на тех же ассетах и принципах, но заново.

Если увольняется арт-директор, который несет "видение" проекта, то проекту становится очень плохо, в большинстве случаев визуально он изменится до неузнаваемости, хотя ассеты могут быть те же самые. Программисты делают всё, кроме самой игры: рендер, звук, физику, сеть, AI, инверсную кинематику, поиск пути и т.д. Можем подискутировать в комментариях.

O, тепленькая пошла!
Всего голосов 267: ↑263 и ↓4+259
Комментарии229

Что ты такое, dhclient?

Время на прочтение19 мин
Количество просмотров38K

Сетевой стек Linux не прост даже на первый взгляд: приложение — в юзерспейсе, а всё, что после сокета, — в ядре операционки. И там тысяча реализаций TCP. Любое взаимодействие с сетью — системный вызов с переключением контекста в ядре.

Чтобы лишний раз не дёргать ядро прерываниями, придумали DMA — Direct Memory Access. И это дало жизнь классу софта с режимом работы kernel bypass: например при DPDK (Intel Data Plane Development Kit). Потом был BPF. А за ним — eBPF. 

Но даже помимо хаков работы с ядром есть такие штуки, как sk_buff, в которой хранятся метаданные всех миллионов протоколов. Есть NAPI (New API), которая призвана уменьшить число прерываний. Есть 100500 вариантов разных tables.

И копать можно безгранично далеко. Но сегодня мы всё же поговорим о вещах более приземлённых и повседневных, которые лишь приоткрывают вход в эту разветвлённую сеть кроличьих нор. Мы разберём одну любопытную задачку, на примере которой ужаснёмся тому, как сложно может быть реализован такой простой протокол, как DHCP.

Начать погружение
Всего голосов 223: ↑222 и ↓1+221
Комментарии61
1
23 ...

Информация

В рейтинге
Не участвует
Откуда
Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность