Segnetics

Вернуться   Segnetics > Форум Segnetics > Связь с внешним миром

Связь с внешним миром Modbus, RS232, RS485, Lon и другое.

Ответ
 
Опции темы Поиск в этой теме
Старый 03.02.2020, 12:57   #1
sinkevich
Новичок
 
Регистрация: Feb 2017
Сообщения: 13
Благодарил(а): 2 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию

Набросал проект для SMH4 который позволяет передавать данные из блока "mem" в "'эти ваши интернеты".
Функционал прост:
Берем из "mem" и передаем на http://xxx.xxx.xxx.xxx:1324/
Получаем JSON похожий на:

Код:
[
  {
    "Name": "mem_long",
    "Value": "641234",
    "LastChange": "2020-02-07 23:37:30",
    "Info": {
      "Hint": "Коммент!!!)",
      "Direction": "out",
      "Type": "long"
    }
  },
  {
    "Name": "mem_real",
    "Value": "634.3155",
    "LastChange": "2020-02-07 23:37:30",
    "Info": {
      "Hint": "",
      "Direction": "out",
      "Type": "real"
    }
  }
]
Далее парсим/крутим/вертим или просто используем как отладочную информацию.

По мере возможности буду добавлять функционал.
Пожелания и предложения приветствуются.

Установка:
1) бинарник размещаем в папке /projects/
2) даем права на выполнение (chmod +x ./SMH4SHM1)
3) прописываем имя бинарника в файлы start.after и restart.before
Все пункты можно выполнить (с помощью double commander)
Если необходима подробная инструкция сообщайте.

P.S. версия тестовая для боевого применения не рекомендуется.

Кроме того если теперь есть возможность сервить файл /projects/public/index.html по адресу http://ххх.ххх.ххх.ххх:1324/index.html.
Пример во вложении(необходимо в файлах в пере мест заменить "localhost" на ip контроллера).
Вложения
Тип файла: zip SMH4SHM1.zip (7.30 Мбайт, 43 просмотров)
Тип файла: zip public.zip (244.9 Кбайт, 35 просмотров)

Последний раз редактировалось Arsie, 10.02.2020 в 10:55
sinkevich вне форума   Ответить с цитированием
Старый 03.02.2020, 13:24   #2
ATS
Senior Member
 
Регистрация: Aug 2013
Сообщения: 3 784
Благодарил(а): 12 раз(а)
Поблагодарили: 194 раз(а) в 190 сообщениях
По умолчанию Ответ: Shared memory - Web

Цитата:
Сообщение от sinkevich Посмотреть сообщение
Установка:
1) бинарник размещаем в папке /projects/
.....
P.S. версия тестовая для боевого применения не рекомендуется.
Охренеть! 12 метров... Что там у нутре?

Когда-то винда 3.11 меньше занимала.
ATS вне форума   Ответить с цитированием
Старый 03.02.2020, 13:32   #3
sinkevich
Новичок
 
Регистрация: Feb 2017
Сообщения: 13
Благодарил(а): 2 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Shared memory - Web

Цитата:
Сообщение от ATS Посмотреть сообщение
Охренеть! 12 метров... Что там у нутре?

Когда-то винда 3.11 меньше занимала.
))) WebServer и SQLite помимо прочего)
sinkevich вне форума   Ответить с цитированием
Старый 03.02.2020, 14:15   #4
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 086
Благодарил(а): 15 раз(а)
Поблагодарили: 660 раз(а) в 604 сообщениях
По умолчанию Ответ: Shared memory - Web

Цитата:
Сообщение от sinkevich Посмотреть сообщение
))) WebServer и SQLite помимо прочего)
Скулайт-то зачем? Он уже есть в контроллере)


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie сейчас на форуме   Ответить с цитированием
Старый 03.02.2020, 14:19   #5
sinkevich
Новичок
 
Регистрация: Feb 2017
Сообщения: 13
Благодарил(а): 2 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Shared memory - Web

Цитата:
Сообщение от Arsie Посмотреть сообщение
Скулайт-то зачем? Он уже есть в контроллере)
Особенности реализации) Читает settings.sqlite
В будущем планирую сохранять историю на флешку в SQLite базу
sinkevich вне форума   Ответить с цитированием
Старый 04.02.2020, 14:05   #6
viaduc
Новичок
 
Регистрация: Dec 2016
Сообщения: 13
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Shared memory - Web

Можно скрины web интерфейса?(нет под рукой контроллера)
Исходники будут?
viaduc вне форума   Ответить с цитированием
Старый 05.02.2020, 18:30   #7
Gel
Senior Member
 
