@ProCxx

Страница 2094 из 2477
Square
25.05.2018
21:38:04
Да там легко. 40 минут есть? Посмотри лекцию. https://m.youtube.com/watch?v=_-3syPxgwqs

redl1ne
26.05.2018
03:55:08
Подскажите пжлст. Какое приложение (вернее какой тип по) имеет право запускать новый процесс (удаленный) остановливать его писать в него что-то, а потом менять eip и снова запускать и при этом не получать люлей от антивируса? Именно легальное по без злого умысла. Отладчик?

Google
Suren
26.05.2018
05:45:52
Привет! Суть вопроса: как оптимизировать работу со строками на C++? Ситуация: пишу на Arduino небольшой веб-сервер для ESP8266 Решил сделать красивую страничку конфигурации Так как HTML разметка в виде строк кушала бы много места в оперативной памяти, сделал через дефайны (они же во время компиляции просто подставляются, верно?) Создал файл хэдэр с дефайнами строк https://github.com/surik00/ESPHelper/commit/71e0fd2a755db0983a2a7bb9a129761054afbcae И дописал метод, который складывает это всё и отдаёт пользователю https://github.com/surik00/ESPHelper/blob/e40765c5af5dba209bce92166cf824bb3392989b/src/ESPHelperWebConfig.cpp#L83-L116 Но есть проблема, страница иногда просто не открывается (следом скину скринкаст) В серийный порт метод configPageHTML выводит строку (всю страницу) корректно и вроде как быстро А вот с вебом что-то не то Зачастую после ребута платы страница открывается нормально, а потом снова вот такое Поэтому два предположения-вопроса: 1. Что-то не так с генерацией строки (например, долго) - как оптимизировать? Я знаю, что работа со строками тяжелая задача. Возможно, делаю что-то не так, а можно лучше и быстрее? (String это такой тип строк в Ардуино: https://www.arduino.cc/reference/en/language/variables/data-types/stringobject/) 2. Отправляю не так. Например, ответ приходит неправильно. Но такой же ответ, но с маленькой строчкой (совсем короткая страничка) приходит окей каждый раз (тоже на скринкасте сейчас будет)

Spoonson
26.05.2018
05:49:11
дефайны подставляются во время компиляции в обычные сишные строки, ты с таким же успехом можешь просто const char* const использовать вместо дефайнов

Spoonson
26.05.2018
05:54:26
что-то я не понял про висение в оперативе. Они и так будут висеть в оперативе (так как они будут вкомпилены в бинарь, а бинарь висит в оперативе)

Suren
26.05.2018
05:55:00
Я предполагал, что если это переменная, то она занимает какое-то место в оперативной памяти

Spoonson
26.05.2018
05:56:32
очевидное место для оптимизации - все строки у тебя складываются через много +, возможно будет выгоднее через += по одной строке добавлять к возвращаемому значению.

Я предполагал, что если это переменная, то она занимает какое-то место в оперативной памяти
А как по твоему макросы помогут избежать хранение чего-то в памяти? Конкретно какая переменная в памяти тебе будет мешать?

Ruslan
26.05.2018
06:05:06
Ого, не знал про такую тонкость То есть грубо говоря сделать String page = String(); page += HTML_PAGE1; page += HTML_PAGE2; И тд?
ну очевидно, что здесь будет создано меньше промежуточных обьектов

Suren
26.05.2018
06:06:04
Google
Spoonson
26.05.2018
06:06:30
Ого, не знал про такую тонкость То есть грубо говоря сделать String page = String(); page += HTML_PAGE1; page += HTML_PAGE2; И тд?
да. Возможно, еще выгоднее будет посылать данные по кускам по сети (тогда не будет единомоментно очень большого обьекта в памяти) - но тут это уже зависит поддерживает ли это ардуино и поможет ли это вообще.

Ruslan
26.05.2018
06:06:42
если забить все твои строки как константы типа String, то можно попробовать их отправлять без сборки в общую строку - секономить на копировании. но это вроде сомнительная оптимизация

Aidar
26.05.2018
06:07:51
Очень неочевидно

Если строк не 10 конечно

Ruslan
26.05.2018
06:08:52
хм, ну может при оптимизациях компилятор все уладит в сборку в одну строку

но я не уверен в этом

и там ссылка на код повыше была

Aidar
26.05.2018
06:09:15
Ваще для такого есть стримы вроде

Suren
26.05.2018
06:09:39
да. Возможно, еще выгоднее будет посылать данные по кускам по сети (тогда не будет единомоментно очень большого обьекта в памяти) - но тут это уже зависит поддерживает ли это ардуино и поможет ли это вообще.
Я вот думал тоже так делать сурсы ковырял, он там чанками слать умеет, тоже думал опробовать (надел послать хэдер CONTENT_LENGTH_UNKNOWN и потом самому закрывать соединение) https://github.com/esp8266/Arduino/blob/5328a8b91ef04aa10cb9cb272ba1ade5299cb810/libraries/ESP8266WebServer/src/ESP8266WebServer.cpp#L381 Типа вот так https://github.com/esp8266/Arduino/blob/61cd8d83859524db0066a647de3de3f6a0039bb2/libraries/DNSServer/examples/CaptivePortalAdvanced/handleHttp.ino#L40-L92

