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

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

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

C++ быстрее и безопаснее Rust, Yandex сделала замеры

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

Спойлер: C++ не быстрее и не медленнее и вообще смысл не в этом. Эта статья является продолжением славных традиций развенчания мифов крупных российских компаний о языке Rust. Предыдущая была "Go быстрее Rust, Mail.Ru Group сделала замеры".


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


В 2019 году я был на конференции C++ CoreHard, слушал доклад Антона antoshkka Полухина о незаменимом C++. По словам Антона, Rust еще молодой, не очень быстрый и вообще не такой безопасный.

Антон Полухин является представителем России в ISO на международных заседаниях рабочей группы по стандартизации C++, автором нескольких принятых предложений к стандарту языка C++. Антон действительно крутой и авторитетный человек в вопросах по C++. Но доклад содержит несколько серьёзных фактических ошибок в отношении Rust. Давайте их разберём.

Всего голосов 175: ↑159 и ↓16+198
Комментарии1205

Мифы и легенды о переполнении целых чисел в Rust

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

Примитивные целочисленные типы, поддерживаемые процессорами, являются ограниченным приближением к бесконечному набору целых чисел, которыми мы привыкли оперировать в реальной жизни. Это ограниченное представление не всегда совпадает с "реальными" числами, например 255_u8 + 1 == 0. Зачастую программист забывает об этой разнице, что легко может приводить к багам.

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

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

Моя версия костюма отслеживания движений

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

Предыстория


Много времени утекло с того момента, как я стал начинающим «ардуинщиком». После заказа «стартового набора» из поднебесной и поморгал светодиодами, и покрутил сервоприводами, и даже собрал простенькую платформу Гью-Стюарта из кусков упаковочного полиэтилена, скрепок, кнопок и копеечных сервоприводов SG90.

image

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

С этой платформы и началась, может быть даже кому-то интересная история. Управлять платформой с помощью клавиатуры или джойстиком интересно, но управлять ею датчиком положения в пространстве — интереснее вдвойне. Пробуя корректно заставить работать очень известный датчик от TDK — InvenSense MPU-9250, вспомнилась статья уважаемого ObelardO — «Как я делал костюм захвата движений» и затаилась идея в голове повторить этот опыт.

Что из этого получилось, можно увидеть и прочесть под катом.
Всего голосов 32: ↑32 и ↓0+32
Комментарии52

Добавляем параллельные вычисления в Pandas

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

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


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

Алгоритмы рандома

Время на прочтение5 мин
Количество просмотров76K
В этой статье вы увидите самые разнообразные велосипеды алгоритмы для генерации случайных чисел.

Про что статья


Про алгоритмы генерирующие псевдослучайные числа, которые отличаются между собой качеством результата и скоростью исполнения. Статья будет полезна тем, кто хочет получить высокопроизводительную генерацию чисел в своих программах или разработчикам софта для микроконтроллеров и старых платформ по типу ZX Spectrum или MSX.
Читать дальше →
Всего голосов 20: ↑19 и ↓1+28
Комментарии19

Нейроэволюция киберкальмаров

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

Эволюционирующая нейросеть


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

Для создания нейронных сетей, обеспечивающих поведение без обучения, можно использовать нейроэволюцию. Эволюционные алгоритмы (например, такой, который я использовал для выполнения эволюции растений) подвергают генетический код эволюции в течение долгого периода времени. Генетический код (модель для ДНК) и представляемый им организм изначально очень просты, но в течение многих поколений небольшие мутации увеличивают благоприятную сложность и добавляют функции, стимулирующие дальнейшее распространение этих свойств.

Цифровые кальмары


Чтобы продемонстрировать действие нейроэволюции, я хочу подвергнуть эволюции цифровых кальмаров. Кальмары обладают следующими свойствами:


Рисунок 1: плавающий кальмар.
Читать дальше →
Всего голосов 23: ↑22 и ↓1+32
Комментарии14

Подбор экипировки игровому персу при помощи генетики/эволюции на Python

Время на прочтение21 мин
Количество просмотров3.9K
Как подобрать лучшую экипировку в любимой игре? Конечно, можно банально перебрать все её возможные сочетания (например, для разбойника из World of Warcraft) и найти наилучшее. Без всякой магии и машинного обучения. Но можно ли добиться этого результата не «в лоб», а при помощи генетических алгоритмов, не примеряя каждую комбинацию? Интересно узнать, как размножаются и эволюционируют разбойники? Поехали.

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

