LINUX.ORG.RU

Сообщения KivApple

 

Проксировать S3 с авторизацией

Форум — Admin

Есть S3-совместимое хранилище. Нужно дать человеку возможность загружать (и делать все остальные операции) туда файлы в некоторые bucket, но не создавать новые bucket и не иметь доступа ко всем другим bucket. При этом хранилище не на Amazon и там нет нормальных ACL, поэтому один токен доступа на всё и по понятным причинам я этому человеку его дать не могу.

Зато есть сервер, которому я доверяю (можно положить туда токен доступа от S3). Нужно организовать какое-то проксирование хранилища.

Проксировать хранилище на чтение и без авторизации - легко. А вот с записью возникают вопросы. В принципе меня даже устроит если с точки зрения клиента там не S3 торчать будет, а любой другой протокол (FTP, WebDav и т. д.), главное чтобы все действия клиента с сервером на самом деле уходили в нужные bucket S3 хранилища за ним.

 

KivApple
()

Добавление в Android-приложение рекламы и аналитики

Форум — Development

Примерно год назад узнал, что оказывается 1 в 1 выполнение официальной инструкции по интеграции AdMob в Android приложение приводит к его удалению с Google Play из-за отсутствия политики конфиденциальности (о необходимости которой указано совсем не там, где лежит официальная инструкция). После добавления ссылки на политику конфиденциальности, приложение было снова удалено по той же причине. Я отключил при инициализации рекламы учёт интересов пользователя (там есть флаг), но результат не изменился. В итоге мне было лень разбираться и я просто убрал рекламу, приложение больше не удаляли.

Сейчас у меня есть предположение, что дело было в том, граждан ЕС надо спрашивать ПРИ ПЕРВОМ ЗАПУСКЕ ПРИЛОЖЕНИЯ о том, хотят ли они персонализированные объявления или нет (и в зависимости от ответа передавать тот самый флаг в AdMob). Хотя это не объясняет, почему год назад Google удалил приложение даже если оно всегда не пользовалось персонализацией объявлений, но можно предположить, что Google просто не вникает в детали и рассуждает, если в приложении есть AdMob, то оно обязательно должно выводить окошко, потому что по-любому использует персонализацию иначе.

Так вот, теперь я хочу добавить в приложение не рекламу (её так и нет), а Firebase Analytics. Если для согласия на рекламу теперь даже есть удобная Google Consent Library, то про аналитику информации ещё меньше. Есть возможность отключить использование им рекламного идентификатора, но не случится ли то, что случилось в прошлый раз, что Google просто не стал разбираться.

Интересует опыт ЛОРчан (я знаю, что тут есть владельцы Android-приложений). Интересуют истории успеха вида «мы добавили в наше приложение аналитику/рекламу, гугл его удалил, мы сделали Х и больше он его не удалял» или «мы сразу сделали Х при добавлении рекламы/аналитики и вот уже прошла куча времени, а гугл нас не удалил».

 , ,

KivApple
()

Воспроизведение видео в Chrome делает плохо другим Chrome

Форум — Desktop

При воспроизведении видео и/или звука в одном окне Chrome (хоть в том же браузере, хоть во всяких Electron-приложениях) заставляет очень сильно лагать другие окна Google Chrome (поведение как при жёстком своппинге). При этом только при соблюдении сразу двух условий:

  • Одно из окон Chrome распахнуто во весь экран и при этом не является единственным распахнутым окном Chrome

  • Окно с мультимедия не в фокусе

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

Аномальной активности по CPU или IO не наблюдается, свободной RAM тоже предостаточно. В консольном выводе Chrome ничего подозрительного нет, в логах pulseaudio и gnome-shell тоже ничего. Воспроизведение мультимедия в приложениях не связанных с Chrome (например, VLC) данного эффекта не вызывает.

Дистрибутив: Arch Linux, среда рабочего стола Gnome.

