Pull to refresh
28
0
Anton Vasin @tony-space

Software Engineer

Send message

Почему для меня так важен алгоритм CORDIC

Level of difficultyMedium
Reading time8 min
Views9.1K

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

Перейду сразу к делу и скажу, почему я так сильно люблю этот алгоритм, а затем займёмся изучением принципов его работы. По сути, фактические операции CORDIC весьма просты — как я уже сказал, это сдвиги и сложение — но выполняет он их путём комбинирования векторной арифметики, тригонометрии, доказательств сходимости и продуманных техник компьютерных наук. Лично я считаю, что именно это имеют ввиду, описывая его природу, как «элегантную».
Читать дальше →
Total votes 67: ↑67 and ↓0+90
Comments22

Твоё освещение настолько дешёвое… Часть 1. Запекаем Ambient Occlusion нестандартным способом

Level of difficultyMedium
Reading time3 min
Views3.1K

Ambient Occlusion (затенение от рассеянного освещения) можно не вычислять в шейдере SSAO, а запечь в текстуру, увеличив fps. Конечно, можно воспользоваться 3D пакетом для запекания, например Blender. Но ведь мы на Хабре. И если вам хочется погрузиться во внутренности данного процесса, в этой статье описан способ вычисления Ambient Occlusion на основе матрицы, преобразующей направление в расстояние.

Читать далее
Total votes 7: ↑7 and ↓0+9
Comments0

Вы думаете рисовать линии это просто?

Level of difficultyMedium
Reading time13 min
Views22K

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

Читать далее
Total votes 58: ↑56 and ↓2+67
Comments38

Решение проблемы дымки на изображениях с использованием .NET: Простой и эффективный подход

Level of difficultyMedium
Reading time3 min
Views2.6K

Простое .NET решение для четких фото: избавьтесь от дымки или тумана на изображениях всего за несколько шагов!

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

Существует ли частотная область в реальности?

Level of difficultyMedium
Reading time7 min
Views11K

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

Однако насколько материально частотное пространство? Дискретное преобразование Фурье (DFT) имеет ключевое значение в сферах связи и анализа сигналов, но не раскрывает ли оно более глубокие, скрытые аспекты реальности? Рассмотрим, к примеру, квадратные волны. Действительно ли они существуют, если преобразование Фурье разлагает их на ряд нечетных гармоник синусоид, которые, в свою очередь, эффективно предсказывают поведение электронных схем в реальном мире?

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

Читать далее
Total votes 23: ↑22 and ↓1+27
Comments32

Выявление ошибок в работе с памятью в C и C++: Сравниваем Sanitizers и Valgrind

Reading time24 min
Views5.5K

В этой статье вашему вниманию представлено сравнение двух инструментов для поиска ошибок в работе с памятью в программах, написанных на memory-unsafe (небезопасных при работе с памятью) языках — Sanitizers и Valgrind. Эти два инструмента работают совершенно по-разному. Поэтому, хоть Sanitizers (разработанный инженерами Google) имеет ряд преимуществ перед Valgrind, у каждого из них есть свои сильные и слабые стороны. Следует сразу отметить, что проект Sanitizers имеет название во множественном числе, потому что он состоит из нескольких инструментов, которые мы рассмотрим в этой статье в совокупности.

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

S3-FIFO: новый эффективный алгоритм вытеснения из кэша на основе очередей FIFO

Level of difficultyMedium
Reading time18 min
Views7.8K
В этой статье я расскажу о простом и масштабируемом (Simple, Scalable) алгоритме вытеснения данных из кэша на основе трёх статических (Static) очередей FIFO (S3-FIFO). После проверки на 6594 трассировках кэшей 14 компаний мы показали, что S3-FIFO имеет меньшую частоту промахов, чем 12 лучших алгоритмов, разработанных в прошлые десятилетия. Более того, эффективность S3-FIFO устойчива — он имеет наименьший средний показатель промахов для 10 из 14 датасетов. Использование очередей FIFO позволяет S3-FIFO достичь хорошей масштабируемости с пропускной способностью в шесть раз больше по сравнению с оптимизированным LRU в cachelib на 16 потоках.

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

Иллюстрация работы S3-FIFO (с использованием порогового значения перехода из маленького в основной кэш, равного 1)
Читать дальше →
Total votes 69: ↑69 and ↓0+69
Comments5

Модель Такмана в переговорах

Level of difficultyEasy
Reading time17 min
Views7.3K

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

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

Подводные камни С++. Решаем загадки неопределённого поведения, ч. 1

Reading time11 min
Views15K

Изучение и понимание неопределённого поведения — важный шаг для разработчика C++, поскольку undefined behavior бывает источником серьёзных ошибок и проблем в программах. UB может проявляться в разных аспектах языка, включая операции с памятью, многопоточность, арифметические вычисления, работу с указателями и так далее.

