Недавно на Хабре была опубликована статья со съёмками ночного неба «Ночная жизнь неба или в поисках Персеид». Но самих метеоров авторы не смогли обнаружить из-за большого количества спутников, которые в данном случае являются ложными объектами. Я не смог пройти мимо, решил обработать видео, и посмотреть, есть ли на нём Персеиды или нет.
Aleksei Melnik @alexshnup
Управление в технических системах
Куда деваются программисты после 40
16 мин
167K— Вам уже 45? Но у нас коллектив очень молодой. Вы уверены, что хотели бы у нас работать?
— Да, конечно! Я много наслышан о вашей компании. Это мечта всей моей жизни!
— Ну ладно. Вот вам простой вопросик. Что означает буква L в аббревиатуре SOLID?
— Liskov Substitution Principle.
+74
Как слямзить Хабр по-быстрому
3 мин
42KТуториал
Это произошло в понедельник 13 февраля, мир больше не будет прежним. Открыта вакансия:
Для работы над нашими проектами мы ищем сильного front-end разработчика. Вам предстоит амбициозная задача: внедрить компонентный подход в разработку всех текущих и новых проектов компании.
Отлично, работаем дальше! Выполняю "тестовое задание".
+9
Детектирование движения в видеопотоке на FPGA
13 мин
25KПредисловие
Меня давно интересовала тема обработки видео, вот только на отладочных платках 7-х и 9-х ARM-ов это получалось очень медленно и от этого становилось не интересно.
В настоящее время полным-полно мощного многоядерного железа и создано много библиотек для работы с видео, но мой выбор пал на ПЛИС.
+77
Умная кормушка: Machine Learning, Raspberry Pi, Telegram, немножко магии обучения + инструкция по сборке
15 мин
38KТуториал
Всё началось с того, что жена захотела повесить кормушку для птиц. Идея мне понравилась, но сразу захотелось оптимизировать. Световой день зимой короткий — сидеть днём и смотреть на кормушку времени нет. Значит нужно больше Computer Vision!
Идея была простой: прилетает птичка — вжуууух — она оказывается на телефоне. Осталось придумать как это сделать и реализовать.
В статье:
Все исходники открыты + описан полный порядок развёртывания получившейся конструкции.
Идея была простой: прилетает птичка — вжуууух — она оказывается на телефоне. Осталось придумать как это сделать и реализовать.
В статье:
- Запуск Caffe на Raspberry Pi B+ (давно хотел это сделать)
- Построение системы сбора данных
- Выбор нейронной сети, оптимизация архитектуры, обучение
- Оборачивание, выбор и приделывание интерфейса
Все исходники открыты + описан полный порядок развёртывания получившейся конструкции.
+71
Как двухлетний репозиторий на GitHub стал трендовым за 48 часов
8 мин
41KПеревод
GitHub предоставил возможность миллионам разработчиков с легкостью публиковать свои проекты и тем самым привлекать пользователей и единомышленников. Часто перед разработчиками возникает проблема неэффективного использования ресурсов — они тратят сотни часов на создание проекта с целью продвинуть его на GitHub, а получают максимум две звезды.
+60
Управление светильниками по протоколу DALI с помощью Arduino
4 мин
64KО протоколе DALI
DALI (Digital Addressable Lighting Interface) – протокол, предназначенный для управления осветительными приборами. Протокол был разработан австрийской компанией Tridonic и основан на манчестерском кодировании: каждый бит данных кодируется перепадом от низкого сигнала к высокому или наоборот.
+19
«Полезняшки» или «Реестр Windows как платформа»
10 мин
48KХочу рассказать вам историю, как решение конкретных прикладных задач привело меня к использованию реестра Windows в качестве платформы для хранения и исполнения кода.
+76
Как создавать, собирать, устанавливать и использовать пакеты с программами и библиотеками для UNIX-подобных систем
13 мин
42KТуториал
Речь пойдёт о программах и библиотеках для UNIX-подобных систем, распространяемых в виде исходного кода (в том числе в виде тарболлов), написанных обычно на C и C++ (хотя этот же порядок работы может применяться к софту на любом языке). Многие вещи в этой статье написаны применительно конкретно к GNU/Linux, хотя многое из статьи может быть обобщено и на другие UNIX-подобные ОС.
Под словом «пакет» я понимаю в этой статье пакет с исходными текстами, причём не пакет конкретного дистрибутива GNU/Linux, а просто пакет, исходящий от оригинальных авторов софта (UPD от 2017-02-09: кроме тех случаев, где из контекста ясно, что слово «пакет» употреблено в другом смысле).
В этой статье я разберу следующие вопросы:
Я разберу только совсем базовые вещи. Те, которые типичные участники сообщества свободного ПО, программирующие на C и C++ под UNIX-подобные системы, обычно уже знают. Как создавать тарболлы (на примере «голого» make) и как устанавливать чужие тарболлы. Advanced советы по созданию «хороших» пакетов я не дам. «Продвинутые» вещи читайте в документации систем сборки, в замечательной статье «Upstream guide» от Debian (в её конце есть ещё куча ссылок о создании «хороших» пакетов). Многое в этой статье можно было сделать по-другому, моя цель: дать хотя бы один способ, не пытаться объять необъятное.
Под словом «пакет» я понимаю в этой статье пакет с исходными текстами, причём не пакет конкретного дистрибутива GNU/Linux, а просто пакет, исходящий от оригинальных авторов софта (UPD от 2017-02-09: кроме тех случаев, где из контекста ясно, что слово «пакет» употреблено в другом смысле).
В этой статье я разберу следующие вопросы:
- Вот скачал программу или библиотеку. Как её собрать и установить? Как воспользоваться библиотекой?
- Что такое префикс (prefix) установки? В чём разница между сборкой и установкой? Куда обычно устанавливают программы?
Я разберу только совсем базовые вещи. Те, которые типичные участники сообщества свободного ПО, программирующие на C и C++ под UNIX-подобные системы, обычно уже знают. Как создавать тарболлы (на примере «голого» make) и как устанавливать чужие тарболлы. Advanced советы по созданию «хороших» пакетов я не дам. «Продвинутые» вещи читайте в документации систем сборки, в замечательной статье «Upstream guide» от Debian (в её конце есть ещё куча ссылок о создании «хороших» пакетов). Многое в этой статье можно было сделать по-другому, моя цель: дать хотя бы один способ, не пытаться объять необъятное.
+34
Электронные чернила для Wirenboard 5 или рисуем штрихкоды на Go
7 мин
7.2KПривет, Хабр! В процессе разработки иногда приходится изобретать велосипеды инструменты для тестирования приложений и бывает что некоторые из них могут быть полезными например в домашней автоматизации. Вот случай из моего личного опыта. При разработке приложения для мобильных терминалов сбора данных, появилась необходимость тестирования лазерных сканеров, без печати штрихкодов на бумаге. К сожалению эти сканеры не умеют считывать с обычных экранов. Бумагу им подавай, но и электронная бумага им тоже очень понравилась.
Вспомнилась статья на Хабре Электронная книжка в качестве дисплея, решено было достать с полки старенький полуживой ридер Sony PRS-505 и дать ему вторую жизнь в роли экрана для контроллера автоматизации. Но слать картинки через флеш память плохая идея. Нужно было научиться работать напрямую с оперативной памятью электронной книги. Это увеличивает скорость отображения и надежность. Позвольте поделиться опытом рисования в Go на примере генератора штрихкодов и отображении на электронной книге через контроллер Wirenboar 5.
Вспомнилась статья на Хабре Электронная книжка в качестве дисплея, решено было достать с полки старенький полуживой ридер Sony PRS-505 и дать ему вторую жизнь в роли экрана для контроллера автоматизации. Но слать картинки через флеш память плохая идея. Нужно было научиться работать напрямую с оперативной памятью электронной книги. Это увеличивает скорость отображения и надежность. Позвольте поделиться опытом рисования в Go на примере генератора штрихкодов и отображении на электронной книге через контроллер Wirenboar 5.
+37
Электронная книжка в качестве дисплея
10 мин
68KТуториал
Нетрадиционное применение распространённых вещей — это то, что всегда нам интересно! Ведь так хочется порой похачить очередное устройство. Понять как оно работает и внести какие-то свои коррективы в его работу, добавив новых функций.
Выводим свои картинки
Я расскажу, как можно старенькую читалку Sony PRS-505 превратить в удобный дисплейчик. И также расскажу, как можно писать свои программы для этой книжечки
Выводим свои картинки
Я расскажу, как можно старенькую читалку Sony PRS-505 превратить в удобный дисплейчик. И также расскажу, как можно писать свои программы для этой книжечки
+125
Резервное копирование виртуальных машин ESXi с помощью скриптов ghettoVCB
11 мин
90KВ этой статье я пошагово опишу настройку автоматического резервного копирования и пример восстановления виртуальных машин, работающих на платформе ESX(i) с помощью свободных скриптов ghettoVCB. Акцентироваться буду на версии ESXi 5.x, но эти же средства работают и на версиях 3.5-6.x, правда для ранних версий настройки несколько отличаются. Бэкап будет производиться на NFS сервер. Отчёт о работе будет направлен в почту. Во время бэкапа делается снимок (snapshot) виртуальной машины (в том числе и работающей), сохраняются VMDK диски машины и снимок удаляется.
Проект ghettoVCB отлично документирован, но в процессе внедрения появились нюансы, которые и вылились в эту инструкцию. Надеюсь, статья будет полезна начинающим администраторам.
Проект ghettoVCB отлично документирован, но в процессе внедрения появились нюансы, которые и вылились в эту инструкцию. Надеюсь, статья будет полезна начинающим администраторам.
+11
Как начать летать, хоть на чем-то, самостоятельно
7 мин
286KМое детство прошло среди людей которые все время на чем то летали. Строили, разрабатывали новое и тут же на нем летали. В 5 лет для меня стало открытием, что кто то в этом мире может не летать. К своим 26 годам я успел попробовать почти все на чем можно летать. Хочу поделиться своим опытом и рассказать о доступных возможностях.
Что бы начать летать у Вас есть такие варианты:
1. Парители (в этой статье)
2. Моторный полет (вторая статья)
Что бы начать летать у Вас есть такие варианты:
1. Парители (в этой статье)
- Параплан
- Дельтаплан
- Планер
2. Моторный полет (вторая статья)
- Легкий самолет
- Мотодельтаплан
- Паратрайк
- Парамотор
- Мотопланер
+241
Кто, когда и как собирается лететь на Марс
9 мин
196KСейчас так часто говорят про полеты к Марсу, что люди, подчас, путают несколько независимых проектов. Иногда приходится слышать, что Mars One — это проект NASA, а Inspiration Mars собирается добывать золото, которое нашел Curiosity. Все это, конечно, выдумки. Поэтому постараюсь разложить все марсианские мечтания по полочкам, чтобы была универсальная шпаргалка на все случаи жизни.
Заранее оговорюсь: данный обзор отражает текущую ситуацию. Я не исключаю будущую эволюцию и возможные объединения описываемых проектов или появление новых.
Итак, приступим в хронологическом порядке:
Заранее оговорюсь: данный обзор отражает текущую ситуацию. Я не исключаю будущую эволюцию и возможные объединения описываемых проектов или появление новых.
Итак, приступим в хронологическом порядке:
+154
RThrust — система автоматического тестирования БК моторов
4 мин
35KЯ довольно давно увлекаюсь мультикоптерами, и все это время я ищу способы заставить коптеры летать дольше.
Типичное время полета для недорогого коптера 7-15 минут. Удручающе мало. Мой текущий квадрокоптер летает 19 минут. И на выбор регуляторов и ВМГ для него я потратил немало времени, чаще всего делая предположения в условиях недостаточных данных.
Ключом к продолжительности полета является энергоэффективная винтомоторная группа. Что это значит? Комбинация мотора и воздушного винта должны максимально эффективно использовать энергию для создания тяги. То есть поднимать как можно больше веса, потребляя как можно меньше энергии. Измеряется эффективность винтомоторной группы в граммах на ватт. На форумах частенько встречаются различные приспособления, состоящие из весов и крепления для мотора плюс какой-нибудь ваттметр. Иногда обходятся чисто весами, чтобы выяснить какую вообще тягу создает ВМГ.
Однако, погрешность измерений обычно весьма высокая, начиная с того, что мы не можем точно определить одновременно и тягу, которая колеблется (мотор постоянно меняет обороты) и мощность, которая тоже плавает достаточно сильно. В итоге ошибка сравнима с разницей между моторами.
Меня такая ситуация не устраивает, учитывая, что моторы и пропеллеры различаются по стоимости до десятка раз, нужно понимать, стоит ли платить больше.
В итоге я построил испытательный стенд, на который крепится ВМГ и замеряются ее параметры:
-Тяга с точностью до 1г
-Напряжение аккумулятора с точностью до 0.01В
-Ток с точностью до 0.1А-0.2А примерно (зависит от тока)
Не знал в какой блог разместить информацию, поэтому пока поместил сюда.
Типичное время полета для недорогого коптера 7-15 минут. Удручающе мало. Мой текущий квадрокоптер летает 19 минут. И на выбор регуляторов и ВМГ для него я потратил немало времени, чаще всего делая предположения в условиях недостаточных данных.
Ключом к продолжительности полета является энергоэффективная винтомоторная группа. Что это значит? Комбинация мотора и воздушного винта должны максимально эффективно использовать энергию для создания тяги. То есть поднимать как можно больше веса, потребляя как можно меньше энергии. Измеряется эффективность винтомоторной группы в граммах на ватт. На форумах частенько встречаются различные приспособления, состоящие из весов и крепления для мотора плюс какой-нибудь ваттметр. Иногда обходятся чисто весами, чтобы выяснить какую вообще тягу создает ВМГ.
Однако, погрешность измерений обычно весьма высокая, начиная с того, что мы не можем точно определить одновременно и тягу, которая колеблется (мотор постоянно меняет обороты) и мощность, которая тоже плавает достаточно сильно. В итоге ошибка сравнима с разницей между моторами.
Меня такая ситуация не устраивает, учитывая, что моторы и пропеллеры различаются по стоимости до десятка раз, нужно понимать, стоит ли платить больше.
В итоге я построил испытательный стенд, на который крепится ВМГ и замеряются ее параметры:
-Тяга с точностью до 1г
-Напряжение аккумулятора с точностью до 0.01В
-Ток с точностью до 0.1А-0.2А примерно (зависит от тока)
Не знал в какой блог разместить информацию, поэтому пока поместил сюда.
+54
Автоматический бекап при подключении внешнего HDD в Ubuntu
3 мин
17KПоследнее время стали популярны посты на тему бекапа. Продолжу и я эстафету под девизом «Много бекапов хороших и разных».
Статья 1 и статья 2, натолкнувшие меня на эту идею.
Сам я давно пользуюсь rsnapshot для бекапа серверов, да и не только. Для тех, кто не в курсе, что оно такое — это базирующаяся на rsync утилита на Perl для создания резервных копий. Особенностью является ориентация на создание полных снапшотов файловой системы через заданный интервал времени, для экономии места на диске, не изменившиеся с момента первого бэкапа файлы линкуются как hard link.
Я работаю на Ubuntu 11.10 на ноутбуке и потому статья будет описывать метод бекапа этого самого ноутбука на внешний USB HDD, который не постоянно подключен, а подключается лишь периодически. В момент подключения и будет запускаться скрипт для бекапирования системы.
Итак, начнем.
Статья 1 и статья 2, натолкнувшие меня на эту идею.
Сам я давно пользуюсь rsnapshot для бекапа серверов, да и не только. Для тех, кто не в курсе, что оно такое — это базирующаяся на rsync утилита на Perl для создания резервных копий. Особенностью является ориентация на создание полных снапшотов файловой системы через заданный интервал времени, для экономии места на диске, не изменившиеся с момента первого бэкапа файлы линкуются как hard link.
Я работаю на Ubuntu 11.10 на ноутбуке и потому статья будет описывать метод бекапа этого самого ноутбука на внешний USB HDD, который не постоянно подключен, а подключается лишь периодически. В момент подключения и будет запускаться скрипт для бекапирования системы.
Итак, начнем.
+21
Съёмка показаний счетчика на телефон с последующим распознаванием
20 мин
185KВступление
Так сложилось, что я живу в коттеджном поселке, где нет центрального отопления, а значит, каждый греет свою квартиру самостоятельно. Чаще всего для этих целей используются газовые котлы, метод достаточно дешевый, жаловаться не на что, но есть одна тонкость. Для корректной работы газового котла (внезапно) необходимо наличие газа в трубе.
Возможно, так ведут себя не все котлы, но наш отключается даже при кратковременном перебое с подачей газа и не включается обратно, если подача восстановится. Если кто-то есть дома, то это не проблема, нажал кнопку и котел греет дальше, но если вдруг так сложилось, что мы решили всей семьей поехать в отпуск, а на дворе зима, хорошая такая, чтоб -20°C, то последствия могут быть плачевными.
Решение простое — оставить ключи родственникам/друзьям/соседям, чтобы они могли приехать и включить котел, случись какая-нибудь неприятность. Хорошо, если есть сосед, который будет каждый день заходить и проверять, всё ли в порядке. А если нет? Или он тоже решит уехать куда-нибудь на выходные?
Итак, я решил наладить выкладывание показаний счётчика куда-нибудь в Интернет, чтоб я мог находясь где-нибудь в дальней поездке периодически проверять, тратится ли газ, а если вдруг перестанет тратиться, то срочно звонить родственникам/друзьям/соседям (или кому там я оставил ключи), чтобы приехали и нажали кнопку.
Конечно, после простого выкладывания показаний в Интернет я решил не останавливаться на достигнутом и замутил ещё распознавание показаний и графическое представление, об этом читайте в части 2 данного топика.
+93
Психология роботов и умные компьютеры: как это работает и где этому научиться. Лекция Максима Мусина в Яндексе
4 мин
36KМашины уже умеют находить лица на фотографиях, искать террористов в видеопотоке, переводить тексты и понимать звуковые команды. Нейронные сети, копирующие структуру мозга, являются элементарным кусочком любого сложного алгоритма. Из лекции вы узнаете, как всё это связано с уравнениями, неравенствами и производными, какие интересные открытия случились за последнее время, а также на чём стоит начать программировать сейчас, чтобы однажды стать экспертом в психологии роботов.
Если вспомнить фильм «Терминатор» и технологии, которыми по сюжету пользовались киборги, то можно будет выделить и нейронные сети, и возможность беспроводной связи с внешним источником интеллекта (Skynet), и компьютерное зрение, и распознавание звука, понимание различных языков. На момент выхода фильма на экраны все это было абсолютной фантастикой, технологиями далекого будущего. Но сегодня большая часть этих технологий реализована в том или ином виде. Попробуем разобраться, что же из всего перечисленного уже используется.
Если вспомнить фильм «Терминатор» и технологии, которыми по сюжету пользовались киборги, то можно будет выделить и нейронные сети, и возможность беспроводной связи с внешним источником интеллекта (Skynet), и компьютерное зрение, и распознавание звука, понимание различных языков. На момент выхода фильма на экраны все это было абсолютной фантастикой, технологиями далекого будущего. Но сегодня большая часть этих технологий реализована в том или ином виде. Попробуем разобраться, что же из всего перечисленного уже используется.
+57
Добавление и удаление на ходу SATA/SCSI устройств
2 мин
66KСовременный Linux (2.6+) может обнаруживать новоподключенные устройства (на шинах, которые поддерживают hotplug). Их можно, так же отключать, предварительно отмонтировав файловые системы и сделав sync. Среди hotplug шин не только USB, но и SATA, SCSI и SAS (в теории, это же применимо и к PATA, но там много глупых контроллеров, которые не умеют адекватно реагировать на исчезновение устройства).
Отключать их лучше не дёргая на ходу физическое устройство, а сказав ядру полностью забыть про про него (гарантируя тем самым, что никаких операций ввода-вывода с устройством производиться не будет, даже если вспохватившийся кеш). Кроме того, иногда нужно выполнять эмуляцию процедуры plug-unplug без физического дёргания питания/шины данных (что не очень хорошо для железа). Самая типичная ситуация — это отладка скриптов udev.
(x — буква устройства, sda, sdb, etc).
Эта команда удаляет указанное устройство. Заметим, это низкоуровневая команда, которая не проверяет кеш и статус примонтированности, так что лучше сначала сказать umount & sync.
К сожалению, я не знаю метода совместить выключение шпинделя диска с его удалением с точки зрения ядра. Шпиндель можно отключить командой scsi-spin, однако, при попытке удалить устройство, оно будет раскручено заново и удалено. А у удалённого устройства уже нельзя ничего останавливать (нет устройства). Так что эта часть проблемы пока не решена.
Мы не можем «добавить» устройство, мы можем отдать контроллеру команду «перечитать» список устройств, подключенных к тому или иному порту. Если там найдётся что-то интересное, ядру дадут знать.
X — номер шины, совпадает с номером SATA порта на материнской плате. Если не знаете, можете смело делать для всех хостов по очереди, ничего, кроме небольшого лага в дисковых операциях, незаметного для софта и файловой системы, это не даст.
Обратите внимание, host'ы нумеруются с 0, а не с 1. (а в dmesg ata устройства нумеруются с 1).
Так же осуществляется и сканирование USB-SATA переходников (usb-боксов и внешних винчестеров — они просто фигурируют как ещё один scsi_host).
Если мы говорим про SCSI, то вместо "- — -" можно указать точный номер устройства/шины/LUN'а сканируемого устройства (например, «200 1 2»). SATA, в силу архитектурных особенностей (один target для одного initiator) принимает туда только «0 0 0».
Ещё об удалении… Если вы не знаете буквы устройства, но знаете его физическое место подключения, то удалять можно «прямым текстом», записью «1» в "/sys/bus/scsi/devices/targetX:0:0/X:0:0:0/delete".
Отключать их лучше не дёргая на ходу физическое устройство, а сказав ядру полностью забыть про про него (гарантируя тем самым, что никаких операций ввода-вывода с устройством производиться не будет, даже если вспохватившийся кеш). Кроме того, иногда нужно выполнять эмуляцию процедуры plug-unplug без физического дёргания питания/шины данных (что не очень хорошо для железа). Самая типичная ситуация — это отладка скриптов udev.
Удаление устройства
echo 1 >/sys/block/sdX/device/delete
(x — буква устройства, sda, sdb, etc).
Эта команда удаляет указанное устройство. Заметим, это низкоуровневая команда, которая не проверяет кеш и статус примонтированности, так что лучше сначала сказать umount & sync.
К сожалению, я не знаю метода совместить выключение шпинделя диска с его удалением с точки зрения ядра. Шпиндель можно отключить командой scsi-spin, однако, при попытке удалить устройство, оно будет раскручено заново и удалено. А у удалённого устройства уже нельзя ничего останавливать (нет устройства). Так что эта часть проблемы пока не решена.
Добавление устройства
Мы не можем «добавить» устройство, мы можем отдать контроллеру команду «перечитать» список устройств, подключенных к тому или иному порту. Если там найдётся что-то интересное, ядру дадут знать.
echo "- - -" >/sys/class/scsi_host/hostX/scan
X — номер шины, совпадает с номером SATA порта на материнской плате. Если не знаете, можете смело делать для всех хостов по очереди, ничего, кроме небольшого лага в дисковых операциях, незаметного для софта и файловой системы, это не даст.
Обратите внимание, host'ы нумеруются с 0, а не с 1. (а в dmesg ata устройства нумеруются с 1).
Так же осуществляется и сканирование USB-SATA переходников (usb-боксов и внешних винчестеров — они просто фигурируют как ещё один scsi_host).
Если мы говорим про SCSI, то вместо "- — -" можно указать точный номер устройства/шины/LUN'а сканируемого устройства (например, «200 1 2»). SATA, в силу архитектурных особенностей (один target для одного initiator) принимает туда только «0 0 0».
Ещё об удалении… Если вы не знаете буквы устройства, но знаете его физическое место подключения, то удалять можно «прямым текстом», записью «1» в "/sys/bus/scsi/devices/targetX:0:0/X:0:0:0/delete".
+44
Радиотелескоп
3 мин
80KМы привыкли видеть мир в оптическом диапазоне и слышать в звуковом. Всем известно, что летучая мышь видит в темноте благодаря ультразвуковому локатору. Существует множество приборов, расширяющих человеческие возможности восприятия – к этому относится вся измерительная аппаратура. Она отображает всевозможные физические процессы в графическом или звуковом виде, доступном человеку.
+161
Информация
- В рейтинге
- Не участвует
- Откуда
- Москва, Москва и Московская обл., Россия
- Дата рождения
- Зарегистрирован
- Активность