UPD: При установке переменной среды QT_X11_NO_MITSHM, а также параллельной установке стабильной и dev-веток, они не влияют друг на друга. Считаются только окна одинаковой ветки. Также прекратилось влияние Electron-приложений.

 , , ,

KivApple
()

Завернуть SSH в VPN на роутере

Форум — Admin

Есть интернет подключение, которое режет всё кроме DNS, HTTP и HTTPS (тупо по портам, то есть вместо HTTPS можно гнать всё, что угодно).

Есть VPS, на которой я поднял OpenVPN сервер на 443 порту. К нему отлично работает подключение с компьютера по тому интернет подключению в режиме заворачивания всего трафика в VPN (или не всего, как настрою маршруты).

Есть роутер на OpenWrt. Хочу, чтобы коннект к OpenVPN держал он, а не мой компьютер, при этом в VPN заворачивался только SSH, а весь остальной (HTTP, HTTPS) трафик шёл как раньше, потому что мне нет смысла терять сетевую производительность.

Подключение к OpenVPN настроил на OpenWrt, с роутера могу потыкать другой конец VPN (сервер), а если прописать в конфиге OpenVPN заворачивание всего трафика, то и ходить в интернет. Однако с Wi-Fi клиента ничего не работает. Второй конец VPN даже не пингуется, в режиме заворачивания всего трафика на компьютере просто пропадает интернет.

Таким образом у меня есть два вопроса:

  • Как заставить работать хождение через VPN на роутере для Wi-Fi клиентов?

  • Как заставить роутер заворачивать в VPN только определённый набор портов (SSH), а всё остальное пускать без него?

 , ,

KivApple
()

Nginx: отправка If-Modified-Since бекэнду

Форум — Admin

Я хочу заставить nginx кешировать любые ответы бекэнда вне зависимости от желания браузера (cache-control: no-cache должен игнорироваться). Таким образом, чтоб если у nginx есть что-то в кеше (даже если оно протухло несколько лет назад), он обязательно отправил бекэнду заголовок If-Modified-Since и дал шанс ответить 304 Not Modified.

В настоящий момент я написал такой конфиг:

proxy_cache_path cache/ keys_zone=my_cache:10m max_size=10g use_temp_path=off;
...
location / {
    proxy_cache my_cache;
    proxy_cache_revalidate on;
    proxy_cache_use_stale updating;
    proxy_cache_background_update on;
    proxy_cache_lock on;
    proxy_pass http://localhost:8080/;
    proxy_ignore_headers Cache-Control;
}

Бекэнд добавляет к своим ответом заголовок (пробовал разные комбинации, результат не меняется):

Cache-Control: max-age=60, must-revalidate, public

При первом обращении nginx кеширует ответ на диск, при последующих запросах вообще не обращается к бекэнду, но стоит кешу протухнуть он обращается к бекэнду без if-modified-since, соответственно бекэнд не может знать, что у него есть шанс ответить 304 вместо полноценной обработки запроса.

Я хочу заставить nginx обращаться к бекэнду всегда (этого легко добиться, например, max-age=1), но при этом всегда же он проверял изменённость ответа (if-modified-since) и бекэнд уже решал напрягаться ему полной обработкой или отдать 304 с пустым телом.

Что я делаю не так?

 

KivApple
()

Авторские права программиста и работа

Форум — Talks

В РФ, если человек пишет код в нерабочее время, не используя оборудование компании (на практике фирме будет сложно доказать эти два пункта в свою пользу, если прошло много времени, к тому же далеко не во всех фирмах вообще есть слежка за оборудованием программистов) и не связанный с задачами по работе, то все авторские права принадлежат исключительно ему. Конечно, есть пример nginx, но это скорее пример того, что в РФ некоторые люди и компании перед законом равнее чем другие (точно также, как, например, российский банкир может без суда и следствия отправить группу захвата из Москвы против блоггеров, которые сняли про него обидное видео), плюс там была зацепка,что nginx таки был непосредственно связан с рабочими обязанностями его автора и продукт был внедрён в Rambler после разработки. А так, в 99% случаев программист в РФ может спокойно пилить OpenSource или даже свой стартап по выходным и ничем не рисковать.

