🅰️nimeCoder
Дексктопный qt клиент тг и оф клиент на ведро у меня в среднем жрет 700 МБ - 1500 МБ
🅰️nimeCoder
Если он поработает некоторое время
🅰️nimeCoder
После 1.5гб на телефоне его просто убивает
Alexey
вот интересно проверить другое у меня приложение будет 99% времени в свернутом режиме то есть window.hide вроде бы окно убивается? и меньше памяти ест? основная ценность это в бекенде будет
Alexey
друзья если у кого то возможность протестировать если окно спрятать hide память уйдет?
Vladislav
Привет. С чего бы она ушла ? Ты прячешь только граф. оболочку которая влияет на gpu (vram) и то под вопросом...
Mimik
Привет. С чего бы она ушла ? Ты прячешь только граф. оболочку которая влияет на gpu (vram) и то под вопросом...
Ну как, ты шляпой накрыл яблоко, оно и исчезло :) и не занимает места в пространстве больше
Yuri
Со всеми дефолтными процессами: основным, утилитным, GPU и окошком
nikolay
Вообще, не ясно. С чего вдруг ему мало места занимать. Внутри как минимум хромиум и нода. Всё зависит от того как использовать, если не будет утечек памяти, то и ОЗУ не будет жрать. У хромиума ОЗУ забивается из за бесконечных аякс запросов, видосов. Но у электрона в большинстве случаев одно окно, в котором живёт интерфейс. Дальше будет зависеть от билда реакта, vue или что там используете.
Alexey
а если нет то пусть убивает графическую оболочку -память
Alexey
500 звучит просто страшно особенно для фонового приложения:(
🅰️nimeCoder
То что оно не выводит картинку мб разве что частично разгрузит cpu + gpu
🅰️nimeCoder
Но я не знаю как точно работает интеграция в хромиум в деталях
🅰️nimeCoder
Думаю реальное +- потребление 200 мегов как старт на чем то более менее
🅰️nimeCoder
А при листаниях, подгрузках спокойно можно брать +100 - 150 на пики до высвобождения которое произойдёт может и вообще через пол минуты
nikolay
На VBA. Попробуйте приложения билдить 😄 там легковесы должны быть, насколько помню со школы
🅰️nimeCoder
На дельфях
🅰️nimeCoder
Сразу и вин и мак и линь и мобилку
Vladimir
Подскажите, а модули из npm можно использовать только в main процессе? Пытаюсь подключить в renderer: import { ContentInfo, SignedData } from './node_modules/pkijs/build/index.es.js'; но хром ругается на путь: index.html:1 Uncaught TypeError: Failed to resolve module specifier "asn1js". Relative references must start with either "/", "./", or "../".
Vladimir
Что-то я с этими модулями совсем запутался. Если я в main использую CommonJS, получается, я не могу подключать ESM?
Vladimir
А если main сделать как ESM, там вроде какие-то ограничения появляются.
Vladimir
так а зачем тебе их мешать? у тебя же уже все в esm
Т.е. мне main все-таки сделать как ESM?
Yuri
Т.е. мне main все-таки сделать как ESM?
Я думаю да. Какой смысл в 2025 оставаться на CommonJS?
Ratatata
Я думаю да. Какой смысл в 2025 оставаться на CommonJS?
нодеры(бэкендерята) тебя живьем сьедят за такие слова)
Vladimir
А если я делаю статический импорт: import {...} from 'eleсtron'; мне не нужно ждать промисы, такой импорт же будет синхронным?
🅰️nimeCoder
Я думаю да. Какой смысл в 2025 оставаться на CommonJS?
Элеткрон не так давно начал поддерживать esm. Буквально недавно, несмотря на то что нода поддерживает давно
Yuri
Элеткрон не так давно начал поддерживать esm. Буквально недавно, несмотря на то что нода поддерживает давно
Требовались какие-то дополнительные действия со стороны Electron'а на поддержку esm? Я думал, они просто ноду обновили и таким образом и привнесли поддержку esm
Vladimir
Переделал main на esm, все работает, всем спасибо.
🅰️nimeCoder
Требовались какие-то дополнительные действия со стороны Electron'а на поддержку esm? Я думал, они просто ноду обновили и таким образом и привнесли поддержку esm
Да, там как то связано с тем что сам элеткрон это же нода + хромиум и все патчится, у них же там в репе миллион патч файлов и видимо патчи нужно было обновлять сильно
🅰️nimeCoder
Там же ещё как то инит "app" хитро сделан, в cjs его невозможно приостановить, а в esm он не происходит пока не выполнится весь await код который при старте там
🅰️nimeCoder
Т.е или sync блокирующие вызовы (типа fs.readSync и др) или аппка инитнется раньше чем ты успеешь что-то сделать Как пример отключить хардварное ускорение можно только до инициализации электрона, но остановить её невозможно без esm + await или блокирующих вызовов Так что там достоточно думаю в целои много всяких неявных подвязок и в целом даже вроде есть отличия подкапотные в стримах (вроде), мб ещё где
Yuri
Ребят, есть вопрос. Существует ли способ средствами Electron'а отключить GPU ускорение и дефолтный утилитный процесс?
Yuri
Пробовал убить их процессы, но они воскресают 👻
Alexey
можно через какой нибудь babel настроить но зачем?
но пройдет ли сборка и главное запуск билд версии
🅰️nimeCoder
Интересно, спасибо за инфу 👍
Где-то есть ишью на эту тему, я прост столкнулся когда мне надо было отключать hardwareAcceleration , а он работал через раз
🅰️nimeCoder
А у меня cjs (ещё версия электрона не такая новая) Пришлось сделать синхронный инит конфига в начале, отработку, дестрой и дальше обычный инит приложения и конфига Так бы решилось с top level await
🅰️nimeCoder
Где-то есть ишью на эту тему, я прост столкнулся когда мне надо было отключать hardwareAcceleration , а он работал через раз
У меня порост присадка на анимациях при движении окна вроде при gpu ускорении, оно там как то в хромиуме / элеткроне пашет что идут доп затраты на копирования фреймбуфера в gpu и обратно видать (где то в доках написано)
🅰️nimeCoder
но пройдет ли сборка и главное запуск билд версии
Вебпак вроде хорошо такое билдит, но он оч медленный Vite в целом может но местами косяки и надо патчить + они это дропнут в новых версиях если не уже
🅰️nimeCoder
В новой ноде есть const somename = await import('package') Для работы с esm в cjs. А в самой последней может их даже как то скрестили, что-то я такое слыхал
🅰️nimeCoder
https://github.com/jprichardson/electron-mocha/issues/106
🅰️nimeCoder
Вот ещё вроде чета https://github.com/electron/electron/issues/21370
🅰️nimeCoder
🅰️nimeCoder
Я уже не помню деталей у меня но вроде vite собирал в cjs и я не стал трогать
Alexey
Конфиг сервис это твой класс? че там хранишь
🅰️nimeCoder
Шо я там только не храню
Alexey
Шо я там только не храню
А можешь показать? может что то интересное для себя возьму как идеи
🅰️nimeCoder
Я уже если честно не помню, что точно. Там настройки прокси, dns, doh, hardware acceleration, skip task bar, native frame / app frame, настройки сортировки списков в приложении по умолчанию, настройки торрент клиента (прокси , блэклисты, id....) Ну и ещё у него есть апишка для плагинов
🅰️nimeCoder
Какая то часть
🅰️nimeCoder
🅰️nimeCoder
🅰️nimeCoder
Alexey
Какая то часть
Самое интересное не показал) get и set, не оч понятно как второй аргумент get используешь
🅰️nimeCoder
Ну он там хитровыебанный если честно, наверное наоверхэдил но ладно. Оно типа умеет отдавать объект по path, типа все ключи которые имеют в начале path.path1.path2 объектом или если поле обычное то как примитив
🅰️nimeCoder
Мож попозже
Alexey
Я почему то думал что телега десктоп это электрон И дипсик это говорит Но по факту это qt 6 Я более чем уверен что кто-то мне это и тут говорил
Vladimir
Сделал модуль, который получает информацию о сертификате из файла с помощью библиотеки node:crypto: export function getInfoFromCert(data) { const cert = new X509Certificate(data); console.log(cert) ... } Если вызываю его вручную из ноды, все прекрасно работает, но если передаю файл из renderer в main, то в полях validFromDate и validToDate почему-то вместо даты надпись "Invalid Date". Уже всю голову изломал, почему так происходит?
Yuri
А как это сделать? Я его как Uint8Array передаю.
const crypto = require('crypto'); // Assume 'fileData' is your Uint8Array const fileData = new Uint8Array([72, 101, 108, 108, 111, 44, 32, 87, 111, 114, 108, 100, 33]); // Example: "Hello, World!" // 1. Choose a hashing algorithm (e.g., 'sha256') const hash = crypto.createHash('sha256'); // 2. Update the hash object with the Uint8Array data hash.update(fileData); // 3. Get the final hash sum as a hexadecimal string const hashSum = hash.digest('hex'); console.log(hashSum);
Ratatata
А как это сделать? Я его как Uint8Array передаю.
Тебе крипто как раз и может посчиать суму
Vladimir
Дело оказалось не в IPC, а непонятно в чем. Сделал тестовое приложение: const { readFileSync } = require('node:fs'); const { X509Certificate } = require('node:crypto'); const data = readFileSync('/home/mva/vscodium/test1/cert/1.cer'); const cert = new X509Certificate(data); console.log(cert); Если запускаю его через "node main.js" - все работает. Запускаю через "npm run start" - опять получаю Invalid date. Хэши проверил, одинаковые.
Vladimir
А ты уверен, что файл читается? Ванную что нет, там есть ограничения.
Остальные поля читаются. А может кто-нибудь у себя проверить на любом сертификате? Может, это у меня что-то сломалось.