Геймдизайнер с нуля: как начать делать игры без опыта

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

Голубев Никита, коммерческий автор и переводчик, специально для блога Нетологии перевёл статью разработчика игр Анжелы Хе о том, как без навыков программирования создать свою первую игру.


Всего 2 года назад я была 17-летней школьницей и ничего не знала о программировании. Это не помешало мне начать учиться и через несколько месяцев выпустить свою первую игру в Steam. Сегодня у меня более 10 игр для ПК, интернета и мобильных устройств и свыше 1,9 млн игроков.


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

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

Нейросети для детей: объясняем максимально просто

Время на прочтение7 мин
Количество просмотров17K
Всем привет. Ни для кого не секрет, что практически все статьи в нашем блоге публикуются к запуску того или иного курса. Следующую статью можно было бы приурочить к запуску курса «Нейронные сети на Python», но с учетом простоты материала, я не хочу связывать его с курсом, а просто выкладываю в качестве бонусного материала, как небольшой туториал для самых маленьких. Предвещая вопросы, хочу сразу сказать о том, что эта статья не имеет отношения к курсу и написана не преподавателем. Если же у вас есть желание подробнее узнать о курсе, то сделать это можно на соответствующей странице.




Всем привет! Сегодня я хочу рассказать о том, как устроены нейросети, но так просто, что понять могут даже начинающие, которые освоили только самые основы Python.
Читать дальше →
Всего голосов 10: ↑5 и ↓5+2
Комментарии1

Видеозвонки с виртуальным фоном и опенсорсные инструменты

Время на прочтение11 мин
Количество просмотров36K
Сейчас, когда многие из нас находятся на карантине из-за COVID-19, видеозвонки стали куда более частым явлением, чем раньше. В частности, сервис ZOOM неожиданно стал очень популярным. Вероятно, самой интересной возможностью Zoom является поддержка виртуального фона (Virtual Background). Она позволяет пользователям, в интерактивном режиме, заменять фон, находящийся позади них, на любое изображение или видео.



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

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

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

Как оказалось, применив готовые опенсорсные компоненты и написав буквально несколько строк собственного кода, можно получить весьма достойные результаты.
Всего голосов 47: ↑45 и ↓2+66
Комментарии37

Школа стелса: 5 типов гаджетов в стелс играх

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

Автор YouTube-канала Game Maker's Toolkit Марк Браун опубликовал новое видео, в котором рассказал о гаджетах, используемых в стелс играх. Решил сделать разбор видео про 5 типов гаджетов в этих играх в своей статье.



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

Создание интерфейса для игры

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

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

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




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

API как продукт: как монетизировать свою работу, когда разбираешься только в бэкенде

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


В этой статье я перескажу свой опыт создания, развёртывания и продажи API на специализированном маркетплейсе. Мне не пришлось делать вебсайт или придумывать, как внедрить решение для обработки платежей – я просто написал код и развернул API.

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

За последний год я придумал план выпуска собственного продукта, который не предполагает работы с аудиторией и/или обработки платежей. Вся процедура состоит из трех шагов:
Читать дальше →
Всего голосов 18: ↑18 и ↓0+18
Комментарии5

Вычисления на GPU – зачем, когда и как. Плюс немного тестов

Время на прочтение12 мин
Количество просмотров89K
Всем давно известно, что на видеокартах можно не только в игрушки играть, но и выполнять вещи, никак не связанные с играми, например, нейронную сеть обучить, криптовалюту помайнить или же научные расчеты выполнить. Как так получилось, можно прочитать тут, а я хотел затронуть тему того, почему GPU может быть вообще интересен рядовому программисту (не связанному с GameDev), как подступиться к разработке на GPU, не тратя на это много времени, принять решение, нужно ли вообще в эту сторону смотреть, и «прикинуть на пальцах», какой профит можно получить. 


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

Процедурная гидрология: динамическая симуляция рек и озёр

Время на прочтение15 мин
Количество просмотров8.3K
Примечание: полный исходный код проекта выложен на Github [здесь]. В репозитории также содержится подробная информация о том, как читать и использовать код.

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

Я исследовал уже существующие методики процедурной генерации рек и озёр, но найденные результаты меня не устроили.

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

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

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

В своём методе я стремлюсь одновременно и к простоте, и к реализму ценой небольшого повышения сложности базовой системы эрозии. Рекомендую прочитать мою предыдущю статью об этой системе [здесь, перевод на Хабре], потому что новая модель строится на её основе.
Всего голосов 22: ↑22 и ↓0+22
Комментарии4

Blitz.Engine: Ассетная система

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


Прежде чем разбираться в том, как работает ассетная система движка Blitz.Engine, нам необходимо определиться с тем, что такое ассет и что именно мы будем понимать под ассетной системой. Согласно Википедии, игровой ассет — это цифровой объект, преимущественно состоящий из однотипных данных, неделимая сущность, которая представляет часть игрового контента и обладает некими свойствами. С точки зрения программной модели, ассет может выступать в виде объекта, созданного на некотором наборе данных. Ассет может храниться в виде отдельного файла. В свою очередь, ассетная система — это множество программного кода, отвечающего за загрузку и оперирование ассетов различных типов.

Фактически ассетная система — это большая часть игрового движка, которая может стать верным помощником для разработчиков игры или же превратить их жизни в кромешный ад. Логичным, с моей точки зрения, решением было сконцентрировать этот «ад» в одном месте, бережно оберегая от него других разработчиков команды. О том, что у нас получилось, мы и расскажем в этом цикле статей — поехали!
Читать дальше →
Всего голосов 8: ↑8 и ↓0+8
Комментарии8

Строим города по клику мыши с Houdini и Python

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


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

Эта статья как раз про подобное. Автор придумал метод постройки виртуальных городов, который в перспективе хочет превратить в полноценный инструмент левел-дизайнера.
Читать дальше →
Всего голосов 52: ↑52 и ↓0+52
Комментарии5

Кроссплатформенные оптимизации OpenCV

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

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


Мы рассмотрим абстракцию parallel_for_ и механизм Universal Intrinsics и то, как переиспользовать это в вашем проекте.


Статья основана на лекции, которую команда OpenCV читала в рамках зимнего лагеря по оптимизации от Intel в 2020 году. Также доступна видеозапись этой лекции.


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

Сохраните в закладках эту статью, если вы новичок в Python (особенно если изучаете Python сами)

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

Привет, Хабр! Представляю вашему вниманию перевод статьи "Bookmark this if you are new to Python (especially if you self-learn Python)" в двух частях (1, 2) c простыми, но полезными советами и трюками в Python.



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


Уточнение: в настоящее время я использую Python 3.8. Если вы столкнулись с какими-либо проблемами во время запуска моих примеров, пожалуйста, проверьте, не связано ли это с вашей версией Python.

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

Как подготовить игру к портированию на ПК и консоли

Время на прочтение9 мин
Количество просмотров16K
Преимущества кроссплатформенных игр уже долгое время обсуждаются в кругах геймеров, но мало освещаются в среде разработчиков. Существует не так много статей о базовых вещах, необходимых для создания кроссплатформенной игры.

Тем не менее, кроссплатформенность сейчас находится на подъеме. Появляется все больше и больше игр, обладающих этим свойством. Fortnite, Call of Duty, Street Fighter ― все они разных жанров, по-разному реализованы, но в той или иной степени обладают функциями кроссплатформенности.

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

Зачем нужно делать игру кроссплатформенной?

Для игроков это здорово: не нужно выбирать, на каком устройстве запускать игру, ― можно беспрепятственно играть с друзьями, не беспокоясь о том, есть ли они в базе игроков.

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



Отлично, так давайте портировать нашу игру на несколько платформ!

Конечно, звучит классно, почему бы и нет. Вот только…

Во «Властелине колец», если вы помните, на совете Элронда герои тоже обсуждали, мол, давайте же просто сделаем, что должны, на что Боромир сказал:



А все потому, что Боромир знает: создание полноценной кроссплатформенной игры ― это не так-то просто.

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

Если вы уже издавали игры раньше, значит, вы имели дело с их отправкой на различные платформы и знаете возможности каждой из них, что будет хорошей основой для сегодняшнего материала ― и, кроме того, поможет на начальном этапе подготовки.
Читать дальше →
Всего голосов 27: ↑25 и ↓2+29
Комментарии0

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность