Pull to refresh
17
0
Send message

Рейкастинг в игровых 2D-движках

Reading time8 min
Views18K

Введение


На мой взгляд, рейкастинг — великолепная концепция, понять которую не так сложно, но качественных ресурсов по ней очень мало. Я расскажу о математике, лежащей в её основе, чтобы вы при желании с лёгкостью могли реализовать её в своих будущих проектах. Постараюсь сделать объяснение как можно более понятным, рассказать о всех тонкостях и проблемах, с которыми вы можете столкнуться. Также мы поговорим об оптимизации и о том, как сильно вам могут помочь пространственные хэш-карты. Ещё я напишу простые интерактивные примеры, с которыми вы сможете поэкспериментировать. Учтите, что демо написаны максимально простым образом, не ожидайте увидеть в них код уровня энтерпрайза — мы изучаем саму концепцию, а не реализацию.
Читать дальше →
Total votes 22: ↑22 and ↓0+22
Comments0

Разобучите это: что такое machine unlearning и почему это важно

Reading time4 min
Views5.9K
Источник

Судя по всему, искусственный интеллект узнал о человечестве достаточно. Пора ему уже кое-что забыть, а именно персональные данные людей. Решение этой задачи человечество ищет с помощью новой области знаний под названием machine unlearning. Разбираемся, что это, как поможет победить восстание машин в зародыше и успеет ли человечество разработать эффективный machine unlearning быстрее, чем станет слишком поздно.
Читать дальше →
Total votes 39: ↑39 and ↓0+39
Comments3

H.264 Управление цветом

Reading time6 min
Views7.3K

В предыдущий раз я переводил краткую теорию цвета и описание управления цветом для формата PNG. Если пересказывать своими словами, то цветовые модели делятся на физические (XYZ) и логические (RGB или YUV). В форматах хранения изображений и видео используются логические форматы (потому что они ограничены в диапазоне значений), иногда с добавлением метаданных, описывающих правила конвертации из логической модели в физическую. В то время, как логическая модель обычно хранит значения в диапазоне от 0 до 255 или от 0 до 1, физическая модель оперирует комбинацией трех чисел, каждое из которых представляет взвешенную сумму энергий излучения по всему спектру видимого цвета, взятую с разными весами.

Что касается дисплеев, для них производитель указывает характеристики, описывающие то, как цифровой сигнал из, например, RGB преобразуется в значения XYZ, излучаемые этими самыми дисплеями. Такими характеристиками является точка белого (т.е. какому физическому цвету соответствует RGB-сигнал с компонентами max/max/max), основные цвета (максимумы RGB при остальных минимумах), гамма или передаточная функция, а также охват (gamut), который описывает всё множество физических цветов, которые в принципе может отобразить дисплей.

В этот раз разбираемся с цветом в видео
Total votes 3: ↑3 and ↓0+3
Comments0

Что нужно есть, чтобы коже стало плохо

Reading time11 min
Views71K
image
Это не призыв к действию. Не думайте о жареной картошке в сметане с грибами и прослойками подкопчённого бекона

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

Тем не менее пытаться съесть всё, что вы видите, — не всегда лучшая стратегия. Например, многие из вас слышали, что от сладкого прыщи на лице вылезут, но не уверены правда ли это и как работает. Поэтому сейчас расскажу, как влияет еда на кожу, и попробую разобрать традиционные мифы про питание:

  • Прыщи от сладкого не из-за того, что вы потеете сахаром.
  • Что такое БАДы по изначальной задумке (до прибежавших маркетологов).
  • Коллаген принимать перорально неэффективно.
  • Есть витамины просто так — довольно плохая идея.
  • Синтетические витамины хуже всасываются, а кальций так вообще лучше только из скорлупы получать.
  • Модная непереносимость глютена.
  • Можно ли пить молоко, если вам уже исполнилось 18 лет.

Коротко — жалко, что этого нет в школьных учебниках биологии.
Читать дальше →
Total votes 112: ↑106 and ↓6+136
Comments275

Зачем нужен регистр SPL

Reading time6 min
Views5.4K

Так и тянет меня задать в заголовке статьи вопрос, что по здешним правилам не допускается. А ответ опять очевиден: регистр SPL вообще не нужен.

Я уже давно выступал с критикой системы команд AMD64, сейчас более известной как x86-64. Причем, задача специально анализировать появившиеся и исчезнувшие команды не стояла. Просто при переносе средств программирования с Win32 на Win64 возникал ряд проблем, вызывавших один и тот же вопрос: «почему же раньше все работало, а теперь нет?». Это касается некоторых выброшенных разработчиками архитектуры AMD64 команд, которые пришлось эмулировать, и, особенно, аппаратной поддержки контроля целочисленного переполнения с помощью инструкции INTO, которая вдруг стала недоступной.

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

Но все-таки проблемы как-то разрешились, и пришло время не только бороться с недостатками системы команд AMD64, но и воспользоваться ее достоинствами. А основных достоинств, по сравнению с IA-32, напомню, два: восьмибайтная адресация, снимающая предел в 4 Гбайт, и увеличенное число регистров общего назначения в два раза.