Регистрация: Nov 2017
Сообщения: 561
Благодарил(а): 3 раз(а)
Поблагодарили: 38 раз(а) в 30 сообщениях
По умолчанию Ответ: Shared memory - Web

Цитата:
Сообщение от ATS Посмотреть сообщение
Охренеть! 12 метров... Что там у нутре?

Когда-то винда 3.11 меньше занимала.
Когда-то на компьютерах было 2 Мб ОЗУ и 40 Мб жесткий диск. А сейчас на контроллере в сто раз больше и того и другого, так что нормальный размер, ничего критичного.

Цитата:
Скулайт-то зачем? Он уже есть в контроллере)
Скулайт и должен встраиваться в бинарник, его размер вообще копейки по современным меркам.

Подтягиваются программисты на GoLang потихоньку :-)
Gel вне форума   Ответить с цитированием
Старый 05.02.2020, 18:51   #8
Ilya J.
Сотрудник Сегнетикс
 
Аватара для Ilya J.
 
Регистрация: Mar 2016
Адрес: SPb
Сообщения: 4 331
Благодарил(а): 0 раз(а)
Поблагодарили: 255 раз(а) в 251 сообщениях
По умолчанию Ответ: Shared memory - Web

Цитата:
Сообщение от Gel Посмотреть сообщение
Подтягиваются программисты на GoLang потихоньку :-)
Подозреваю на основе ваших примеров делалось)


__________________
Если ничто другое не помогает, прочтите, наконец, инструкцию
Ilya J. сейчас на форуме   Ответить с цитированием
Старый 05.02.2020, 19:19   #9
ATS
Senior Member
 
Регистрация: Aug 2013
Сообщения: 3 784
Благодарил(а): 12 раз(а)
Поблагодарили: 194 раз(а) в 190 сообщениях
По умолчанию Ответ: Shared memory - Web

Цитата:
Сообщение от Gel Посмотреть сообщение
Когда-то на компьютерах было 2 Мб ОЗУ и 40 Мб жесткий диск. А сейчас на контроллере в сто раз больше и того и другого, так что нормальный размер, ничего критичного.
Упс! И намного меньше помню...
Я вообще себя к быдлокодерам отношу, но для обозначенной задачи 100-200 килобайт выше крыши. Или автор что-то недоговаривает.

Цитата:
Скулайт и должен встраиваться в бинарник, его размер вообще копейки по современным меркам.
А на кой хрен он тут нужен? Да и апач на борту вроде тоже присутствует.
Задачка то собрать шмемы в array и в http выплюнуть.


Цитата:
Подтягиваются программисты на GoLang потихоньку :-)
А что там бинарник по размеру больше исходника получается?
ATS вне форума   Ответить с цитированием
Старый 05.02.2020, 19:48   #10
Gel
Senior Member
 
Регистрация: Nov 2017
Сообщения: 561
Благодарил(а): 3 раз(а)
Поблагодарили: 38 раз(а) в 30 сообщениях
По умолчанию Ответ: Shared memory - Web

Цитата:
Сообщение от ATS Посмотреть сообщение
Упс! И намного меньше помню...
Я вообще себя к быдлокодерам отношу, но для обозначенной задачи 100-200 килобайт выше крыши. Или автор что-то недоговаривает.
Это обманчивое ощущение, по поводу размера. HTTP-протокол со стороны сервера достаточно объемистый и по факту серверу нужно уметь работать со многим: кодировками, сжатием, криптографией и т.д.

Цитата:
А на кой хрен он тут нужен? Да и апач на борту вроде тоже присутствует.
Есть свая прелесть в решениях, которые "носят все свое с собой": их легче разворачивать, они вряд ли сломаются внезапно после обновления чего-то там в системе, они не подвержены проблеме DLL Hell (и ее аналогов).

В конце концов, это всего лишь прототип, у которого есть важное качество -- он есть :-)

Цитата:
А что там бинарник по размеру больше исходника получается?
Там ничего необычного, типовая функция размера бинарника от исходника:

Размер бинарника = A + B * размер исходника, где B < 1.


Добавлено через 26 минут


В конце концов, мой прототип шлюза SHMEM -- MQTT (этот) дал на выходе файл 6 мегабайт :-)

Последний раз редактировалось Gel, 05.02.2020 в 20:02
Gel вне форума   Ответить с цитированием
Старый 06.02.2020, 16:19   #11
ATS
Senior Member
 
Регистрация: Aug 2013
Сообщения: 3 784
Благодарил(а): 12 раз(а)
Поблагодарили: 194 раз(а) в 190 сообщениях
По умолчанию Ответ: Shared memory - Web