Под катом мы погрузимся в мир неопределённого поведения в C++ и рассмотрим некоторые примеры ситуаций, в которых оно может возникать.

P.S.: Часть приведённых в статье примеров вдохновлены материалами, которые можно посмотреть в разделе «Полезные ссылки».

Читать далее
Total votes 42: ↑40 and ↓2+44
Comments44

Это норма — 4: решение проблем с картами нормалей

Reading time9 min
Views36K
image

Часть 1: что такое карты нормалей и как они работают

Часть 2: как запекаются карты нормалей

Часть 3: типы карт нормалей

Это четвёртая часть туториала о картах нормалей, но она независима от остальных частей и её можно читать отдельно.

Здесь я перечисляю проблемы карт нормалей, с которыми я сталкивался за годы работы, и некоторые решения, позволяющие их устранить.
Читать дальше →
Total votes 12: ↑12 and ↓0+12
Comments1

Поверхность по сети кривых

Reading time11 min
Views2.5K

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

Заранее предупреждаем. Дальше вам встретится множество геометрических терминов и формул. А кто говорил, что будет легко?!

О различных аспектах построения поверхности по сети кривых, а также полезных для ее практической реализации тонкостей, рассказывает Павел Егоров, математик-программист в C3D Labs.

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

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

Уйти нельзя остаться — что делать, когда очень хочется уволиться

Reading time12 min
Views45K

Согласно статистике, в РФ работу меняют в среднем раз в 3,5 года, а в США — раз в 4,1 года. Но статистика — всего лишь цифры, в неё попадают и те, кто меняет работу каждые 3-6 месяцев, и те, кто остается с компанией по 10-15 лет. Если прямо сейчас вы уже занесли ручку над заявлением об увольнении, предлагаю подумать, подышать и еще раз проверить все причины своего решения. 

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

Привет, Хабр! Меня зовут Рушана Каюмова, я — Lead HR в Экспресс 42. Эта статья посвящена скользкой и неприятной теме увольнения. Это только кажется, что уволиться — просто. На деле во всех историях, которые я слышала о смене работы, возникали какие-то шероховатости. Предлагаю пройтись по процедуре. Эта информация будет полезна всем, у кого есть работа, а также лидам и руководителям. Ведь каждый рано или поздно сталкивается с необходимостью уволиться самому или с увольнением сотрудника.

Читать далее
Total votes 30: ↑16 and ↓14+5
Comments35

Цвет: от шестнадцатеричных кодов до глаза

Reading time16 min
Views53K


Почему мы воспринимаем background-color: #9B51E0 как этот конкретный фиолетовый цвет?



Долгое время я думал, что знаю ответ на этот вопрос. Но хорошенько поразмыслив, осознал значительные пробелы в своих знаниях.
Читать дальше →
Total votes 104: ↑104 and ↓0+104
Comments27

Вычисление касательного базиса налету

Reading time8 min
Views2K

Этот пост написан автором в далёком 2013 году как дополнение к статье из 2006 года. Тем не менее, предпосылки к отказу от хранения предрассчитанных касательных справедливы и в 2022, а вывод формул изложен понятно и без излишеств. В наше время расчёт касательных для каждого пикселя обычно работает быстрее чем их выборка из буфера вершин. Давайте же разберёмся как из интерполированной нормали, координат вершины и текстурных координат сделать правильный базис касательного пространства прямо во фрагментном шейдере.

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

Как правильно отвечать на вопрос “Какие у вас зарплатные ожидания?” на рынке США

Reading time6 min
Views65K

На первом интервью чаще всего рекрутер может задать вопрос о зарплатных ожиданиях кандидата — “What Are Your Salary Expectations?”. Я принимаю участие в найме продукт-менеджеров, дизайнеров и инженеров и хочу поделиться с вами своим опытом как правильно отвечать на этот вопрос применительно к рынку США.

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

Читать далее
Total votes 76: ↑65 and ↓11+74
Comments161

О сетевой модели в играх для начинающих

Reading time11 min
Views38K
image

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

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

В целом существует два основных типа сетевых архитектур: peer-to-peer и клиент-серверная. В архитектуре peer-to-peer (p2p) данные передаются между любыми парами подключенных игроков, а в клиент-серверной архитектуре данные передаются только между игроками и сервером.

Хотя архитектура peer-to-peer по-прежнему используется в некоторых играх, стандартом является клиент-серверная: она проще в реализации, требует канал меньшей ширины и облегчает защиту от читерства. Поэтому в этом руководстве мы сосредоточимся на клиент-серверной архитектуре.
Читать дальше →
Total votes 20: ↑19 and ↓1+18
Comments6

