Pull to refresh
100
113.8
Глухов Михаил @Rigidus

Solution Architect | Senior Developer

Send message

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

Reading time10 min
Views12K
HCF, n. Mnemonic for ‘Halt and Catch Fire’, any of several undocumented and semi-mythical machine instructions with destructive side-effects <...>
Jargon File
В предыдущем посте я начал рассказ об областях применения ассемблера при разработке программных моделей вычислительных систем — симуляторов. Я описал работу программного декодера, а также порассуждал о методе тестирования симулятора с помощью юнит-тестов.
В этой статье будет рассказано, зачем программисту нужны знания о структуре машинного кода при создании не менее важной компоненты симулятора — ядра, отвечающего за моделирования отдельных инструкций.
До сих пор обсуждение в основном касалось ассемблера гостевой системы. Пришло время рассказать об ассемблере хозяйском.
Читать дальше →
Total votes 14: ↑14 and ↓0+14
Comments1

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

Level of difficultyMedium
Reading time6 min
Views26K

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

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

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

Читать далее
Total votes 49: ↑46 and ↓3+64
Comments79

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

Level of difficultyMedium
Reading time10 min
Views5.3K

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

Об экзекуции VPS ниже в статье
Total votes 24: ↑24 and ↓0+35
Comments24

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

Level of difficultyMedium
Reading time9 min
Views18K

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

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

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

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

Погрузиться
Total votes 93: ↑91 and ↓2+117
Comments58

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

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



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

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

Reading time6 min
Views12K
Дополнено: хорошая дискуссия на Hacker News

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

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

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

Самый удивительный результат бенчмарка — то, что FFI от LuaJIT существенно быстрее, чем C. Он примерно на 25% быстрее, чем нативный вызов C для функции общего объекта. Как смог слабо и динамически типизированный скриптовый язык обогнать в бенчмарке C? Точен ли результат?
Читать дальше →
Total votes 29: ↑28 and ↓1+27
Comments7

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

Reading time7 min
Views15K

Миллионы публикаций, не говоря уже о шпионских документах, можно прочитать на микрофильмах. Но люди по-прежнему считают эти устройства устаревшими и непривлекательными.
Наглядный урок
Total votes 29: ↑28 and ↓1+27
Comments40

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

Level of difficultyHard
Reading time32 min
Views36K

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

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

Читать далее
Total votes 80: ↑80 and ↓0+80
Comments12

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

Reading time54 min
Views78K
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. Мы начнём с основ, будем постепенно добавлять новые возможности и в результате создадим сложный рельеф на основе шестиугольников.
Читать дальше →
Total votes 38: ↑38 and ↓0+38
Comments14

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

Level of difficultyMedium
Reading time7 min
Views6.6K

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

Читать далее
Total votes 55: ↑55 and ↓0+74
Comments19

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

Reading time12 min
Views29K

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



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

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

И это — применения лишь в области изображений. В звуке дизеринг тоже играет ключевую роль, но боюсь, обсуждать здесь дизеринг аудио я не буду. Только псевдотонирование изображений.
Читать дальше →
Total votes 66: ↑64 and ↓2+62
Comments23

Некоторые малоизвестные фичи, фокусы и причуды языка C

Reading time19 min
Views29K

В этом посте разобраны некоторые фокусы, причуды и фичи языка C (некоторые из них – весьма фундаментальные!), которые, казалось бы, могут сбить с толку даже опытного разработчика. Поэтому я потрудился сделать за вас грязную работу и (в произвольном порядке) собрал некоторые из них в этом посте. Примеры сопровождаются ещё более вольными краткими пояснениями и/или листингами (некоторые из них цитируются).

Конечно же, здесь я не берусь перечислять абсолютно всё, так как факты из разряда «функция nan() не может устанавливать errno, поскольку в определённых ситуациях поведёт себя как strtod()» не слишком интересны.

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

Читать далее
Total votes 82: ↑81 and ↓1+100
Comments45

Нужны ли людям микросхемы?

Level of difficultyEasy
Reading time38 min
Views8.7K