если забить все твои строки как константы типа String, то можно попробовать их отправлять без сборки в общую строку - секономить на копировании. но это вроде сомнительная оптимизация
Сомневаюсь, что оптимизируется, ведь ещё он наверное сокет будет открывать каждый раз чтобы отправить? Или как там это работает?

Ruslan
26.05.2018
06:10:45
ну сокет вроде ручками закрываем

Anatoly
26.05.2018
06:10:49
Привет! Суть вопроса: как оптимизировать работу со строками на C++? Ситуация: пишу на Arduino небольшой веб-сервер для ESP8266 Решил сделать красивую страничку конфигурации Так как HTML разметка в виде строк кушала бы много места в оперативной памяти, сделал через дефайны (они же во время компиляции просто подставляются, верно?) Создал файл хэдэр с дефайнами строк https://github.com/surik00/ESPHelper/commit/71e0fd2a755db0983a2a7bb9a129761054afbcae И дописал метод, который складывает это всё и отдаёт пользователю https://github.com/surik00/ESPHelper/blob/e40765c5af5dba209bce92166cf824bb3392989b/src/ESPHelperWebConfig.cpp#L83-L116 Но есть проблема, страница иногда просто не открывается (следом скину скринкаст) В серийный порт метод configPageHTML выводит строку (всю страницу) корректно и вроде как быстро А вот с вебом что-то не то Зачастую после ребута платы страница открывается нормально, а потом снова вот такое Поэтому два предположения-вопроса: 1. Что-то не так с генерацией строки (например, долго) - как оптимизировать? Я знаю, что работа со строками тяжелая задача. Возможно, делаю что-то не так, а можно лучше и быстрее? (String это такой тип строк в Ардуино: https://www.arduino.cc/reference/en/language/variables/data-types/stringobject/) 2. Отправляю не так. Например, ответ приходит неправильно. Но такой же ответ, но с маленькой строчкой (совсем короткая страничка) приходит окей каждый раз (тоже на скринкасте сейчас будет)
Посмотри в сторону https://www.webtoolkit.eu/wt

Suren
26.05.2018
06:11:20
Посмотри в сторону https://www.webtoolkit.eu/wt
Там уже встроенный веб-сервер

Aidar
26.05.2018
06:12:23
Что подскажите? Как написать стрим для вывода на esp?

И хранить просто в литерале

Google
Aidar
26.05.2018
06:14:56
Угу. Что за стрим и литерал? Как загуглить правильно?
Стрим это когда ты выходишь через << а литерал это ""

Anatoly
26.05.2018
06:27:19
А может в @supapro?

Valentin
26.05.2018
06:31:17
В sstream попробовать собрать строку, например

Сейчас с чем то похожим буду возиться

Suren
26.05.2018
06:34:06
сделал отправку чанками, убрал полностью конкатенацию, пока открывается окей, подожду часик аптайма и перепроверю

Плюшка
26.05.2018
06:39:30
ну хз ,есть ли такое на esp

Xessao
26.05.2018
07:17:33
Привет! Суть вопроса: как оптимизировать работу со строками на C++? Ситуация: пишу на Arduino небольшой веб-сервер для ESP8266 Решил сделать красивую страничку конфигурации Так как HTML разметка в виде строк кушала бы много места в оперативной памяти, сделал через дефайны (они же во время компиляции просто подставляются, верно?) Создал файл хэдэр с дефайнами строк https://github.com/surik00/ESPHelper/commit/71e0fd2a755db0983a2a7bb9a129761054afbcae И дописал метод, который складывает это всё и отдаёт пользователю https://github.com/surik00/ESPHelper/blob/e40765c5af5dba209bce92166cf824bb3392989b/src/ESPHelperWebConfig.cpp#L83-L116 Но есть проблема, страница иногда просто не открывается (следом скину скринкаст) В серийный порт метод configPageHTML выводит строку (всю страницу) корректно и вроде как быстро А вот с вебом что-то не то Зачастую после ребута платы страница открывается нормально, а потом снова вот такое Поэтому два предположения-вопроса: 1. Что-то не так с генерацией строки (например, долго) - как оптимизировать? Я знаю, что работа со строками тяжелая задача. Возможно, делаю что-то не так, а можно лучше и быстрее? (String это такой тип строк в Ардуино: https://www.arduino.cc/reference/en/language/variables/data-types/stringobject/) 2. Отправляю не так. Например, ответ приходит неправильно. Но такой же ответ, но с маленькой строчкой (совсем короткая страничка) приходит окей каждый раз (тоже на скринкасте сейчас будет)
Ты можешь вывести сгенерированую страницу в сериал порт?

Suren
26.05.2018
07:27:44
Ты можешь вывести сгенерированую страницу в сериал порт?
Да, там всё ок Решил проблему разбитием на куски https://github.com/surik00/ESPHelper/commit/b4abab488a54cacc6a137c9cd8c6a5d52e3e9ba4

Дед Пегас
26.05.2018
09:17:04
/warn

Group Butler [beta]
26.05.2018
09:17:04
Dubay has been warned (1/3)

Дед Пегас
26.05.2018
09:17:15
/warn

Group Butler [beta]
26.05.2018
09:17:15
Dubay has been warned (2/3)

Дед Пегас
26.05.2018
09:17:25
/warn

Group Butler [beta]
26.05.2018
09:17:25
/warn
Dubay kicked: reached the max number of warnings (3/3)

Alex
26.05.2018
09:21:17
/warn

Yaroslav
26.05.2018
09:47:23
Привет. Может кто чего подскажет по следующему вопросу: Есть китайский контроллер для работы с led и к нему библиотека dll (отдельно набор базовых примеров). Ничего особенно сложного, вникнув можно разобраться. Компилируется, работает. Но вот сам led стоит в поле и управлять им можно только с raspberry pi. Отсюда и вопросы: 1. можно в visual studio как-то скомпилировать код под arm, для запуска через wine на малинке? 2. может есть хардкорный вариант вытянуть функции с dll-ки в родной среде малинки? 3. может есть другой вариант запуска без бубнов с танцами?

Igor
26.05.2018
10:39:12
Google
Дмитрий
26.05.2018
10:53:24
Qq

Может кто помочь с Qt ?

Xessao
26.05.2018
10:54:12
Дмитрий
26.05.2018
10:54:49
Спасибо

Yaroslav
26.05.2018
11:09:47
А исходники библиотеки нет? А если попросить? Или попросить либы под никсы.
Да вот неделю стучусь в из вичаты и скайп, и сегодня ночью правда одна отписалась и даже на английском. Вообще парадокс, что для проф-контролерра управления большими лед екранами библиотека для win написана, на атоме решение собирать.. и как тут добиться стабильной работы...

Matwey
26.05.2018
11:12:06
У тебя есть большой лед экран, проф-контроллер и нет денег на нормальный комп?

Ты что-то делаешь не так

Где-то тут ошибка

Yaroslav
26.05.2018
11:12:30
Тут не в деньгах дело. Этот екран натурально в поле стоит

Matwey
26.05.2018
11:12:36
И?

Aidar
26.05.2018
11:13:11
Нафиг тебе либа

Требуй протокол

Yaroslav
26.05.2018
11:13:37
Проще зашить малинку в корпус и с земли подать езернет и управлять етим всем, чем решение на х86 сооружать

Matwey
26.05.2018
11:15:02
http://www.5sgroup.ru/embedded_computers_lex.php Вот тут возьми до $500 что-нибудь и сэкономь свое время. А главное что твою малину дождем в поле к хренам не зальет.

Aidar
26.05.2018
11:17:09
Ради винды?

Yaroslav
26.05.2018
11:17:16
Тут дело цвета фломастеров. Конечно я делать решение на такой коробке не буду.

Проще у китайцев протокол выбить и сделать нормально

Google
Aidar
26.05.2018
11:17:31
Xessao
26.05.2018
11:27:12
Yaroslav
26.05.2018
11:34:19
Ну вот с другим контроллером ребята в штатах снифили трафик и выделили чего надо стримить чтобы добиться последовательного вывода точек нужного цвета и яркости. А ведь тоже могли прикупить виндовс-коробок и не насиловать моцк

Igor
26.05.2018
13:49:26
а в линуксовых программах с обработкой сигналов наподобие bool sigintGot = false; int main() { signal(SIGINT, [](int s) { sigintGot = true; }); while (!sigintGot) { something(); } return 0; } sigintGot не должен быть атомиком? или в таких случаях линукс как-то гарантирует, что все треды встанут на время выполнения обработчика?

Alex
26.05.2018
14:18:24
а в линуксовых программах с обработкой сигналов наподобие bool sigintGot = false; int main() { signal(SIGINT, [](int s) { sigintGot = true; }); while (!sigintGot) { something(); } return 0; } sigintGot не должен быть атомиком? или в таких случаях линукс как-то гарантирует, что все треды встанут на время выполнения обработчика?
если потоки, то sigintGot расшарится и любую логику с ней надо синхронизировать. Хук на сигнал поставленный внутри потока должен работать исключительно в заданном контексте исполнения, тк там свой tss будет

Страница 2094 из 2477