Цитата:
Сообщение от Gel Посмотреть сообщение
Это обманчивое ощущение, по поводу размера. HTTP-протокол со стороны сервера достаточно объемистый и по факту серверу нужно уметь работать со многим: кодировками, сжатием, криптографией и т.д.
Откопал старую темку - решил наконец проверить. За ненадобностью шмемов раньше руки не доходили. Полчаса попричесывал и задача примерно обозначенная ТС вполне работает на 2Gi на PHP.

Примерно 4 килобайта.

Цитата:
Есть свая прелесть в решениях, которые "носят все свое с собой": их легче разворачивать, они вряд ли сломаются внезапно после обновления чего-то там в системе, они не подвержены проблеме DLL Hell (и ее аналогов).
Не люблю изобретать велосипед. Тем более размером с карьерный бульдозер.
Привык использовать встроенное.

Цитата:
В конце концов, это всего лишь прототип, у которого есть важное качество -- он есть :-)
Там в темке тоже лежит прототип.
Кстати ещё и с интересными идеями импорта журналов.

Цитата:
В конце концов, мой прототип шлюза SHMEM -- MQTT (этот) дал на выходе файл 6 мегабайт :-)
Значит там тоже кучка ненужного библиотечного мусора.
ATS вне форума   Ответить с цитированием
Старый 06.02.2020, 18:44   #12
Gel
Senior Member
 
Регистрация: Nov 2017
Сообщения: 561
Благодарил(а): 3 раз(а)
Поблагодарили: 38 раз(а) в 30 сообщениях
По умолчанию Ответ: Shared memory - Web

Цитата:
Сообщение от ATS Посмотреть сообщение
Откопал старую темку - решил наконец проверить. За ненадобностью шмемов раньше руки не доходили. Полчаса попричесывал и задача примерно обозначенная ТС вполне работает на 2Gi на PHP.

Примерно 4 килобайта.
Ну это же только исходник. А если посчитать размер с зависимостями, то будет как-то так (реально может быть и больше):

Код:
   Размер, Кб      Библиотека
---------------------------------
        60      php-common
     10953      libc6
        11      php-fpm
      4338      php7.0-cli
       245      libedit2
      4612      php7.0-common
      4357      php7.0-fpm
      3983      libmagic1
      2800      tzdata
       127      libapparmor1
       655      libpcre3
      3406      libssl1.0.0
       156      zlib1g
      2130      libxml2
        67      php7.0-json
      1466      php7.0-mbstring
       223      php7.0-opcache
       191      ucf
        63      php7.0-readline
       166      nginx-common
       868      nginx-light
Итого: 40877 Кб

И на фоне 40 мегабайт, даже ранее выложенные 13 мегабайт смотрятся вполне неплохо :-)

Цитата:
Значит там тоже кучка ненужного библиотечного мусора.
Ненужность -- понятие относительное: можно ли считать отладочную информацию ненужной, или она нужна, и т.п.
Gel вне форума   Ответить с цитированием
Старый 06.02.2020, 19:24   #13
ATS
Senior Member
 
Регистрация: Aug 2013
Сообщения: 3 784
Благодарил(а): 12 раз(а)
Поблагодарили: 194 раз(а) в 190 сообщениях
По умолчанию Ответ: Shared memory - Web

Цитата:
Сообщение от Gel Посмотреть сообщение
Ну это же только исходник. А если посчитать размер с зависимостями, то будет как-то так (реально может быть и больше):

Код:
   Размер, Кб      Библиотека
---------------------------------
....
Итого: 40877 Кб

И на фоне 40 мегабайт, даже ранее выложенные 13 мегабайт смотрятся вполне неплохо :-)
Знатно передергиваете.
Ну так и к вашим бинарникам можно весь линукс притянуть. Они далеко не автономны.
Указанное Вами уже используется контроллером.

Цитата:
Ненужность -- понятие относительное: можно ли считать отладочную информацию ненужной, или она нужна, и т.п.
Помню компилировал шлюзик для 2Gi при первом знакомстве и не мог понять на примерах почему бинарник весит 2-3 метра. Выкинул лишний мусор в библиотеках и получил два десятка килобайт бинарника.
ATS вне форума   Ответить с цитированием
Старый 06.02.2020, 20:02   #14
Gel
Senior Member
 
Регистрация: Nov 2017
Сообщения: 561
Благодарил(а): 3 раз(а)
Поблагодарили: 38 раз(а) в 30 сообщениях
По умолчанию Ответ: Shared memory - Web