Представим, что мы попали в 1972 год. В небе уже летают сверхзвуковые пассажирские Ту-144 и Конкорд. Полиомиелит побеждён. Оспа почти побеждена. Норман Борлоуг два года, как получил Нобелевскую премию мира за «Зелёную революцию» — выведение высокоурожайных сортов пшеницы и их внедрение в сельское хозяйство Мексики, Индии и Пакистана. Афганские студентки ходят в Кабульский университет в мини-юбках и сапогах до колена. СССР и США только что подписали соглашение о совместной пилотируемой программе Союз-Апполон. Сам Апполон совершил свой заключительный пилотируемый полёт к Луне с высадкой на поверхность. А Эдвард Стоун назначен главой космической программы Вояджер. Электронная композиция Popcorn Гершона Кингсли стала надоедать, но Жан‑Мишель Жарр скоро выпустит альбом Oxygene.

При взгляде на всё это торжество прогресса из не вполне постковидного 2024-го можно проникнуться определёнными нотками пессимизма. Которые, однако, несколько приглушаются, если сказать себе: «Но зато информационные технологии и их фундамент — микроэлектроника — сделали за последние 50 лет огромный рывок вперёд». В данной статье будет сделана попытка разобраться в причинах, обусловивших данный рывок, а также их актуальности на текущий момент.

Включить Xerox Alto
Total votes 25: ↑24 and ↓1+29
Comments112

Что лучше — оценка рекрутера или подбрасывание монетки? Вот данные:

Level of difficultyEasy
Reading time17 min
Views4.9K

перевод статьи Алин Лернер и Питер Бергман

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

Если вы читаете мои работы в течение последнего десятилетия, то знаете, что я всегда был чем-то вроде исследователя в кресле [прим. пер. человек, который занимается исследованиями, анализом и высказывает свои мнения, не имея практического опыта в изучаемой области]. До создания interviewing.io я провел несколько экспериментов, и с тех пор я и моя команда продолжаем их.

Одним из экспериментов, который я проводил до основания interviewing.io, была попытка выяснить, насколько хорошо рекрутеры умеют оценивать качество кандидатов по резюме.
Я проводил его 10 лет назад и обнаружил, что они не только плохо оценивают резюме (примерно так же точно, как подбрасывают монетку), но и
не согласны друг с другом в том, как выглядит хороший кандидат.

Несмотря на то что в то время эти результаты были шокирующими, исследование имело ряд серьезных недостатков.
Во-первых, у меня не было объективных показателей того, какие кандидаты были действительно хорошими. В то время я работал рекрутером, поэтому я знал, кого мне удалось трудоустроить, но это, очевидно, не является абсолютной и окончательной оценкой инженерных способностей. Во-вторых, у меня была нерепрезентативная выборка инженеров-программистов. Благодаря своему бренду мне удалось привлечь множество отличных, нетрадиционных кандидатов - инженеров, которые на самом деле были очень хороши, но не выглядели хорошо на бумаге. Рекрутерам сложнее всего оценивать такие резюме, а в данных их было много. Наконец, размер моей выборки был не слишком велик: в итоге я получил 716 точек данных, из которых только около половины были получены от рекрутеров (остальные - от инженеров и менеджеров по персоналу - моя первоначальная гипотеза заключалась в том, что они лучше справятся с задачей, но я ошибся... все были плохи в оценке резюме).

Читать далее
Total votes 16: ↑15 and ↓1+17
Comments6

Абсурдная незащищенность проекта @gamee

Reading time8 min
Views1.6K

Возможно вы подумаете, что этот многопользовательский видеоигровой проект, основанный практически десять лет назад должен сейчас содержать хотя бы что‑то на подобии античита: лично я сразу начинаю представлять в своей голове фоновые капчи, слежку за всеми касаниями экрана, биг дату, самостоятельную криптографию, сервер‑сайд стейт, и прочее. Как показывает час моего свободного времени — ничего подобного там нет. Сейчас я вам подробнее покажу, почему этот «веб 3.0 проект», как и многие другие, является полным бредом разработанным на коленках.

Читать далее
Total votes 10: ↑9 and ↓1+9
Comments5

Забытая повесть «Машины, пишущие код»

Reading time26 min
Views1.9K

