Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Дальнейшие планы на репозиторий #11

Open
8 of 11 tasks
SEVA77 opened this issue Sep 28, 2021 · 14 comments
Open
8 of 11 tasks

Дальнейшие планы на репозиторий #11

SEVA77 opened this issue Sep 28, 2021 · 14 comments

Comments

@SEVA77
Copy link
Owner

SEVA77 commented Sep 28, 2021

Писать это все на английском тяжело, по этому будет все на русском.

Записывать это все в project boards как-то не очень удобно, по этому все будет по старинке в одном ишью...

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

Раньше я просто брал проект основного разработчика и вносил свои уже готовые изменения из папки Step1-Java, а после компиляции переносил вручную результат компиляции из папки war в свою папку Step2-JavaScript и там же компилировал в бинарники. На этот раз нужно эти две папки переместить в отдельную с названием либо samples, либо modified_files. Скорее всего в содержимом папки Step2-JavaScript не будет необходимости, т.к. оно и так будет полностью дублированно в папку war.

В остальном структура будет как у основных разработчиков с той лишь разницей, что все будет настроено под сборку через Maven. Благо готовый вариант настроек уже есть и я его уже протестировал: https://github.com/briangordon/circuitjs1. Это дает возможность собрать приложение без необходимости устанавливать Eclipse с GWT плагином.

Сборку в бинарники нужно также свести к консольным командам, чтоб в конечном итоге можно было написать один bash скрипт для полной сборки программы.

Итого нужно за один push сделать пока следующее:

  • Содержимое папки Step1-Java переместить в отдельную папку modified_files
  • Создать папку templates для производных языковых файлов, дополняющих основные, а также для конфигов, которые скриптами копируются в папку для сборки бинарников
  • Вставить проект основного разработчика в свой со структурой Maven проекта
  • Содержимое папки Step2-JavaScript переместить в папку war
  • Под новые изменения структуры репозитория не забыть поменять инструкции в README.md

В бинарники будет все компилироваться пока по старому через Web2Executable. В дальнейшем скорее всего найду консольный билдер, либо попытаюсь компилиловать через внутренние ресурсы nw.js, благо есть инструкция.

Окончательный вариант подразумевает компиляцию java(maven) -> javascript -> bin одним скриптом, по этому нужно также:

  • Написать скрипт для сборки всего приложения
  • Также нужно попробовать сделать то, что предложили в ишью

В следующей версии 1.2.2 ничего кроме обновления самого веб приложения меняться не будет. Для дальнейших версий буду пытаться внедрять следующее:

  • Возможность менять масштаб интерфейса либо через ползунок, либо через список масштабов
  • Возможность создания вкладок через Chrome Extension APIs (не работает, вкладки будут ненативными)
  • Выбор вкладок: обычная или с редактором ардуиновского кода
  • Работа над гибким интерфейсом и его кастомизацией с выбором тем

Если я смогу сделать полноценно хотя б один из этих пунктов, кроме первого, это будет уже новая минорная версия (1.3.0).

@SEVA77 SEVA77 pinned this issue Sep 28, 2021
@SEVA77
Copy link
Owner Author

SEVA77 commented Oct 5, 2021

С новой минорной версией этой программы не плохо было бы

  • придумать для программы новое название.

Хотя бы добавить слово "Desktop", но наверное лучше придумать что-то с нуля. Одинаковые названия у основного веб приложения и у моего отдельного десктопного все же не есть хорошо.

@SEVA77
Copy link
Owner Author

SEVA77 commented Jan 19, 2022

Я так понимаю, с моей занятостью я опять буду выпускать, как и раньше, один релиз в год.

Тем не менее я нашел время проверить такую штуку, как "вкладки". Со всеми выполнеными условиями вызов вкладки через chrome.tabs.create() не работает как надо. Вместо создания вкладки создается новое окно. По информации пользователей вкладки выпилины из браузерного движка. Однако есть уже готовая имитация вкладок внутри страницы и можно будет попробовать это решение.

Также можно будет попробовать сделать приложение на более легковесных движках. Я когда-то давно уже пробовал запускать в оболочке Neutralinojs, но это было очень плохо. Возможно, что-то в этом плане уже поменялось.

Также на 64 битных системах windows были замечены лаги. Связаны, как я понял по загрузке системы, с графикой, что, скорее всего, лечится отключением использования GPU приложением. В своих выводах пока не уверен и надо этот момент протестить на том компьютере, где наблюдались лагги. Благо программа позволяет запускать себя с определенными параметрами командной строки, в том числе и через параметр --disable-gpu.

В общем буду и дальше стараться работать над своей версией программы.

Repository owner locked and limited conversation to collaborators Jan 20, 2022
@SEVA77
Copy link
Owner Author

SEVA77 commented Jan 20, 2022

  • В след релизе для установочного файла сделать 2 ярлыка: обычный и с пометкой "(no GPU)" со встроенной командой --disable-gpu

@SEVA77
Copy link
Owner Author

SEVA77 commented Jan 27, 2022

  • Для более лучшей работы с GPU для следующей версии программы в оболочке активировать следующие флаги (аргументы):
  • --ignore-gpu-blacklist
  • --enable-gpu-rasterization
  • --force-gpu-rasterization
  • --enable-zero-copy

