LINUX.ORG.RU

Сообщения 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
()

Thread safe in rust

Форум — Development

Приветствую, не холивара ради, а действительно интересно. Последнее время столкнулся с несколькими цпп либами, авторы которых не удосужились задокументировать как там ведут себя их поделки в многопотоке (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
()

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

Форум — General

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

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

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

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

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

 , ,

kvpfs_2
()

Websocket'ы на ios

Форум — Web-development

Привет. На 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
()

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

Форум — Development

Привет, заюзал 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
()

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

Форум — General

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

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

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

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

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

 , , , ,

kvpfs_2
()

redirect после auth

Форум — Web-development

Привет, есть такой конфиг 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
()

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

Форум — Admin

Привет. Собираю своё 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
()

Non-monotonic DTS

Форум — Multimedia

Здравствуйте. Готовлю небольшой фильм, когда сцен стало слишком много и ждать сборки всего за раз стало долго, решил сделать инкрементальную сборку сцен на основе 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
()

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

Форум — Web-development

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

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

Вопросы:

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

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

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

 ,

kvpfs_2
()

Сечение объекта на 2д ролике

Форум — Multimedia

Привет, не знаю как назвать это правильно, попробую набросать демонстрационный, аналогичный пример: имеем статичный снимок, где две комнаты с очень сильно разной интенсивностью освещения, между комнатами дверной проём, камера «смотрит» на проём, т.е. видит обе комнаты сразу. Имеется отснятое движение объекта (пусть это будет прямоугольный брусок для простоты). Хотим наложить движение бруска на снимок с комнатами, брусок перемещается через проём перпендикулярно дверной стене, камера видит сразу две грани прямоугольника.

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

Мне на ум приходит что нужно как-то сделать сечение каждого кадра по плоскости проёма, далее подкорректировать одну часть и наложить их друг на друга, на выходе будет световой переход. Очевидно, что делать это руками для каждого кадра - не вариант совсем. Что можно придумать? Возможно есть какая-то тулза, в которой можно «раскрасить» грани фигуры на ключевых кадрах, т.е. указать руками что является вертикальной гранью, а что горизонтальной? Но как-то хлопотно будет, конечно, а если это человек проходящий через проём + активно жестикулирует, запариться можно грани красить.

Есть ли какие-то разумные инструменты и варианты? Пусть я отсеку руками на 1% проценте кадров, куда дальше это скормить можно, что сделает сечение на оставшихся кадрах?

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

 ,

kvpfs_2
()

Настроить wireguard на роутере

Форум — General

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

Настроил на роутере wireguard, туннуль, разрешен forwarding echo "1" > /proc/sys/net/ipv4/ip_forward, nat. Далее на роутере меняю дефолтный путь с wan на wireguard:

# ip route delete default
# ip route add ${server_ip} dev wan
# ip route add default via ${wg_ip} dev wg0

На роутере все хорошо, условный 1.1.1.1 пингуется через сервер (это видно по времени пинга), но с других девайсов, которые используют роутер как шлюз - доступа к инету нет.

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

 , ,

kvpfs_2
()

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