LINUX.ORG.RU

Сообщения kvpfs_2

 
Форум — Admin

UDP Hole Punching

Привет. Я краем уха слышал, что wireguard помогает делать UDP Hole Punching без всяких приседаний.

Представим, что есть сервер с белым IP (СБ), клиент_1 за натом (К1) и клиент_2 за натом (К2). Нужно установить прямое соединение между К1 и К2. В идеале, было бы просто слать на адрес в впн сети К1->К2, и оно само там разбирается, что лучше слать пакеты не через сервер. Но это так не работает, пакеты идут через сервер.

ОК, тогда вопрос 2 - если настроена ВПН ВГ сеть, отсылают ли клиенты друг другу специально пакеты для поддержания udp портов открытыми, чтобы можно было слать пакеты от одного клиента другому? Или пакеты идут только сервер<->клиент и ВГ ничем здесь не помогает?

Если ответ на последний вопрос «да». На десктопе я как-нибудь разберусь, К2 запишет свой адрес в DDNS, в К1 подниму ВГ, а дефолтным шлюзом сделаю К2 (запись в DDNS), и буду слать данные напрямую от К1 к К2. А что если К1 - андройд/айфон, там вообще есть варианты установить дефолтный шлюз? Я так посмотрел, вижу только для статический настроек, мне же нужно задать лишь шлюз

 , , , ,

kvpfs_2
()
Форум — Admin

iptables, NAT для wireguard

Привет. Есть у меня на сервере давний скрипт для настройки ВПН’а. Поднимается wg интерфейс, делается дефолт шлюзом и всё такое. Всё работает хорошо. За NAT отвечает эта строка:

# iptables -t nat -A POSTROUTING -o wg0 -j MASQUERADE

В общем полез я на досуге в этом рзбираться, она мне показалась странной, NAT должен настраиваться как-то так:

# iptables -t nat -A POSTROUTING -s 192.168.10/24 -o eth0 -j MASQUERADE

Но так не работает, я не понимаю почему, первое вообще кажется невалидным. Вот как я рассуждаю:

  1. Клиент идет на xxx.com через wg,
  2. На интерфейс eth0 сервера приходит пакет
  3. eth0->PREROUTING->routing->INPUT->wg обрабатывает пакет
  4. wg отправляет пакет на xxx.com
  5. wg->PREROUTIN->routing->FORWARD->POSTROUTING->eth0

Должно работать второе правило с выходным интерфейсом eth0. Через routing framework должны пройти пакеты с впн адресами и в конце на них накидывается NAT. В чем я ошибаюсь и почему непонятное бредовое правило #1 работает?

 ,

kvpfs_2
()
Форум — Development

Скрипт выдаёт странное

Привет. Есть файл с историй крипто транзакций вида:

2023-03-09 15:00:35	...	1023.585068
2023-03-13 01:00:11	...	2609.763044
2023-07-15 09:21:11	...	-150
2023-12-28 10:36:47	...	-60
2024-11-02 12:52:23	...	-3423.348112
2024-11-03 09:25:11	...	3396.854229
2025-01-22 23:30:23	...	-51

Надо было посчитать все транзакции и вычислить итоговый баланс. Ну я подумал: «накидаю сейчас шелл скрипт по-быстрому». Скрипт сделал, и работать он стал очень странно, в итоге для меня проще оказалось решить эту элементарщину на плюсах.

Но мне просто интересно - что не так с этим скриптом?

#!/bin/bash

bal=0
for e in $(awk -F'\t' '{print $3}' cr_in); do
	echo "${e}+${bal}"
done

Какой вывод я ожидал:

1023.585068+0
2609.763044+0
...

Какой вывод получил:

+023.585068
+009.763044
...

Наверное, кто-то может сказать навскидку. Я сильно копать не стал (подумал: «да идет на … от шелл»), но хочу понять на будущее

 ,

kvpfs_2
()
Форум — Development

Thread safe in rust

Приветствую, не холивара ради, а действительно интересно. Последнее время столкнулся с несколькими цпп либами, авторы которых не удосужились задокументировать как там ведут себя их поделки в многопотоке (thread safe ли api какой-то либы?). Приходится лезть в исходники и разбираться, открывать issue, писать в чаты и тп. Ну в общем больно это всё. Тут я вспоминаю, что растаманы козыряют тем, что у них там в расте нет data race.

Ну думаю - ок, может раст не так уж и плох, если избавит меня от боли - копаться в чьих-то там исходниках, автор которых забил на должные доки. Ну thread safe внутри моего модуля-кода меня интересует мало - я его знаю и понимаю + санитары + знаю как тестить, а вот что происходит в других либах и как с ними взаимодействывать - вот это действительно интересно. Давайте пример:

void library_function(void(*)(shared_ptr<int> i));

std::mutex s_mtx;
shred_ptr<Some_object> s;

void my_callback(shared_ptr<Some_object> i) {
   lock_guard l(s_mtx);
   s = i;
}

void my_thread() {
   while (true) {
      this_thread::sleep_for(1s);
      lock_guard l(s_mtx);
      if (s) {...}
   }
}

int main() {
   init_library(my_callback);
   thread t(my_thread);
   ...
   t.join();
   deinit_library();
}

Есть некая внешняя либа, мы её инициализируем и передаём ей колбэки, которые она дергает и как-то взаимодействует с нашим кодом. Либа внутри имеет свои потоки и в них исполняется (теоретически может).

Вопрос - не имея в доках инфы по поводы thread safe данной либы и её объектов, может ли раст дать какие-то гарантии в компал тайме, что если скомпилилось, то всё гуд? Some_object представляет из себя что-то вроде:

class Some_object {
public:
    do_this();
    do_that();
    ...
};

PS: не надо цепляться к тому, что раз передали shared_ptr - то объект должен быть thread safe, это вообще не факт, либа даёт объект - из глубин своего ливера в том виде, в котором автор счел нужным, никаких гарантий их этого не возникает

 , ,

kvpfs_2
()
Форум — General

hdmi->av конвертор

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

Нужно сделать запись на VHS, кассету. Есть видик, купил HDMI->AV конвертер, соединяю всё это хозяйство, а у конвертера на выходе в AV - No signal. У меня sway, в этот момент swaymsg выдаёт что-то вроде:

Output DP-1 'uknown uknown uknown' (focused)
  Current mode: 1360x768 @ 0 Hz
  ...

строки «Available modes:» нет.

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

 , ,

kvpfs_2
()
Форум — Development

Websocket'ы на ios

Привет. На android всё норм, на десктопе аналогично, а на iphone как-то странно, через попу,браузер (safari) не хочет создавать сокет с сервером, делает это через раз (даже хуже). js такой:

function connectWs() {
   const ws = new WebSocket("ws://" + location.host + "/ws");

   ws.onmessage = function (event) {
      const msg = event.data;

      const cmd = msg[0];
      const value = msg.slice(1);

      switch (cmd) {
      case '0':
         {
            const el = document.getElementById("counter0_value");
            if (el)
            el.textContent = value;
            break;
         }
      case '1':
         {
            const el = document.getElementById("counter1");
            if (el)
            el.textContent = value;
            break;
         }
      case '2':
         location.reload();
         break;
      case '3':
         console.log("ping");
         break;
      }
   };

    ws.onclose = () => {
        setTimeout(connectWs, 500);
    };
}

connectWs();

Сервер должен держать постоянный ws канал, обновлять счетчики на странице, перезагружать страницу. Пытался сделать app level ping (case 3) - без толку, отсылал нормальный пинг (который js не видит) вплоть до с 1 сек таймаутом.

Я вообще не вкурсе что там за айфоноспецифичные штучки такие, и js человек новый, мне нужно быстро накостылить рабочую версию на всех устройствах, а не только на андройдах. Объясните, пожалуйста, что это за хрень и как побороть.

PS: проблемы с сетью можно отсечь, клиенты-сервер в тестах в одной локалке

 , ,

kvpfs_2
()
Форум — Development

Можно ли дергать crow api из других (собственных) потоков?

Привет, заюзал crow для http сервера. Вопрос, который я не понял - а можно ли дергать crow апи из других (своих) потоков? Ведь он работает на базе asio, а там свой event_loop, thread_pool и всё такое, и надо помещать задание в очередь asio, которое будет выполнено его потоками. Сомнения были сразу, но после того как увидел Crow::tick(), которое даёт возможность помещать функцию в очередь на выполнение, задумался конкретно. Пример набросал, отдельный мой поток играет в пинг-понг с websocket коннектами и закрывает мертвые. Так можно?