если они есть и протестировать работоспособность этого всего.
Также нужно попробовать протестировать флаги, связанные с прокруткой, типа smooth-scrolling, overlay-scrollbars.
(chrome://flags в dev моде)

@SEVA77
Copy link
Owner Author

SEVA77 commented Jan 27, 2022

Я нашел проблему, из-за чего скроллинг приводил к лаггам!!!
В общем по умолчанию включено ускорение прорисовки 2D в canvas. При ее отключении лагов не возникает!
В таком случае появляются еще три задания:

  • Встроить в новую версию аргумент --disable-accelerated-2d-canvas *
  • Удалить из проекта компоненты JQuery, jQuery.NiceScroll и jQuery.scrollSpeed (все же нет необходимости)
  • Встроить также --enable-smooth-scrolling и --enable-overlay-scrollbars (для красоты) на всякий случай

* Upd: Как оказалось на Windows отключение ускорения прорисовки 2D в canvas делает только хуже. Однако лаги при всех вышеперечисленных параметрах возникают только при скроллинге, но не продолжаются после скроллинга, как это было в предыдущих версиях. Соответственно 2 последние задачи остаются.

@SEVA77
Copy link
Owner Author

SEVA77 commented May 22, 2022

Есть еще одна идея. Я буду пробовать упаковывать circuitjs1 в новую, но свою версию nw.js, почистив сами исходники браузерного движка chromium патчами для ungoogled-chromium. Там огромная куча ненужных бинарных файлов, убрав которые инструментом для сборки ungoogled-chromium можно добиться значительного уменьшения размера итогового бинарника новых версий nw.js. Единственное, что я уже начал работать над этим и не все патчи смогли примениться не смотря на то, что версии движка для ungoogled-chromium и для nw.js одинаковы. Придется проверять каждый патч.

  • Сделать свою версию nw.js

@SEVA77
Copy link
Owner Author

SEVA77 commented Nov 20, 2022

По поводу возможности создания вкладок помимо скриптового chrome-tabs есть еще и встроенные в gwt вкладки TabBar, даже DecoratedTabBar которое использовать все же предпочтительнее в плане удобности отслеживания реального создания и удаления элементов под вкладкой при удалении вкладок.

В связи с попыткой сделать свою версию nw.js также необходимо

  • сменить упаковщик приложения с Web2Executable на nw-builder.

Ибо в nw-builder есть параметры для смены адреса источника получаемых версий nw.js и можно подсунуть ему свою кастомную сборку.

@SEVA77
Copy link
Owner Author

SEVA77 commented Jun 5, 2023

буду пробовать упаковывать circuitjs1 в новую, но свою версию nw.js, почистив сами исходники браузерного движка chromium патчами для ungoogled-chromium

Патчи ungoogled-chromium для nw.js на деле значительно изменяют размер только версии для винды. Уменьшить размер оболочки для linux помогает отключение отладочной инфы. Конкретно для линукса с патчами ungoogled-chromium, отключением отладочной инфы и многих компонентов и удалением артефактов локализации пока удалось уменьшить размер оболочки с 408 Мб до 289,2 Мб. Все еще много, даже не дотягивает до его аналога электрона, но это уже хоть что-то. Еще есть над чем работать.

@SEVA77
Copy link
Owner Author

SEVA77 commented Mar 2, 2024

Работа над собственной версией nw.js окончена. После проверки на реальном макбуке, приведения репозитория в порядок и работы над документацией сделаю его репозиторий публичным. Есть такой момент, что лучше бы я перешел на электрон, но поковырять хоть как-то исходники хромиума было все же от части забавно. Версия 0.64.1, размер 180-210 Мб в зависимости от архитектуры.

@SEVA77
Copy link
Owner Author

SEVA77 commented Mar 15, 2024

"Вся сборка полностью через npm":

  • Проверка всех этапов сборки
  • devmode + запуск nw.js-sdk для devmode
  • билд gwt приложения (mvn clean install)
  • получение бинарников nw.js (nwbuild get)
  • окончательная сборка приложения (nwbuild build)

@SEVA77
Copy link
Owner Author

SEVA77 commented Apr 8, 2024

Версия веб приложения circuitjs1 2.9.0js успешно встроена и пока вся разработка в ветке 1.3.0.
Нужно прикинуть, что я хочу от версии 1.3.0. Прежде всего нужно отдельное меню для модификации, расположенное в "Опции" в самом конце. Пока из идей, что будет в этом меню: масштаб интерфейса, то, как должны выглядеть безымянные кнопки Start/Stop и Reset в отсутствии боковой панели, и предложить уменьшить верхнее меню.
Также нужно попробовать сделать нормальное меню печати, а не в отдельном окне, как сейчас. В связи с переходом на NW.js v0.64.1-mod1 это уже не является большой проблемой, а потому уже не является чем-то обязательным.

  • Сделать меню для модификаций, встроить в "Опции" в конец. В самом меню:
  • - сделать возможность изменять масштаб интерфейса
  • - сделать возможность выбора внешности кнопок Start/Stop, Reset (2 вар-та), либо убрать их
  • - дать возможность уменьшить верхнее меню до разумного минимума
  • (Опционально) Починить отображение меню печати
  • Удалить костыли jQuery (в моей версии NW.js больше нет лагов при прокрутке колесиком мыши)

@SEVA77
Copy link
Owner Author

SEVA77 commented Jun 5, 2024

  • Замена API электрона на API nw.js реализаций открытия и сохранения файлов

Из-за сложности реализации, возможно, оставлю на следующую версию.

@SEVA77
Copy link
Owner Author

SEVA77 commented Sep 2, 2024

  • Добавить нормальное открытие и сохранение с отслеживанием файла и отображением его в заголовке окна
  • В настройках добавить кнопки для замены цветов напряжений/токов (<input type="color">)
  • Сделать боковую панель не накладываемой поверх схемы, но наложение оставить как опциональный вариант

@SEVA77
Copy link
Owner Author

SEVA77 commented Oct 29, 2024

  • Сделать анимацию появления/исчезновения именно накладываемой боковой панели настраиваемой

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant