Как стать автором
Обновить
-3
0
mjr27 @mjr27

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

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

CLion + STM32 без шелухи

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

Эта статья - краткий гайд о том, как с нуля завести STM32 под CLion, без шелухи в виде HAL и STM32CubeMX.

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

Свойства блочной модели CSS. Объяснение с примерами

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

Приветствую всех жителей хабравиля! Сегодня я подготовил для вас основы по блочной модели CSS. Безусловно, многие из вас знают о чём идёт речь, но сегодня я постараюсь объяснить прописные истины более понятно и наглядно, что поможет вам создавать веб-сайты, с идеально подходящими друг другу элементами (с точностью до пикселя), и научит более точно использовать свойства размеров, полей, отступов и границ. Итак, всех приглашаю под кат и погнали!

Погнали!
Всего голосов 5: ↑3 и ↓2+4
Комментарии5

Гексагональные тайловые миры

Уровень сложностиСложный
Время на прочтение32 мин
Количество просмотров35K

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

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

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

Тетрис, который максимально бесит

Время на прочтение2 мин
Количество просмотров25K
Сможет ли коллективный интеллект Хабра побить мировой рекорд?



Тетрис. Ну, казалось бы, что можно тут сделать нового? Был уже и трёхмерный тетрис, и четырёхмерный тетрис.

Сделали тетрис, который каждый раз подсовывает тебе самую ненужную фигуру. Сначала прикольно, а потом бесит. БЕСИТ!!!

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

Уже второй день я думаю, насколько такая простая механика заставила перепрошить привычные ментальные стратегии в игре и в более широком контексте принятия решений. Раньше, можно было «отложить» ситуацию на потом, когда выпадет более благоприятная фигура, а тут ты понимаешь, что за кулисами есть «некто», кто никогда не допустит, чтобы благоприятная фигура появилась. Единственный способ хоть как-то приуспеть — делать вилки, чтобы успех не мог не произойти.

В этом тетрисе даже нет «гравитации», то есть нет давления времени, но это вам мало поможет.

Алгоритм генерации ненависти простой:
«Проверьте все возможные местоположения всех возможных фигур, для каждой фигуры посмотрите лучший сценарий, из этих лучших сценариев выберите худший и сгенерируйте эту фигуру.»

Всего голосов 43: ↑36 и ↓7+45
Комментарии60

Сравниваем четыре опенсорсные альтернативы Disqus

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


Disqus всех задолбал. Из некогда удобной встраиваемой платформы для комментирования он превратился в многомегабайтного монстра с кучей сторонних скриптов и трекинга и совсем перестал устраивать технически подкованных блогеров и администраторов, причем положение дел всё хуже с каждым годом. Удивительно, что так и не появилось стопроцентного аналога, совместимого с Disqus, но опенсорс-сообщество всё же выкатило довольно крутые системы комментирования, ориентирующиеся на его замену. Рассмотрим самые интересные и жизнеспособные из них.
Читать дальше →
Всего голосов 28: ↑25 и ↓3+31
Комментарии18

Прямоугольные тайловые миры

Уровень сложностиСредний
Время на прочтение17 мин
Количество просмотров26K

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

Огромное множество игр на самом деле содержат тайлы - так просто проще представлять игровой мир. Такая упорядоченность помогает геймдизайнерам строить игровые механики, упрощает жизнь художников и делает код программистов понятнее. Самих видов тайлов тоже огромное количество - сегодня поговорим о прямоугольных и изометрических.

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

Подводные камни в бассейне строк, или ещё один повод подумать перед интернированием экземпляров класса String в C#

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

Будучи разработчиками программного обеспечения, мы всегда хотим, чтобы написанное нами ПО работало быстро. Использование оптимального алгоритма, распараллеливание, применение различных техник оптимизации – мы будем прибегать ко всем известным нам средствам, дабы улучшить производительность софта. К одной из таких техник оптимизации можно отнести и так называемое интернирование строк. Оно позволяет уменьшить объём потребляемой процессом памяти, а также значительно сокращает время, затрачиваемое на сравнение строк. Однако, как и везде в жизни, необходимо соблюдать меру – не стоит использовать интернирование на каждом шагу. Далее в этой статье будет показано, как можно обжечься и создать своему приложению неочевидный bottleneck в виде метода String.Intern.

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

Как получить 9В/12В от зарядного с Quick Charge (на примере STM32)

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

Чем может быть полезна быстрая зарядка


С увеличением ёмкости аккумуляторов телефонов потребовалось увеличить и мощность зарядных устройств, чтобы достичь маленького времени зарядки, для чего и нужно было увеличивать выходную мощность: напряжение, ток. Таким образом зарядные с Quick Charge 3.0 кроме 5 В могут выдавать 9В/12В/20В +возможность регулировки с шагом 0.2 В (до 12 В).