Цитата:
Сообщение от ATS Посмотреть сообщение
Знатно передергиваете.
Ну так и к вашим бинарникам можно весь линукс притянуть.
Речь про прикладные библиотеки, а не системные.

Не надо верить в сказку, что программа в 4 килобайта каким-то магическим образом может обеспечить тот же набор функций, что и программа в 13 мегабайт.

За программой в 4 килобайта стоит большое дерево зависимостей, причем их набор функций заметно перевешивает набор функций специализированного бинарного файла меньшего размера, чем суммарный размер этих зависимостей.

Специализированный бинарный файл со статической линковкой (который носит все нужно с собой) не зависит от внешних прикладных библиотек.

А PHP-программа без наличия всего этого дерева прикладных библиотек -- просто бесполезный набор байт.

Цитата:
Помню компилировал шлюзик для 2Gi при первом знакомстве и не мог понять на примерах почему бинарник весит 2-3 метра. Выкинул лишний мусор в библиотеках и получил два десятка килобайт бинарника.
Вы не выкинули мусор, вы просто вместо статически слинкованного бинарника собрали динамически слинкованный, который зависит от внешних библиотек. Правда, просто перенести такой бинарник с одной системы на другую может быть проблематично.
Gel вне форума   Ответить с цитированием
Старый 07.02.2020, 01:17   #15
ATS
Senior Member
 
Регистрация: Aug 2013
Сообщения: 3 784
Благодарил(а): 12 раз(а)
Поблагодарили: 194 раз(а) в 190 сообщениях
По умолчанию Ответ: Shared memory - Web

Цитата:
Сообщение от Gel Посмотреть сообщение
Речь про прикладные библиотеки, а не системные.
Весьма растяжимое понятие. Особенно когда эти библиотеки уже используются установленной системой.

Цитата:
Не надо верить в сказку, что программа в 4 килобайта каким-то магическим образом может обеспечить тот же набор функций, что и программа в 13 мегабайт.
Легко. Видел многое за долгие годы.


Цитата:
За программой в 4 килобайта стоит большое дерево зависимостей, причем их набор функций заметно перевешивает набор функций специализированного бинарного файла меньшего размера, чем суммарный размер этих зависимостей.
И что это меняет? Этот набор уже есть и никуда не денется.
Маленькая птичка по мне так лучше большого таракана.

Цитата:
Специализированный бинарный файл со статической линковкой (который носит все нужно с собой) не зависит от внешних прикладных библиотек.
Но вы даже не догадываетесь сколько он носит ненужного.

Цитата:
А PHP-программа без наличия всего этого дерева прикладных библиотек -- просто бесполезный набор байт.
Скриптик всегда требует наличия интерпретатора. Но в системе SMH и PHP и Apache уже используются по умолчанию.

Цитата:
Вы не выкинули мусор, вы просто вместо статически слинкованного бинарника собрали динамически слинкованный, который зависит от внешних библиотек.
Нетушки...
Копилятор под линуксом X86 знать ничего не знал об операционке целевой машинки. Так что не надо о динамической линковке.

А прототип ТС использовать точно не буду. Содержит неизвестный сервер неизвестно как настроенный. Лезет в базу неизвестно зачем, а в ней все данные SMConfig-а. Да мало ли что там ещё в этих мегабайтиках прячется.
ATS вне форума   Ответить с цитированием
Старый 07.02.2020, 09:36   #16
Gel
Senior Member
 
Регистрация: Nov 2017
Сообщения: 561
Благодарил(а): 3 раз(а)
Поблагодарили: 38 раз(а) в 30 сообщениях
По умолчанию Ответ: Shared memory - Web

Цитата:
Сообщение от ATS Посмотреть сообщение
Весьма растяжимое понятие. Особенно когда эти библиотеки уже используются установленной системой.

Легко. Видел многое за долгие годы.
Я же не говорю, про видел/не видел. А про то, что никакой магии в этом нет и функции реализуются кодом сравнимого размера, а не святым духом.

Используя несколько 4-килобайтовых программ вы можете попытаться сэкономить на дисковой памяти, но можете потерять в потреблении оперативной памяти и скорости работы, удобстве разворачивания и прочее.

Для примера использования библиотек можно взять запускаемый файл /usr/bin/php5:

