LINUX.ORG.RU

Сообщения Stanson

 

аппроксимация полиномом 3-й степени, добавить монотонность

Не могу ничего толкового найти в инетах и книжках.

Дело в следующем:

Есть некие реальные измерения, представленные набором данных x0,x1,x2...xN и y0,y1,y2...yN. Ближе к x=0 зависимость почти линейная, потом y начинает насыщаться.

Это дело аппроксимируется полиномом 3-й степени (y = a0 + a1*x + a2*x*x + a3*x*x*x) методом наименьших квадратов посредством QR-разложения (LSE polynomial fit using QR decomposition). В результате находятся коэффициэнты полинома a1, a2, a3. Т.к. полином должен проходить через начало координат, то a0 = 0.

Всё отлично работает и в общем-то даже понятно как и почему это работает.

Но есть проблема - для данной задачи полином всегда должен быть монотонно возрастающим (без перегибов) на участке от 0 до xN. Вот тут-то внезапно обнаружились грабли. Чтение литературы разъяснило, что в LSE-решалку надо всего-навсего добавить constraint в котором указать что производная полинома для используемого диапазона x должна быть больше нуля. Но, сцуко, я нигде не нашёл _как_конкретно_ это сделать, в частности, для решалки LSE через QR (да пофиг, хоть SVD, хоть LU).

В принципе, я догадываюсь, что в матрицу, которая, собственно, разлагается этим самым QR-разложением, надо добавить дополнительных строчек и в вектор y добавить соответствующих им значений. Но вот что это должны быть за строчки - я в понятном виде нигде не нашёл. А неравенство (например, «для каждого x из набора данных производная полинома должна быть > 0») я не представляю как и куда можно добавить в эту straight-forward решалку.

Есть кто тут сведущий в матане, способный ткнуть меня в литературу, где описание решения этой задачи не заканчивается словами «just constraint solver to f'(x) >= 0», а есть описание того как именно это cделать. И без ссылок на всякие сраные Матлабы (use MATLAB CONSTR function with constraints defined earlier) и пр. Типичный пример - http://ws680.nist.gov/publication/get_pdf.cfm?pub_id=17206 , графички там в конце похожи на то, что мне нужно.

Ну или хотя бы подскажите что надо искать.

 гугл не ищет формулы, ,

Stanson
()

Firefox Quantum, будь он проклят! (частично решено)

Уже полчаса потратил, не могу решить проблему:

В локалке стоит сервак с апачем, на котором настроены прокси с кэшем на fonts.googleapis.com (и прочие гуглопомойки типа ajax, fonts.gstatic и пр.). DNS на fonts.googleapis.com (и пр.) отдаёт локальый адрес этого сервака. Разумеется для https сертификат самоподписанный. Всё чудеснейшим образом работает везде, кроме этого нового квантума.

Дык вот, этот сраный квантум теперь, скотина, не даёт сделать исключение для https://fonts.googleapis.com, Высирает такое:

This site uses HTTP Strict Transport Security (HSTS) to specify that Firefox may only connect to it securely. As a result, it is not possible to add an exception for this certificate.

При нажатии Advanced... никаких кнопок Add Exception, только высер про

fonts.googleapis.com uses an invalid security certificate. The certificate is not trusted because it is self-signed. Error code: SEC_ERROR_UNKNOWN_ISSUER

Ну ладно, порылся в говнах фаерфоксовых, может где случайно затесался старый сертификат или упоминание что HSTS на fonts.googleapis.com есть, так ведь нет же - нигде ничего.

Добавил принудительно сертификат через Preferences->Privacy&Security->... Этой твари похер. Сделал новый профиль - похер.

Где надо палочкой потыкать, чтобы квантум сожрал самоподписанный сертификат для fonts.googleapis.com и больше никогда не жужжал?

Ну и вообще - Это чо ваще за херня? Мазилла совсем с дубу рухнула, что-ли? Теперь локальный кэш нельзя людям использовать, что-ли? При этом CNNIC и другие СА спалившиеся на поддельных сертификатах до сих пор в списке доверенных, так что это явно не забота о безопасности пользователей.

В общем, что делать-то? Уж очень не хочется делать CA и заново все сертификаты генерить и подписывать, а потом по всем железкам CA в доверенные запихивать.

Хоть и с CA но таки победил. Правда с CA наткнулся на другую засаду:

Есть в about:config security.cert_pinning.enforcement_level:

  • Pinning disabled
  • Allow User MITM (pinning not enforced if the trust anchor is a user inserted CA, default)
  • Strict. Pinning is always enforced.
  • Enforce test mode.

Соответственно, надо поставить 1, это, кстати дефолтное значение. Зачем я его менял - хрен знает, вроде когда-то пытался заставить фуррифокс орать в том числе и на смену одного «валидного» сертификата на другой, может тогда и поставил Strict.

Однако это никак не отменяет гнидства на предмет self-signed certificates. Фаерфокс всё равно отказывается дать возможность принимать self-signed сертификаты если есть HSTS или HPKP. Разницы между self-signed и Trusted CA signed вообще никакой с точки зрения безопасности - я точно так же могу и CA завести, просто возни больше на совершенно пустом месте, Причём, в отличии от самоподписанного сертификата, теперь при смене сертификатов, в том числе и на подписанные коммерческими CA эта сволочь вообще даже не пикает. На самоподписанный оно хотя бы орало, что сертификат другой. А тут - выпустит CNNIC сертификат для гуглотвиттеров и пейсбукобанков и никто даже не заметит, что сертификат подменили.

ЗЫ: Вся эта херня с «доверенными» сертификаторами должна быть уничтожена на корню. Никто ведь не знает, сколько и каких левых сертификатов эти засранцы на самом деле навыпускали для себя, для спецслужб, для тех кто заплатит и т.п. Способа проверить это у пользователя нет вообще, сертификаторы ни перед кем не отчитываются, и в общем-то ни за что не отвечают. Даже когда их ловят за руку (например CNNIC - доказанный случай) никто и не думает выкидывать их сертификаты из доверенных, «как же, всекитайский государственный сертификатор, как же мы его выкинем?? Ну допустил выдачу левых сертификатов - делов-то, подумаешь.». В общем, протухла вся эта сраная система.

 

Stanson
()

Сверхбыстрые тупые МК

Раньше был, например, 4 МГц PIC16F84 от Microchip, а маньяки из Parallax выпускали аналогичный SX28 но работавший на диких для того времени 75МГц.

А сейчас есть чо? Чтоб тупое (достаточно уровня AVR/PIC16), небольшое и работающее хотя бы на 3ГГц например.

 

Stanson
()

lxc + qemu-arm + rootfs

Достаточно давно вместо sandbox и т.п. использую для сборки и отладки всяких штуковин для ARM под x86 lxc контейнер с армовой rootfs и qemu собранный с --target-list=arm-linux-user (user space emulator) чтобы запускать на x86 ядре arm'овые бинарники через binfmt_misc. Пока endianness хоста и эмулируемой системы совпадает, а сисколлы остаются неизменными между версиями ядра хоста и ядра под которое рассчитана армовая rootfs, всё работает как часики.

В контейнере запускается шелл, типа

lxc-execute -n sb -f /var/lib/lxc/sb/config — /bin/su - stanson — --login

Ну и дальше делай что угодно, как будто ты залогинился в армовую систему. Всё достаточно шустро и удобно, но есть нюанс.

Изнутри выглядит так:

stanson@sb:~$ ps -eo pid,vsz,args
  PID    VSZ COMMAND
    1   1008 /init.lxc.static — /bin/su - stanson — --login
    4  73648 /usr/bin/qemu-arm /bin/bash --login
  130  60412 /bin/ps -eo pid,vsz,args

