Как стать автором
Обновить
3
0
Максим Камалов @dog_funtom

Фрилансер-программист Unity

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

Chromium — это не только браузер, но и хороший фреймворк

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


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

Под катом небольшое руководство, как начать это делать.
Читать дальше →
Всего голосов 71: ↑66 и ↓5+61
Комментарии34

Собираем свой chromium/electron, с блекджеком и поэтессами

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

Добрый день. Меня зовут Тимур и я программист.

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

Если Вам хочется похейтить пользователей электрона в частности или джисеров в целом — проходите мимо. Электрон я сам не особо люблю и как раз пытаюсь сделать лучшую замену ему, что касается фронтовиков — я один из них, но про js в статье будет очень мало. Сорян.
Читать дальше →
Всего голосов 30: ↑26 и ↓4+25
Комментарии35

The wave method of building color scheme

Время на прочтение7 мин
Количество просмотров2.1K
image

In life we often face the challenge of choosing the right colors. This happens when we need to choose clothes suitable for each other, shoes suitable for clothes, choose different wallpapers for the children's room, makeup, choose colors for our site and much more. The process of selecting several colors that combine with each other is called the construction of a color palette (gamut).

In colouristics there are several methods for constructing a color palette (color gamma) based on the arrangement of colors relative to each other in the color circle and, usually, having the same brightness. Harmonious perception of which is not sufficiently substantiated from the physical point of view.

The wave method of building color palette based on the relationship of color and acoustic waves, and also the concept of consonance (harmony) in music theory. Below is a more detailed description of the method.

This site allows you to choose the most harmonious combination of colors for your site, clothing, interior, etc.

The corresponding article was published on the site arxiv.orghttps://arxiv.org/abs/1709.04752. Results are available on our sitewavepalette.com.
Read more →
Всего голосов 2: ↑1 и ↓1+2
Комментарии2

Как принять участие в open source проекте Chromium

Время на прочтение5 мин
Количество просмотров48K
В q&a разделе Хабра присутствует довольно много вопросов от людей, выбирающих open source проект, в котором они хотели бы поучаствовать: раз, два, три, четыре, пять.

Думаю, многие слышали про браузер Google Chrome и про то, что он основан на open source проекте Chromium. Так получилось, что в течении прошедшего года мне удалось внести небольшой вклад в этот проект в качестве независимого разработчика (то есть я не имею никакого отношения к Google и занимаюсь этим проектом в свободное от работы время). В процессе мне, естественно, пришлось разобраться с некоторыми техническими и организационными моментами, чем и хотелось бы поделиться.

Ниже я расскажу о том, как собрать Хромиум в домашних условиях, как выбрать задачу из системы баг-трекинга и как сделать так, чтобы ваш код оказался в репозитории.
Читать дальше →
Всего голосов 113: ↑109 и ↓4+105
Комментарии58

Использование кодовой базы проекта Chromium в качестве SDK для разработки кроссплатформенных приложений

Время на прочтение11 мин
Количество просмотров15K
Помимо вполне понятной официальной документации (Chromium Wiki), существуют и статьи о том, как получить исходный код и собрать проект Chromium (например).

Я же хотел рассказать о том, как на основе этого кода можно создавать приложения на C++, способные компилироваться и выполняться на нескольких операционных системах и архитектурах. Конечно, для этой цели уже существуют библиотеки, такие как Qt и boost. Но именно поэтому данная статья относится к разделу 'ненормальное программирование', ведь никто всерьез не рассматривает код Chromium как основу для кроссплатформенного приложения.
Читать дальше →
Всего голосов 24: ↑23 и ↓1+22
Комментарии5

Как правильно делать уборку в доме, если кого-то стошнило

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

Ультрафиолет с длиной волны 365 нм показывает следы органики в вашей квартире

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

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

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

Поэтому сегодня будем говорить про домашнюю микроживность, правильную уборку и места, куда вы наверняка забываете заглянуть. Заодно посмотрим, как правильно корректировать уборку, если кто-то заболел и по квартире внезапно оказались разлиты биологические жидкости больного человека.
Читать дальше →
Всего голосов 64: ↑58 и ↓6+74
Комментарии80

Знаменитые дизайнеры vs научные исследования про читаемость шрифтов

