Как стать автором
Обновить
17
0

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

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

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

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

Введение


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

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

Время на прочтение4 мин
Количество просмотров5.7K
Источник

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

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

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

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

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

В этот раз разбираемся с цветом в видео
Всего голосов 3: ↑3 и ↓0+3
Комментарии0

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

Время на прочтение11 мин
Количество просмотров71K
image
Это не призыв к действию. Не думайте о жареной картошке в сметане с грибами и прослойками подкопчённого бекона

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

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

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

Коротко — жалко, что этого нет в школьных учебниках биологии.
Читать дальше →
Всего голосов 148: ↑142 и ↓6+136
Комментарии275

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

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

Так и тянет меня задать в заголовке статьи вопрос, что по здешним правилам не допускается. А ответ опять очевиден: регистр 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.

Читать далее
Всего голосов 18: ↑16 и ↓2+14
Комментарии46

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

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

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

Читать далее
Всего голосов 6: ↑5 и ↓1+4
Комментарии2

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

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

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

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

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

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

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

Читать дальше: Шаблоны модернизации...
Всего голосов 5: ↑5 и ↓0+5
Комментарии2

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

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

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

Читать далее
Всего голосов 17: ↑15 и ↓2+13
Комментарии12

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

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

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


Читать дальше →
Всего голосов 20: ↑20 и ↓0+20
Комментарии6

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

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

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

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

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

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

Облако или локальный сервер?
Всего голосов 6: ↑3 и ↓30
Комментарии3

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

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

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

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

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

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

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

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

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

Читать далее
Всего голосов 3: ↑2 и ↓1+1
Комментарии19

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

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

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

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

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

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

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

Читать далее
Всего голосов 7: ↑3 и ↓4-1
Комментарии2

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

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

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

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

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

Читать далее
Всего голосов 50: ↑48 и ↓2+46
Комментарии125

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

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

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

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

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

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

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

Фото Fatos Bytyqi с Unsplash.com

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

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

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

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

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

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

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

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

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

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

Читать далее
Всего голосов 26: ↑16 и ↓10+6
Комментарии63

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

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

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

Читать далее
Всего голосов 8: ↑7 и ↓1+6
Комментарии2

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

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

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

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

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

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

Читать далее
Всего голосов 44: ↑42 и ↓2+40
Комментарии22
1
23 ...

Информация

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