Category: it

Photo

Нейронные сети

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

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

Collapse )
Есть у кого-нибудь опыт работы с подобного рода задачами? Был бы рад пообщаться на тему.
Photo

USB-коробочка с кнопочками и крутиками

Ну вот раз уж начали за USB, давайте продолжим. Есть у меня потребность сделать некую коробочку, на ней будет пара кнопочек, пара крутиков, пара светодиодиков. Эту коробочку надо подключить к компу на Win, в котором, вероятно, будет запущена некая прога, из которой мне нужен доступ к данным с кнопок и ручек и из которой нужно будет управлять светиками.

Как бы это сделать так, чтобы на целевом компе, к которому оно будет подключаться, нужно было делать минимальное количество изменений (компы могут быть не моими и юзеры не иметь админских прав)? Вижу 2 варианта.

Вариант 1: Простой. Берем да хоть любую Ардуину с USB-Serial. На компе натравливаем программу на последовательный порт.
Достоинства - железок как грязи, программирование тривиальное. Недостаток - на целевом компе без интернетов (такое может случиться!) не поставить драйвер USB-Serial.

Вариант 2: Сложный. Берем МК, который может в HID, реализуем Consumer Control. Достоинство - не нужно никаких драйверов, USB HID поддерживается всеми нативно. Недостаток - сложнее программирование, в т.ч. и целевой программы.

Есть какие-нибудь другие варианты, я о чем-нибудь не подумал? На какой платформе это делать?(осторожно, холивар!)
Photo

Hardware solution for a software problem

Недавно в своем блоге я спрашивал про маленький недорогой МК, способный из себя изобразить мышь. Тогда мне посоветовали Digispark, и спросили, не бота ли я делаю :) За совет спасибо! И в общем, получился почти бот :)

Collapse )

Я же инженер! :) Получился такой вот хардварный бот, который изображает из себя обычную мышь, и раз в определенное время (у меня раз в 50 секунд) двигает курсором на заранее оговоренное количество пикселей туда-сюда. Смысл прост - движение мыши не дает "заснуть" или заблокироваться компьютеру по таймауту, таким образом переводя его в "режим презентации", несмотря на запреты в политиках безопасности.

Collapse )

Кому хочется код, пожалуйста! Он тут вот на GitHub: https://github.com/aterentiev/MouseMover (CC-BY-SA 3.0)

Отзывы и здоровую критику с радостью приму.

Upd:
В комментах накидали линков на похожие решения:
Программные:
- bash-скрипт на никсы
- Caffeine
- mousejiggler
Железячные
- WiebeTech Programmable Mouse Jiggler MJ-3 - практически мое решение!
Photo

Вопрос про SNMP

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

Исходные данные:

Есть умное устройство. Скажем, эдакое ПЛК. На нем своя "операционка", никаких линуксов, виндусов и прочих OS-ов. Proprietary. Для программирования в наличии TCP и UDP сокеты, точнее, функции-обертки.

Желание:

Сделать эту железяку видимой через SNMP для визуализации и построения графиков наравне с в той же сети стоящими компами.

Для начала показывать железяковый uptime и "общее состояние здоровья". В продвинутой версии добавляются специфические опции типа "время с последнего программирования", "состояние здоровья I/O", "состояние здоровья коммуникации с подсистемами". Программа-максимум - должно быть видимо состояние всей I/O подсистемы с очень специфическими параметрами типа "напряжение питания I/O модуля". А также система должна посылать Trap-ы в случае возникновения пограничных ситуаций (кто-то систему остановил, субмодуль репортит ошибку итд). Все данные - исключительно read-only.

Все эти желаемые данные есть в наличии, нужно лишь реализовать на железяке простого embedded-агента.

Вопросы:

1. Расскажите, пожалуйста, про OID-ы в вышеупомянутой конфигурации, как их искать/определять? Что-то я не могу понять всю структуру возможных циферок, RFC-документы перегружены информацией... То, что я захотел, все будет в .iso.org.dod.internet.mgmt.mib-2 (.1.3.6.1.2.1)? И куда тогда засовывать мои системноспецифические данные? В идеале было бы круто разобрать на простом примере.

2. Проясните про .MIB-файлы. Если у меня такая нестандартная железяка, мне нужно будет написать свой .MIB, описывающий железку, чтобы иметь возможность добираться до данных в менеджерах или это "не в тему"?

3. Ну и посоветуйте, пожалуйста, для тестов простой менеджер под Win.

Всем ответившим заранее спасибище.
Photo

Наброс

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

Читаешь какой-то пост где угодно. Там человека спрашивают, сколько, мол, стоит? После ответа " 15 тысяч рублей" происходят автоматом 2 вещи. Первая - быстро посмотреть на домен сайта, не белорусский ли. Второе - в панике найти дату поста/коммента...
Photo

XenServer

Господа и дамы, может кто знает ответ. Вопрос рабочий про XenServer от Citrix.

На каких условиях у него нынче (Версия 6.5) работает нелицензированная версия, где взять сам текст лицензии?

Мы используем его в команде на некоторых хостах, где нужна работа с PCI pass-through. Основной вопрос возник, когда увидели надпись "Unlicensed" на нелицензированной версии. Я мозгом понимаю, что это только слово, что это просто трюк такой, что этот продукт уже давно OpenSource, основной XenServer под GPL и что это просто эквивалент "Free". Но как это обьяснить начальству или, что еще хуже, как эту надпись "Unlicensed" обьяснить надзорным органам?

