Как стать автором
Обновить
105
0
Глухов Михаил @Rigidus

Solution Architect | Senior Developer

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

Странный мир путей файлов в Windows

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

Пути файловых систем в Windows страннее, чем можно подумать. В любой производной от Unix системе пути на удивление просты: если нечто начинается с /, то это путь. Но всё совершенно иначе в Windows, которая имеет озадачивающее разнообразие схем составления пути.

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

Стоит заметить, что статья ограничивается только тем типом путей, который видит пользователь приложений Windows (обусловленный Win32 API). Под этим слоем есть ещё больше любопытного, в основном касающегося тех, кто пишет драйверы оборудования и тому подобное.
Читать дальше →

Ещё одна заметка про tar

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

Ко мне как-то обратился коллега с вопросом: «А ты запомнил команду для подготовки архива .tar.gz?» И я такой на автомате: «tar zcf имя.tar.gz ...» А он мне в ответ: «Нет, ты не понял. Ты эту команду запомнил? Мне приходится «гуглить» каждый раз, когда требуется сделать архив.» Ах, вот в чём дело. Действительно, команду я запомнил и уже давольно давно.

Если уважаемый читать хочет узнать немного больше, то предлагаю продолжить чтение. Но хочу предупредить, что ничего ранее неизвестного и сокровенного в заметке про tar не стоит ждать (почти). Всё ещё хочется узнать подробности?

Давайте читать дальше.

Прятки в пикселях: методы встраивания тайных посланий в видеопоток

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

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

Мы детально рассмотрим технические особенности каждого метода: от классической замены наименее значащего бита до современного алгоритма Куттера-Джордана-Боссена.

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

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

Читать далее

Что будет, если не использовать TCP или UDP?

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

Однажды мне стало интересно: а что будет, если отправить пакет с несуществующим транспортным протоколом? Не TCP, не UDP, не ICMP — вообще что-то выдуманное. Пропустит ли его ОС? Дойдет ли он хотя бы до сетевого интерфейса? Не зарежет ли его какой-нибудь промежуточный маршрутизатор? А вдруг он еще и быстрее обычного дойдет, потому что никто не знает, что с ним делать?

Ответа у меня не было. Так что я решил проверить.

Эксперимент и его результаты

Дзен миниатюризации

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

Отобрал для вас несколько удивительных проектов, способных расширить границы воображения программиста, сильно загаженного современными жирными фреймворками и кривыми решениями.

Очистить карму

Правила Хорошей Структурной Схемы для Электронных Плат

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

В этом тексте я написал о забытом понятии: блок-схемы для разработки электроники. В ГОСТ(е) их называли Э1 (Схема структурная). Блок-схем это хороший уровень абстракции при анализе электронного устройства или PCB. Представил несколько атрибутов, которые сформировались при создании блок-схем. Привел примеры образцовых блок-схем. 

Читать далее

Рассказ о моей клавиатуре

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

Год назад я собрал свою первую сплит-клавиатуру.

Она мне очень понравилась, но как любой инженер я люблю рефакторить.
Теперь я собрал вторую, лучше во всем (ну или почти) и хочу рассказать о ней (с картинками).

Читать далее

Простая 4-х цветная многоканальная гирлянда на основе микроконтроллера ATTINY13A

Время на прочтение7 мин
Количество просмотров65K
Как говорится в народе — готовь сани летом…
Наверняка на новый год украшаете ёлку всевозможными гирляндами, и скорей всего они уже давным давно приелись однообразием своего мигания. Хотелось бы сделать что-то такое чтобы ух, прям как на столичных елках мигало, только в меньшем масштабе. Или на крайний случай — повесить на окно, чтобы эта прям красота освещала город с 5-го этажа.
Но увы, в продаже таких гирлянд нет.

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

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

Читать дальше →

Быстрее некуда: собираем удобный поиск по коду из нескольких CLI-утилит

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

Мы никогда не читаем код как книгу — мы выбираем только конкретные интересующие места. Такие места обычно запоминаются ассоциативно, например по имени функции, строковому литералу, импорту библиотеки, комментарию и т. д. Перейти от ассоциации к файлу, а тем более к конкретной строчке кода не всегда легко. Особенно если оперируешь большим количеством проектов с активно меняющейся кодовой базой. В таких случаях выручает удобный инструмент текстового поиска.

Эффективность такого инструмента определяется как скоростью работы, так и удобством использования. В частности, кастомизация под себя позволяет разгрузить мышление и включить «мышечную память» — когда руки сами нажимают кнопки, а все внимание сосредоточено на обработке результатов поиска. Не все инструменты позволяют провести такую тонкую настройку. Меня зовут Роман Щекин, я работаю руководителем команды разработчиков в VK Cloud, и в этой статье мы с вами поищем серебряную пулю, попробуем достичь сочетания скорости и удобства в виде собранного из кросс-платформенного опенсорса поисковика.

