Pull to refresh
0
0
dr_brain @dr_brain

User

Send message

Игровая легенда из 90-х: Как работала 3dfx Voodoo «под капотом»? Пишем 3D-приложение с нуля на Glide

Level of difficultyMedium
Reading time26 min
Views12K
image


Полагаю, многие мои читатели так или иначе знакомы с такими видеокартами, как 3dfx Voodoo. Эти легендарные графические ускорители из середины\конца 90-х годов был чуть ли не в каждой второй сборке для игр, а о их производительности слагали легенды. До сих пор есть относительно небольшое сообщество фанатов ретро-игр, которые ценят, любят и собирают с цветмета те немногие видеокарты от 3dfx, что остались в СНГ. Однако обзоров на 3dfx Voodoo много, тестов игр — тоже, а вот материала «простыми словами» о его внутренней архитектуре и более того, практической части с написанием 3D-игры практически нет! Недавно я прикупил себе Voodoo 3, и начал зубрить Programmer's Manual с желанием запилить что-нибудь эдакое… Статью я долго и упорно готовил дабы успеть к новому году и сегодня у нас с вами: краткая история компании 3dfx, подробный разбор архитектуры видеочипов 3dfx «под капотом», что должен был уметь программист 3D-графики в 90х и написание 3D-приложения на Glide полностью с нуля. Интересно? Тогда жду вас в статье!
Читать дальше →
Total votes 80: ↑79 and ↓1+78
Comments49

Вызываем демонов с printf

Level of difficultyEasy
Reading time5 min
Views6.8K

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

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

Вангеры 3D: пример использования Emscripten в Rust

Reading time5 min
Views9.6K

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

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

9 фишек инструментов разработчика Chrome

Reading time3 min
Views10K

На вкладке «Элементы» в инструментах разработчика Chrome много интересных функций, поддерживающих отладку и ускоряющих работу. К сожалению, начинающие веб-мастера им уделяют недостаточно внимания. С помощью этой статьи мы об этих функциях напомним.

Читать далее
Total votes 10: ↑5 and ↓50
Comments5

Анти-Factorio

Reading time4 min
Views31K

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

Вы готовы сражаться ?
Total votes 50: ↑37 and ↓13+24
Comments63

Сколько стоит разработать мобильное приложение

Reading time4 min
Views47K
Всем привет, меня зовут Сева, я директор проектного управления в Citronium. Все мои друзья, кто так или иначе связан с бизнесом постоянно задают мне два вопроса: “Сколько стоит сделать мобильное приложение? Ну такое, чтоб прям нормальное было. Стандартное, но не очень дорогое.” и “А почем нынче вебсайты? Ну такие, стандартные, как у всех”.

Я поначалу отвечал невнятно, говорил, что все всегда по-разному, а тут все же сам задумался над обоими вопросами и решил на них ответить. По порядку. Начнем с мобильного приложения. Я посчитал среднюю стоимость каждого этапа разработки всех составляющих мобильного приложения и получил примерные цифры. Если коротко, это порядка 1.5 млн рублей за гибридное мобильное приложение и порядка 2.2 млн рублей за два нативных приложения, то есть одно под Android и еще одно под iOS.
Читать дальше →
Total votes 25: ↑20 and ↓5+15
Comments37

Анализ рендеринга кадра бета-версии Minecraft RTX

Reading time4 min
Views10K
image

Minecraft — это творческая игра-выживалка, в которой нужно откапывать ресурсы, создавать инструменты и фермы, исследовать мир в поисках ценных сокровищ и строить порталы в соседние миры Nether и End.

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

Недавно был обновлён рендерер Minecraft для Windows 10, в его архитектуру были внесены значительные изменения: добавлена трассировка лучей в реальном времени (ray tracing), устранение шума трассировки лучей (ray tracing denoising) и суперсэмплирование при помощи глубокого обучения (deep learning super sampling).

Давайте же изучим, как Minecraft RTX выполняет рендеринг кадра, по мере возможности ссылаясь на исследовательские статьи.
Total votes 11: ↑11 and ↓0+11
Comments6

Рисуем муравьями: процедурные изображения при помощи алгоритмов оптимизации муравьиной колонии

Reading time7 min
Views10K

Почему мне захотелось рисовать муравьями


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

Я думала о том, как представить это графически, и одной из нашедших во мне отклик картинок стало изображение муравьиной колонии. Муравьи — прекрасный пример возникающей (эмерджентной) сложности. Ни один отдельный муравей не является архитектором, но вместе они строят великолепные сложные структуры.
Читать дальше →
Total votes 42: ↑42 and ↓0+42
Comments5

Средства консоли Chrome, которыми вы, возможно, никогда не пользовались

Reading time7 min
Views52K
Консоль инструментов разработчика Chrome — это, вероятно, одно из самых широко используемых и самых полезных специализированных средств браузера. Консоль даёт программисту множество интересных возможностей. Она помогает в отладке, профилировании и мониторинге кода страниц.