В США ситуация диаметрально противоположная (если ситуация отличается от штата к штату, поправьте меня). Там в договорах норма пункт о том, что даже написанный OpenSource вечером воскресенья - собственность организации и его никуда нельзя выкладывать без письменного согласия работодателя. Если же разработчик посмеет по воскресеньям пилить код для своего будущего стартапа, то миллионные иски гарантированы. При этом поскольку в США свобода договора гораздо шире, то эти нормы реально работают. Тут единственный вариант у разработчика - писать такой код на личном железе без бекдоров от работодателя и вне офиса, никому ничего не рассказывать, опубликовать только спустя много месяцев после увольнения (чтобы было правдоподобно, что он мог написать это за эти несколько месяцев в авральном режиме). И то не факт, что это безопасно.

А как дела обстоят в Европе? На ЛОРе есть много людей живущих и работающих в Европе, наверняка некоторые из них интересовались вопросом или хотя бы вдумчиво прочитали трудовой договор.

 

KivApple
()

Поиск и удаление всех комментариев текущего пользователя во ВКонтакте

Форум — Development

Нужно разработать приложение, позволяющее:

  1. Авторизоваться во ВКонтакте
  2. Находящее все комментарии текущего авторизованного пользователя везде, кроме его стены
  3. Удаляющее их

Интерфейс приложения на ваше усмотрение - можно CLI, можно GUI. В принципе меня устроит даже если приложение просто выдаст в терминал инструкцию для получения токена авторизации через браузер ручками и копипасту его в терминал, но, разумеется, если вы сделаете это более удобным способом, то это только приветствуется.

Приложение должно быть кроссплатформенным - работать как минимум под Linux и Windows без необходимости установки.

Исходный код приложения следует опубликовать на выбор на GitHub/Bitbucket/что-угодно-где-он-будет-доступен-для-скачивания-без-регистрации. Лицензия на ваше усмотрение любая свободная.

Предлагаемая оплата: 2000 рублей (вероятно, заинтересует в первую очередь студентов) переводом на карту. Если кто-то на форуме испытывает потребность в таком же приложении, то не против скинуться с другими форумчанами и увеличить «зарплатный фонд».

Дополнительные фича №1 (можно не реализовывать, если лень за предложенные деньги): Отображение найденных комментариев с группировкой по их местоположению: стены пользователей, сообщества, видео, фото и т. д. С возможностью отмечать отдельные комментарии или их группы для последующего удаления.

Дополнительная фича №2 (можно не реализовывать, если лень за предложенные деньги): Сохранение удаляемых комментариев в текстовый файл (ссылка на объект, где он был размещён + текст комментария).

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

Перемещено leave из job

 , ,

KivApple
()

Ждущий режим на Dell XPS 13 9350

Форум — Linux-hardware

Стоит Arch Linux со всеми обновлениями на сабже. Несколько месяцев назад появилась проблема - ноутбук не просыпается из ждущего режима (suspend to RAM), начинает грузится с нуля. При этом такое происходит только если за время ухода в сон было отключение ноутбука от блока питания. Если усыпить и сразу пробудить ничего не трогая, то проснётся нормально. В прошлом всё работало нормально, скорее всего какое-то обновление что-то сломало. С батареей проблем нет - ноутбук спокойно несколько часов работает от аккумулятора.

В чём может быть проблема?

 , , ,

KivApple
()

Проблемы с Bluetooth на Intel 8260

Форум — Linux-hardware

Имеется ноутбук Dell XS 13 9350. Проблема: дёрганно работает Bluetooth-мышь MX Master 2S. Причём на Windows, а также полгода назад на Linux всё работало отлично. Через Unifying так же работает отлично, но я не хочу занимать USB-порт (их у ноутбука всего 2 штуки). Поэтому на саму мышь грешу в последнюю очередь. Так же проблема вряд ли аппаратная, ибо ничего не изменила замена Wi-Fi модуля, а на Windows всё работало отлично. В прошлой теме мне посоветовали «выкинуть Broadcom и поставить нормальный Intel». Сегодня пришла посылка с Али, я заменил Wi-Fi модуль. А проблема всё та же (хотя признаю, Wi-Fi стал работать гораздо стабильнее).

$ lspci | grep Wireless
3a:00.0 Network controller: Intel Corporation Wireless 8260 (rev 2a)

Жду ваших советов. Может быть какие-нибудь опции ядра или modprobe могут быть полезны...

 ,

KivApple
()

Проблемы с Bluetooth-мышью

Форум — Linux-hardware

Имеется ноутбук Dell XPS 13 9350 с Arch Linux. Имеется Bluetooth-мышь MX Master 2S подключенная по Bluetooth. Раньше отлично работала, но после переустановки системы движение указателя стало дёрганным. При использовании тачпада таких проблем нет (да и вообще все анимации DE не тормозят - проблема не в видео). На другом компьютере под офтопиком таких проблем нет, так что дело и не в мыши (но если что недавно заряжал её до 100%).

Отсюда можно сделать вывод, что какие-то проблемы с драйвером Bluetooth или с настройками его энергосбережения.

Пакет bcm4350-firmware с AUR стоит.

В чём может быть проблема?

 , , ,

KivApple
()

Проблема с открытием docx в KDE

Форум — Desktop

В системе установлено 3 приложения, способных открывать docx: LibreOffice, WPS Office, Microsoft Office 2016 (через Wine). Я пробовал через настройки типа файла в Dolphin менять выбранное приложение по умолчанию. Однако двойной клик по файлу в любом случае открывает документ в Ark (архиватор, фактически это zip же), даже если вовсе удалить Ark из списка приложений, в которых следует открывать docx. MIME тип в свойствах файла отображается правильный. В контекстном меню файла отображается первым пунктом «Open with Название приложения» правильно. Но двойной клик отрабатывает не правильно. Как и попытка открыть такой файл другим способом (например, скачать docx через Google Chrome и попытаться открыть кликом в списке загруженных). С doc (который не zip внутри) таких проблем не возникает. С odt (который таки тоже zip внутри) тоже.

Как это можно исправить? Кроме полного удаления Ark из системы, ибо архиватор мне таки нужен.

 , , ,

KivApple
()

Периодические зависания ввода в KDE

Форум — Desktop

Столкнулся со следующей проблемой. При некоторых обстоятельствах KDE оказывается в следующем состоянии - нагрузка на CPU в пределах нормы, окошки обновляют своё содержимое (например, играет видео в браузере, всякие анимации и т. д.), указатель мыши двигается, но... ничего не реагирует на клики, наведение указателя мыши, нажатия клавиш клавиатуры. Единственным решением оказывается переключиться в другую виртуальную консоль и убить иксы. Я не уверен на 100%, но мне кажется эта проблема связана с захватом ввода, который делают некоторые окна. Например:

1) Я нажимаю Print Screen

2) Открывается скриншотилка KDE

3) Я выбираю сделать новый скриншот выделенной области

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

5) Однако оно появляется с задержкой, в течение которой ничто не мешает совершить мне больше кликов по кнопке «Сделать новый скриншот». Например, потому что я не уверен, что хорошо нажал (тачпад иногда подглючивает).

6) В итоге нифига не появляется, а ввод таки захватывается

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

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

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

 , , ,

KivApple
()

Облачное хранение данных пользователя мобильного приложения

Форум — Development