В случае регистров размером в 2, 4 или 8 байт действительно все логично и естественно. Можно даже сказать, что число регистров увеличилось более чем в два раза, поскольку указатель стека и не используется в вычислениях как остальные. Поэтому в IA-32 у программиста реально было 7 регистров общего назначения, а в AMD64 их стало 15, т.е. RAX, RBX, RCX, RDX, RBP, RSI, RDI и R8-R15.

Читать далее
Total votes 13: ↑11 and ↓2+14
Comments46

Транспортная задача линейного программирования

Reading time11 min
Views50K

Транспортная задача линейного программирования относится к перечню классических задач, решаемых в практике деятельности людей. Эта задача методами классической математики не решается. В задаче необходимо отыскивать экстремум целевой функции. В задаче целевая функция – линейная. Ограничения на переменные (их может быть очень много) описываются также линейными зависимостями. Казалось бы чего проще. Но как раз ограничения и порождают трудности, связанные не просто с поиском max и min при отсутствии ограничений, а с необходимостью учета таких ограничений. Искать требуется не просто экстремум, а условный экстремум. Методы решения задачи позволяют учитывать особенности структуры задачи и даже отказаться от симплексного метода решения в чистом виде.

Читать далее
Total votes 4: ↑3 and ↓1+4
Comments2

Протокол безопасности транспортного уровня (TLS), версия 1.2 (RFC 5246) (Часть 2)

Reading time19 min
Views5.9K

Данный перевод является второй частью перевода протокола безопасности транспортного уровня (TLS) версии 1.2 (RFC 5246). Первая часть перевода находится  здесь. Вторая часть перевода содержит описание протокола записи TLS.

Читать далее
Total votes 1: ↑0 and ↓1-1
Comments0

Шаблоны модернизации приложения с помощью Apache Kafka, Debezium и Kubernetes, часть 1

Reading time11 min
Views4.2K

«Наши компьютеры создаются так же, как и наши города: долго, без планов и на руинах былого». Эллен Ульман (Ellen Ullman) написала это в 1998 году, но сегодня мы именно так и создаем современные приложения: долго, имея лишь краткосрочные планы и поверх унаследованного ПО. В этой статье мы рассмотрим несколько шаблонов и инструментов, которые, на наш взгляд, хорошо подходят для продуманной модернизации унаследованных приложений и создания современных управляемых событиями систем.

Читать дальше: Шаблоны модернизации...
Total votes 5: ↑5 and ↓0+5
Comments2

Ускорение процесса разработки под Embedded Linux

Reading time11 min
Views12K

Любой программист, решивший заняться разработкой под Embedded Linux, придя буть-то из высокоуровневых языков программирования, либо из программирования микроконтроллеров на С/С++, неизбежно оказывается удивлен крайней недружелюбностью embedded linux. Текстовый блокнот и консольные утилиты вместо столь привычных IDE, и отладка по логам вместо отладки программатором сильно замедляют процесс разработки. В статье описывается, как мне удалось снизить время доставки изменений до целевого железа при кросс-компиляции в 10 раз.

Читать далее
Total votes 14: ↑12 and ↓2+13
Comments12

Заменяем глобальный аллокатор в Rust

Reading time11 min
Views7.7K

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


Читать дальше →
Total votes 20: ↑20 and ↓0+20
Comments6

Квантовые миры и возникновение пространства-времени. Порядок и случайность

Reading time8 min
Views7.6K
image Привет, Хабр! Обращаем ваше внимание на одну новинку (сдана в типографию), доступную уже сейчас для покупки в электронном виде.

Надеемся, что отсутствие формул в книге не отпугнет потенциальных читателей. Шон Кэрролл — физик-теоретик и один из самых известных в мире популяризаторов науки — заставляет нас по-новому взглянуть на физику. Столкновение с главной загадкой квантовой механики полностью поменяет наши представления о пространстве и времени. Большинство физиков не сознают неприятный факт: их любимая наука находится в кризисе с 1927 года. В квантовой механике с самого начала существовали бросающиеся в глаза пробелы, которые просто игнорировались. Популяризаторы постоянно твердят, что квантовая механика — это что-то странное, недоступное для понимания… Чтобы все встало на свои места, достаточно признать, что во Вселенной мы существуем не в одном экземпляре. Шонов Кэрроллов бесконечно много. Как и каждого из нас. Тысячи раз в секунду во Вселенной возникают все новые и новые наши копии. Каждый раз, когда происходит квантовое событие, мир дублируется, создавая копию, в которой квантовое событие так и не произошло. В квантовой механике нет ничего мистического или необъяснимого. Это просто физика.
Читать дальше →
Total votes 8: ↑8 and ↓0+8
Comments19

Облачные и локальные вычисления: различий всё меньше

Reading time5 min
Views2.6K

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

Облако или локальный сервер?
Total votes 6: ↑3 and ↓30
Comments3

Почему скучные люди лучше всех в дизайне сложных приложений. Например, банковских

Reading time9 min
Views6.3K

Привет. Эта статья — текстовая версия моего доклада на конференции RAUX 2021. Ниже будет ссылка на видео.

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

Создание UX/UI, длится минимум 3 месяца. Бывает и 6–9 месяцев. При этом, очень редко выходит закончить проект с тем же дизайнером, с которым начинали его делать. По дороге люди выгорают и уже не могут выполнять свою работу эффективно. При том, что на проектах поменьше (1–2 месяца), всё проходит куда как менее кровопролитно.

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

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

В статье я расскажу из чего состоит UX/UI банковских проектов и почему это такое скучное занятие.

Будет полезно начинающим дизайнерам. И тем, кто хочет перейти на выполнение крупных проектов.

Читать далее
Total votes 3: ↑2 and ↓1+1
Comments19

Разбор алгоритмов генерации псевдослучайных чисел

Reading time10 min
Views38K

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

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

Имплементация простых фьючерсов с помощью корутин

Reading time5 min
Views3.1K

Вместо return в корутине используется co_return, возвращающий результат. В этой заметке я хочу реализовать простую корутину с использованием co_return.

Читать далее
Total votes 7: ↑3 and ↓4-1
Comments2

Квантовая мультивселенная

Reading time23 min
Views32K

Эта статья является первой частью конспекта книги «Наша математическая вселенная. В поисках фундаментальной природы реальности» (автор Макс Тегмарк). Материал статьи посвящен многомировой интерпретации квантовой механики.

Является ли квантовая механика внутренне противоречивой? Действительно ли волновая функция коллапсирует? Если да, то когда? А если нет, то почему мы не видим вещи в двух местах сразу? Откуда появляются случайности и вероятности в квантовой механике?

В 1957 году принстонский аспирант Хью Эверетт предложил поистине радикальный ответ, подразумевающий существование параллельных вселенных. Однако эту идею в основном игнорировали. В чем же идея Эверетта? Это на удивление простое утверждение: Волновая функция не коллапсирует. Никогда. Иными словами, волновая функция, которая полностью описывает нашу Вселенную, всегда изменяется детерминистически, всегда подчиняется уравнению Шредингера, независимо от того, выполняются наблюдения или нет.

Читать далее
Total votes 38: ↑36 and ↓2+46
Comments125

Школы юнит-тестирования

Reading time9 min
Views14K

Существуют две основные школы юнит-тестирования: классическая (ее также называют школой Детройта, или Чикаго) и лондонская (ее также называют мокистской школой, от слова mock).

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

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

В тысячный раз о code review

Reading time3 min
Views8K

Фото Fatos Bytyqi с Unsplash.com

Почему в тысячный?

Потому что я вбила здесь в поиске "code review" и обнаружила 50 страниц по 20 результатов на каждой ​

Штуки три с высоким рейтингом прочитала. Но всё по понятным причинам не осилила.

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

Итак. Есть много способов для повышения качества кода, создаваемого командой: тестирование, статический анализ, экстремальное программирование,... Сегодня расскажу о code review.

Для тех, кто не в курсе, code review – это процесс просмотра кода, сделанного одним разработчиком, другим разработчиком с последующей выдачей комментариев. В идеале, это повышает качество кода.

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

Это цена. Не все команды согласны её платить в погоне за качеством. Мне везло работать в тех, что согласны.

Итак, поехали. Как проводить code review, чтобы извлечь из процесса максимальную пользу?

​ Вежливо. Даже если вам кажется, что коллега написал это код в пьяном угаре не иначе, нужно выдавать свои комментарии в максимально корректной форме. Все ошибаются. Это не повод их стыдить, высмеивать и прочее. Цель всего - улучшить качество вашего совместного продукта. А блеснуть своим белым пальто можно и в другом месте, если хочется. Пишите комментарии так, как вы бы хотели, чтоб их писали вам.

Читать далее
Total votes 20: ↑10 and ↓10+6
Comments63

Чего компании ждут от Data Scientist в 2021

Reading time5 min
Views6.2K

Бюро статистики труда США прогнозирует, что в следующие 10 лет спрос на специалистов Data Science и Machine Learning значительно вырастет. Условия вакансий становятся лучше, а потребность в Data Science увеличивается в IT, маркетинге, консалтинге и других сферах. К старту флагманского курса по науке о данных представляем сокращённый перевод анализа более 3000 вакансий Data Science в США.

Читать далее
Total votes 8: ↑7 and ↓1+6
Comments2

20 лучших практик по работе с Dockerfile

Reading time13 min
Views37K

Эта статья содержит рекомендации по написанию Dockerfile и принципам безопасности контейнеров и некоторые другие связанные темы, например про оптимизацию образов.

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

К счастью, большинство потенциальных проблем мы можем решить еще на этапе разработки.

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

Читать далее
Total votes 38: ↑36 and ↓2+40
Comments22
1
23 ...

Information

Rating
Does not participate
Location
Днепр, Днепропетровская обл., Украина
Date of birth
Registered
Activity