image

Ввиду распространенности ЗУ с этой технологией появляется интерес использовать их для получения повышенного напряжения без дополнительных преобразователей.

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

Валидация Kubernetes YAML на соответствие лучшим практикам и политикам

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

Прим. перев.: С ростом числа YAML-конфигураций для K8s-окружений всё более актуальной становится потребность в их автоматизированной проверке. Автор этого обзора не просто отобрал существующие решения для этой задачи, но и на примере Deployment'а посмотрел, как они работают. Получилось весьма информативно для тех, кому эта тема интересна.



TL;DR: В статье сравниваются шесть статических инструментов проверки и оценки YAML-файлов Kubernetes на соответствие лучшим практикам и требованиям.


Рабочие нагрузки Kubernetes, как правило, определяются в форме YAML-документов. Одна из проблем с YAML'ом — сложность задания ограничений или взаимоотношений между файлами манифестов.

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

Коронавирус: мир сошёл с ума

Время на прочтение10 мин
Количество просмотров44K
Появились первые правильные данные по смертности от коронавируса. Это статистика Центра по контролю и профилактике заболеваний США (CDC). Пожалуйста, посмотрите на таблицу ниже: левый столбик с количеством умерших среди подтверждённых на коронавирус — 13 130 человек; третий справа с количеством умерших с пневмонией при наличии COVID-19 — 5902 человека. Разница более чем в 2 раза! То есть количество смертей от коронавируса в США минимум в 2 раза меньше, чем принято считать большинством.



Я уже месяц твержу о том, смерть от коронавируса и смерть при коронавирусе — это разные вещи. Для того, чтобы это понять не нужно быть вирусологом или эпидемиологом. Достаточно было просто прочитать отчёт ВОЗ и увидеть памятку про crude mortality ratio и infection mortality rate. Несмотря на то, что две моих предыдущих статьи собрали более полутора миллионов просмотров только на Хабре, многие со мной не согласились.

Меня обзывали, оскорбляли, говорили о том, что такие как я должны быть в тюрьме и прочие гадости. Коллеги, я не жалуюсь, не упрекаю и не хвастаюсь. Я не первый год занимаюсь аналитикой и за последнее время потратил сотни часов на изучение данных пандемии. Это мой последний манифест по теме. Призываю вас либо вдумчиво прочитать последующий текст, либо полностью проигнорировать его.
Читать дальше →
Всего голосов 184: ↑77 и ↓107-5
Комментарии450

Лучшие практики и рекомендации для запуска контейнеров и Kubernetes в производственных средах

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

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

Команда Kubernetes aaS от Mail.ru собрала прогнозы, советы и лучшие практики для лидеров рынка от Gartner, 451 Research, StacxRoх и других. Они позволят обеспечить и ускорить развертывание контейнеров в производственных средах.
Читать дальше →
Всего голосов 11: ↑9 и ↓2+19
Комментарии0

Адаптивная процедурная генерация при помощи алгоритма WaveFunctionCollapse и априорного распределения вероятностей

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

Что такое процедурная генерация?


Процедурная генерация включает в себя множество генеративных алгоритмов, принцип работы которых заключается в создании данных не вручную, а алгоритмически: вместо ручного изготовления того, что мы хотим создать (карты, музыки, рельефа…), пишется алгоритм, который успешно может создавать различные примеры без многократного выполнения того же процесса. Особенно полезен такой подход в видеоиграх, где случайным образом может генерироваться целая карта или уровень (например, карты в Minecraft, Terraria или Factorio, или схемы уровней в большинстве roguelike).

Алгоритм коллапса волновой функции и его области применения


В статье мы исследуем алгоритм коллапса волновой функции (WaveFunctionCollapse, WFC), предложенный Максимом Гуминым (в его Twitter есть коллекция потрясающего контента, созданного при помощи этого алгоритма другими разработчиками!) для процедурной генерации изображений или рельефа при помощи создания изображений, локально схожих с входящим изображением в условиях сетки заданного размера.

В основе алгоритма лежит идея пошагового создания готового изображения с отслеживанием того, какие тайлы «соответствуют» уже частично построенному изображению. Для изучения подробного описания алгоритма рекомендуем обратиться к исходному репозиторию WFC на Github и четвёртому разделу статьи "WaveFunctionCollapse is Constraint Solving in the Wild".


Примеры процедурно сгенерированных из seed изображений
Всего голосов 11: ↑11 и ↓0+11
Комментарии2

Поддержка анонимных jwt токенов в IdentityServer4 при помощи AnonymousIdentity

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


Недавно мне потребовалось реализовать поддержку анонимной аутентификации пользователей на основе OpenId Connect и OAuth 2.0 на платформе ASP.NET Core. Здесь не будет объясняться спецификация данных протоколов, для этого есть полно статей на хабре. Перейдем к сути.

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