Допустим, я разрабатываю некую игрушку для Android. В этой игрушке у каждого юзера есть состояние, заданное буквально несколькими числами. Мне нужно чтобы это состояние синхронизировалось между всеми девайсами одного пользователя, а также переживало переустановку приложения (я не против какой-нибудь специальной кнопки удаления аккаунта, чтобы следовать всяким GPDR, но хочу избежать случайной потери прогресса игроком). Также мне нужно осложнить читинг. То есть когда данные проходят через сервер синхронизации между девайсами, то они проверяются на корректность изменения (небольшая функция, выполняющаяся server side) и некорректные действия игнорируются и не распространяются на другие девайсы юзера (более того, когда девайсы с некорректными данными попытается засинхронизироваться изменённые данные перезапишутся данными с сервера). Например, какое-то изменение состояния может происходить только раз в сутки. Нужно нейтрализовать тупые варианты вроде перевода часов. Кул хацкеры пусть взламывают сколько-угодно локально, пока это не касается server-side копии мне пофиг. Хочется избежать явного создания учётки, чтобы юзер просто поставил приложение и получил состояние, которое было до удаления приложения. Никаких «авторизуйтесь с помощью Facebook/VK/Google/etc». Я видел подобное поведение в других приложениях, значит это как то возможно.

Разумеется, хочется получить это всё бесплатно, пока у приложения не миллионы пользователей (то есть нужен сервис с бесплатным периодом до каких-то объёмов хранимых данных/юзеров).

Какие у меня есть варианты? Firebase? Что-то другое? В какую сторону копать?

 

KivApple
()

MSO 365 и Wine

Форум — Desktop

Хочу завести Microsoft Office 365 под Wine. Есть до сих пор активная подписка от французского универа, где я учился по обмену, так что вопросы работы активаторов не стоят - всё легально (может быть, когда-нибудь они заблочат моё универское мыло и халява кончится).

Сделал всё по этой инструкции: https://appdb.winehq.org/objectManager.php?sClass=version&iId=35527

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

005d:fixme:advapi:EventProviderEnabled deadbeef, 4, 2: stub
005d:fixme:d3d11:d3d11_immediate_context_DiscardView1 iface 0x6d395c0, view 0x122f94f0, rects 0xd4ffc0c, num_rects 1 stub!

Проблема не в производительности железа, ибо под виртуалкой таких тормозов нет, просто FPS анимаций проседает (но на то это и виртуалка, что там производительности меньше).

Вторая проблема, что окно невозможно перетаскивать штатными средствами (за заголовок), а если применить магию Linux (тащить за произвольную точку с зажатым Alt), то окно один раз переключаетя из максимизированного состояния в нормальное (становится где-то на четверть экрана), но его невозможно ни отресайзить, ни вернуть в максимизированное состояние, только также таскать с зажатым Alt.

Если вторая проблема мешает не так сильно, то первая делает возможным только комфортный просмотр редактирования (анимации прокрутки и т. д. идеально плавные), но не редактирование.

В какую сторону копать? Пробовал ставить dxvk через winetricks (ведь судя по сообщениям в консоли MSO активно использует DirectX), но тогда офис превращается в тыкву (вылетает при запуске), пришлось удалять установленные им DLL.

Система: Arch Linux x86_64 со всеми обновлениями.

 ,

KivApple
()

NetworkManager прикладывает недостаточно усилий для подключения

Форум — Desktop

Есть ноутбук с Wi-Fi. Для управления сетью используется NetworkManager. Проблема в том, что при пробуждении Wi-Fi модуль как будто пробуждается не сразу или ещё чего-то в этом роде. В общем, NM пытается подключиться к точке доступа, но в итоге у него это не выходит и его гуй спрашивает пароль (вдруг не правильный). Но я отказываюсь ввести новый пароль, жду 10-15 секунд и уже ручками выбираю подключение и всё подключается.

В общем, я бы хотел чтобы NM пытался дольше подключаться к Wi-Fi и не переспрашивал бы пароль. Пусть хоть бесконечно пытается подключиться (хотя хватит и разумного времени вроде одной минуты). Разумеется, я имею ввиду многократное повторение полного цикла подключения, а не отправить 1 раз запрос на подключение и ждать. А если пароль неверный, я как-нибудь сам догадаюсь, если точка доступа не моя и коннект идёт ту же минуту.

Может быть, есть какие-то опции конфигурации на эту тему? Или только патчить исходники?

 ,

KivApple
()

Spectre и Meltdown

Форум — Security

Сначала я только потешался над теми, кто спрашивал как отключить патчи против Spectre и Meltdown и думал «ну это просто Яндекс.Музыка на жабоскрипте и поэтому при воспроизведении музыки проц греется под 90 градусов, жабоскриптмакаки такие жабоскриптмакаки», «ну это просто Windows такая нерациональная и прожорливая, поэтому при активном VirtualBox проц разогревается до 100 градусов». А потом отключил эти патчи на пробу. И что я имею? VirtualBox с Windows 10 с MSO + на хосте браузер с десятком владок (в одной из которых играет всё та же музыка) + установка обновлений пакетов = средняя температура 65 градусов, изредка поднимается до 75, выше не растёт совсем (в простое, разумеется, меньше, это всё же нагрузка), иногда опускается вообще до 60. Ни о каких 100 градусах не может быть и речи. Ах да, полнодисковое шифрование никуда не делось (нужно мне не от спецслужб, а чтобы не рвать волосы в случае потери/кражи ноутбука).

Но всё же с другой стороны по идее я сделал систему уязвимой, не хорошо это. Но насколько?

Защита от нативных бинарников лично мною запущенных меня не особо интересует. Без всяких spectre и meltdown они, если захотят, просто сделают rm -rf ~ или передадут содержимое моего хомяка злоумышленнику. То что им не получится достучаться до каких-то потрохов системы ситуацию особо не улучшит. А вот где действительно выполняется недоверенный код - так это браузер. Ведь я каждый день посещаю сотни сайтов и где то может быть запрятан эксплойт. Причём не обязательно по желанию владельца (даже ЛОР могут теоретически взломать и напихать эксплойтов).

В общем, реквестирую как можно больше тестов на наличие Spectre/Meltdown. То есть чтобы я такой открыл в браузере и оно написало «уязвим/неуязвим», либо в крайнем случае крашнуло браузер/систему (но исключительно в демонстрационных целях, без реального заражения/увода/уничтожения данных).

Пока нашёл только это:

https://react-etc.net/entry/javascript-spectre-meltdown-vulnerability-check-f...

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

Если из современного браузера никак не достучаться до этой уязвимости в настощее время, то тогда ИМХО для однопользовательской системы без настроенного SELinux/AppArmor лучше жить без патчей.

UPD: Закончилась установка пакетов и теперь температура вообще 56 градусов при той же нагрузке в виде браузера с музыкой и VirtualBox.

 , ,

KivApple
()

Сборка OpenH264 для Android

Форум — Development

Пытаюсь собрать OpenH264, чтобы потом использовать в Android приложении. Собираю как-то так:

PATH=~/Apps/AndroidSDK/tools:$PATH make OS=android NDKROOT=~/Apps/AndroidNDK TARGET=28

В итоге получаю ошибку линковки so-библиотеки:

/..//bin/ld: unrecognised emulation mode: armelf_linux_eabi
Supported emulations: elf_x86_64 elf32_x86_64 elf_i386 elf_iamcu elf_l1om elf_k1om i386pep i386pe
clang++: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [Makefile:241: libopenh264.so] Error 1

Насколько я понимаю, NDK зачем-то дёргает системный ld вместо правильного, он, разумеется, не умеет линковать под arm.

Как это исправить?

 ,

KivApple
()

Посоветуйте протокол

Форум — Development

Я всё дальше мусолю задачу стриминга по сети изображения с вебок/плат захвата с помощью одноплатника. Ресурсов мало, а ещё нужны маленькие задержки, поэтому так и не нашёл способа не пилить свои велосипеды. Сейчас у меня есть прога стриминга с V4L2 устройств, которая по-максимуму использует аппаратные энкодеры самих устройств захвата (если девайс умеет выдавать кадры в H264 всё совсем круто с битрейтом из коробки и нагрузка на проц минимальная, ибо только копирование, если девайс выдаёт MJPEG, то всё немного хуже - пришлось делать адаптивный алгоритм, который иногда пересылает неизменные кадры, а иногда пережимает существующие с большим сжатием, причём ещё и подбирая качество, чтобы более-менее соответствовать битрейту). А ещё многопоточность, да (то есть у меня одновременно несколько потоков теребят V4L2 устройство, параллельно пережимают JPEG-и, если надо, и только при отправке по сети есть небольшая синхронизация, чтобы фреймы шли в правильном порядке, выгода точно есть, ибо если создать только 1 поток, то всякие Orange Pi не тянут 30 fps пережатие JPEG, а с 2-4 потоками тянут).

ffmpeg не умеет в адаптивное пережатие (он может либо пережимать всегда, либо всегда копировать неизменный поток, а не выбирать действие в зависимости от того, насколько успешно справилась сама вебка с конкретным кадром, также не видел там подстройки качества сжатия JPEG для целевого битрейта, насколько я понял, такие функции доступны только для нормальных кодеков), mjpg-streamer не умеет пересылать неизменный H264 (а между тем если вебка его умеет, то это джекпот - битрейт даже на Full HD получается всего несколько мегабит и можно ничего не пережимать и просто копировать кадры из буферов сразу в сетевой сокет).

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

Посоветуйте сетевой протокол:

1) Должен уметь играться всякими VLC/MPlayer. Желательно, чтобы его поддерживал и стандартный класс MediaPlayer из Android SDK.

2) По нему должно быть можно посылать массив JPEG картинок, либо H264 поток (в рамках одного соединения формат сжатия не меняется, если начали слать JPEG, то всегда будем слать их, если H264, то всегда его).

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

 , ,

KivApple
()

AnyTask

Форум — Talks

Я тут не нашёл хороший таскменеджер (либо они нифига не умеют, либо у них интерфейс по сложности на уровне самолёта), поэтому начал пилить свой. Встречайте результат моего ленивого кодинга по вечерам в течении месяца: https://play.google.com/store/apps/details?id=id.pineapple.anytask

Фичи:

  • Можно вести список задач по дням
  • У задач можно настраивать повторы по дням/неделям/месяцам/годам
  • Задачи можно переносить на другие дни, в том числе автоматически (не выполнил задачу сегодня - она сама перешла на завтра в полночь)
  • Можно ставить задачам будильники, а также закреплять их (в день когда задача актуальна, она вылезет уведомлением, которое пропадёт только когда задача потеряет актуальность, либо будет отмечена выполненной)
  • Есть заметки (просто текст и заметка-список), заметки можно прикреплять к задачам
  • Можно всё экспортировать в файл (JSON) и импортировать обратно. Полезно для бекапов и переноса данных на новое устройство
  • Всякие мелочи (блокировка по пин-коду/отпечатку, тёмная тема и т. д.)

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

А гугл календарь, который показывает over9000 опций каждое добавление задач, вызывает у меня стресс и я не могу его использовать иначе как пару раз в год.

Приложение бесплатно и не содержит рекламы (оно вообще не имеет доступа к сети в текущей версии). Ругайте.

 , anytask

KivApple
()

Переключение виртуальных рабочих столов с помощью дополнительно кнопок мыши

Форум — Desktop

Имеется мышь с 2 дополнительными кнопками. Они нормально распознаются иксами, но не используются ни одним приложением. Хочу повесить на них переключение виртуальных рабочих столов в Plasma (одна кнопка - на один рабочий стол вперёд, другая кнопка - на один рабочий стол назад, разумеется, в цикле), однако настройки KDE позволяют задавать хоткеи только с клавиатуры. Можно ли это как-то обойти?

 ,

KivApple
()

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