Фига себе размерчик у bash и ps, не правда ли? Дело в том, что на каждый запущенный армобинарник запускается qemu. Если, например, запустить man bash в контейнере и посмотреть «снаружи», то будет так:

stanson@amilo:~$ ps -eo lxc,pid,vsz,args --sort lxc | grep '^sb'
sb       21030   1008 /init.lxc.static — /bin/su - stanson — --login
sb       21033  73648 /usr/bin/qemu-arm /bin/bash --login
sb       21073  61436 /usr/bin/qemu-arm /usr/bin/man bash
sb       21090  60284 /usr/bin/qemu-arm /usr/bin/pager -s

Вот откуда по 60-70 мегов на процесс. Сам qemu-arm невелик,

stanson@amilo:~$ ls -la `which qemu-arm`
-rwxr-xr-x 1 root root 3205596 Mar 21 19:29 /usr/bin/qemu-arm*
но памяти жрёт прилично, насколько я понял - из-за pre-allocation

Собственно вопросы

1. - есть ли более оптимальный способ делать то же самое?

2. - можно ли заставить qemu не заниматься pre-allocation?

Пока сам не копался в qemu, может кто уже решил этот вопрос?

 , ,

Stanson
()

Есть простой способ запретить всякие onunload и пр. для JS?

Есть ли простой способ или совсем мелкий аддон позволяющий полностью выключать любые ненужные события в жабоскрипте, особенно такие абсолютно ненужные и вредные вещи как onunload, onbeforeunload и пр.?

Знаю что через greasemonkey можно тупо window.onunload = null, но не хочется ставить его ради пары строк.

Может просто в about:config чего можно добавить?

 , ,

Stanson
()

UVC веб-камера не размазывающая движение

Присоветуйте недорогую USB камеру работающую по протоколу UVC которая не размазывает движение ни при каких условиях. На всякие автофокусы, определение лиц и прочие свистелки - наплевать. Желательно чтобы качество изображения в смысле шума было поприличнее. 640x480@25fps вполне достаточно, но и побольше можно.

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

Сосбтвенно нужна камера, которая либо не размазывает картинку по-дефолту, либо позволяет отключить автоматический выбор экспозиции посредством v4l2-ctl. Соответствующий контрол называется exposure_auto, если я правильно помню, соответственно он должен быть в списке выдаваемом v4l2-ctl -L .

ЗЫ: Мне самому смешно, но советуют Microsoft LifeCam HD3000, как у неё с экспозицией и размазыванием дела обстоят? Что говорит про неё v4l2-ctl --info --list-formats-ext -L ?

 , ,

Stanson
()

Локальное полноценное зеркало fonts.googleapis.com

Что-то как-то сходу не нагуглилось почему-то.

Собственно, нужна хаутушка или скрипт для создания локального полноценного зеркала fonts.googleapis.com + fonts.gstatic.com и что там ещё надо. Разумеется с сырцами fonts.googleapis.com/css или клона этой штуки. Чтобы тупо через DNS зарулить это всё на сервак в локалке вместо гугля.

С ajax.googleapis.com всё просто было, а тут кроме какого-то вебмакакного шлака про использование этой дряни ничего не находится.

 , ,

Stanson
()

pulseaudio, config hell. Как в этом всём разобарться?

Есть pulseaudio. Есть его конфиги. Всё работает. Требуется сделать простую вещь - для одного sink'а (sink.voice например) добавить дублирование потока в сеть на определённый адрес любым известным способом.

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

Что-то документация на pulseaudio вообще не помогла никак этого добиться или хотя бы понять где и что надо дописать в конфигах, да и вообще, в каком именно конфиге(ах) надо это делать.

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

Конфиги - http://stanson.ch/files/NokiaN9/pulse-config.tar.gz

pulseaudio 0.9.19 если чо.

module-esound-protocol-tcp в наличии, например. Или там module-rtp-send какой. Загрузить модуль - не вопрос, но дальше что?