Как создать open source проект

Время на прочтение7 мин
Количество просмотров9.7K
Уже на этой неделе в Санкт-Петербурге пройдет IT-фестиваль TechTrain. Одним из спикеров будет Ричард Столлман. Embox тоже участвует в фестивале, и конечно мы не могли обойти вниманием тему СПО. Поэтому один из наших докладов называется “От студенческой поделки до opensource проекта. Опыт Embox”. Он будет посвящен истории развития Embox как проекта с открытым кодом. В данной статье я хочу поведать об основных идеях, которые по моему мнению влияют на развитие opensource проектов. Статья, как и доклад, основана на личном опыте.
Читать дальше →
Всего голосов 21: ↑19 и ↓2+17
Комментарии12

Курс лекций «Основы цифровой обработки сигналов»

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

Часто ко мне обращаются люди с вопросами по задачам из области цифровой обработки сигналов (ЦОС). Я подробно рассказываю нюансы, подсказываю нужные источники информации. Но всем слушателям, как показало время, не хватает практических задач и примеров в процессе познания этой области. В связи с этим я решил написать краткий интерактивный курс по цифровой обработке сигналов и выложить его в открытый доступ.

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


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

Процедурная генерация планет

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

От переводчика:
Представляю вашему вниманию статью авторства Andy Gainey, в прошлом независимого разработчика игровых инструментов, ныне сотрудника Paradox Development Studio. На мой взгляд, автор играючи создал один из лучших процедурных генераторов планет с открытым исходным кодом.

Читать дальше →
Всего голосов 96: ↑94 и ↓2+92
Комментарии17

Генерируем тайловые уровни и прячем квадраты от игрока

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

Генерация уровней в Unexplored 2


Мы очень гордимся генератором уровней игры Unexplored 2, это программа, отвечающая всем современным требованиям. В посте я расскажу о том, как создаются уровни игры.

Нам не пришлось заново изобретать велосипед. В Unexplored 1 мы уже создали техники, которые сильно повлияли на успех первой игры. Unexplored 2 просто продолжила начатое. Фундамент нашей технологии состоит из двух частей: мы применяем многоэтапную генерацию, которая почти имитирует процесс, очень похожий на работу живого дизайнера уровней. Поверх него мы используем технику под названием "циклическая генерация подземелий", которая гораздо лучше справляется с генерацией естественно выглядящих уровней, чем большинство стандартных приложений генеративного создания контента. В этом посте я расскажу о первом аспекте. Адаптация циклической генерации подземелий к Unexplored 2 будет темой будущего поста.

Имитация «человеческого» дизайна уровней


Генератор уровней разбивает процесс генерации уровня на целое множество управляемых этапов. Он проходит путь от высокоуровневого планирования до низкоуровневой детальной карты уровня. По сути, он сначала создаёт набросок уровня, а затем начинает добавлять детали, пока уровень не станет завершённым и заполненным.
Читать дальше →
Всего голосов 50: ↑50 и ↓0+50
Комментарии7

MessageBox для AvaloniaUI

Время на прочтение2 мин
Количество просмотров7.6K
MessageBox — достаточно часто используемая форма для различных графических фреймворков, но почему-то в avalonia ей не нашлось место, тогда подарим ей жизнь самостоятельно.

Читать дальше →
Всего голосов 14: ↑11 и ↓3+8
Комментарии3

Дизайн уровней и геймплея roguelike на примере Cogmind

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

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

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

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

Учтите, что в отличие от большинства карт Cogmind, из-за своей природы эта конкретная карта имеет в основном статичную схему и контент, и в ней не так активно используются процедурные методы. Поэтому в процессе отсутствуют некоторые этапы, но их я рассмотрю в отдельной статье. С другой стороны, по большей части статичная карта сама по себе предоставляет уникальные возможности анализа.
Читать дальше →
Всего голосов 22: ↑20 и ↓2+18
Комментарии0

Чек-лист: что нужно было делать до того, как запускать микросервисы в prod

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

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


К сожалению, некоторые невысокие программисты всерьёз полагают, что Dockerfile с какой-нибудь вообще любой командой внутри — это уже сам по себе микросервис и его можно деплоить хоть сейчас. Докеры крутятся, лавешка мутится. Такой подход оборачивается проблемами начиная с падения производительности, невозможностью отладки и отказами обслуживания и заканчивая кошмарным сном под названием Data Inconsistency.


Если вы ощущаете, что пришло время запустить ещё одну аппку в Kubernetes/ECS/whatever, то мне есть чем вам возразить.


English version is also available.

Читать дальше →
Всего голосов 138: ↑135 и ↓3+132
Комментарии71

Информация

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