Время на прочтение6 мин
Количество просмотров68K
Я работаю дизайнером около 10 лет. В дизайне не очень много объективных и проверяемых законов, и когда мне нужно было что-то выяснить, я искала информацию в профессиональных книгах, блогах крутых ребят, спрашивала у знакомых арт-директоров и приставала к людям в коридорах.

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

Мы в Тинькофф сравнили мнение знаменитых дизайнеров и ученых о том, какие шрифты легче читать: антикву(с засечками) или гротески(без засечек).


Читать дальше →
Всего голосов 129: ↑124 и ↓5+164
Комментарии126

Филаментные лампы Voltega с высоким индексом цветопередачи

Время на прочтение2 мин
Количество просмотров27K
В продаже появились светодиодные лампы Voltega True color, на которых указан индекс цветопередачи CRI>97. Я купил две такие лампочки и измерил их параметры.

Читать дальше →
Всего голосов 25: ↑24 и ↓1+35
Комментарии34

Если окна открывают, значит — это кому-нибудь нужно

Время на прочтение2 мин
Количество просмотров6.2K
Однажды мне потребовалось открыть окно из консольного приложения. Я хотел это сделать используя wpf, но информации, разбросанной по сети оказалось мало, так что я решил как-то систематизировать и представить этот маленький туториал.
Читать дальше →
Всего голосов 16: ↑12 и ↓4+8
Комментарии15

Фракталы в простых числах

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


Я обнаружил этот фрактал, когда разглядывал интерференцию волн на поверхности речки. Волна движется к берегу, отражается и накладывается сама на себя. Есть ли порядок в тех узорах, которые создаются волнами? Попробуем найти его. Рассмотрим не всю волну, а только вектор ее движения. «Берега» сделаем гладкими, для простоты эксперимента.

Эксперимент можно провести на обычном листке в клеточку из школьной тетради.
Читать дальше →
Всего голосов 190: ↑183 и ↓7+176
Комментарии33

Светодиодные лампы #КАКСОЛНЦЕ

Время на прочтение2 мин
Количество просмотров57K
В магазинах Леруа Мерлен появились светодиодные лампы под называнием КАКСОЛНЦЕ. Обещают Ra95 и «свет максимально близкий к солнечному». Проверим.



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

Делаем вечную лампочку

Время на прочтение3 мин
Количество просмотров299K
На упаковках светодиодных ламп указывают срок службы 30, 40 или 50 тысяч часов, но многие лампочки не живут и года.

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

Читать дальше →
Всего голосов 185: ↑180 и ↓5+233
Комментарии361

Делаем вечную лампочку: вопросы и ответы

Время на прочтение5 мин
Количество просмотров248K
Мой рассказ о том, как за пять минут модифицировать светодиодную лампу, чтобы значительно продлить ей срок жизни, вызвал огромный интерес.
У многих возникли вопросы и сомнения. Постараюсь ответить на вопросы и развеять сомнения.

Читать дальше →
Всего голосов 47: ↑44 и ↓3+58
Комментарии99

Алгоритм быстрого и простого объёмного рендеринга

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

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

У моего ShaderToy были три основные задачи:

  1. Выполнение в реальном времени
  2. Простота
  3. Физическая корректность (… или типа того)

Я начну с этой сцены с кодом-заготовкой. Не буду вдаваться в подробности реализации, потому что она не очень интересна, но вкратце расскажу, с чего мы начинаем:

  1. Трассировка лучей непрозрачных объектов. Все объекты являются примитивами с простыми пересечениями с лучами (1 плоскость и 3 сферы)
  2. Для вычисления освещения используется затенение по Фонгу, а в трёх сферических источниках света применется настраиваемый коэффициент затухания света. Лучи теней не требуются, потому что мы освещаем только плоскость.

Вот как это выглядит:

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

Налоговые и правовые вопросы начинающих фрилансеров

Время на прочтение7 мин
Количество просмотров17K
Здравствуйте!

Знаю, что у программистов много вопросов о налогообложении и праве. Решила написать о вопросах, возникающих у начинающего фрилансера.

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

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

Пока не знаю, насколько востребована тема налогов и права, какая информация нужна, в каком формате. Задавайте вопросы, пишите, что понятно, что непонятно. Что надо подробней. Какие темы интересуют. Если будет интересно, продолжу.
Читать дальше →
Всего голосов 18: ↑17 и ↓1+16
Комментарии44

Методы наименьших квадратов: текст, написанный программистом для программистов

Время на прочтение19 мин
Количество просмотров37K
Продолжаю публикацию своих лекций, изначально предназначенных для студентов, учащихся по специальности «цифровая геология». На хабре это уже третья публикация из цикла, первая статья была вводной, она необязательна к прочтению. Однако же для понимания этой статьи необходимо прочитать введение в системы линейных уравнений даже в том случае, если вы знаете, что это такое, так как я буду много ссылаться на примеры из этого введения.

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


Читать дальше →
Всего голосов 66: ↑62 и ↓4+76
Комментарии13

Представляем Owlcat Mono Profiler для Unity

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

Добрый день. Я работаю программистом в компании Owlcat Games, которая выпустила одну из самых успешных российских компьютерных RPG Pathfinder: Kingmaker и сейчас работает над её продолжением, Pathfinder: Wrath of the Righteous. В ходе портирование первой игры нашей студии на консоли, мы столкнулись с проблемой поиска утечек памяти. Штатные инструменты движка Unity и целевых платформ оказались по разным причинам не слишком удобны для борьбы с утечками, и поэтому мы решили написать свой инструмент, о котором я и расскажу ниже.

Owlcat Mono Profiler предназначен для исследования использования памяти Mono в играх на движке Unity. Он доступен всем желающим в виде собранных бинарных файлов (под Windows) и исходного кода на Github. В отличие от встроенного профайлера Unity, а также пакета Memory Profiler, он не требует снятия снимков состояния памяти, а производит постоянный мониторинг состояния Mono-кучи, что позволяет выявлять не только утечки, но и пики аллокаций, и избыточные повторяющиеся аллокации. По сравнению с платформо-специфичными инструментами, такими как Memory Analyzer для PS4, он корректно отображает события, происходящие с памятью, управляемой сборщиком мусора.

На этом покончим с формальностями, и перейдём к cool story.

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

Internal DSL & Expression Trees — динамическое создание функций serialize, copy, clone, equals (Часть I)

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


Статья посвящена двойному применению API Expression Trees — для разбора выражений и для генерации кода. Разбор выражений помогает построить структуры представления (они же структуры представления проблемно-ориентированного языка Internal DSL), а кодогенерация позволяет динамически создавать эффективные функции — наборы инструкций задаваемые структурами представления.


Демонстрировать буду динамическое создание итераторов свойств: serialize, copy, clone, equals. На примере serialize покажу как можно оптимизировать сериализацию (по сравнению с потоковыми сериализаторами) в классической ситуации, когда "предварительное" знание используется для улучшения производительности. Идея в том, что вызов потокового сериалайзера всегда проиграет "непотоковой" функции точно знающей какие узлы дерева надо обойти. При этом такой сериализатор создается "не руками" а динамически, но по заранее заданным правилам обхода. Предложенный Inernal DSL решает задачу компактного описания правил обхода древовидных структур объектов по их свойствам/properties (а в общем случае: обхода дерева вычислений c проименованием узлов) . Бенчмарк сериализатора скромный, но он важен тем, что добавляет подходу, построенному вокруг применения конкретного Internal DSL Includes (диалект того Include/ThenInclude что из EF Core) и применению Internal DSL в целом, необходимой убедительности.

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

Равномерное перемещение объекта вдоль кривой

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


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

Наверное, каждый имеющий отношение к теме знает или, по крайней мере, слышал, про кривые Безье, B-сплайны, сплайны Эрмита и прочие интерполяционные и сглаживающие сплайны и совершенно правильно предложил бы использовать в описанной ситуации один из них, но не всё так просто, как хотелось бы.
Читать дальше →
Всего голосов 16: ↑15 и ↓1+21
Комментарии18

Создание разрушаемых мешей

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

Часть 1. Знакомство с Marching cubes


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

Вот пример из No Man’s Sky: видео.

Аналогичная техника применяется для отображения изображений с МРТ, metaball-ов и для вокселизации рельефа.

В этой части я расскажу о технике создания разрушаемого рельефа Marching Cubes, а в более общем применении — для создания плавного граничного меша твёрдого объекта. В этой статье мы начнём с рассмотрения двухмерной техники, затем трёхмерной, а в третьей части рассмотрим Dual Contouring. Dual Contouring — это более совершенная техника, создающая тот же эффект.
Всего голосов 30: ↑30 и ↓0+30
Комментарии3

Информация

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