Может есть какая-нибудь вменяемая хаутушка, с примерами, типа вот грузим модуль, врисовываем ещё то-то туда-то, pactl list теперь должен показывать то-то, и т.д.

ЗЫ: Решение простое:

parec --raw --volume 65536 -d sink.voice.monitor | netcat -u 192.168.253.20 4172
или даже лучше
parec --raw --volume 65536 -d sink.voice.monitor | socat - udp4-datagram:192.168.253.20:4172
И нефиг в конфиги лезть, там всё равно ничего хорошего не наконфигуришь.

 ,

Stanson
()

RTAI & Nvidia

Любители нвидии, подскажите, эти козлы, которые nvidia, уже пофиксили свой проприетарный драйвер чтоб собирался на ядре с RTAI или продолжают корчить из себя непойми что?

Это к вопросу закупать ли распоследнюю нвидию на машину на которой ядро с RTAI будет работать. или закупать ненвидию, или нвидию которая гарантированно с nouveau работает.

 ,

Stanson
()

Solvespace не хочет экструдировать текст.

Тут кто-то solvespace занимается, ЕМНИП, так что вопрос к оным персонажам.

Solvespace из мастера, запускаем, создаём текст, пытаемся экструдировать - получаем

File /home/user/source/solvespace/solvespace/src/dsc.h, line 321, function FindById:
Assertion 'Cannot find handle' failed: ((t != NULL) == false).

Причём если экспортировать sketch в dxf и загрузить его, то всё прекрасно экструдируется, ибо экспортируется оно как контура из линий.

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

Как эту сущность «текст» превратить в набор контуров которые можно экструдировать не занимаясь онанизмом с экспортом-импортом?

 ,

Stanson
()

Выборы «главного» в равноценном кластере.

Есть MariaDB + Galera на трёх тачках. Всё отлично, только вот понадобилось по крону запускать скрипт который будет в базе ковыряться и что-то там менять. Разумеется его надо запускать на одной машине, а не на трёх сразу. При этом надо сохранить FT и HA, т.е. если сдохла тачка на которой скрипт запускался по крону, то эти обязанности должна взять на себя другая машина.

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

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

Может есть чо, и велосипедить ничего не надо?

 ,

Stanson
()

master-master и fault recovery

Собственно вопрос такой. Допустим есть какая-нибудь MariaDB с настроенной master-master репликацией. Везде и всюду масса хаутушек как чего и куда на предмет поднятия и всего такого. Но всё это резко заканчивается на том моменте где «а вот мы выключаем одну из машин и база всё равно доступна». Тем не менее, самый интересный вопрос - а как же предполагается возвращать сдохшую тачку после ремонта в строй вообще никак и нигде не освещён, или упомянут очень мутно и весьма неопределённо. Только не говорите мне, что нужно таки остановить базу (собственно маразм же - ведь всё затевается как раз чтобы больше никогда не пришлось останавливать базу) и заново вот это всё дрочево с позицией бинлога и всё такое.

Другой вариант - drbd например. Ну умолчим, что эти гандоны так и не приняли в апстрим Protocol D, и master-master там через жоппу, но тем не менее. Вопрос тот же - fault recovery там опять ручками и с бубном?

В общем вопрос такой - Есть SQL БД. Нужно как-то организовать master-master репликацию или там распределённое хранилище (опять же master-master, чтобы не париться с переключением выжившего slave в master) чтобы fault recovery либо поддавался автоматизации, либо происходил без лишних телодвижений при возвращении умершей тачки в строй. Доступность базы с 2-х машин одновременно не нужна. Ну как hardware raid 1 - прям на ходу вынул сдохший диск, вставил новый и вообще не паришся ни о чём. вот хочу то же самое, только с машинами целиком. Сдохла тачка, монтажник подключает новую (можно с заранее установленной идентичной системой, для простоты) - и всё само восстанавливается без лишних телодвижений и остановки БД.