И какие есть лицензионные ограничения для использования Citrix XenServer Unlicensed в не-private окружении (т.е. для работы)?

В общем, саму лицензию на "unlicensed" версию найти не могу :) Помогите! :) Википедия не котируется, нужно документ.
Photo

Рисовать FSM бесплатно и без СМС

Не помню, спрашивал ли уже тут, потому спрошу (еще раз). Рисовал диаграмму конечного автомата до сих пор в Visio, получалось что-то такое:



Но с ростом картинки (оно сейчас на 2 листа А4 с потенциалом роста) Visio меня устраивает все меньше и меньше. То соединения не переносит при перетягивании состояний, то выворачивает их как-то не так...

Может ли кто посоветовать бесплатный тул для таких картинок? Все, что я до сих пор видел, или какое-то убогое, или скорее UML, чем state machine... Основной критерий - удобство редактирования, wysiwyg, бесплатность. Генерации кода не надо.
Photo

DNS-клиент у Ардуино

Запарился я с этим W5100. Такое ощущение, что никто на нем больше трех строчек ничего не делал...

Ваяю умный контроллер. Пока что делает 3 вещи - часы на DS3231, вебсервер и NTP-клиент с DNS-ресолвером, т.к. NTP-сервер беру из пула pool.ntp.org

Каждая часть сама по себе работает без проблем. Вебсервер отдает данные, часы тикают, NTP получает время и пишет его в RTC. Проблема выплыла во время отладки. После старта железка однократно забирает время с сервера и делает это раз в минуту (временно, потом будет раз в сутки). Если больше ничего не делать - все ОК, раз в минуту ресолвится новый IP, забирается время, устанавливаются часы. Если же между NTP-запросами зайти пару раз с браузера на вебсервер - начинается странное. Перестает работать DNS и NTP сервер больше не ресолвится. При этом, если взять старый IP - время запрашивается, NTP server отвечает.

При этом DNS отваливается с ошибкой "TIMEOUT". Пытается 3 раза по 5 секунд - и вываливается. И с этого момента почти всегда (именно "почти", потому что в 1-2% случаев срабатывает "самоизлечение" и вдруг работает снова) DNS не работает. И пересоздание обьекта (delete DNS; DNS = new DNSClient;) не помогает.

Такое ощущение, что что-то с сокетами, их в чипе всего 4. Но где?.. Дебаг говорит, что при DNS-запросе минимум один сокет свободен. Почему-то вебсервер сьедает иногда два. Но не всегда. Обычно один в listening на 80 порту, второй - пользуется для UDP запросов на NTP Server, третий - 53й порт для DNS-ресолвинга и четвертый свободен.

Странно все это.
Photo

Функциональные блоки на Ардуино

Сделаю я, пожалуй, рекламу одному интересному проекту FLProg. Узнал о нем я на Хабре, а так как по работе я тесно связан с промышленными контроллерами и FBD и, в общем-то, считаю, что для многих людей блочное программирование вполне может стать заменой обычному написанию кода, проект показался мне очень интересным и многообещающим.



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

Collapse )

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

Полезные команды XenServer

Этот пост скорее для меня самого, но вдруг кому понадобится...

По работе установил в качестве гипервизора Citrix Xenserver, потому что он умеет беспроблемно пробрасывать PCI карты (и PCIe если они работают через PCI/PCIe bridge) в гостевые машины.

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

Общие команды линукс

lspci
- выдает список всех PCI устройств, тождественна той же команде в "нормальном" линуксе

lsusb
- выдает список всех USB устройств

nano ...
- nano - мелкий встроенный текстовый редактор вместо кривого и непонятного vi
выход Ctrl-X

Общие команды Xen

xe vm-list
- выдает список сконфигурированных виртуалок и их UUID

xe pool-list
- выдает список и UUID пула

xe vm-param-set uuid=... other-config:pci=0/0000:02.00.1,0/0000:02.00.2,...
- проброс устройств в виртуалку

xe vm-param-set uuid=... other-config:pci
- с пустым параметром other-config:pci сбрасывает все пробросы к данной виртуалке

Отключение PCI устройств от хоста

Для корректной работы проброса и старта виртуалок необходимо запретить хосту находить пробрасываемые устройства. У хоста этим занимается драйвер pciback. Для запрета их нужно внести в конфиг-файл на хосте.

1. Редактируем конфиг
nano /boot/extlinux.conf

Добавляем в файле в строке в блоке "label xe", начинающейся на "append" в конце перед "--- /boot/initrd-..." данные в следующем виде:
pciback.hide=(04:00.0)(04:00.1)
перечисляем все устройства, которые пробрасываются в виртуалки (полностью со всеми подфункциями!)

2. Выполняем команду (пока не знаю зачем...)
extlinux -i /boot

3. Перезагружаем хост
reboot -n

Размер памяти виртуалки

xe vm-param-set uuid=... memory-static-min=1024MiB
- по умолчанию виртуалка с Win7 не может имень меньше 2GB памяти, эта команда корректирует нижний предел

Автостарт

Автостарт для виртуалок при старте сервера:

1. Нужно установить флаг у пула
xe pool-param-set uuid=... other-config:auto_poweron=true

2. Нужно установить флаг у всех виртуалок
xe vm-param-set uuid=... other-config:auto_poweron=true