std::mutex g_ws_mtx;
std::unordered_map<crow::websocket::connection*, steady_clock_t::time_point>
   g_ws_connections;


void ws_ping_thread_fn()
{
   while (true) {
      std::this_thread::sleep_for(...);
      if (true) {
         std::lock_guard lck(g_ws_mtx);
         for (auto i : g_ws_connections) {
            ...
            if (last time > threshold)
               // close connection
            else
               i.first->send_ping(...);
            ...
         }
      }
   }
}

int main() {
   crow::SimpleApp app;
   ...
   CROW_WEBSOCKET_ROUTE(app, "/ws")
      .onopen([&](crow::websocket::connection &conn) {
            std::lock_guard lck(g_ws_mtx);
         auto res = g_ws_connections.insert({&conn, steady_clock_t::now()});
      })
      .onclose([&](crow::websocket::connection &conn,
            const std::string& reason, uint16_t) {
         std::lock_guard lck(g_ws_mtx);
         auto res = g_ws_connections.erase(&conn);
      })
      .onmessage([&](crow::websocket::connection &conn,
            const std::string& data,
            bool is_binary) {
         std::lock_guard lck(g_ws_mtx);
         auto e = g_ws_connections.find(&conn);
         e->second = steady_clock_t::now();
      });

   std::thread ws_ping_thread(ws_ping_thread_fn);
   app.port(g_server_port).bindaddr("127.0.0.1").multithreaded().run();
   ws_ping_thread.join();
}

Может здесь есть люди знающие данный framework. Смотреть реализацию больно, там всё виртуальное, надо расчехлять отладчик и прочее. В доках тоже голяк

 

kvpfs_2
()
Форум — Linux-hardware

Интерфейс камеры

Привет. Нужен примерный план для дальнейшего движения. Пока толком вообще ничего не гуглил. Предположим, что хочу брать картинку с Х камер, передавать её на какой-нибудь одноплатник, который будет производить запись.

Главный вопрос вот в чём - по какому интерфейску камере лучше передавать данные? Ethernet? Подозреваю, что это сложный и дорогой девайс. Может взять кучу дешевых аналоговых камер, который подключены в какой-то мультиплексор -> оцифровка? Ну пусть это даже не аналоговая камера, а имеет какой-то цифровой интерфейс на выходе, все равно кучу камер подключаем к мультиплексору, а дальше одноплатник с этим разбирается.

 

kvpfs_2
()
Форум — Mobile

Интернет через ОПСОСА

Привет. Интернет через ОПСОСА на телефоне - скорость высокая, телефон раздает вайфай - скорость высокая, сим карта вставляется в роутер с модемом - скорость падает в несколько раз (несколько роутеров, результат один).

Вопрос - как это работает, как оператор определяет тип устройства? Была гипотеза про IMEI, но она не подтвердилась. Роутер регистрируясь в сети оператора отсылает некую инфу? Можно ли эту инфу подменить? Какие-то там ключевые слова чтобы погуглить не помешали бы

PS: TTL - тоже крутилось

 , , ,

kvpfs_2
()
Форум — General

amneziawg на роутере с openwrt

Приветствую. Более года юзаю настроенный amneziawg шлюз на домашнем пк (linux, естественно, с установленным модулем ядра), все остальные девайсы в локальной сети используюет его как шлюз интернета (настроил dhcp сервер выдавать адрес данного пк как gate). За год никогда не было никаких проблем, всё как часы.

Но на днях решил помочь товарищу - настроить и передать ему роутер, который будет сам amneziawg шлюзом, а не другой хост в локальной сети. У меня два роутера - один routerich с их модифицированной openwrt, второй - другой производитель прошитый чистой openwrt. Настроил по этой инструкции. Некоторое количество часов все работает норм, но далее amneziawg шлюз на роутерах умирает и инет отваливается. Помогает reset и новая настройка.

На десктопе я бы, наверное, в этом разобрался, но на роутере всё обмазано гуем, который черт знает куда кладет свои конфиги и как в точности работает. А netfilter на роутере - вообще сказка, я однажды дампнул правила и пытался разобраться, не вышло).

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

PS: когда захожу на роутер через ssh и делаю ping {сервер_в_европе_ip} - он успешно пингуется, ping 1.1.1.1 - нет

 , , , ,

