JetBrains MPS — IDE для разработки проблемно-ориентированных языков программирования

Автор: admin от Вчера, 22:05, посмотрело: 20

Введение


MPS — это среда разработки языков программирования на платформе Intellij Idea. Она предоставляет возможность моделировать языки программирования, описывать структуры, сосредотачиваясь конкретно на дизайне и бизнес-логике, не отвлекаясь на парсеры, лексеры и различные сторонние фичи языка. Что нужно сразу обозначить: язык, который разрабатывается с помощью MPS, не компилируется в рабочую программу. Чаще всего он генерируется в модели других языков либо в текстовую форму.

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

Документация очень подробная, описывает все возможности, но если нет осознания «что я делаю и зачем мне это делать», то она вряд ли будет полезна. Также есть серия уроков от JetBrains на YouTube, но опять же, я более-менее начал понимать, что происходит, только после двух просмотров всей серии и досканального изучения предлагаемых sample проектов.

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

Категория: Программирование

 

MMO с нуля. С помощью Netty и Unreal Engine. Часть 1

Автор: admin от Вчера, 12:15, посмотрело: 42

Всем привет! В нескольких статьях я хотел бы поделиться опытом создания подобия ММО игры используя Unreal Engine и Netty. Возможно архитектура и мой опыт кому-то пригодится и поможет начать создавать свой игровой сервер в противовес unreal dedicated server, который слегка прожорлив или заменить собой фреймворки для разработки многопользовательских игр такие как Photon.



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




  • Часть 1. Общая картина, сборка библиотек, подготовка клиента и сервера к обмену сообщениями

  • Часть 2. Наращивание игрового функционала

  • Часть 3. Бонус материал. HLSL шейдеры в Unreal Engine, генерация ландшафтной сетки с помощью алгоритма Diamond Square, динамическая подгрузка моделей из сети



MMO с нуля. С помощью Netty и Unreal Engine. Часть 1 ->

Категория: Программирование, Веб-разработка

 

Фотографируем объекты в C#: хроника и сопоставление снимков, реконструкция состояния по снимку

Автор: admin от 21-07-2017, 20:35, посмотрело: 30

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



Данная задача включает две подзадачи:



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



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



В статье мы рассмотрим обобщённый и очень лаконичный [размером в несколько строк кода!] подход к решению подобного рода задач, основанный на использовании библиотеки Replication Framework.



Фотографируем объекты в C#: хроника и сопоставление снимков, реконструкция состояния по снимку
->

Категория: Программирование

 

Я являюсь причиной появления венгерской нотации в Android

Автор: admin от 18-07-2017, 16:40, посмотрело: 29

Все из нас видели это:



private String mName;


Это из-за меня.

Я так и сказал — это моя вина.

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


  • Как появилась m-нотация.

  • Почему вы, вероятно, не понимаете, что такое венгерская нотация.

  • ->

    Категория: Веб-разработка, Game Development, Android

     

    Применение преобразования Фурье для создания гитарного тюнера на Android. Часть 1

    Автор: admin от 17-07-2017, 16:25, посмотрело: 28

    Применение преобразования Фурье для создания гитарного тюнера на Android. Часть 1

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

    В первой части статьи мы рассмотрим принцип работы дискретного преобразование Фурье, а также возможность записывать звуковые данные с Android устройства с помощью класса AudioRecord.

    Категория: Программирование » Веб-разработка

     

    Вышел Upsource 2017.2 с поддержкой внешних инспекций кода, Python, NPM и многим другим

    Автор: admin от 15-07-2017, 18:20, посмотрело: 22

    Всем привет!

    У нас отличные новости — вышел Upsource 2017.2! В этом релизе мы добавили ряд наиболее часто запрашиваемых возможностей, и, как обычно, улучшили уже имеющуюся функциональность.

    Давайте посмотрим, что попало в этот релиз.



    Поддержка внешних инспекций кода

    Если Вы используете встроенные в TeamCity инспекции кода на базе ReSharper или IntelliJ IDEA, или пользуетесь инспекциями SonarQube, теперь Вы сможете извлечь из них дополнительную пользу. Upsource 2017.2 умеет показывать результаты такого анализа в своем UI, наряду с результатами встроенных инспекций. Рецензирование кода становится немного проще, если сразу видно, какие новые потенциальные проблемы привнесло именно это изменение.

    Вышел Upsource 2017.2 с поддержкой внешних инспекций кода, Python, NPM и многим другим


    ->

    Категория: Программирование

     

    Рано закапывать Java

    Автор: admin от 14-07-2017, 07:00, посмотрело: 24

    Рано закапывать Java



    Много было сказано про «красоту» кода на Java, но на мой взгляд, главное — не инструмент, а умение им пользоваться. Под катом попытка написать декларативный DSL для вёрстки под Android даже не изобретая новый язык программирования! ->

    Категория: Веб-разработка, Android

     

    Что нового в CUBA Platform 6.5

    Автор: admin от 13-07-2017, 08:35, посмотрело: 21

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



    Под катом:




    • Uber JAR

    • UI-компонент для предиктивного поиска

    • Версионирование REST API

    • Балансировка нагрузки в кластере

    • Компонент приложения ZooKeeper

    • Улучшения в Polymer UI

    • Поддержка Bean Validation в CUBA Studio

    • Поддержка Groovy в слушателях сущностей

    ->

    Категория: Программирование

     

    Запуск Java классов и JAR-ов не по учебнику

    Автор: admin от 11-07-2017, 19:10, посмотрело: 29

    Меня давно занимала мысль как в Linux-е запускать программы на Java без вспомогательных Bash скриптов. Я не видел приемлемого решения, если не считать способ «bash script payload», когда в конец скрипта помещается бинарный файл.

    Но на прошлой неделе случайно наткнулся на модуль ядра binfmt_misc, с помощью которого можно перехватить исполнение файла по его magic number. Для этого через update-binfmts добавляется собственный обработчик для получения имени исполняемого файла и аргументов пользователя.

    Категория: Веб-разработка, Linux, Ubuntu

     

    Чему я научился, конвертируя проект в Kotlin при помощи Android Studio

    Автор: admin от 8-07-2017, 12:25, посмотрело: 28

    К большой моей радости, мне наконец выдалась возможность поработать с популярным языком Kotlin — конвертировать простенькое приложение из Java при помощи инструмента Convert Java File to Kotlin из Android Studio. Я опробовал язык и хотел бы рассказать о своем опыте.



    Я быстро убедился, что этот инструмент конвертирует большую часть классов в Java практически безукоризненно. Но кое-где пришлось подчистить за ним код, и в процессе я выучил несколько новых ключевых слов!



    Ниже я поделюсь своими наблюдениями. Прежде, чем мы начнем, замечу: если вы в какой-то момент захотите взглянуть, что происходит «под капотом», Android Studio позволяет отслеживать все процессы; просто перейдите в панели по следующему пути: Tools -> Kotlin -> Show Kotlin Bytecode.



    Чему я научился, конвертируя проект в Kotlin при помощи Android Studio ->

    Категория: Веб-разработка, Android

     
    Назад Вперед