
Как подумать о том что хорошо бы реализовать idea для php и вляпаться в разработку
himysay 22 минуты назад Как подумать о том что хорошо бы реализовать idea для php и вляпаться в разработку Простой 6 мин 274 Java * Мнение Это первая статья о том как я начал изучать как работают инструменты разработки...
В сфере искусственного интеллекта произошло заметное событие. himysay 22 минуты назад Как подумать о том что хорошо бы реализовать idea для php и вляпаться в разработку Простой 6 мин 274 Java * Мнение Это первая статья о том как я начал изучать как работают инструменты разработки для языка программирования PHP. С какими я трудностями столкнулся, и как я это решал. В этой первой статье я опишу о том почему не подошли готовые решения для редактора кода, основное готовое решение для редактора кода был выбран CodeArea от ReachTextFXСтэк технологий был выбран такой:Java - как платформа разработки Gradle - как менеджер пакетов для java JavaFX - для frontend приложения SqlLite - для хранение глобальных конфигураций и конфигураций проектовАрхитектура проекта изначально строилось так что бы логику отображения оставить в одном слое это как вы понимаете JavaFX со своим потоком, логика связанная с обработкой кода она тоже выделена в поток, логика работы с сокетами в основном это xdebug.
Что бы потоки и логика была мало зависимы друг от друга, с помощью DTO (Data Transfer Object) было описано состояние приложение, которое создается в сервисах бизнес-логики, и уже поток отображения читает это состояние и в зависимости от него строит интерфейс. Простой пример можно привести к примеру когда мы получили массив переменных из сокета xdebug и отображаем его в дереве переменных, если это массив значит срабатывает построение дерева, если текстовая переменная просто отображается текст. Есть еще один ключевой момент архитектуры, я сразу заложил функционал диспетчера, и многие внутренние процессы такие как открытие файла, обработка сообщений от xdebug, обработка кода и так далее сделаны на том что в момент какого либо действия, отсылается сообщение что это действие произошло с объектом описывающим данное действие, и уже все остальные сервисы подписывают обработчики на данное сообщение.
Это сделано на будущее для функционала плагинов, плагин можно полностью написать на Observers (Наблюдателей за тем или иным действием). Остановимся на плюсах и минусах второго редактора более подробноОсновные плюсы CodeArea следующие:Подсветка через regexp внутри есть StyledDocument который разбивает строку на токенны соответствующие регулярному выражению. Работа с параграфами (строками)Редактор кода сам по себе довольно быстро работает Простые фабрики для Gatera Мульти-каретка - несколько кареток в одном редакторе Управление позиционированиемНо не смотря на реализацию и гибкость есть и довольно сильные минусы:Gater - реализован как элементы в начале строки, то есть из этого вытекает много проблем несвязанности, вычисление размеровНельзя каким либо нормальным способом добавить свой элемент в сам редактор (к примеру волнистую линию для ошибочных строк) приходиться добавлять в gutter элемент и его откреплять от layout и в ручную вычислять размеры, позицию, видимость и устанавливать их элементу, что кажется что это кастыль а если кажется то оно так и есть.
Этот прогресс даёт важные сигналы о будущем отрасли, и технологический мир внимательно наблюдает.





