🅰️nimeCoder
Не думай, это вредно
🅰️nimeCoder
Загрузка реакт != рендер реакт
🅰️nimeCoder
Даже сама загрузка в принципе не равно рендер в браузере, есть время которое на это уходит
🅰️nimeCoder
Ready-to-show после рендера html но реакт рендерит ещё позже
Alexey Filippov
Загрузка реакт != рендер реакт
ну да я об этом говорю электрон не будет ждать когда построится дом но он сыграет когда загрузятся стили и js
🅰️nimeCoder
Ну так в чем проблема внутри реакта вызвать show?
Alexey Filippov
адальше уже реакт работает но в таком
🅰️nimeCoder
Уже после полной инициализации
Alexey Filippov
Ну так в чем проблема внутри реакта вызвать show?
аааааааааааааааааааааааааааааааааааааа
Alexey Filippov
сори за мат да ну нахуй реально жи
Alexey Filippov
просто хочу показать для наглядности как это бьет по глазам можно сказать код из доки...
а есть предположение что это за белое окно? это окно в которое в эту мс загрузится renderer или иное?
🅰️nimeCoder
Это анимация системы?
🅰️nimeCoder
🅰️nimeCoder
Ты ещё на атомы разложи
Alexey Filippov
Это анимация системы?
короче сделал как ты предложил)
Alexey Filippov
короче проблема не ушла === электрон самый настоящий фуу
Alexey Filippov
делаю таймаут 100мс проблема уходит
Alexey Filippov
ок причина понятно. window.show() создает новое окно и туда сразу же загружается фронт часть, но как так это не моментально происходит с некой задержкой ну существует же какое-то решение? неужели я первый с такой траблой
🅰️nimeCoder
ты что-то делает не так
🅰️nimeCoder
проблемы не вижу, даже без хаков "после рендера"
🅰️nimeCoder
nuxt у меня отсутствует, какой либо SSR тоже. ПРохрачное окно на 50-100 мс вопрос к X Server а не к электрону
Alexey Filippov
если возможно мог бы кто-то глянуть? https://github.com/WebAFilippov/af-electron где - https://github.com/WebAFilippov/af-electron/blob/main/src/main/libs/create-window.ts -> создаю окно где - https://github.com/WebAFilippov/af-electron/blob/main/src/main/index.ts -> инициализирую окно
🅰️nimeCoder
мб реакт просто так долго рендерится, но почему у тебя чета не выходит не понятно мб нужен nextTick
Alexey Filippov
🅰️nimeCoder
у меня все окна прозрачные при старте, любых приложений
🅰️nimeCoder
включая нативные, Qt приложения, иногда да, иногда нет. Так рендерит окна x11
🅰️nimeCoder
может на wayland это не так, но там думаю других проблем адские горы
Alexey Filippov
надо попробовать запустить простой проект с фронтом html будет ли так микролаг
🅰️nimeCoder
невозможно иметь ступенчатую загрузку если окно показывается после полного рендера реакта
🅰️nimeCoder
полного рендера и применения к DOM конечно
Alexey Filippov
https://github.com/WebAFilippov/af-electron/blob/main/src/main/handlers/control-window/control-window.ts https://github.com/WebAFilippov/af-electron/blob/main/src/renderer/src/app/App.tsx - реакт
🅰️nimeCoder
Не думаю что effect выполняется после применения dom
Alexey Filippov
Не думаю что effect выполняется после применения dom
ну он срабатывает когда компонент отрисуется. в целом конечное действие
Alexey Filippov
я смотрю на яндекс приложение у них бесшовно проходит ну нексту надо тоже время по сути чтобы собрать хтмл и цсс
Alexey Filippov
думаю некст не панацея
🅰️nimeCoder
Next это делает до открытия браузера
Alexey Filippov
Next это делает до открытия браузера
вроде победил(очень сильно надеюсь) установил transparent: true,
🅰️nimeCoder
вроде победил(очень сильно надеюсь) установил transparent: true,
а можешь ради интереса попробовать такое? const observer = new MutationObserver(() => { observer.disconnect() setTimeout(() => { // call show window }, 0) }) observer .observe(document.querySelector('#app'), { childList: true }) ?
🅰️nimeCoder
Засунуть сюда
🅰️nimeCoder
да, это костыль, но кого это ебет)
🅰️nimeCoder
Главное до вызова mount лучше
🅰️nimeCoder
Т.е до монтирования прилы этот кусок Так надежнее
Alexey Filippov
в общем это первый шаг реакта ниже
🅰️nimeCoder
🅰️nimeCoder
так же белое окно?
🅰️nimeCoder
это именно с холодного старта?
Alexey Filippov
это именно с холодного старта?
в целом да. реакт еще не завелся
Alexey Filippov
я думаю тут ничего не сделать видимо хромиум при открытие окна берет на себя какие то таски и потом рисует отсюда этот микролаг
Alexey Filippov
вот например когда window.minimaze оно не уничтожается, но когда оно hide() оно дестрой (3случай в видео) и при показе show() оно опять дергается
🅰️nimeCoder
в целом да. реакт еще не завелся
electron-window-state случайно не используешь?
Alexey Filippov
🅰️nimeCoder
прост он почему то сам открывает окна до какого либо show
🅰️nimeCoder
прямо при выхове manage
Alexey Filippov
прост он почему то сам открывает окна до какого либо show
хочу на стекоферфлоу попробовать написать может быть кто-то глубоко копал
islam
Всем привет, подскажите как лучше сделать: Есть приложения с возможностью запуска нескольких задач одновременно, работает из консоли, вся логика написана на golang Я хочу сделать GUI реализацию по типу как на фото, но оставить логику на golang Насколько правильно вызывать под каждый ивент запуска child process голанга с аргументами? Какая вообще лучшая практика в таких приложениях?
islam
Я понимаю, что можно выбрать свои библиотеки на го для гуи, но мне интересно как это работает в целом. Даже если представить что мое приложение сделано на ноде, то как правильно связать фронт с бэком в десктопе?
🅰️nimeCoder
Возможно, кто-то уже сталкивался с подобной задачей. Я хочу проксировать трафик рендерера (через defaultSession) через локальную прокси-сервис внутри приложения. Цель — использовать одну точку выхода трафика из приложения, чтобы можно было модифицировать его или добавить промежуточную прокси (upstream proxy). То есть, трафик сначала проходит через мою прокси, где его можно либо изменить, либо пропустить без изменений, а затем он отправляется дальше или на следующую прокси. Этот подход работает отлично с решениями, которые генерируют полноценные сертификаты и осуществляют настоящий MITM (Man-in-the-Middle) с использованием CA-сертификата. В Electron я обычно добавляю обработчик ошибки сертификата, который либо игнорирует ее, либо выполняет валидацию, сопоставляя сертификат прокси с тем, который указан в запросе. Однако этот метод кажется чересчур громоздким и избыточным. Есть ли более простой способ перехвата трафика до его шифрования? Используя ограниченные возможности API webRequest в Electron (документация), через этот API можно только отменить запрос, сделать редирект или модифицировать заголовки. Этого явно недостаточно для моей задачи.
🅰️nimeCoder
Возможно, кто-то уже сталкивался с подобной задачей. Я хочу проксировать трафик рендерера (через defaultSession) через локальную прокси-сервис внутри приложения. Цель — использовать одну точку выхода трафика из приложения, чтобы можно было модифицировать его или добавить промежуточную прокси (upstream proxy). То есть, трафик сначала проходит через мою прокси, где его можно либо изменить, либо пропустить без изменений, а затем он отправляется дальше или на следующую прокси. Этот подход работает отлично с решениями, которые генерируют полноценные сертификаты и осуществляют настоящий MITM (Man-in-the-Middle) с использованием CA-сертификата. В Electron я обычно добавляю обработчик ошибки сертификата, который либо игнорирует ее, либо выполняет валидацию, сопоставляя сертификат прокси с тем, который указан в запросе. Однако этот метод кажется чересчур громоздким и избыточным. Есть ли более простой способ перехвата трафика до его шифрования? Используя ограниченные возможности API webRequest в Electron (документация), через этот API можно только отменить запрос, сделать редирект или модифицировать заголовки. Этого явно недостаточно для моей задачи.
Типа cancel / redirectURL явно слишком мало. Все методы protocol.intercept* являются deprecated Стоит ли трахатся с protocol.handle('http', ...) ? Выйдет ли ч этого что-то достойное?
🅰️nimeCoder
Всем привет, подскажите как лучше сделать: Есть приложения с возможностью запуска нескольких задач одновременно, работает из консоли, вся логика написана на golang Я хочу сделать GUI реализацию по типу как на фото, но оставить логику на golang Насколько правильно вызывать под каждый ивент запуска child process голанга с аргументами? Какая вообще лучшая практика в таких приложениях?
Все очень зависит от того нужно ли действительно тебе эти несколько инстансов и того как работает приложение (например выходит с статус кодом или может принимать команды через std in дальше). Так же вохможно стоит использовать очереди если на то есть потребность
🅰️nimeCoder
Опять же вопрос в том можешь ты вносить (или готов ли) в приложение на го какой-то API для того чтоб связать с электроном. Кстати на го есть wails он конечно корчявый немного, но типа аналог электрона
islam
Да знаю про wails, меня в целом интересует как устроены такие приложения и коммуникация между ними. Вариант с вызовом процесса через command line arguments адекватный? Если приложение дочернее будет выдавать логи в консоль я смогу их вынести на фронт?
islam
И насколько быстрый такой вариант? Условно если у меня 50 процессов сразу запускается можно оставить так или лучше зашить в ноду логику
islam
если каждая программа это отдельный процесс то к каждому spawn но если возможно на го объедини все в 1 процесс и уже в зависимости от команд обращаться к нужной std.write
Приложение которое на го хранит условно 10 функций, это же лучше чем дробить его на 1 приложение - 1 функция? Я планирую просто вызывать процесс с аргументами и параметрами, и код на го будет сам понимать, что ему делать
islam
Или ты имеешь в виду в качестве каждого таска не использовать новый процесс, а реализовать все в рамках одного?
🅰️nimeCoder
Ну тут зависит от желания модифицировать го приложение, процессы сами по себе не оч дешевая шутка, предпочтительнее конечно делать их поменьше
islam
Ну тут зависит от желания модифицировать го приложение, процессы сами по себе не оч дешевая шутка, предпочтительнее конечно делать их поменьше
А если сделать из го приложения сервер и обращаться к эндпоинтам с передачей параметров? Насколько это лучше в плане экономии ресурсов? Мне кажется будет сложно мониторить логи и выводить их в UI в таком случае