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

Web-разработчик, gamedev-проходимец

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

Паттерны многопоточности в Go

Уровень сложностиПростой
Время на прочтение16 мин
Количество просмотров15K

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

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

Читать далее

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

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

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

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

Читать далее

Взламываем сеть при помощи ESP32

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

Введение

Семейство микроконтроллеров ESP имеет кучу применений как в повседневной жизни, так и в узких отраслях. Рассмотрим микроконтроллер ESP32, так же его интересную прошивку.

WARNING

Важно отметить, что прошивка платы ESP32 для тестирования Wi‑Fi на уязвимости должна использоваться исключительно в рамках законных и этичных целей. Автор статьи не несёт ответственности за неправомерное использование данной информации или применение её в целях нарушения законодательства. Любые действия, основанные на данной статье, должны быть согласованы с соответствующими законами и нормативными актами.

Читать далее

Что почитать игровому программисту?

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

Объём специфичных знаний, которые требуются рядовому программисту игр, даже если он только начал свою карьеру, вызывает у меня «лёгкую» тоску. Это одна из причин, почему большая часть людей, которые «горят делать игры», отсеивается на этапе технических собеседований (обычно их больше одного). Это нормально и грустно. Добавьте сюда, что нефундаментальные знания, вроде инструментов, библиотек и движков, приходится обновлять где‑то раз в 5–7 лет. Не вижу тут, что игрострой сильно отличается от других областей разработки. Если бы лет 15 назад «добрый я» скинул на почту список книг, которые придется прочитать и осмыслить, армия собранных граблей не была бы столь большой и разнообразной, и без ручек половинной длины. Осторожно, в конце статьи будет супердлинная картинка (взята с github отсюда, с разрешения автора).

У программиста нет цели, только путь.

Руководство по CMake для разработчиков C++ библиотек

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

Данное руководство позволит читателю составить полную картину того, как организовать сборку C++ библиотек с использованием современных возможностей CMake. Предполагается, что читатель имеет представление о базовых понятиях из мира CMake и динамических/статических C++ библиотек, так как в руководстве они могут не объясняться.

Читать далее

Что читать разработчику C++

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

В этой подборке — не только классические рекомендации книг для C++ программистов. Обычно советуют издания про паттерны, развитие стандарта или успехи большой компании. Но за всем этим изобилием «экспертных советов» и best practices теряется одна простая мысль: язык программирования — это средство выражения мысли от одного разработчика другому, а также средство описания пользовательского API в самом широком смысле.

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

Первые 5 книг этой подборки — в меньшей степени про технику, в большей степени об осознанности деятельности C++ программистов любого уровня. Остальные — «золотой фонд» классической литературы для C++ разработчиков.

Читать далее

Пишем сервис на GO. Backend для апплета

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


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


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


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

Читать дальше →

Процедурно генерируемые карты мира на Unity C#, часть 1

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

В этом цикле статей мы научимся создавать процедурно генерируемые карты мира с помощью Unity и C#. Цикл будет состоять из четырех статей.
Читать дальше →

Использование алгоритма Прима для генерации соединённых друг с другом пещер

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


Я решил объяснить один из алгоритмов генерации карты, используемых в моей игре In the House of Silence. Главное преимущество этого способа заключается в том, что в отличие от других алгоритмов, он никаким образом не может сгенерировать карту с разделёнными частями.

Генерация идеального лабиринта



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

Для понятности я привёл псевдокод, описывающий алгоритм Прима. Будет довольно просто приспособить его под любой язык программирования.
Читать дальше →

Полезные книги для программиста в геймдеве

Время на прочтение2 мин
Количество просмотров102K
Привет, Хабр!
Ничего не писал со времен своей первой статьи, решил, что пора это исправить.

Существует мнение, что про геймдев внятной литературы почти нет, все знания надо получать практическим путем. С моей точки зрения, в этом мнении есть зерно истины, тем не менее, я не могу полностью с ним согласиться.

Ниже я даю рецензии на книжки, которые считаю очень полезными в различных разделах computer science, которые используются в геймдеве. Я намеренно опускаю книги по C++ и алгоритмам: мне кажется, эта тема уже настолько изучена и освещена, что больше про нее не стоит рассказывать.

Я старался покрыть максимальное количество разных топиков, особенно тех, что спрашивают на собеседованиях. Я старался воздерживаться от domain-specific литературы: профессионалы и так знают. Все картинки содержат ссылки на амазон.

А какие книжки нравятся вам?
Также в комментах можете писать, на какие темы вам были бы интересны посты.

Читать дальше →

5 инструментов геймдизайнера, которые помогут вашей игре

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