kvpfs_2
()
Форум — Development

redirect после auth

Привет, есть такой конфиг nginx:

events {
}

http {
        limit_req_zone $binary_remote_addr zone=one:10m rate=15r/m;
        server {
                location / {
                        limit_req zone=one burst=40;
                        auth_basic           "closed site";
                        auth_basic_user_file /data/www/conf/htpasswd;
                        return 302 https://www.youtube.com/;
                }
        }
}

Идея была в том, что юзер должен ввести логин/пароль, и если все верно, то перенаправляется по нужному адресу, иначе долбится дальше в логин/пароль. Без return все работает (запрос пароля), но стоит добавить return, как он выполняется безусловно, auth не выполняется. Что здесь не так?

ПС: такой способ перенаправить посоветовал гпт

 

kvpfs_2
()
Форум — Talks

Шпионская камера

Привет. Заказал китайскую камеру, маленькая матрица и широкоугольный объектив похожий на пуговицу от одежды, собственно в таком качестве я и хотел её заюзать. От матрицы шлейф на плату с МК. Всё бы ничего, но эта дрянь пишет на карту памяти только если у неё есть коннект с wifi сетью, а у сети должен быть рабочий шлюз в инет, иначе запись на карту не происходит. Уж не знаю почему так странно, может чтобы теткам под юбки не смотрели, хотя если очень надо, то можно и рюкзак с роутером + питание + модем.

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

Может кто-нибудь встречал подобные матрицы и подскажет где? Я рассчитываю, что там в ней сбоку какой-нибудь мультиплексор, и чтение пикселей происходит последовательно, а не 100500 контактов, которые отвечают за каждый пиксель.

Или вот ещё вариант - реально ли достать матрицу с линзой из телефона, и посадить это хозяйство на длинный шлейф? Телефон в карман, а матрицу вместо пуговицы.

И ещё интересно, допустим, что я найду маленькую матрицу (не от телефона), не является проблемой прогонять кадры через какой-нибудь кодек? Ну т.е. есть и доступны реализации под MCU.

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

 , , ,

kvpfs_2
()
Форум — Talks

Где спрятать цифры

Всех приветствую. Широкими мазками - есть игра (в реале), участники должны получить некоторое количество цифр (например - x, y, z) и применить их где-то (опущу детали о применении, вопрос о другом). Спрятать эти x, y, z нужно как-то интересно и нетривиально, чтобы их запись/считывание не было делом обыденным, это должно вызывать какую-то эмоцию или околокринжовое состояние. Например:

  • запись на крышке бачка унитаза в каком-нибудь заведении
  • часть номера телефона у какой-то конкретной продавщицы/продавца
  • запись в книге отзывов в магазине

Плиз, накидайте идей. Только без всякого экстрима вроде табличка на вершине Эвереста

 

kvpfs_2
()
Форум — Admin

Ядро не может найти сжатую прошивку для GPU

Привет. Собираю своё linux ядро, мне не делать нечего, а иначе никак - на свежих ядрах начала зависать система, какие-то GPU related косяки, решил откатиться.

Проблема вот в чем - во время загрузки в ГПУ нужно влить прошивку, в комплекте дистра прошивки идут zstd сжатые, моё ядро пытается найтие не сжатую версию, ожидаемо происходит ошибка и ГПУ отваливается. В логах это выглядит так:

[    0.591319] [drm] Loading kaveri Microcode
[    0.591341] radeon 0000:00:01.0: Direct firmware load for radeon/kaveri_pfp.bin failed with error -2
[    0.591359] radeon 0000:00:01.0: Direct firmware load for radeon/KAVERI_pfp.bin failed with error -2
[    0.591366] [drm:cik_init] *ERROR* Failed to load firmware!
[    0.591376] radeon 0000:00:01.0: Fatal error during GPU init
[    0.591379] [drm] radeon: finishing device.

Искомая прошивка существует в виде:

/usr/lib/firmware/amdgpu/kaveri_pfp.bin.zst

В ядре я включил это:

CONFIG_FW_LOADER_COMPRESS: 

This option enables the support for loading compressed firmware files. ...

Но прошивка всё равно не находится. Где крутить?

Перемещено hobbit из general

 

kvpfs_2
()
Форум — Multimedia

Non-monotonic DTS