Материал, перевод которого мы сегодня публикуем, посвящён рассказу о некоторых возможностях консоли Chrome, которые известны не так широко, как они того заслуживают.
Читать дальше →
Total votes 94: ↑94 and ↓0+94
Comments27

Как open-source побеждает «кровавый энтерпрайз»: битва за BPMS

Reading time5 min
Views21K
Шестеренки современного банка крутятся в соответствии с финансовыми бизнес-процессами. Они сложнее обычных — это правило работает для всего, к чему вы добавите определение «финансовые». С одной стороны, все усложняют регуляторы, бессчетное количество согласований и вовлеченных сторон. С другой — неповоротливые монолитные BPMS (Business Process Management System). В этом посте мы расскажем, как успешно забросили одну такую систему и ушли в гибкий и функциональный open source.


Читать дальше →
Total votes 35: ↑33 and ↓2+31
Comments19

Java собеседование. Коллекции

Reading time10 min
Views891K
С недавнего времени у меня появилась настойчивая мысль, что профессиональное развитие сильно замедлилось и это хочется как-то исправить. Да, читаю книги, слушаю курсы, но в то же время приходит и понимание того, что возможно пришло время сменить работу, здесь вроде как все изучено, плавно уходим в рутину. Данная мысль сподвигла меня на рассылку своего резюме в несколько компаний — лидеров рынка. После прохождения собеседования в 3 из них, я решил, как водится внести свои 5 копеек в освещение обширной темы собеседования, а именно технических вопросов по Java коллекциям, с которыми приходится сталкиваться. Да, знаю, читатель скажет: «коллекции — избитая тема, сколько можно», но часть из приведенных ниже вопросов, я задавал своим знакомым разработчикам, которые занимают именно позиции разработчиков («крепких середнячков», по меркам недалекой от Москвы глубинки, которые уверенно справляются со своей работой на практике, а вот в теории скажем так есть пробелы, потому, что работа не требует решения каких-то нетривиальных задач, да и потому что не всем это интересно — изучать как внутри работает структура данных), вызывало растерянность. Думаю, что рассмотренный материал будет не очень интересен разработчикам выше уровня Junior (я попрошу их комментировать, дополнять и критиковать изложенный здесь материал), а вот Junior`ы уверен, найдут в этой статье интересное для себя.
Читать дальше →
Total votes 97: ↑86 and ↓11+75
Comments306

Алгоритм Кэхэна: как получить точную разность произведений

Reading time5 min
Views9.1K
image

Недавно я вернулся к анализу погрешностей чисел с плавающей запятой, чтобы усовершенствовать некоторые детали в следующей редакции книги Physically Based Rendering. Числа с плавающей запятой — интересная область вычислений, полная сюрпризов (хороших и плохих), а также хитрых трюков, позволяющих избавиться от неприятных неожиданностей.

В процессе работы я наткнулся на этот пост на StackOverflow, из которого узнал об изящном алгоритме точного вычисления $a \times b-c \times d$.

Но прежде чем приступать к алгоритму, нужно понять, что же такого хитрого в выражении $a \times b-c \times d$? Возьмём $a=33962.035$, $b=-30438.8$, $c=41563.4$ и $d=-24871.969$. (Это реальные значения, которые получились у меня во время запуска pbrt.) При 32-битных значениях float получаем: $a \times b=-1.03376365 \times 10^9$ и $c \times d=-1.03376352 \times 10^9$. Выполняем вычитание, и получаем $-128$. Но если выполнить вычисления с двойной точностью, а в конце преобразовать их во float, то получится $-75.1656$. Что произошло?

Проблема в том, что значение каждого произведения может сильно выйти за нижнюю границу $-1 \times 10^9$, где расстояние между представимыми значениями с плавающей запятой очень велико — 64. То есть при округлении $a \times b$ и $c \times d$ по отдельности до ближайшего представимого float, они превращаются в числа, кратные 64. В свою очередь, их разность будет кратной 64, и не останется никакой надежды, что она станет к $-75.1656$ ближе, чем $-64$. В нашем случае результат оказался ещё дальше из-за того, как два произведения были округлены в $-1 \times 10^9$. Мы напрямую столкнёмся со старым добрым катастрофическим сокращением1.
Читать дальше →
Total votes 31: ↑31 and ↓0+31
Comments9

Подготовка к Spring Professional Certification. Spring Security

Reading time5 min
Views15K

Эта статья является переводом статьи по подготовке к Spring Professional Certification.


В ней будет рассмотрена тема Spring Security и основные вопросы по ней.


Ее также можно использовать для подготовки к собеседованию.


↓ Остальные статьи доступны по ссылкам в оглавлении ↓


Оглавление
  1. Внедрение зависимостей, контейнер, IoC, бины
  2. AOP (аспектно-ориентированное программирование)
  3. JDBC, транзакции, JPA, Spring Data
  4. Spring Boot
  5. Spring MVC
  6. Spring Security
  7. REST
  8. Тестирование



Читать дальше →
Total votes 17: ↑13 and ↓4+9
Comments2

Опубликован список из 25 самых опасных уязвимостей ПО

Reading time2 min
Views16K


Изображение: Unsplash

Американская организация MITRE опубликовала список из 25 самых опасных уязвимостей программного обеспечения. Исследователи составили таблицу наиболее опасных и распространенных проблем безопасности, с указанием идентификаторов CWE (Common Weakness Enumeration).

В топ-25 попало большое количество уязвимостей, которые позволяют злоумышленникам полностью захватить контроль над компьютерными программами, выводить их из строя и похищать обрабатываемые в них данные. Список позволяет специалистам по информационной безопасности лучше понимать ландшафт угроз безопасности, но будет полезен также разработчикам ПО, тестировщикам и пользователям программных продуктов.
Читать дальше →
Total votes 18: ↑16 and ↓2+14
Comments6

Душевный Mikrotik против бездушного РКН и такого же провайдера

Reading time3 min
Views79K
Статья описывает способ получения доступа к ресурсам ошибочно попавшим под раздачу плюшек Роскомнадзором (далее РКН). Именно ошибочно попавшим. Мы законопослушные граждане и не ходим туда куда нам запрещают наши госорганы. Так что если вдруг вы решите воспользоваться способом для того что бы пойти на какие то “законно” заблокированные ресурсы, суровый меч правосудия возможно взметнется над вашей головой и я в этом не виноват, поскольку вот прямо сейчас я вас предупредил!
Читать дальше →
Total votes 58: ↑49 and ↓9+40
Comments91

О PBR на пальцах

Reading time18 min
Views75K


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

Читать дальше →
Total votes 41: ↑40 and ↓1+39
Comments10

Зачем современную веб-разработку так усложнили? Часть 1

Reading time7 min
Views72K
Современная фронтенд-разработка оставляет полярные впечатления: одни её любят, другие презирают.

Я большая поклонница современной веб-разработки, хотя она мне напоминает некую «магию», со своими плюсами и минусами:

  • Когда вы поймёте, как использовать волшебные инструменты (babel! бандлеры! вотчеры! и так далее!), ваш рабочий процесс становится быстрым, мощным и восхитительным
  • Если вы не понимаете волшебные инструменты, всё ужасно запутанно
  • …и попытки освоить магию слишком часто неудачны, если вам кто-нибудь не поможет продраться через джунгли жаргона, преувеличений и устаревшей информации в интернете
Читать дальше →
Total votes 107: ↑101 and ↓6+95
Comments320

Обратные задачи аффинных преобразований или об одной красивой формуле

Reading time12 min
Views24K
В этой статье я расскажу об одной необычной формуле, которая позволяет взглянуть под новым углом на аффинные преобразования, а особенно на обратные задачи, которые возникают в связи с этими преобразованиями. Обратными я буду называть задачи, требующие вычисления обратной матрицы: нахождение преобразования по точкам, решение системы линейных уравнений, преобразование координат при смене базиса и т.д. Сразу оговорюсь, что в статье не будет ни фундаментальных открытий, ни уменьшения алгоритмической сложности — я просто покажу симметричную и легко запоминающуюся формулу, с помощью которой можно решить неожиданно много ходовых задач. Для любителей математической строгости есть более формализованное изложение здесь [1] (ориентированно на студентов) и небольшой задачник вот здесь [2].
Поехали!
Total votes 48: ↑48 and ↓0+48
Comments25

«Мобильный контент» бесплатно, без смс и регистраций. Подробности мошенничества от Мегафона

Reading time12 min
Views159K
UPD 07: Телеграм чат для обсуждения операторов сотовой связи t.me/opsosru

После того как я опубликовал статью «Как Мегафон спалился на мобильных подписках», я попытался получить комментарий от Мегафона.


Ответа до сих пор нет.

Но вместо этого я получил зависающий интернет. То есть в какой-то момент трафик перестаёт идти и ютубчик перестаёт играть. Так же с мобильного Мегафона совсем перестал открываться moy-m-portal.ru. На Теле2, МТС и Билайне всё стабильно. То есть Мегафон решил просто мне отомстить…

Это подогрело мой интерес, чтобы раскрутить этот клубок «мобильных подписок» и поделиться с Вами своими исследованиями.

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


Читать дальше →
Total votes 496: ↑488 and ↓8+480
Comments483

Презентация как код, или Почему я больше не пользуюсь Powerpoint-ом

Reading time8 min
Views71K

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

Читать дальше →
Total votes 129: ↑122 and ↓7+115
Comments115
1
23 ...

Information

Rating
Does not participate
Registered
Activity