Видеоигры существуют более 50 лет. За это время технологии скакнули от текстовой The Oregon Trail до фотореалистичной Red Dead Redemption 2. Не говоря уже о VR-тайтлах вроде Half-Life: Alyx, которая выходит в конце марта.

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

Немного о простом. Тест-дизайн. Часть 1

Время на прочтение10 мин
Количество просмотров297K
Сегодня тестирование ПО, один из ключевых процессов создания продукта. Неважно, какую Вы используете методологию, подход, процесс, тестирование ПО так или иначе всегда существует в Вашем процессе. В последние годы (да даже наверное десятилетие) тестирование ПО сформировалось в отдельную область ИТ, которая постоянно развивается в мировом сообществе.
Читать дальше →

Выкладка go pet проекта на VPS

Время на прочтение4 мин
Количество просмотров4.8K
Привет, Хабр! Меня зовут Артем Желтак, я teamlead, а также преподаватель курса “Разработчик Golang” в OTUS. В преддверии старта нового потока курса, хочу поделиться с вами своей авторской статьей.


Я верю, что Golang прекрасен, но в мире еще много php и других проектов работающих на VPS, VDS. Можно поставить туда докер, но это (по мнению автора) переусложнение задачи. Можно компилировать файлик и загружать по FTP — небезопасно и не по феншую, SFTP — безопаснее, но снова не феншуй. Тогда давайте автоматизируем этот процесс через CircleCI. Мы будем по шагам писать файл конфигурации для CI, в конце соберем результат и запустим deploy.



Читать дальше →

Лекции Технопарка. 1 семестр. Алгоритмы и структуры данных

Время на прочтение2 мин
Количество просмотров168K
Очередной пост в рамках нашего цикла лекций Технопарка. В этот раз мы предлагаем вашему вниманию курс, посвящённый алгоритмам и структурам данных. Автор курса — Степан Мацкевич, сотрудник компании ABBYY.

Лекция 1. Основы


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


Читать дальше →

Пишем блог на микросервисах – часть 2 «API Gateway»

Время на прочтение5 мин
Количество просмотров20K
В первой части нашего цикла статей «Пишем блог на микросервисах» мы описали общий подход к решению задачи.

Теперь пришла очередь API Gateway или API GW.

В нашем c ptimofeev API GW мы реализуем следующие функции:

  • Конвертация REST запросов в gRPC запросы и наоборот.
  • Логирование запросов.
  • Аутентификация запросов.
  • Присвоение каждому запросу Trace ID для дальнейшей передачи его между микросервисами по всей цепочке выполнения запроса.
Читать дальше →

Как оценить ёмкость сервиса и не упасть под нагрузкой

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


Рано или поздно любому растущему сервису приходится оценивать свои технические возможности. Сколько посетителей мы в силах обслужить? Какова ёмкость (она же capacity) системы? Не добрались ли мы до предела и не упадём ли, если привлечём ещё несколько тысяч пользователей? Сколько дополнительных вычислительных ресурсов заложить в бюджет на следующий год, чтобы соответствовать планам роста?

Ответы можно получить аналитическим путём, адресовав вопросы опытному разработчику/DevOps/SRE/админу. Достоверность оценки зависит от огромного числа факторов: начиная с темпов наполнения системы функциональностью и графа взаимосвязей между компонентами и заканчивая временем, которое эксперт с утра провёл в пробке. Чем сложнее система — тем больше сомнений в адекватности аналитической оценки.

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

Курс по C++ в CS центре, вторая часть

Время на прочтение3 мин
Количество просмотров11K
Computer Science Center — это совместная инициатива Computer Science клуба при ПОМИ РАН, компании JetBrains и Школы анализа данных Яндекса.

Центр существует, чтобы дать возможность талантливым студентам и выпускникам развиваться в интересных им направлениях: Computer Science, Data Science или Software Engineering.

Курс по C ++ в двух частях в центре читает Валерий Михайлович Лесин, valery-l, преподаватель CS центра и совместной магистратуры ИТМО и JetBrains «Разработка программного обеспечения / Software Engineering», технический директор Simlabs.

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

Раскусим новые возможности языка и стандартной библиотеки: move семантику, bind/function, enable_if/if constexpr, сoroutines и другие. Посмотрим на некоторые характерные задачи: многопоточное программирование, использование библиотек в Windows и Linux и другие.

Приятного просмотра!
Смотреть видео

Семь книг для тех, кто хочет стать гейм-дизайнером

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

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

Эта статья не является маркетингом описываемых материалов, а предоставляет информацию о том, где и чему учиться.
Читать дальше →

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

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

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

Читать дальше →

Learn OpenGL. Урок 4.10 — Инстансинг

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

Инстансинг


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

Информация

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