Игорь
https://github.com/Elanis/web-to-desktop-framework-comparison
Ugin
Ребят подскажите, есть electron + react рендерер + в папке release/app/ лежит node.js сервер который в реальном времени генерирует некоторые события (скорость ветра в реальном времени). Как мне выстроить архитектуру получения данных (объекты с данными о скорости ветра) с node.js апи модуля через main процесс в react приложение (в данном случае использую mobx store). Ответ годится в виде: 1. в node.js модуле где генерируются события вставляешь ipcMain..... 2. в main.js ловишь событие ipcMain.....или как правильно 3. и так далее.... Буду ну очень признателен если поможете, так как я новичок в этом, читаю пока документацию, но в голове каша, а таску желательно сдать поскорее!!!
Ugin
main процесс это и есть node.js, можешь там все делать паттерны
Спасибо, но пока непонятно. Эту документацию в процессе прочтения но пока ситуация не прояснилась.
Rewrite
Спасибо, но пока непонятно. Эту документацию в процессе прочтения но пока ситуация не прояснилась.
из release/app советую переместить сервер в main/ipc.js и импортнуть этот модуль в main/main.js
.
Так, объясните новичку, пожалуйста. Я установил Bulma через npm(devDependencies). Так и должно быть, что в дефолтный файлик стилей мне надо прописывать @import './node_modules/bulma/css/bulma.css'; вместо @import 'bulma/css/bulma.css'; как у них в гайде на сайте?
Ugin
из release/app советую переместить сервер в main/ipc.js и импортнуть этот модуль в main/main.js
``` Кстати разобрался, спасибо @RewriteH , для передачи реал тайм даты из node.js модуля (release/ap.p....) использовал в нужном месте скрипта, где генерируется event, конструкцию типа: ipcMain.emit('setWeather', { ..weatherData }) а в main.js app .whenReady() .then(() => { createWindow() ipcMain.on('setWeather', (node) => { mainWindow?.webContents.send('weatherData', node); }); app.on('activate', () => { if (mainWindow === null) createWindow(); }); }) .catch(console.log); и в preload.js contextBridge.exposeInMainWorld('electron', { ipcRenderer: { on(channel: 'weatherData' , func: (...args: unknown[]) => void) { const subscription = (_event: IpcRendererEvent, ...args: unknown[]) => func(...args); ipcRenderer.on(channel, subscription); return () => { ipcRenderer.removeListener(channel, subscription); }; }, }, }); и наконец в реакт приложении в компоненте: const WeatherEvents: FC = () => { const { weatherStore } = useRootStore(); useEffect(() => { window.electron.ipcRenderer.on('weatherData', (weather) => { const { speed, humidity } = weather; weatherStore.setWeather([ new WeatherItemStore(speed, humidity, name, {}, {}), ...weatherStore.currentWeather, ]); }); }, []); return null; }; ``` Пишу это сюда, что бы гуру проверили концепт и новичкам, таким как я, может быть полезно
southyyy
Всем привет, подписал приложение сертификатом на WIndows, загрузил на ynandex.disk. После скачивания Антивирус показывает сообщение, что обнаружен вирус (На сколько я понял когда Defender пишет Trojan то это классификация какой-то проблемы в приложении а не именно троян) На сколько я понял у меня серт не супертрастовый, вопрос как повысить его трастовость, после. какого кол-ва скачиваний антивирусы не будут ругаться? The regular (and often cheaper) Code Signing Certificate shows a warning during installation that goes away once enough users installed your application and you’ve built up trust.
Игорь
Anton
Добрый день, помогите кто-нибудь разобраться с проблемой, пожалуйста. https://github.com/electron/electron/issues/36775 Если в кратце: создаю проект через yarn create vue@3 и после накатываю електрон туда - yarn add --dev electron, создаю main.js и указываю его в package.json. Но при старте приложения тут же получаю ошибку. Не могу разобраться кто именно виноват в ней...
Игорь
Ругается на path , что ещё добавлял в background? Какой путь писал к какому то файлу
Anton
Весь процесс вот здесь записан: https://asciinema.org/a/ylqq3WeEzdxN7iNxDtr9lkrzG
Anton
Ничего не дописывал лишнего, код исключительно из документации електрона
Anton
но проблема даже не в прелоаде... можно вообще без него
Павел
Я как-то попал в похожий момент с типизацией, метод ругался на аргумент (который был вроде как нормальный) все решилось после JSON.stringify(argData)
eden
всем привет! подскажите, пожалуйста. Я сбилдил приложение и запушил на гитхаб релиз. Вот что у меня получилось в итоге. Вопрос в следующем: dmg включает в себя версию и для intel и для apple silicon? можно указывать ссылку только на него?
eden
У тебя там один для Интел и один для м1
а, для интел - без всяких суффиксов, да?
No
Если тебе нужен универсальный, то надо указать его в настройках билда
No
а, для интел - без всяких суффиксов, да?
Если там дефолтный конфиг, то да
eden
понял, спасибо большое
M?
Всем привет. Для публикации в s3 можно ли использовать electron-builder?
Anonymous
https://t.me/+E3C9NCtowLdlNzRk
M?
есть такая фича dialog.showOpenDialog как сделать так чтобы она больше 1 не показывала?
M?
никто не знает как эти уродливые нативные эмодзи поменять глобально на эпловские например?
M?
без костылей с img inner html
Павел
Приведи каждый спрайт к общему стандарту индекса эмоции, теперь для переключения на другие Emoji надо будет сменить один css класс, который будет говорить с какого спрайта брать
Павел
Тут же уже все пережовано)) чего тут не понятного😄 у каждого спрайта есть свой уникальный css class, в backgraund-image которого кидай нужный спрайт. Если индексы эмоций всех спрайтов нормализованы то тут хоть конвейер запускай по типу соцсетей
eden
Мне кажется для этого есть отдельный нпм пакет
https://www.npmjs.com/package/emoji-mart пользуюсь этим
eden
Это же эмоджи пикер
он идёт с разными сетами эмодзи (фейсбук, гугл, эпол), и там есть компонент <Emoji />, который будет отображать эмодзи из того сета, который ты выбрал. К сожалению, в нагрузку идёт эмодзи-пикер, это правда
eden
Это немного не то, у меня в приложении где угодно может быть эмодзи и я не смогу везде пихать <Emoji />
а, тогда не то, сорри. Я слышал, что такое решают поиском и заменой, но это опять же судя по всему не то, что ты ищешь
M?
На Stackoverflow ответили что решается шрифтом
mrx
Здраствуйте, кто-то пробовал отправить продукты на весы CAS 5200 через ethernet ?
Freedom_Сitizen
Здравствуйте, подскажите пожалуйста какой фреймворк или что использовать что бы сам Electron был очень быстрый? - задача открывать много вкладок и для просмотра в многопоточном режиме YouTube
Freedom_Сitizen
А зачем тебе фреймворк, если ты собрался ютуб открывать?
Открыть просто можно и на Electron - ведь задача со слабого железа открывать больше окон браузера и быстро это делать (в окнах сайт ютуба). Например чтоб на процессоре ryzen 5 3600 - 200 браузерных окон открылось и в каждом окне ютуб видео находилось и оно было в состоянии воспроизведения.
Freedom_Сitizen
ну так что бы кросс-платформенно написал скрипт на JS
Freedom_Сitizen
Который будет открываться на ubuntu/windows/macOS
No
Так я к тому и веду, что может вам вообще он не нужен?)
Freedom_Сitizen
Я пытаюсь это выяснить, чистый браузер хром точно не подходит для моей задачи
No
Что значит чистый браузер?)
No
Любом ваш фреймворк будет запускаться в хроме
No
Потому что это электрон
Freedom_Сitizen
Читаю статейки, рендерить страницу по сути в каждом новом окне - заново не нужно. Если правильно понимаю SSR нужно или SSG (что ускорит процесс рендеринга, если заранее отдавать готовую страничку - этот подход есть у Next js) так как у нас известно то что одна задача всегда будет выполняться это открывать сайт ютуб и ее можно еще кешировать если я правильно понимаю. В общем и пишу сюда что бы толковые ребята как-то прокомментировали Если можно ускорить отрисовку страницы на том же GPU то тоже годится вариант, но насколько это будет быстрей нежели на процессоре.
Freedom_Сitizen
А возможно как-то эмулировать мобильные устройства - там по идее на них браузер легче или это все мои догадки
Freedom_Сitizen
какую конкретно задачу ты решаешь? накрутить просмотры на видео или в чем суть?
Вести просмотры определенных стримов и видео, запускать чем можно больше окон с потоковым видео на очень слабом железе
Владимир
Veli
Вести просмотры определенных стримов и видео, запускать чем можно больше окон с потоковым видео на очень слабом железе
1) возьми самый легковесный хедлес драйвер браузера - погугли бенчмарки 2) облегчи как можно сильнее загружаемые данные - в том же ютубе есть embed формат отображения, где у тебя грузится исключительно видеоплеер с потоком, но я не знаю, засчитывает ли он это в просмотры 3) заспавни кучу вкладок 4) заспавни кучу инстансов своего приложения вот только тебе еще нужно будет скорее всего это все через прокси делать, потому что ютуб, думаю, не настолько тупой, чтобы несколько вкладок за несколько зрителей считать
Freedom_Сitizen
Я могу ошибаться в формулировках ( поправьте пожалуйста). Потоковая задача - многопоточная и цикличная. Зная что каждое окно браузера будет открываться и закрываться по выполнению определенных действий
Freedom_Сitizen
прокси есть - с этим порядок, я не разработчик в том и дело :)
Freedom_Сitizen
да и ботов он скорее всего отсекает
на это пофиг - главное добиться минимального потребления CPU процессора и что бы оперативную память не засасывало очень сильно
Veli
прокси есть - с этим порядок, я не разработчик в том и дело :)
короче тебе электрон не нужен, тебе нужно серверное приложение с высокопроизводительным хедлес браузером. И все это масштабированно на столько серверов, чтобы выполнять твои потребности
Freedom_Сitizen
короче тебе электрон не нужен, тебе нужно серверное приложение с высокопроизводительным хедлес браузером. И все это масштабированно на столько серверов, чтобы выполнять твои потребности
серверное приложение это какое? - например да нужен высокопроизводительный хедлес браузер, а можно даже и не полностью функциональный браузер (лишь бы выполнял действия на сайте ютуб и этого достаточно будет)
Veli
серверное приложение это какое? - например да нужен высокопроизводительный хедлес браузер, а можно даже и не полностью функциональный браузер (лишь бы выполнял действия на сайте ютуб и этого достаточно будет)
серверное - это просто приложение, которое будет на сервере запускаться если ты хочешь на JS это делать и нет желания искать бенчмарки, то можешь попробовать node.js + https://playwright.dev/ прототип накидать не так сложно будет. Если не удовлетворит потребности по перфомансу - поищешь чето помощнее но именно концептуально, я думаю, эту задачу сильно быстрее не сделать. Как вариант, может быть можно сразу запросы на сервер ютуба слать, вообще без прослойки в виде браузера (опять же, смотря что конкретно ты решаешь и есть ли такая техническая возможность)
Freedom_Сitizen
Сначала нужно представить что к чему и как, построить дорожную карту и найти исполнителя
Veli
серверное приложение это какое? - например да нужен высокопроизводительный хедлес браузер, а можно даже и не полностью функциональный браузер (лишь бы выполнял действия на сайте ютуб и этого достаточно будет)
а вот про embed я говорил - ютуб умеет встраиваться через embed ссылку, она не подразумевает загрузку никаких сайдбаров с рекомендуемыми видео, комментариев и т.д эмбед ссылку можно кнопкой «поделиться» получить ну или вот так переделать: обычная: https://www.youtube.com/watch?v=dQw4w9WgXcQ embed: https://www.youtube.com/embed/dQw4w9WgXcQ вот только чето они у меня перестали грузиться в обычном браузере, возможно, они только в айфрейме грузятся
Freedom_Сitizen
https://github.com/dhamaniasad/HeadlessBrowsers здесь нашел информацию по Headles Browsers
Veli
а что если оттолкнуться сразу от того что - самый быстрый язык который подходит для этой задачи и дальше как-то в этом направлении искать решение
ну js явно не самый быстрый язык )) так что если ты преследуешь цель сразу и по максимуму, то смотри бенчи и ищи другой, да разве что на js, возможно, исполнителя будет проще найти, чем на каком-то значительно более быстром языке
Veli
я думаю, чем спрашивать вообще в неподходящем чате и по этим ответам строить какие-то карты и заставлять исполнителя делать именно так, лучше сразу начать искать исполнителя, который в этом разбирается и пусть он сам проектирует самое быстрое решение