Рубрики
Без рубрики

Проект Эшер

Меня действительно интересует x11 но я разработчик java. Java охватывает большую часть разработки настольных приложений… Помечено как show dev, java, x11.

Меня действительно интересует x11 но я разработчик java. Java охватывает разработку большинства настольных приложений с помощью swing и javafx . В результате использование x11 непосредственно в java не очень распространено. Изучая свои варианты, я начал изучать старый проект под названием эшер . Эшер начал с sourceforge но на github есть форк , который также опубликован в maven central. За последние несколько дней я проделал довольно много работы самостоятельно форк .

Форк на github был основан на источниках версии 0.3, но после версии 0.3 в репозитории mercurial прошло несколько лет разработки. Я смог преобразовать историю mercurial в git и начать с нее свою вилку. Я следовал этому руководству .

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

После объединения всего кода и компиляции обнаружилась ошибка. Каждый Ввод событие, возвращенное из X11, было LAST_EVENT . Это специальный код, который, по-видимому, означает null. Я смог отладить это и обнаружил, что это был простой == это должно было быть != .

XephyrRunner – это созданный мной помощник по тестированию, который обрабатывает запуск и остановку сервера x11 для интеграционных тестов. Я также использую его для “демонстрационного теста”, который является способом автоматизации запуска демонстрационного кода.

У Эшера не было способа подключиться к сокету unix. Оказалось, что он поддерживает только tcp-соединения. Большинство развертываний X11 никогда не поддерживают tcp-соединения из-за соображений безопасности. Я нашел другую библиотеку под названием junixsocket и использовал ее для подключения эшера к x11 через сокет unix.

Во всех других моих проектах я использую travis-ci . Для эшера я использовал действия github . Действия Github хорошо интегрированы в github и позволяют сообществу легче обмениваться CI. Однако мне все еще нужно выяснить, как запустить на нем тесты x11.

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

Зачем кому-то проходить через эти трудности, чтобы вернуть в основном мертвый проект из могилы sourceforge? Как я уже сказал, я хочу работать над X11 на java. У меня есть идея для оконного менеджера, и я думаю, что java может многое предложить в этом пространстве.

Устаревший код есть везде. Мне нравится определять его как код без тестов, но это упрощение. Это очень распространено на работе. Тенденция, которую я заметил, заключается в том, что шаблон создания устаревшего кода практикуется между разными проектами. Устаревший код также копируется между проектами. Иногда добавляются тесты, и код преобразуется в соответствии с лучшими стандартами, но могут быть и другие копии, которые продолжают жить, в то время как “хороший” код умирает. Даже новые идеи разрабатываются с использованием устаревшего кода. Из-за этой тенденции и моего желания “владеть” кодом и быть уверенным в нем, я трачу столько времени, сколько позволено, на тестирование и рефакторинг кода. Мне нравится находить лучшие шаблоны и создавать хорошие API-интерфейсы из старого кода.

Эшер все еще может оказаться мертвым кодом в моем репозитории github но до сих пор это был отличный опыт.

Пока пока!

Оригинал: “https://dev.to/moaxcp/project-escher-4d7c”