Есть чо?

 fault recovery, ,

Stanson
()

pidgin/libpurple на предмет jingle кто-нибудь ковырял?

Руки бы отрывать таким пейсателям, блин.

Никак не могу найти где в коде этот чортов pidgin создаёт transport candidates.

Эта тварь шлёт вот такое вот гуано:

			<transport xmlns='urn:xmpp:jingle:transports:ice-udp:1' pwd='yuQRDGUekskxC0N+yXxkqu' ufrag='AE/U'>
				<candidate component='2' foundation='6' generation='0' id='purple769894ba' ip='192.168.253.20' network='0' port='35983' priority='1015022078' protocol='udp' type='host'/>
				<candidate component='2' foundation='5' generation='0' id='purple769894bb' ip='192.168.253.20' network='0' port='0' priority='1019216382' protocol='udp' type='host'/>
				<candidate component='2' foundation='4' generation='0' id='purple769894bc' ip='192.168.253.20' network='0' port='51302' priority='2013266430' protocol='udp' type='host'/>
				<candidate component='1' foundation='6' generation='0' id='purple769894bd' ip='192.168.253.20' network='0' port='34375' priority='1015022079' protocol='udp' type='host'/>
				<candidate component='1' foundation='5' generation='0' id='purple769894be' ip='192.168.253.20' network='0' port='0' priority='1019216383' protocol='udp' type='host'/>
				<candidate component='1' foundation='4' generation='0' id='purple769894bf' ip='192.168.253.20' network='0' port='33155' priority='2013266431' protocol='udp' type='host'/>
				<candidate component='1' foundation='1' generation='0' id='purple769894c0' ip='fe80::216:6fff:fea3:55a7' network='0' port='45955' priority='2013266431' protocol='udp' type='host'/>
				<candidate component='1' foundation='2' generation='0' id='purple769894c1' ip='fe80::216:6fff:fea3:55a7' network='0' port='0' priority='1019216383' protocol='udp' type='host'/>
				<candidate component='1' foundation='3' generation='0' id='purple769894c2' ip='fe80::216:6fff:fea3:55a7' network='0' port='34199' priority='1015022079' protocol='udp' type='host'/>
				<candidate component='2' foundation='1' generation='0' id='purple769894c3' ip='fe80::216:6fff:fea3:55a7' network='0' port='59755' priority='2013266430' protocol='udp' type='host'/>
				<candidate component='2' foundation='2' generation='0' id='purple769894c4' ip='fe80::216:6fff:fea3:55a7' network='0' port='0' priority='1019216382' protocol='udp' type='host'/>
				<candidate component='2' foundation='3' generation='0' id='purple769894c5' ip='fe80::216:6fff:fea3:55a7' network='0' port='46178' priority='1015022078' protocol='udp' type='host'/>
			</transport>

Разумеется всё работает через одно место или не работает вообще, ибо port='0' и всё такое. Хочется вразумить, чтобы оно отсылало не толпу бредовых кандидатов, а как все остальные клиенты - две штучки и только ipv4. Типа

			<transport xmlns='urn:xmpp:jingle:transports:ice-udp:1' pwd='yuQRDGUekskxC0N+yXxkqu' ufrag='AE/U'>
				<candidate component='1' foundation='1' generation='0' id='purple769894ba' ip='192.168.253.20' network='0' port='35983' priority='1015022078' protocol='udp' type='host'/>
				<candidate component='2' foundation='1' generation='0' id='purple769894bb' ip='192.168.253.20' network='0' port='35628' priority='1019216382' protocol='udp' type='host'/>
			</transport>

Собственно вопрос - в каком месте создаётся этот долбаный local candidates list?

Эта дрянь написана настолько через задницу, что я уже часа два пытаюсь найти концы от этой, казалось бы несложной залипухи. 100500 копирований, пересоздаваний листов, жонглирования в farstream и обратно, коллбеков и т.п., а откуда собственно берутся эти чортовы ip и порты, и какого хрена там port='0' оказывается - ну никак не откопаю.