Код:
root@localhost:/# ldd /usr/bin/php5
        linux-vdso.so.1 (0xbec6d000)
        libcrypt.so.1 => /lib/arm-linux-gnueabihf/libcrypt.so.1 (0xb6f1a000)
        libz.so.1 => /lib/arm-linux-gnueabihf/libz.so.1 (0xb6ef7000)
        libresolv.so.2 => /lib/arm-linux-gnueabihf/libresolv.so.2 (0xb6ed7000)
        libonig.so.2 => /usr/lib/arm-linux-gnueabihf/libonig.so.2 (0xb6e8c000)
        libcrypto.so.1.0.0 => /usr/lib/arm-linux-gnueabihf/libcrypto.so.1.0.0 (0xb6d67000)
        libssl.so.1.0.0 => /usr/lib/arm-linux-gnueabihf/libssl.so.1.0.0 (0xb6d1f000)
        libdb-5.3.so => /usr/lib/arm-linux-gnueabihf/libdb-5.3.so (0xb6bfd000)
        libqdbm.so.14 => /usr/lib/libqdbm.so.14 (0xb6bc6000)
        libbz2.so.1.0 => /lib/arm-linux-gnueabihf/libbz2.so.1.0 (0xb6baa000)
        libpcre.so.3 => /lib/arm-linux-gnueabihf/libpcre.so.3 (0xb6b4e000)
        librt.so.1 => /lib/arm-linux-gnueabihf/librt.so.1 (0xb6b38000)
        libm.so.6 => /lib/arm-linux-gnueabihf/libm.so.6 (0xb6ac3000)
        libdl.so.2 => /lib/arm-linux-gnueabihf/libdl.so.2 (0xb6ab0000)
        libnsl.so.1 => /lib/arm-linux-gnueabihf/libnsl.so.1 (0xb6a90000)
        libxml2.so.2 => /usr/lib/arm-linux-gnueabihf/libxml2.so.2 (0xb69a6000)
        libgssapi_krb5.so.2 => /usr/lib/arm-linux-gnueabihf/libgssapi_krb5.so.2 (0xb696c000)
        libkrb5.so.3 => /usr/lib/arm-linux-gnueabihf/libkrb5.so.3 (0xb68d5000)
        libk5crypto.so.3 => /usr/lib/arm-linux-gnueabihf/libk5crypto.so.3 (0xb68a0000)
        libcom_err.so.2 => /lib/arm-linux-gnueabihf/libcom_err.so.2 (0xb688d000)
        libc.so.6 => /lib/arm-linux-gnueabihf/libc.so.6 (0xb679f000)
        /lib/ld-linux-armhf.so.3 (0x7f64d000)
        libpthread.so.0 => /lib/arm-linux-gnueabihf/libpthread.so.0 (0xb677c000)
        liblzma.so.5 => /lib/arm-linux-gnueabihf/liblzma.so.5 (0xb6753000)
        libkrb5support.so.0 => /usr/lib/arm-linux-gnueabihf/libkrb5support.so.0 (0xb673c000)
        libkeyutils.so.1 => /lib/arm-linux-gnueabihf/libkeyutils.so.1 (0xb6729000)
Это при том, что сам по себе /usr/bin/php5 занимает 6.6 мегабайта.

Мой пример со шлюзом в MQTT статически слинкован и не использует внешних библиотек от слова совсем, включает полную отладочную информацию и занимает 6.3 мегабайта.

Программа автора темы имеет динамическую линковку и подтягивает такие библиотеки:

Код:
root@localhost:/# ldd ~/SMH4SHM1
        linux-vdso.so.1 (0xbef6c000)
        libdl.so.2 => /lib/arm-linux-gnueabihf/libdl.so.2 (0xb6fd6000)
        libpthread.so.0 => /lib/arm-linux-gnueabihf/libpthread.so.0 (0xb6fb2000)
        libc.so.6 => /lib/arm-linux-gnueabihf/libc.so.6 (0xb6ec4000)
        /lib/ld-linux-armhf.so.3 (0x7f5ec000)
Цитата:
Этот набор уже есть и никуда не денется.
Запросто может деться, Сегнетикс никаких гарантий на этот счет не дает.

Цитата:
Но вы даже не догадываетесь сколько он носит ненужного.
Зачем мне догадываться, если я могу прямым образом посмотреть карту запускаемого файла, создаваемого при компиляции? Кроме этого, сборщик не включает в создаваемый файл неиспользуемый код.

Цитата:
Скриптик всегда требует наличия интерпретатора. Но в системе SMH и PHP и Apache уже используются по умолчанию.
На самом деле Apache Httpd там нет, есть lighttpd.

Цитата:
Нетушки...
Копилятор под линуксом X86 знать ничего не знал об операционке целевой машинки. Так что не надо о динамической линковке.
Чудес-то не бывает. Выходной размер в десятки килобайт -- однозначно динамическая линковка.

Берем простую программку:

Код:
#include <stdio.h>

int main(int argc, char **argv)
{
   printf("Hello, world!");
   return 0;
}
собираем со статической линовкой, получаем на выходе примерно 4 мегабайта. Собираем с динамической линковкой, получаем 12 килобайт.

Последний раз редактировалось Gel, 07.02.2020 в 10:02
Gel вне форума   Ответить с цитированием
Старый 07.02.2020, 12:30   #17
Gel
Senior Member
 
Регистрация: Nov 2017
Сообщения: 561
Благодарил(а): 3 раз(а)
Поблагодарили: 38 раз(а) в 30 сообщениях
По умолчанию Ответ: Shared memory - Web

Кстати, PHP на контроллере стоит версии 5. А актуальная версия, вообще-то, 7.4.2.

И что делать в этом случае, если у меня программа для PHP 7?
Gel вне форума   Ответить с цитированием
Старый 07.02.2020, 12:47   #18
ATS
Senior Member
 
Регистрация: Aug 2013
Сообщения: 3 784
Благодарил(а): 12 раз(а)
Поблагодарили: 194 раз(а) в 190 сообщениях
По умолчанию Ответ: Shared memory - Web

Цитата:
Сообщение от Gel Посмотреть сообщение
Я же не говорю, про видел/не видел. А про то, что никакой магии в этом нет и функции реализуются кодом сравнимого размера, а не святым духом.
Ну это убеждение тех кто привык к язычкам высокого уровня.

Цитата:
Запросто может деться, Сегнетикс никаких гарантий на этот счет не дает.
Ну так они и структуру своих файлов конфигурашек поменять могут.
Тогда все варианты пойдут на помойку

Цитата:
На самом деле Apache Httpd там нет, есть lighttpd.
Жаль если на новых контроллерах решили облегчиться.
Мой 2Gi так рапортует.
Код:
HTTP/1.1 200 OK
Date: Fri, 07 Feb 2020 08:09:29 GMT
Server: Apache/2.2.14 (Unix) mod_ssl/2.2.14 OpenSSL/0.9.7f mod_fastcgi/2.4.6
X-Powered-By: PHP/5.3.5

Цитата:
Берем простую программку:

Код:
#include <stdio.h>

int main(int argc, char **argv)
{
   printf("Hello, world!");
   return 0;
}
собираем со статической линовкой, получаем на выходе примерно 4 мегабайта. Собираем с динамической линковкой, получаем 12 килобайт.
И вы свято верите что для этого нужно 4 мегабайта?

Цитата:
Зачем мне догадываться, если я могу прямым образом посмотреть карту запускаемого файла, создаваемого при компиляции? Кроме этого, сборщик не включает в создаваемый файл неиспользуемый код.
А в примере выше кроме нужной printf() сколько мусора из stdio вдулось?


Добавлено через 7 минут


Цитата:
Сообщение от Gel Посмотреть сообщение
Кстати, PHP на контроллере стоит версии 5. А актуальная версия, вообще-то, 7.4.2.

И что делать в этом случае, если у меня программа для PHP 7?
У меня
Код:
Linux SMH2Gi-iMX27 2.6.29.1-rt4 #7 
PREEMPT RT Tue Jan 10 12:25:24 MSK 2017 armv5tejl
И что мне делать с вашими прогами под ARM V7?
ATS вне форума   Ответить с цитированием
Старый 07.02.2020, 14:03   #19
Gel
Senior Member
 
Регистрация: Nov 2017
Сообщения: 561
Благодарил(а): 3 раз(а)
Поблагодарили: 38 раз(а) в 30 сообщениях
По умолчанию Ответ: Shared memory - Web

Цитата:
Сообщение от ATS Посмотреть сообщение
Ну это убеждение тех кто привык к язычкам высокого уровня.
Это не убеждение, это объективная реальность.

Цитата:
И вы свято верите что для этого нужно 4 мегабайта?
А вы верите, что упомянутая программа с бинарником 12 кб потребляет меньше памяти, чем с бинарником в 4 мегабайта? Нет, не меньше, а то и больше.

Цитата:
А в примере выше кроме нужной printf() сколько мусора из stdio вдулось?
printf -- мощная функция, много чего могло влиться, начиная от операций с плавающей запятой и кончая набором юникодных таблиц.

Цитата:
У меня
Код:
Linux SMH2Gi-iMX27 2.6.29.1-rt4 #7 
PREEMPT RT Tue Jan 10 12:25:24 MSK 2017 armv5tejl
И что мне делать с вашими прогами под ARM V7?
Скомпилировать проги с параметром GOARM=5 и пользоваться...
Gel вне форума   Ответить с цитированием
Старый 07.02.2020, 17:33   #20
sinkevich
Новичок
 