Читать далее

Ассемблер для задач симуляции. Часть 2: ядро симуляции

Время на прочтение10 мин
Количество просмотров12K
HCF, n. Mnemonic for ‘Halt and Catch Fire’, any of several undocumented and semi-mythical machine instructions with destructive side-effects <...>
Jargon File
В предыдущем посте я начал рассказ об областях применения ассемблера при разработке программных моделей вычислительных систем — симуляторов. Я описал работу программного декодера, а также порассуждал о методе тестирования симулятора с помощью юнит-тестов.
В этой статье будет рассказано, зачем программисту нужны знания о структуре машинного кода при создании не менее важной компоненты симулятора — ядра, отвечающего за моделирования отдельных инструкций.
До сих пор обсуждение в основном касалось ассемблера гостевой системы. Пришло время рассказать об ассемблере хозяйском.
Читать дальше →

Скачиваем и смотрим YouTube на своём хостинге

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

У пользователей в РФ возникли затруднения с доступом к YouTube. Причины известны, как и варианты решения. Однако это битва кота и мыши: ТСПУ эволюционируют, и популярные инструменты часто перестают работать.

Чуть надёжнее использовать свою инфраструктуру в зарубежном дата-центре. Так можно скачать контент с YouTube на свой сервер, а оттуда раздать трафик внутри РФ любым удобным способом без всяких «замедлений».

Получается что-то вроде зарубежного прокси для YouTube. И это совершенно легально (пока).

Читать далее

Рубрика: VPS на пределе возможностей. LLM на CPU с 12Gb RAM

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

По работе я привык, что если какая-то нейронка не влезает на GPU-сервер, то первое моё действие — проверить, нет ли модели с квантизацией побольше, либо запросить ещё больше VRAM. Однако не все работают на облачных провайдерах, кто-то у нас ещё и заказывает услуги. А тарифы на GPU-серверы порой заставляют серьёзно задуматься о том, так ли они нужны, особенно когда нет потребности в нейронках на сотни миллиардов параметров. Что, если попробовать делать всё на обычном VPS-тарифе с бюджетом в 5000 рублей в месяц? Да и зачем ограничиваться одними лишь нейронками?

Об экзекуции VPS ниже в статье

Поговорим об оптимизирующих компиляторах. Сказ первый: SSA-форма

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

Всем привет. Сегодня я хотел бы поговорить об устройстве современных оптимизирующих компиляторов. Я никогда не публиковался на Хабре ранее, но надеюсь, что мне удастся написать серию статей, которая просуммирует мой опыт в этой области.

Коротко обо мне. Меня зовут Макс, и так получилось, что я вот уже 10 лет, почти с самого начала своей карьеры, занимаюсь оптимизирующими компиляторами. Я начинал в Intel, потом перешёл в Azul Systems, год провёл в Cadence и вернулся обратно, всё это время занимаясь компиляторными оптимизациями для Java, C++ и нейросетевых моделей. На момент написания статьи у меня чуть за 900 патчей в LLVM, большинство из них посвящено цикловым оптимизациям.

За это время я провёл десятки собеседований на позиции как интернов, так и инженеров сеньорного уровня, и довольно часто люди, приходя на эти собеседования, многих вещей не знают или знают поверхностно. И я подумал: а мог бы я написать такой цикл статей, чтобы человек, прочитав их, узнал бы всю ту базу, которая, на мой собственный взгляд, необходимо начинающему компиляторному инженеру? Очень бы хотелось, чтобы новичку в этой области можно бы было дать один (относительно небольшой по объёму) набор текстов, чтобы он получил оттуда всё необходимое для старта. Это не перевод, текст оригинальный, поэтому в нём могут быть ошибки и неточности, которые я буду рад исправить, если вы мне их укажете.

Итак, поехали.

Погрузиться

Security Week 2333: аппаратные уязвимости в процессорах AMD и Intel

Время на прочтение2 мин
Количество просмотров2.7K
На прошлой неделе вышли сразу две работы, посвященные аппаратным уязвимостям в процессорах. Атаку Inception (сайт проекта, исследование) разработали специалисты Швейцарской высшей технической школы Цюриха. Она затрагивает процессоры AMD вплоть до новейших версий с архитектурой Zen 4.



Исследователи назвали атаку в честь одноименного фильма Кристофера Нолана, в котором показана возможность «внедрения» идей в память человека во время сна. Важным элементом атаки является уже известная уязвимость CVE-2022-23825, которая обеспечивает условия для направления предсказателя ветвлений по ложному пути. Ранее считалось, что данная уязвимость актуальна только для процессоров Zen 1 и Zen 2. По факту выяснилось, что ей подвержены и более поздние модели процессоров. В атаке Inception использован новый метод Training in Transient Execution (TTE), при котором спекулятивное выполнение инструкций происходит рекурсивно.
Читать дальше →

Когда вызовы функций через внешний интерфейс быстрее нативных вызовов C

Время на прочтение6 мин
Количество просмотров12K
Дополнено: хорошая дискуссия на Hacker News

Дэвид Ю на GitHub разработал интересный тест производительности для вызовов функций через разные внешние интерфейсы (Foreign Function Interfaces, FFI).

Он создал файл общего объекта (.so) с одной простой функцией C. Затем написал код для многократного вызова этой функции через каждый FFI с измерением времени.

Для C «FFI» он использовал стандартную динамическую компоновку, а не dlopen(). Это различие очень важно, так как действительно сказывается на результатах теста. Можно спорить, насколько честно такое сравнение с фактическим FFI, но всё равно его интересно измерить.

Самый удивительный результат бенчмарка — то, что FFI от LuaJIT существенно быстрее, чем C. Он примерно на 25% быстрее, чем нативный вызов C для функции общего объекта. Как смог слабо и динамически типизированный скриптовый язык обогнать в бенчмарке C? Точен ли результат?
Читать дальше →

Микрофильм будет существовать половину тысячелетия

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

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

Гексагональные тайловые миры

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

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

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

Читать далее

Карты из шестиугольников в Unity: части 1-3

Время на прочтение54 мин
Количество просмотров81K
image

От переводчика: эта статья — первая из подробной (27 частей) серии туториалов о создании карт из шестиугольников. Вот, что должно получиться в самом конце туториалов.

Части 1-3: сетка, цвета и высоты ячеек

Части 4-7: неровности, реки и дороги

Части 8-11: вода, объекты рельефа и крепостные стены

Части 12-15: сохранение и загрузка, текстуры, расстояния

Части 16-19: поиск пути, отряды игрока, анимации

Части 20-23: туман войны, исследование карты, процедурная генерация

Части 24-27: круговорот воды, эрозия, биомы, цилиндрическая карта

Часть 1: создание сетки из шестиугольников


Оглавление


  • Преобразуем квадраты в шестиугольники.
  • Триангулируем сетку из шестиугольников.
  • Работаем с кубическими координатами.
  • Взаимодействуем с ячейками сетки.
  • Создаём внутриигровой редактор.

Этот туториал является началом серии о картах из шестиугольников. Сетки из шестиугольников используются во многих играх, особенно в стратегиях, в том числе в Age of Wonders 3, Civilization 5 и Endless Legend. Мы начнём с основ, будем постепенно добавлять новые возможности и в результате создадим сложный рельеф на основе шестиугольников.
Читать дальше →

Гексагональная сетка для игр с круглой Землей

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

В статье описывается способ сделать для компьютерных игр гексагональную карту (из шестиугольников), покрывающую всю сферическую Землю, чтобы можно было ходить кругосветно не только по экватору, но и через полюса. Возможно, статья заинтересует инди-разработчиков игр.

Читать далее

Псевдотонирование изображений: одиннадцать алгоритмов и исходники

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

Псевдотонирование: обзор



Про сегодняшнюю тему для программирования графики — псевдотонирование (дизеринг, псевдосмешение цветов) — я получаю много писем, что может показаться удивительным. Вы можете подумать, что псевдотонирование — это не то, чем программисты должны заниматься в 2012 году. Разве псевдосмешение — не артефакт история технологий, архаизм времён, когда дисплей с 16 миллионами цветов программистам и пользователям мог только сниться? Почему я пишу статью о псевдотонировании в эпоху, когда дешевые мобильные телефоны работают с великолепием 32-битной графики?

На самом деле псевдотонирование по-прежнему остаётся уникальным методом не только по практическим соображениям (например, подготовка полноцветного изображения для печати на чёрно-белом принтере), но и по художественным. Дизеринг также находит применение в веб-дизайне, где этот полезный метод используется для сокращения числа цветов изображения, что уменьшает размер файла (и трафик) без ущерба для качества. Он также используется при уменьшении цифровых фотографий в формате RAW в 48 или 64 бита на пиксель до RGB в 24 бита на пиксель для редактирования.

И это — применения лишь в области изображений. В звуке дизеринг тоже играет ключевую роль, но боюсь, обсуждать здесь дизеринг аудио я не буду. Только псевдотонирование изображений.
Читать дальше →
1
23 ...

Информация

В рейтинге
6 088-й
Откуда
Москва, Москва и Московская обл., Россия
Зарегистрирован
Активность

Специализация

Software Architect
Lead