Патрик через минуту вернулся с небольшой пыльной коробкой. Мы с Дейвом смотрели, как Патрик ее открывает и достает сетевой свитч — такой староватый из тех времен, когда им еще делали железные корпуса. Он воткнул блок питания в розетку и аккуратно выпрямил шнур CAT-5, чтобы подключить этот свитч к нашей сети. Я хотел наорать на него за всю излишнюю осторожность в такой момент. Дейв сидел рядом со мной, нехарактерно тихо.

Я замер, пока у Патрика не получалось попасть шнуром в нужный порт. Я глядел на передние огоньки — Дейв, наверное, тоже. Мои глаза намокли. Патрик впихнул шнур. Сразу же огоньки загорелись и быстро замигали. Я почувствовал, как мои руки и лецо покраснели, а в углу глаза увидел как Дейв встал и открыл рот, будто пытаясь что-то сказать. Затем он нырнул лицом в сложенные руки, затем его вырвало.

Читать повесть
Total votes 11: ↑10 and ↓1+12
Comments10

Австралия, Лорд-Хау — самый странный часовой пояс

Level of difficultyMedium
Reading time14 min
Views11K

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

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

Так что я предлагаю другой подход. В этой статье я покажу вам несколько странных часовых поясов, можно даже сказать самых странных — так как страннее, пожалуй, уже некуда.
Читать дальше →
Total votes 75: ↑74 and ↓1+101
Comments93

Анонимный мессенджер — обязательный стандарт для каждого человека

Reading time8 min
Views55K


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

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

Поэтому анонимное средство коммуникаций с надёжным шифрованием — это обязательный стандарт для нормального человека. Телеграм с секретными чатами — не самый лучший вариант. Чтобы гарантировать подобие анонимности, там нужно совершить ряд необязательных действий, включая покупку виртуального номера за TON'ы (сначала нужно купить эти TON'ы, что тоже нетривиальная процедура).

Спрашивается, зачем нужен виртуальный номер, если можно реализовать регистрацию вообще без номера, как в нормальных анонимных мессенджерах?
Читать дальше →
Total votes 72: ↑59 and ↓13+64
Comments256

Архаичные алгоритмы сжатия видео эпохи FMV-игр

Reading time5 min
Views16K
В 90-е сложилась интересная ситуация: вычислительные мощности компьютеров были недостаточны для расчета хоть сколько-нибудь реалистичной графики и в тоже время компакт-диски предоставляли возможность записать огромный для тех времен объем информации. В общем, идея лежала на поверхности: неплохо бы улучшить качество игровой картинки за счёт видео контента и есть куда этот контент записать.

Но была и проблема: типичное игровое разрешение того времени — 320 на 200 точек при палитре из 256 цветов, что даёт нам 64 килобайта на кадр или полтора мегабайта на 25 кадров, при скорости чтения с компакт диска в 150 килобайт в секунду. Т.е. видео надо было жать и жать довольно сильно, а сжав, потом надо суметь декодировать, ведь мы помним, компы были слабенькие и декодирование, например, MPEG им было вообще не по силам. Тем не менее производители видео игр успешно решили проблему недостаточной производительности породив заодно множество видео-кодеков и игровых видео-форматов, некоторые из которых могли проигрываться аж 286-м (прописью: двести восемьдесят шестым) процессором.

Так началась эпоха FMV игр (Full Motion Video Games). Я думаю, многие помнят её ярких представителей: Crime Patrol от American Laser Games, Lost Eden, Cyberia, Novastorm и даже Command & Conquer, в который многие играли только ради видеовставок между миссиями. В те времена выглядело это очень круто. Вау! Вау! Ну а мне было интересно, как же они закодировали это видео, в книжках о мультимедиа приводили то же описание проблемы, что и я выше, но ничего внятного о методах сжатия не писали, видимо, авторы в этом мало понимали и пересказывали какие-то сомнительные слухи.

На самом деле, всё оказалось очень просто, методов было всего три штуки и все очень простые.
Читать дальше →
Total votes 62: ↑62 and ↓0+62
Comments41

Анонимная сеть Hidden Lake: переход на постквантовую криптографию

Level of difficultyHard
Reading time16 min
Views8.3K

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

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

Читать далее
Total votes 20: ↑20 and ↓0+28
Comments8
1
23 ...

Information

Rating
43-rd
Location
Москва, Москва и Московская обл., Россия
Registered
Activity

Specialization

Software Architect
Lead