eddy_em: (Костерок)
[personal profile] eddy_em
Я решил набросать веб-морду для управления ИК-спектрометром IRBIS, для чего опять понадобилось прикручивать вебсокеты. И опять пришлось ковыряться в предыдущем коде (веб-морда для простой управлялки на raspberry Pi). Чтобы впредь не нужно было заниматься чисткой кода, я решил сделать минимальный пример, позволяющий общаться через очередь сообщений: код на гитхабе.

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

При подключении клиента ему каждую секунду передается текущее время, а клиент может отослать серверу сообщение, введенное в текстовое поле. Таким образом, легко можно будет использовать этот каркас в разных управлялках.

Остается теперь придумать метод авторизации/аутентификации. Простейшее, что приходит в голову — при соединении сервер отсылает "соль", клиент шифрует введенный пароль этой "солью" и отсылает серверу. А тот проверяет, все ли ОК.
Нужно лишь найти вменяемые MD5 или SHA на жабоскрипте.

P.S. Полдня убил на верстку базы веб-морды! Совсем уже этот HTML забыл. Пытался верстать блоками, но ничего не вышло. Решил по-старому — вложенными таблицами.

Date: 2016-04-22 11:19 pm (UTC)
From: [identity profile] 1i7.livejournal.com
>Решил по-старому — вложенными таблицами.

не-не,

[div style="display: table"]
[div style="display: table-row"]
[div style="display: table-cell"]
я в ячейге
[/div]
[/div]
[/div]

Date: 2016-04-23 04:27 pm (UTC)
From: [identity profile] eddy-em.livejournal.com
Как-то противоестественно получается!

Date: 2016-04-23 10:16 pm (UTC)
From: [identity profile] dimas.livejournal.com
Почему? Иерархический спуск, все логично, нет?

Date: 2016-04-24 09:37 am (UTC)
From: [identity profile] eddy-em.livejournal.com
логичней таблицы верстать таблицами.

Date: 2016-04-24 12:35 pm (UTC)
From: [identity profile] dimas.livejournal.com
Во-первых не всегда это именно таблицы, во-вторых, дивы "семантичнее", и проще отрисовывать браузеру, не дожидаясь полной загрузки. А так - да, вкусовщина.

Date: 2016-04-24 02:49 pm (UTC)
From: [identity profile] eddy-em.livejournal.com
Я стараюсь как можно реже влезать в дебри CSS! Но, к сожалению, приходится: чтобы не парить себе мозг GUI, делаю веб-морды (просто уже ни одной GUI библиотеки не осталось приличной: GTK скурвился, Motif уже 100 лет как не поддерживают, OpenGL'ная библиотека виджетов тоже черт-те когда перестала поддерживаться — создавать GUI'шный софт стало не на чем). Да и веб-морда упрощает процесс управления железкой: можно даже с мастдайного компьютера рулить. А то и вообще в планшете открыть веб-морду и тыкать кнопочки.

// кстати, когда я первую систему старт-финиш делал для даунхилла, для упрощения кросс-платформенности сделал ее эмулятором клавиатуры. Воткнул в планшет — вуаля!

Date: 2016-04-24 04:15 pm (UTC)
From: [identity profile] dimas.livejournal.com
Хм-с, чем не устраивает Qt или PyQt для гуя?

А то так, упрощая, можно и до консоли дойти, браго ssh даже на телефоне есть :)

Date: 2016-04-25 05:29 am (UTC)
From: [identity profile] eddy-em.livejournal.com
Культи не устраивают тем, что: а) уродство, еще большее, чем говнотык, б) C++.

> так, упрощая, можно и до консоли дойти
Не было бы нужды для стороннего народа делать, консольные клиенты и оставил бы. У меня подавляющее большинство велосипедов консольное, т.к. гуи там нафиг не втарахтелся!

> ssh даже на телефоне есть
Скажи это моему "бабушкофону" ☺

Date: 2016-04-25 09:23 am (UTC)
From: [identity profile] dimas.livejournal.com
(разводит руками) по мне plain С часто куда большее уродство :)

на бабушкофоне будет проблема и с браузером :)

Date: 2016-04-25 10:49 am (UTC)
From: [identity profile] eddy-em.livejournal.com
Ну так я на телефоны и не рассчитываю: извращение какое-то на мой взгляд все эти смартфоны...

Date: 2016-04-23 10:13 pm (UTC)
From: [identity profile] dimas.livejournal.com
Я, когда надо быстро поднять веб-сервер, и питон устраивает, просто беру bottle. Для продакшена не пойдет, а для девелопмента-тестирования - самое то.

Не проще взять какой-нить яваскриптовый движок, и просто отдавать данные рестом? Заодно бонусом будут всякие шкурки-темы ...

Date: 2016-04-24 09:41 am (UTC)
From: [identity profile] eddy-em.livejournal.com
Быстро поднять веб-сервер — это NGINX, и CGI работают...
Но в случае с вебсокетами можно в принципе и не запускать никаких серверов, если только одну-единственную веб-страницу нужно отдавать и никаких CGI.

Жабоскрипт терпеть не могу. И уж тем паче - на стороне сервера. Кроме С я никаких ЯП не признаю. Да и смысл что-то переделывать, если нормально работает?
Как сделать авторизацию, я уже придумал. В интернете полно всяких жабоскриптовых библиотек для MD5, SHA и т.п. Просто буду передавать в момент первого подключения "соль", браузер юзера будет вычислять хэш введенного пароля с этой солью и передавать при соединении вебсокет-серверу. Можно в куках или локалсторидже запоминать этот хэш на время сессии, чтобы пока вебсокет-сервер не перезапустили, можно было спокойно коннектиться, не вводя пароля.

В понедельник или вторник попробую все это добавить в пример.

Date: 2016-04-24 12:33 pm (UTC)
From: [identity profile] dimas.livejournal.com
Не, на бутылке удобнее и быстрее, и сразу получаешь и сервер приложений.

Я предлагаю как раз на клиентской стороне. Пишется заметно быстрее, чем на html хардкодить. И передавать потом только данные.

Date: 2016-04-24 02:44 pm (UTC)
From: [identity profile] eddy-em.livejournal.com
У меня 99.99% времени занимает расположение div'ов и всяких прочих фиговин. Долбаный CSS!!!

А на собственно код уходит не так уж и много: надо-то просто парсер протокола передачи данных написать и связать с всякими индикаторами и прочей фигней.

Изучать чужие жабоскриптовые библиотеки чаще всего значит намного затянуть написание велосипеда.

Кстати, после того, как вебсокеты стали более-менее нормально во всех браузерах работать, я послал лесом долбаные асинхронные запросы в случае, когда их часто надо делать! Нафиг по 10 раз в секунду CGI запускать для проверки статуса, если все решается куда проще на вебсокетах?
Вызов CGI остался лишь там, где от силы запрос в секунду (а то и 1 раз в минуту).

Date: 2016-04-24 04:13 pm (UTC)
From: [identity profile] dimas.livejournal.com
Так я про что и говорю - взять js-фреймворк, и про про это все можно практически забыть, есть достаточное количество виджетов, чтобы это получить сразу.

Старт будет чуть дольше, но зато потом все будет достаточно быстро, да и примеров часто достаточно.

Date: 2016-04-25 01:28 am (UTC)
From: [identity profile] masterspammer.livejournal.com
http://masterspammer.narod.ru/md5.js вот порт с C; стандартные тести от сишной версии проходили. На Latin-1 точно работает, на нелатинских символах лучше проверить.

April 2025

S M T W T F S
  1 23 45
67 89101112
13141516171819
20212223242526
27282930   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated May. 22nd, 2025 05:10 pm
Powered by Dreamwidth Studios