Может кто уже ковырялся?

 , ,

Stanson
()

qemu-arm-static и cmdline

Как объяснить qemu что не надо себя пихать в cmdline процесса и занимать argv[0] процесса именем запущенного бинарника? А то из-за этого куча всякой всячины не работает в армовой rootfs. Мелочь, но неприятно.

lxc контейнер, в нём фактически развёрнут debian-arm, в binfmt_misc, как и положено, засунуто про qemu и на что его натравливать, чтобы armel ELF запускать. Всё было бы изумительно, если бы не эта qemu'овая лажа с argv[0]. Из-за этого софтинки, которые работают по-разному, если их под разными именами запускать, работают, очевидно, неправильно, ибо не понимают, что им делать, если они называтся qemu-arm-static или именем бинарника.

ЗЫ: Это в основном касается /proc/$PID/cmdline

Всё даже ещё хуже: Вот кусок кода который например в login работает:

        /*
         * The argv[0]'th entry is usually the path name, but
         * for various reasons the invoker may want to override
         * that.  So, we determine the 0'th entry only if they
         * don't want to tell us what it is themselves.
         */
        if (arg == (char *) 0) {
                (void) snprintf (arg0, sizeof arg0, "-%s", Basename ((char *) file));
                arg0[sizeof arg0 - 1] = '\0';
                arg = arg0;
        }

        /*
         * First we try the direct approach.  The system should be
         * able to figure out what we are up to without too much
         * grief.
         */
        (void) execle (file, arg, (char *) 0, envp);

login запускает указанный в passwd shell, но в качестве argv[0] указывает -shell, чтоб shell прочёл /etc/profile и всё такое. А qemu, вместо того, чтобы после запуска shell вернуть всё взад - и cmdline, и argv[0], записывает в argv[0] то, что он запустил, а cmdline вообще не трогает. В результате, в argv[0] вместо -shell лежит /bin/shell, в cmdline /usr/bin/qemu-arm-static /bin/shell, ну и т.д.

В общем, надо как-то qemu-то рога пообломать....

 

Stanson
()

Какой STUN сервер нынче принято ставить?

Реализаций STUN-серверов нашлось множество, но вот отзывов и рекомендаций по ним - кот наплакал.

Есть у кого какие рекомендации или соображения? Что нынче самое адекватное, надёжное и не заброшенное 100500 лет назад?

Перемещено JB из talks

 , ,

Stanson
()

XMPP client daemon

Написал вот, обосрите плз.

http://stanson.ch/xmppcd-0.1.tar.gz

Потребуется libstrophe - http://strophe.im/libstrophe/

Маленький и совершенно неинтерактивный XMPP клиент в виде демона. При старте коннектится к серваку и внимательно слушает. Принимаемые сообщения складывает в /var/spool/xmppcd/in и отсылает сообщения перемещённые кем-нибудь откуда-нибудь в /var/spool/xmppcd/out Отсылаются только перемещённые, потому что используется inotify с watch повешенным на MOVE_TO. Периодически сканировать диру на наличие новых файлов показалось не очень интересно, да и всякие race condition в этом случае возможны, особенно, если сообщения создаются скриптами. Однако при старте out таки будет таки просканирован и все оказавшиеся там файлы будут отправлены.

Есть скриптик xmpp-send для отсылки сообщения из командной строки.

Всё что нужно написано в README.

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

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

В общем, сходу такой штуки не нашёл, поэтому быстренько написал.

Обсирайте.

 , , ,

Stanson
()

Микроскопический жабберосервер - есть ли?

Понадобился мелкий жабберосервер для сугубо технических нужд.

Вроде как в интернетах пишут что prosody - самый легковесный и всё такое, однако он как-то не выглядит совсем лёгеньким.