Регистрация: Feb 2017
Сообщения: 13
Благодарил(а): 2 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Shared memory - Web

Всем добрый вечер!) Я топикстартер и у меня нет проблем с мегабайтами! С начал я очень переживал что мои программы такие жирные! Все время хотел уменьшить в них мегабайты но у меня не получалось... В результате у меня началась депрессия... я начал пить... мой брак трещал по швам! Но я сумел смерится с этим недостатком и понял что это часть моей индивидуальность! С тех пор я больше не думаю о своих мегабайтиках и они меня совсем не беспокоят!


Добавлено через 11 минут


Цитата:
Сообщение от Ilya J. Посмотреть сообщение
Подозреваю на основе ваших примеров делалось)
На самом деле для меня была новость обнаружить что подобные наработки уже существуют! И я бы с радостью ими воспользовался, но мне пришлось изобретать велосипед.


Добавлено через 15 минут


Программа автора темы имеет динамическую линковку и подтягивает такие библиотеки:

Код:
root@localhost:/# ldd ~/SMH4SHM1
        linux-vdso.so.1 (0xbef6c000)
        libdl.so.2 => /lib/arm-linux-gnueabihf/libdl.so.2 (0xb6fd6000)
        libpthread.so.0 => /lib/arm-linux-gnueabihf/libpthread.so.0 (0xb6fb2000)
        libc.so.6 => /lib/arm-linux-gnueabihf/libc.so.6 (0xb6ec4000)
        /lib/ld-linux-armhf.so.3 (0x7f5ec000)
Это по тому что я не настолько крут что бы работать с шмемами через сисколы.
Степень моей компетенции позволила всего лишь использовать cGo. У этого подхода есть единственный плюс. И это моя способность заставить работать его. В будущем я попробую взять за основу Ваши наработка для работы с шмемами.

А еще я немного подправил свою наработку и добавил функционала немного! Как мне перезалить программу в первое сообщение?

Последний раз редактировалось sinkevich, 07.02.2020 в 17:54 Причина: просто
sinkevich вне форума   Ответить с цитированием
Старый 07.02.2020, 18:02   #21
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 086
Благодарил(а): 15 раз(а)
Поблагодарили: 660 раз(а) в 604 сообщениях
По умолчанию Ответ: Shared memory - Web

Цитата:
Сообщение от sinkevich Посмотреть сообщение
А еще я немного подправил свою наработку и добавил функционала немного! Как мне перезалить программу в первое сообщение?
Прикрепите в новом сообщении. ТП со временем заметит и перенесёт в первое сообщение)


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie сейчас на форуме   Ответить с цитированием
Старый 08.02.2020, 11:38   #22
Gel
Senior Member
 
Регистрация: Nov 2017
Сообщения: 561
Благодарил(а): 3 раз(а)
Поблагодарили: 38 раз(а) в 30 сообщениях
По умолчанию Ответ: Shared memory - Web

Примеры с кодом лучше обрамлять тегами CODE, тогда они будут более читаемыми:

Код:
[
  {
    "Name": "mem_long",
    "Value": "641234",
    "LastChange": "2020-02-07 23:37:30",
    "Info": {
      "Hint": "Коммент!!!)",
      "Direction": "out",
      "Type": "long"
    }
  },
  {
    "Name": "mem_real",
    "Value": "634.3155",
    "LastChange": "2020-02-07 23:37:30",
    "Info": {
      "Hint": "",
      "Direction": "out",
      "Type": "real"
    }
  }
]
Gel вне форума   Ответить с цитированием
Благодарность от:
Старый 23.02.2020, 11:05   #23
sinkevich
Новичок
 
Регистрация: Feb 2017
Сообщения: 13
Благодарил(а): 2 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Shared memory - Web

Всем добрый день! Доработал немного проект!

1. Переписал работу с shmem без использования cGo. Спасибо Gel, подсмотрел в его проекте.

2. Изменения:
• появилось свойство "GUID"
Код:
[
    {
        "Name": "bool_1",
        "Value": "1",
        "LastChange": "2020-02-18 04:57:02",
        "Info": {
            "GUID": "49916D355A88473C91A0256E73B56EDD",
            "Hint": "",
            "Direction": "out",
            "Type": "bool"
        }
    },
    {
        "Name": "bool_0",
        "Value": "0",
        "LastChange": "2020-02-18 04:57:02",
        "Info": {
            "GUID": "32BFCF1EEB33456BA455BD35A7E64BA8",
            "Hint": "",
            "Direction": "out",
            "Type": "bool"
        }
    },...
]
• Изменился адрес для запроса всех переменных типа «mem» http://xxx.xxx.xxx.xxx:1324/vars

Появился API:
GET http://xxx.xxx.xxx.xxx:1324/vars вернет все переменные
direction фильтр по полю «Direction»
▪ тип: массив значений
▪ пример:
Код:
/vars?direction=in,out 
/vars?direction=in
type фильтр по полю «Type»
▪ тип: массив значений
▪ пример:
Код:
/vars?type=bool 
/vars?type=int,long
valIn фильтр по полю «Value»
▪ тип: массив значений
▪ описание: вернет переменные входящие в список
▪ пример:
Код:
/vars?valIn=23.5 
/vars?valIn=1.34,43
valNin фильтр по полю «Value»
▪ тип: массив значений
▪ описание: вернет переменные не входящие в список
▪ пример:
Код:
/vars?valNin=23.5 
/vars?valNin=1.34,43
valGt,valGte,valLt,valLte фильтр по полю «Value»
▪ тип: значение
▪ описание: вернет переменные >, >=,<,<= значения соответственно
▪ пример:
Код:
/vars?valGt=23.5 
/vars?valGt=1.34&valLte=51.8
timeBef,timeAft фильтр по полю «LastChange»
▪ тип: значение
▪ описание: вернет переменные до и после значения соответственно
▪ пример:
Код:
/vars?timeAft="2020-02-18 04:51:02"&timeBef="2020-02-18 04:57:33"
GET http://xxx.xxx.xxx.xxx:1324/vars/:guid
◦ тип: массив значений
◦ вернет все переменные в с соответствующим GUID
◦ пример
Код:
/vars/49916D355A88473C91A0256E73B56EDD 
/vars/49916D355A88473C91A0256E73B56EDD,32BFCF1EEB33456BA455BD35A7E64BA8
◦ Все выше описанные параметры применимы к /vars/:guid
▪ пример:
Код:
/vars/49916D355A88473C91A0256E73B56EDD,32BFCF1EEB33456BA455BD35A7E64BA8?valGt=23.5
Допускаются разумные комбинации параметров:
GET
Код:
http://xxx.xxx.xxx.xxx:1324/vars?timeAft="2020-02-17 04:57:02"&type=real,long&valGte=100&direction=out
PUT http://xxx.xxx.xxx.xxx:1324/vars/:guid
◦ тип: значение
◦ устанавливает значение соответствующей переменной c "direction=in"
◦ пример:
Код:
 curl -X PUT -H "Content-Type: application/json" -d '{"val":"56.3"}' http://xxx.xxx.xxx.xxx:1324/vars/6CF597064EBF41649800A9AE605752A2
Изображения
Тип файла: png Screenshot_2020-02-22_15-18-23.png (71.3 Кбайт, 87 просмотров)
Тип файла: png Screenshot_2020-02-22_15-19-36.png (73.4 Кбайт, 52 просмотров)
Тип файла: png Screenshot_2020-02-22_15-20-02.png (68.1 Кбайт, 47 просмотров)
Вложения
Тип файла: zip SMH4SHM_DIST.zip (7.63 Мбайт, 45 просмотров)

Последний раз редактировалось Arsie, 25.02.2020 в 21:23 Причина: Поправил пару багов)
sinkevich вне форума   Ответить с цитированием
Старый 24.02.2020, 20:22   #24
Ling-Ling
Новичок
 
Регистрация: Dec 2014
Сообщения: 22
Благодарил(а): 2 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Shared memory - Web

А в планах не было сделать это OpenSource разработкой? Устроить комьюнити с гитом и пушами, делать плюшки всем миром?
Ling-Ling вне форума   Ответить с цитированием
Старый 25.02.2020, 20:11   #25
sinkevich
Новичок
 
Регистрация: Feb 2017
Сообщения: 13
Благодарил(а): 2 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Shared memory - Web

Цитата:
Сообщение от Ling-Ling Посмотреть сообщение
А в планах не было сделать это OpenSource разработкой? Устроить комьюнити с гитом и пушами, делать плюшки всем миром?
Возможно чуть позже, когда вдохновение кончиться.
sinkevich вне форума   Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать свои сообщения

BB code is Вкл.
[IMG] код Вкл.
HTML код Выкл.



Часовой пояс GMT +4, время: 16:46.


Версия vBulletin: 3.8.7
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Segnetics 2005 - 2024