На Pixonic DevGAMM Talks выступал еще наш DTO Антон Григорьев. Мы в компании уже говорили, что работаем над новым PvP-шутером и Антон поделился некоторыми нюансами архитектуры этого проекта. Он рассказал, как построить разработку, чтобы изменения в игровой логике клиента появлялись на сервере автоматически (и наоборот), и можно ли не писать код, но при этом минимизировать трафик. Ниже — запись и расшифровка доклада.
Рубрика «кодогенерация» - 2
Общая игровая логика на клиенте и сервере
2018-11-12 в 10:40, admin, рубрики: ecs, entity component system, unity3d, Блог компании Pixonic, геймдев, игровая логика, игры, код, кодогенерация, конференции, проектирование, Проектирование и рефакторинг, разработка, разработка игр, рефакторингPHP-DataGen — генератор PHP классов со строго-типизированными свойствами
2018-07-01 в 19:08, admin, рубрики: cli, php, кодогенерация, Компиляторы, ПрограммированиеВведение
Помимо многих проблем, в PHP существует проблема строгой типизации переменных и свойств классов, точнее её отсутствие. Более того, нет даже возможности однозначно задать какие будут свойства у объектов того или иного класса, пользуясь только синтаксисом и не прибегая к так называемым магическим методам (потому что любое свойство может быть удалено при помощи оператора unset
, а также к объекту может быть дописано несуществующее ранее свойство).
Однако при разработке часто возникает потребность в чётком знании, что можно ожидать от объекта, а чего можно не ожидать. Разумеется, можно пойти простым путём: сделать все свойства protected
и понаписать геттеров и сеттеров. Много бойлерплейта, хочется проще. Лично я пытался решить эту проблему с помощью трейтов, но выходило всё равно некрасиво. Так и появилась идея этого проекта…
Кому интересно, добро пожаловать под кат!
Читать полностью »
Кодогенерация в Uber
2018-06-08 в 11:03, admin, рубрики: android, android development, codegen, java, kotlin, uber, Блог компании e-Legion Ltd., кодогенерация, разработка мобильных приложений, Разработка под androidКаждый из нас делает рутинную работу. Каждый пишет boilerplate код. Зачем? Не лучше ли автоматизировать данный процесс и работать только над интересными задачами? Читай эту статью, если хочешь, чтобы такую работу за тебя делал комп.
Данная статья написана на основе расшифровки доклада Зака Свирса (Zack Sweers), разработчика мобильных приложений Uber, с которым он выступил на конференции MBLT DEV в 2017 году.
Читать полностью »
Компактный сериализатор для кэша c использованием System.Reflection.Emit
2018-05-18 в 12:12, admin, рубрики: .net, C#, MSIL, кодогенерация, оптимизация, Разработка веб-сайтов, Серверная оптимизация, серверное кэширование
В современных сервисах без кэша никуда: доступ к данным в персистентной базе – дело долгое и затратное, поэтому добавление промежуточного хранилища для наиболее часто используемых данных значительно его ускоряет. Держать в кэше информацию можно самую разную и в разной форме: и строки, и списки, и состояние сессии, и многое другое. В данной статье речь пойдёт об одном из способов хранении в кэше «плоских» объектов, не имеющих вложенных классов и циклических ссылок.
Читать полностью »
Как написать свой сваггер и не пожалеть об этом
2017-11-27 в 8:20, admin, рубрики: .net, C#, roslyn, кодогенерация, компилятор, Компиляторы, Проектирование и рефакторинг, рефакторинг, Совершенный кодКак-то раз моему коллеге в беклог упала задача «хотим организовать взаимодействие с внутренним REST-api так, чтобы любое изменение контракта сразу приводило к ошибке компиляции». Что может быть проще? – подумал я, однако работа с получившимся кактусом вынудила заняться многочасовым курениям документации, спуску от привычных концепций оверинжинеринга «налепим побольше интерфейсов, добавим максимум косвенности, и приправим всё это DI» до переезда на .Net Core, ручной кодогенерации промежуточного ассемблера и изучения нового компилятора C#. Лично я для себя открыл много интересного как в рантайме, так и в структуре самого компилятора. Думаю, некоторые вещие уже знают, а некоторые станут полезной пищей для размышления.
Генерация кода на Python при помощи Hy
2017-11-09 в 14:53, admin, рубрики: python, кодогенерация, Лисп, Питон1. Что такое Hy
Hy — диалект Лиспа, который встроен в питон.
Благодаря тому, что Hy трансформирует свой Лиспоподобный код в Абстрактное Синтаксическое Дерево (AST) питона, с помощью Hy весь прекрасный мир питона — на кончиках пальцев и в форме Лиспа.

Пишем Guard
2017-06-13 в 8:34, admin, рубрики: .net, check, contracts, copy paster, exceptions, github, guard, java, nuget, open source, opensource, validation, исключения, кодогенерация, проверки, разработкаПривет!
Есть несколько способов проверять аргументы на правильность. Например, для проверки на null можно использовать:
- if (!ReferenceEquals(arg, null)) throw…
- Code Contracts: Contract.Requires(!ReferenceEquals(arg, null))
- Guard.IsNotNull(arg, nameof(arg))
В статье я рассмотрю только третий вариант (все примеры кода — для C#, однако некоторые из них будут полезны и в Java).
Советские «Эльбрусы» — обзор архитектуры
2016-10-25 в 4:43, admin, рубрики: superscalr stack processor, Анализ и проектирование систем, архитектура, кодогенерация, Компиляторы, Параллелизм, Проектирование и рефакторинг, реверс-инжиниринг, стек, стековые машины, суперскаляр, Эльбрус
Про предмет статьи ходит много домыслов — от «русский Барроуз» до «не имеющий аналогов». Вызвано это в немалой степени отсутствием (доступной) полноценной документации, немногочисленным кругом лиц, имевших с ними дело да и немалым временем, прошедшим с тех пор. «Эльбрус» превратился в один из мифов ушедшей эпохи.
С другой стороны, вычислительный комплекс несомненно существовал и показывал отличные для своего времени результаты. Возможно, благодаря скудости элементной базы, которая принуждала разработчиков к выдумыванию разного рода архитектурных трюков. Многие из этих трюков сейчас выглядят архаично, а некоторые достаточно актуальны.
Так что автор из свойственной ему любознательности попытался разобраться с доступной документацией и составить более — менее цельную картину. Если читателю это интересно — добро пожаловать под кат.
Читать полностью »
Кодогенерация в языке Go
2016-07-29 в 7:14, admin, рубрики: Go, golang, кодогенерация, ПрограммированиеВ данной статье хотелось бы рассмотреть некоторые возможности кодогенарации в рамках языка Go, которые могут частично заменить встроенную рефлексию и не потерять типобезопасность на этапе компиляции.
Язык программирования Go предоставляет мощные инструменты для кодогенерации. Очень часто Go ругают за отсутствие обобщений (generics) и это в самом деле может стать проблемой. И вот тут на помощь приходит кодогенерация которая на первый взгляд довольно трудна для небольших рутинных операций, но тем не менее является достаточно гибким инструментом. Уже существует некоторое количество готовых библиотек кодогенерации покрывающих базовые потребности в обобщениях. Это и «эталонный» stringer и более полезные jsonenums с ffjson А мощный gen и вовсе позволяет добавить в Go немного функциональщины, в том числе добавляет аналог так не хватаемого многим forEach для пользовательских типов. Ко всему прочему gen довольно легко расширяется собственными генераторами. К сожалению gen ограничен кодогенерацией методов для конкретных типов.
Собственно тему кодогенерации я решил затронуть не от хорошей жизни, а из за того, что столкнулся с небольшой задачей для которой не смог найти другого подходящего решения.
Читать полностью »