jabberd14 - вроде как мёртвенький давно, jabberd2 как-то тяжеловат, все остальные - ещё хуже.

Есть чего-нибудь типа httpd из busуbox'а ? Чтоб совсем маленький и только базовая функциональность? И чтоб зависел по-минимуму, типа там только от libexpat и libc.

ЗЫ: В общем, нашёл - в inetdextra есть милиписечный in.jabberd. Правда, оно ssl не умеет и s2s, но зато всего 20кил plain C.

Перемещено Pinkbyte из talks

 ,

Stanson
()

Push-уведомления

Что-то не могу найти нормальной информации о реальной реализации push-уведомлений для абстрактной мобилы. Везде какое-то бла-бла, облака, push круто и прочая газификация.

Собственно вопрос - push-уведомление - это дополнение к GSM(WCDMA) и оно прилетает с базовой станции в мобилу по условному «сервисному каналу» так же как звонок или СМС, или же это просто развод лохов, и на самом деле мобила тупо постоянно лазает на какой-нибудь сервак производителя и проверяет наличие там каких-нибудь сообщений?

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

Вот здесь что-то типа этого: https://en.wikipedia.org/wiki/Push_Proxy_Gateway описано.

 , ,

Stanson
()

ищется софтина для предупреждения о приближении к GPS координатам

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

Очень желательна возможность скармливать актуальные базы данных радаров/камер от всяких радар-детекторов и OSM.

Выхлоп должен быть в виде, например, расстояния до объекта.

Есть такое, или велосипедить надо?

ЗЫ: grep по списку точек не предлагать, я и сам так умею :)

 , ,

Stanson
()

libusb-win32 для wine надо кому?

Понадобилось тут, пришлось сваять. libusb-wine.tar.gz

Распаковать в дерево сырцов wine. В configure.ac добавить строчку

WINE_CONFIG_DLL(libusb0,,[implib])
туда же, где все остальные такие строчки. Ну и autoreconf configure make make install как обычно.

Унутри линуксячья libusb-0.1.12 (ибо с тех пор никаких изменений в USBшном коде или интерфейсе libusb-win32 не случилось) слегка допиленная для мимикрии под libusb-win32. После компиляции получится libusb0.dll которая работает с линуксячьей подсистемой USB вместо виндового драйвера. Вендософтины пользующие под виндой libusb-win32 для доступа к железкам теперь чудненько работают под wine. Никаких драйверов в wine, разумеется, ставить не надо.

Не забыть про права доступа к /dev/bus/usb/* . Если чо - прописать юзера в группу usb (ну или чо там в дистре) или ковырнуть udev ( /lib/udev/rules.d/50-udev-default.rules ) на предмет

SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", MODE="0664", GROUP="usb"
если там этого нету.

Должно быть что-то типа такого:

$ ls -la /dev/bus/usb/003/
total 0
drwxr-xr-x 2 root root      100 Feb 19 01:41 .
drwxr-xr-x 7 root root      140 Feb 14 20:19 ..
crw-rw-r-- 1 root usb  189, 256 Feb 19 00:34 001
crw-rw-r-- 1 root usb  189, 271 Feb 19 00:34 016
crw-rw-r-- 1 root usb  189, 275 Feb 19 01:43 020

Ну или сами там с правами разбирайтесь, чтоб из-под юзера нужный девайс был читаем-писаем.

В данной реализации отсутствуют чисто libusb-win32 функции:

usb_install_service_np
usb_uninstall_service_np
usb_install_driver_np
usb_isochronous_setup_async
usb_bulk_setup_async
usb_interrupt_setup_async
usb_submit_async
usb_reap_async
usb_free_async
Кому надо - может сам допилить, у меня нет софтин которые их пользуют, я и не заморачивался. Если чо - wine ругнётся, что, мол, не могу найти каую-нибудь usb_install_driver_np в libusb0.dll

 wine usb

Stanson
()

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