Здравствуйте. Готовлю небольшой фильм, когда сцен стало слишком много и ждать сборки всего за раз стало долго, решил сделать инкрементальную сборку сцен на основе Makefile’а. Во всех исходниках сцен png фреймы, фпс везде == 30

define scenes_nl
scene_90
scene_91
scene_92
...
endef

c_options := -movflags +faststart
v_options := -c:v libx264 -crf 18 -preset veryfast -pix_fmt yuv420p
a_options := -c:a aac -b:a 128k



define NL


endef
scenes := $(subst ${NL}, ,${scenes_nl})
parts = $(addsuffix .mp4, $(addprefix parts/,${scenes}))

output.mp4 : ${parts} global_audio/audio.m4a
	if [[ -e list_tmp.txt ]]; then rm list_tmp.txt; fi
	for f in ${parts}; do echo "file '$${f}'" >> list_tmp.txt; done
	ffmpeg -f concat -i list_tmp.txt -c copy ${c_options} output_inter.mp4
	ffmpeg -y -i output_inter.mp4 -i global_audio/audio.m4a -filter_complex "[0:1][1:0]amix[ma]"\
		-map 0:0 -map "[ma]" -c:v copy -shortest ${a_options} ${c_options} $@
	rm output_inter.mp4

parts/%.mp4 : %
	if ! [[ -e $?/audio.m4a ]]; then cp -i empty.m4a $?/audio.m4a; fi
	ffmpeg -y -framerate 30 -i $?/%04d.png -i $?/audio.m4a -map 0:0 -map 1:0 -shortest ${c_options} ${v_options} ${a_options} $@

clean:
	#-for s in ${scenes}; do rm $${s}/audio.m4a; done
	-rm parts/*
	-rm list_tmp.txt

touch:
	-for s in ${scenes}; do touch $${s}; done

Суть элементарная - сперва клепаю mp4 из каждой сцены (ffmpeg -y -framerate 30 -i $?/%04d.png -i $?/audio.m4a -map 0:0 -map 1:0 ${ffmpeg_options} $@), затем сливаю всё в один контейнер без перекодировки (ffmpeg -y -f concat -i list_tmp.txt -c copy $@).

Но появилась проблема - в выхлопе на втором шаге появились сообщения «Non-monotonic DTS; previous: 3803896, current: 3803875; changing to 3803897. This may result in incorrect timestamps in the output file» + если фпс в начале был 30, то у выходного файла он в районе 29.64. Что происходит? Как получить желаемое? Может на первом шаге mp4 неподходящий контейнер?

Заметил, что если аудио поток не шить в видики на первом шаге, то фпс у видика на вотором шаге == ожидаемым 30, но сообщения о DTS это не устраняет

 , , ,

kvpfs_2
()
Форум — Talks

Сцена с приближающимся грузовиком

Кто-нибудь может вспомнить фильм, в котором имеется сцена буд-то бы на камеру наезжает грузовик? Т.е. она на него смотрит (на высоте глаз), он мчится к ней и сбивает её.

 

kvpfs_2
()
Форум — Multimedia

Моделирование стекания жидкости по цилиндру

Привет. Застрял на какой-то полнейшей глупости, на ровном месте. Хотел смоделировать блендерным liquid симулятором следующее: на земле лежит цилиндр (не на основании), сверху на него льётся жидкость, мне надо было получить правдоподобную картину процесса. Но не тут то было, жидкость по цилиндру не хочет стекать естественным образом, пробовал разное, и силовыми полями пытался направить поток, тщетно. В итоге думаю: "сделаю поясок на цилиндре и сделаем в этом месте сужение. Получилось так (0x0.st). Что за бабочка? Так жидкость не стекает с цилиндра. Resolution == 120.

Что я могу не так делать и как получить нормальную модель процесса? Нормально - чем дальше от эмиттера, тему уже ручейки и никаких бабочек там и близко быть не может

 ,

kvpfs_2
()
Форум — Talks

Ткань фарадея

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

 

kvpfs_2
()
Форум — Multimedia

Разогнуть кадры

Привет. Небольшая предыстория: временами занимаюсь наложением cgi на реальную съемку, мне нужны одинаковые размеры объектов при вращении камерой. Когда впервые задумался об оптических искажениях на фото/видео, то взял камеру и обнаружил там примерно такую картину. На тот момент мне пришла неправильная (как оказалось) идея - нужно добиться того, чтобы линии были прямыми. Желаемое получил, но проблему изменения геометрических размеров объектов это не решило.

Поясню что имею в виду под изменением размеров: устанавливаем камеру на штатив, смотрим на какой-то статичный объект, вращаем камеру вокруг оси Z, в разных участках матрицы размер объект будет различен.

Поразмыслив ещё немного я пришел к выводу, что дело всё в том, что на края матрицы влезает меньше изображения, самый большой угол видимости расположен в центре. Это легко подтверждается следующим опытом: ставим камеру на штатив, смотрим на неподвжный объект, вращаем камеру вокруг Z, объект будет двигаться (проекция на матрицу) по следующей траектории. Вообще это несколько контринтуитивно учитывая загнутые вниз линии на скрине раннее. Полагаю, что дело в перспективных искажениях, т.е. меньший охват краями матрицы (обусловненный оптикой/формой матрицы и подобными факторами) компенсируется перспективными искажениями (в углах объекты дальше, значит они более маленькие, это с запасом компенсирует особенности оптики и загибает линии на первом снимке).

Ну и главный вопрос - как разогнуть кадры не на статичном а на группе кадров со вращающейся камерой, чтобы предметы имели одинаковые размеры? Если правильно всё понимаю, то это состояние, когда в тесте с вращением камеры объект будет иметь траектории в виде прямой линии. А кадр после обработки будет растянут в центральной части (т.е. на статичном первом снимке линии загнутся ещё сильнее к центру).

Как это сделать правильно? У меня были надежды на lensfun, там есть target_geomerty=fisheye_orthographic, звучит подходяще, но на деле все режимы работают одинаково и разгибают линии с первого снимка, мне нужно другое. Правда коэффиценты для lensfun я выводил сам, моей камеры нет в базе, может что-то не заполнил для возможности гнуть разными способами.

Пока в голову приходит вывести ещё раз коэффиценты самому, но для случая с вращающейся камерой.

Какие есть мысли/опыт по этому вопросу? Инфа для моей камеры из lensfun базы (можно ли заюзать их для моего кейса, чтобы не выводить новые?):

        <cropfactor>5.62</cropfactor>
        <calibration>
            <distortion model="ptlens" focal="24" a="0.00328" b="-0.03471" c="0.01753"/>
        </calibration>

 , , , ,

kvpfs_2
()
Форум — Development

На чем написать клиент/сервер

Приветствую. Обрисую примерную задачу: планируется отправлять покупателям девайс (ну если дойдет до этого, конечно), сердце которового - МК. Есть веб приложуха для телефона.

Сценарий сипользования: включается девайс, получает настройки через dhcp, запускается приложение, девайс периодически шлёт по широковещательному адресу инфу о себе (адрес), приложение коннектится с ним и работает. Приложение - не статические веб страницы, а есть элементы управляемые девайсом (счетчики всякие, таймеры, загрузка другой страницы)

Вопросы:

  1. Почему широковещательный адрес? Чтобы девайс и прложение друг друга находили, пердолинг неподкованных людей со статическими адресами - боюсь слишком высокий порог. Но! А можно ли полагаться на широковещательные адреса? Не уверен точно, но краем уха слышал, что маршрутизаторы дефолтно их не пропускают, или это не так (другими словами - пропускают ли они их между хостами внутри локальной сети, про внешнюю сеть речь не идет, конечно)?

  2. Веб приложения - вообще для меня неизвестное. Подозреваю, что раз клиент имеет управление девайсом в режиме нон-стоп (ну тот же счетчик инкрементить), то там должно быть обмазано джаваскриптом каким-нибудь. В общем - как проще/дешевле по ресурсам/на чем реализовать подобный клиент-сервер? По МК, думаю, каких-то проблем быть не должно (тупо отдать данные и открыть сокет для общения с приложением), а вот на чем сейчас просто написать клиент подходящий для меня под все виды мобилок? Смущают только динамические элементы, хочется спихнуть все задачи по формированию страницы клиенту (ну не на МК же это делать) и открыть сокет для общения с девайсом

PS: хочется написать клиент максимально просто (при сохранении необходимого функционала), а не какое-нибудь rocket science хай энд веб дерьмо с полным комплектом свистелок написанного на монструозном фреймворке

 ,

kvpfs_2
()

RSS подписка на новые темы