Основы теории цвета. Система CIE XYZ

Reading time22 min
Views128K
На Хабре периодически появляются статьи, которые так или иначе относятся к понятию цвета: его общая теория, применение цветовых профилей и систем управления цветом, подбор гармоничных сочетаний цветов в дизайне, описание проблем, которые возникают при работе с изображениями, да и множество других топиков, например, на тему обработки изображений, так или иначе затрагивают вопросы цвета и цветовоспроизведения. Но, к сожалению, большинство таких статей описывают понятие цвета и особенности его воспроизведения очень поверхностно или в них делаются поспешные выводы или даже ошибки. Количество статей и вопросов на профильных форумах об практических аспектах точного цветовоспроизведения, а также множество неверных попыток дать ответы на эти вопросы даже самими опытными специалистами, говорит о том, что проблемы при работе с цветом возникают довольно часто, а найти аргументированные и чёткие ответы на них трудно.

Недостаточные или ошибочные знания большинства IT специалистов относительно цветовоспроизведения, по моему мнению, объясняются тем, что на изучение теории цвета тратится очень мало времени, так как её основы обманчиво простые: так как на сетчатке глаза есть три вида колбочек, то смешивая определённые три цвета можно без проблем получить всю радугу цветов, что подтверждается регуляторами RGB или CMYK в какой то программе. Большинству этого кажется достаточно, и ихняя тяга к знаниям в этой области заканчивается. Но, процессы получения, создания и воспроизведения изображений готовят Вам множество нюансов и возможных проблем, решить которые поможет понимание теории цвета, а также процессов в основе которых она лежит. Этот топик призван восполнить пробел знаний в области цветоведения, и будет полезен большинству дизайнеров, фотографов, программистов, а также, надеюсь, другим IT специалистам.

Попробуйте дать ответ на следующие вопросы:
  • почему физика не может дать определения понятию цвета?
  • какая из семи основных единиц измерений СИ основывается на свойствах зрительной системы человека?
  • какого цветового тона нет в спектре?
  • как удалось измерить ощущение цвета человеком ещё 90 лет назад?
  • где используются цвета, которые не имеют яркости?

Если хоть один на вопрос у Вас не нашёлся ответ, рекомендую заглянуть под кат, где Вы сможете найти ответы на все эти вопросы.
Читать дальше →
Total votes 82: ↑82 and ↓0+82
Comments57

Как в Java устроено выделение регистров в памяти

Reading time6 min
Views14K

Привет, Хаброжители! Обратите внимание на большую распродажу в честь Старого Нового года.

Когда виртуальная машина Java компилирует ваш исходный код Java в машинный, одна из задач, которые она должна при этом выполнить – решить, где хранить локальные переменные Java и другие подобные временные значения. В вашей машине отсутствует концепция локальных переменных, поэтому на этапе компиляции необходимо определиться, какое место в памяти стека (какой машинный регистр) будет использоваться для хранения каждой переменной. Эта операция называется «выделение регистров». Может показаться, что выделение регистров – сложная абстрактная теоретическая тема, но в этом коротком посте я покажу, как сначала соотнести исходный код Java с теорией, потом понять, как его видит компилятор, а потом – показать результирующий машинный код. В данном случае моя цель – продемонстрировать, что все эти концепции очень легко опробовать на практике с реальным компилятором. 

Читать далее
Total votes 22: ↑17 and ↓5+15
Comments3

Где научиться оформлению резюме под зарубежные компании?

Reading time1 min
Views5.7K

Cобрала ссылки на ресурсы Harvard, Yale, Stanford, Washington Universities по оформлению резюме под американские и международные вакансии. Подходит для удаленных вакансий, проверено на собственной шкуре.

Читать далее
Total votes 13: ↑8 and ↓5+5
Comments6

Уехать и остаться: чек-лист по релокации на кейсах от 132 специалистов

Reading time18 min
Views40K

Надоела питерская серость или московские пробки — и вот вы заводите трактор собираете чемодан и улетаете жить и работать в страну вечного лета (или зимы, кому что ближе). Так выглядит мечта любого, кто задумывается о релокации. Ежегодно российские IT-специалисты отправляются за границу за высоким доходом и качеством жизни. 76% из них довольны и не возвращаются, 36% пробуют уехать ещё раз, но в другую страну. Лишь 8% разработчиков принимают решение вернуться в Россию навсегда. 

Мы в Get Me IT собрали опыт 132 релоцированных и на его основе составили чек-лист: как подготовиться к переезду, чтобы не было невыносимо больно. В статье много личных историй: учись на чужих ошибках, прежде чем делать свои.

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

Читать далее
Total votes 43: ↑26 and ↓17+12
Comments101
1

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity