🅰️nimeCoder
Дексктопный qt клиент тг и оф клиент на ведро у меня в среднем жрет 700 МБ - 1500 МБ
🅰️nimeCoder
Если он поработает некоторое время
🅰️nimeCoder
После 1.5гб на телефоне его просто убивает
🅰️nimeCoder
Alexey
вот интересно проверить другое
у меня приложение будет 99% времени в свернутом режиме
то есть window.hide вроде бы
окно убивается? и меньше памяти ест?
основная ценность это в бекенде будет
Alexey
друзья если у кого то возможность протестировать если окно спрятать hide память уйдет?
Vladislav
Привет.
С чего бы она ушла ?
Ты прячешь только граф. оболочку которая влияет на gpu (vram) и то под вопросом...
Mimik
nikolay
Yuri
Yuri
Со всеми дефолтными процессами: основным, утилитным, GPU и окошком
nikolay
Вообще, не ясно. С чего вдруг ему мало места занимать. Внутри как минимум хромиум и нода. Всё зависит от того как использовать, если не будет утечек памяти, то и ОЗУ не будет жрать. У хромиума ОЗУ забивается из за бесконечных аякс запросов, видосов. Но у электрона в большинстве случаев одно окно, в котором живёт интерфейс. Дальше будет зависеть от билда реакта, vue или что там используете.
Alexey
Alexey
а если нет то пусть убивает графическую оболочку
-память
Alexey
500 звучит просто страшно особенно для фонового приложения:(
🅰️nimeCoder
🅰️nimeCoder
То что оно не выводит картинку мб разве что частично разгрузит cpu + gpu
🅰️nimeCoder
🅰️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, там вроде какие-то ограничения появляются.
Ratatata
Vladimir
Vladimir
А если я делаю статический импорт: import {...} from 'eleсtron'; мне не нужно ждать промисы, такой импорт же будет синхронным?
Yuri
🅰️nimeCoder
Vladimir
Переделал main на esm, все работает, всем спасибо.
🅰️nimeCoder
🅰️nimeCoder
Там же ещё как то инит "app" хитро сделан, в cjs его невозможно приостановить, а в esm он не происходит пока не выполнится весь await код который при старте там
🅰️nimeCoder
Т.е или sync блокирующие вызовы (типа fs.readSync и др) или аппка инитнется раньше чем ты успеешь что-то сделать
Как пример отключить хардварное ускорение можно только до инициализации электрона, но остановить её невозможно без esm + await или блокирующих вызовов
Так что там достоточно думаю в целои много всяких неявных подвязок и в целом даже вроде есть отличия подкапотные в стримах (вроде), мб ещё где
Yuri
Yuri
Ребят, есть вопрос. Существует ли способ средствами Electron'а отключить GPU ускорение и дефолтный утилитный процесс?
Yuri
Пробовал убить их процессы, но они воскресают 👻
nikolay
🅰️nimeCoder
Интересно, спасибо за инфу 👍
Где-то есть ишью на эту тему, я прост столкнулся когда мне надо было отключать hardwareAcceleration , а он работал через раз
🅰️nimeCoder
А у меня cjs (ещё версия электрона не такая новая)
Пришлось сделать синхронный инит конфига в начале, отработку, дестрой и дальше обычный инит приложения и конфига
Так бы решилось с top level await
🅰️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
Шо я там только не храню
🅰️nimeCoder
Я уже если честно не помню, что точно.
Там настройки прокси, dns, doh, hardware acceleration, skip task bar, native frame / app frame, настройки сортировки списков в приложении по умолчанию, настройки торрент клиента (прокси , блэклисты, id....)
Ну и ещё у него есть апишка для плагинов
🅰️nimeCoder
🅰️nimeCoder
🅰️nimeCoder
🅰️nimeCoder
Alexey
Самое интересное не показал)
get и set, не оч понятно как второй аргумент get используешь
🅰️nimeCoder
🅰️nimeCoder
Ну он там хитровыебанный если честно, наверное наоверхэдил но ладно.
Оно типа умеет отдавать объект по path, типа все ключи которые имеют в начале path.path1.path2 объектом или если поле обычное то как примитив
Alexey
🅰️nimeCoder
Мож попозже
Alexey
Я почему то думал что телега десктоп это электрон
И дипсик это говорит
Но по факту это qt 6
Я более чем уверен что кто-то мне это и тут говорил
Mimik
🅰️nimeCoder
Vladimir
Сделал модуль, который получает информацию о сертификате из файла с помощью библиотеки node:crypto:
export function getInfoFromCert(data) {
const cert = new X509Certificate(data);
console.log(cert)
...
}
Если вызываю его вручную из ноды, все прекрасно работает, но если передаю файл из renderer в main, то в полях validFromDate и validToDate почему-то вместо даты надпись "Invalid Date". Уже всю голову изломал, почему так происходит?
Yuri
Vladimir
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
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.
Хэши проверил, одинаковые.
Mimik