Pull to refresh
0
0
Jan Davidovicz @frizz

User

Send message

Программируем квадрокоптер на Arduino (часть 1)

Reading time18 min
Views357K


Здравствуйте, хаброжители!
В этой серии статей мы с вами приоткроем крышку квадрокоптера чуть больше, чем этого требует хобби, а также напишем, настроим и запустим в воздух собственную программу для полетного контроллера, которым будет являться обычная плата Arduino Mega 2560.

У нас впереди:
  1. Базовые понятия (для начинающих коптероводов).
  2. PID-регуляторы с интерактивной web-демонстрацией работы на виртуальном квадрокоптере.
  3. Собственно программа для Arduino и настроечная программа на Qt.
  4. Опасные тесты квадрокоптера на веревке. Первые полёты.
  5. Крушение и потеря в поле. Автоматический поиск с воздуха средствами Qt и OpenCV.
  6. Окончательные успешные тесты. Подведение итогов. Куда дальше?

Материал объемный, но постараюсь уложиться в 2-3 статьи.
Сегодня нас ожидает: спойлер с видео, как наш квадрокоптер полетел; базовые понятия; PID-регуляторы и практика подбора их коэффициентов.
Читать дальше →
Total votes 107: ↑106 and ↓1+105
Comments96

Найден самый старый оружейный плутоний

Reading time1 min
Views1.6K
Американские физики идентифицировали первый оружейный плутоний, когда-либо произведённый на Земле. Образец Pu-239 нашли на военной свалке радиоактивных отходов возле основанного в 1943 году «ядерного» городка Хэнфорд (шт. Вашингтон). Около 400 мл плутония хранилось в большой металлической бутылке внутри проржавевшего сейфа (бутылка лежит на фото справа).

Данный образец был получен в рамках проекта «Манхэттен» в декабре 1944 года, за семь месяцев до самого первого в истории испытания ядерного оружия (эксперимент Trinity, 16 июля 1945 года, через три недели после которого были Хиросима и Нагасаки). Странно, что этот материал не пошёл на бомбы, а хранился в сейфе.

Вообще, самым первым плутонием считается образец, датированный 1942 годом.

Больше фотографий под хабракатом.
Читать дальше →
Total votes 73: ↑53 and ↓20+33
Comments49

Генная инженерия от A до Z

Reading time6 min
Views40K
Приветствую уважаемое сообщество!

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

Помнится, тут пробегал пост в котором говорилось о геннотехнологической лаборатории “на коленке”. Оказалось, что тема интересна аудитории, поэтому я решил заняться ее развитием с просветительскими целями.

Я буду давать наглядные и понятные обычным людям примеры для описания сложных процессов. Если кто-то посчитает нужным меня поправить – не стесняйтесь. Я буду сознательно упускать многие вещи, но если вам кажется, что без них страдает логика изложения – так же поправляйте.
Читать дальше →
Total votes 174: ↑159 and ↓15+144
Comments156

Первый в мире компетентный программист

Reading time3 min
Views2K
Представляю вашему вниманию известную притчу от Дейкстры — от одного из самых известных людей в мире компьютерной индустрии.

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

Вот одна из его притч, которая мне, как программисту, очень нравится:
Читать дальше →
Total votes 158: ↑134.5 and ↓23.5+111
Comments99

100 OpenSource инструментов для Web-мастера.

Reading time7 min
Views14K
В этой статье, опубликованной позавчера на DesignVitality, авторы приводят 100 инструментов для Вэб-мастера, включающих программы для дизайнера с открытым кодом, открытые шаблоны и ресурсы.


Лучшие порталы с открытыми шаблонами сайтов


В сети есть множество бесплатных шаблонов, но искать подходящий часто может быть очень долго, поэтому мы предлагаем вам посетить сначала следующие четыре портала:
Читать дальше →
Total votes 56: ↑51 and ↓5+46
Comments42

Восстановление битых пикселей ЖК

Reading time1 min
Views125K
Сомневался в успешности метода, а также в том, что мой вечно салатовый пиксель, застывший полгода назад и постоянно мозоливший мне глаз, «станет на место». Но…
О чудо, помогло!
screenshot

Читать дальше →
Total votes 143: ↑142 and ↓1+141
Comments144

Артемий Троицкий: «Будущее музыки – за Интернетом».

Reading time5 min
Views1.1K
Хотите спеть в компании под гитару композицию группы The Beatles? Приобретите лицензию — даже сам Маккартни больше не может исполнять ряд своих собственных песен, поскольку авторские права на них купил Майкл Джексон. Послушать музыку в такси или ресторане? Подсудное дело, если таксист или владелец заведения общепита не заплатил Мадонне, Джорджу Майклу, Андрею Макаревичу… Публичное воспроизведение фонограммы – запрещено! А если музыка звучит с вашего сайта – штраф до 500 000 рублей. Что первично – бизнес или творчество? Борьба с пиратством или интересы слушателей? Об этом — гуру музыкального сообщества Артемий Троицкий.
Читать дальше →
Total votes 56: ↑50 and ↓6+44
Comments171

Osmand — Руководство пользователя

Reading time8 min
Views228K
Osmand — программа для Android, которая позволяет работать с офлайн картами OpenStreetMap и не только, использовать голосовую навигацию, запись, отображение и навигацией GPX треков, а также ряд возможностей по редактированию OSM. Судя по предыдущему топику , среди хабровчан достаточно большое число пользователей данной программы, которые бы хотели узнать тонкости работы данной программы.

Osmand menu Конечно, написание руководств для пользователей в последнее время считается плохим тоном, так как пользовательский интерфейс должен быть абсолютно понятен всем и в любой ситуации, но реальность, к сожалению, говорит об обратном. Особенно это критично, когда пользователи не понимают базовых понятий приложения или руководствуются заниженной или завышенной оценкой к его возможностям.

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

Кратко темы, раскрытые ниже:
  • Карта — векторные и растровые карты, различные настройки
  • Экран Карты — индикаторы на главном экране приложения и контекстное меню
  • Настройки приложения — профили настроек и обзор базовых настроек
  • Фоновый сервис — работа приложения с выключенным экраном и с заданным периодом включения
  • Мониторинг — запись GPX треков
  • Навигация — онлайн и офлайн навигация
  • Поиск — поиск POI, транспорта, адреса
  • OSM редактирование — POI и Osm bugs

Читать дальше →
Total votes 76: ↑66 and ↓10+56
Comments67

Основы программирования под Android на примере игры Судоку

Reading time6 min
Views375K
В статье описаны основные трудности создания приложений под Android.
Рассматриваются базовые понятия программирования Android.
Для примера описано создание игры Sudoku из книги Hello, Android – Ed Burnette.
Осторожно много скриншотов.

Читать дальше →
Total votes 137: ↑131 and ↓6+125
Comments48

Фильтр Калмана

Reading time10 min
Views417K


В интернете, в том числе и на хабре, можно найти много информации про фильтр Калмана. Но тяжело найти легкоперевариваемый вывод самих формул. Без вывода вся эта наука воспринимается как некое шаманство, формулы выглядят как безликий набор символов, а главное, многие простые утверждения, лежащие на поверхности теории, оказываются за пределами понимания. Целью этой статьи будет рассказать об этом фильтре на как можно более доступном языке.
Фильтр Калмана — это мощнейший инструмент фильтрации данных. Основной его принцип состоит в том, что при фильтрации используется информация о физике самого явления. Скажем, если вы фильтруете данные со спидометра машины, то инерционность машины дает вам право воспринимать слишком быстрые скачки скорости как ошибку измерения. Фильтр Калмана интересен тем, что в каком-то смысле, это самый лучший фильтр. Подробнее обсудим ниже, что конкретно означают слова «самый лучший». В конце статьи я покажу, что во многих случаях формулы можно до такой степени упростить, что от них почти ничего и не останется.
Читать дальше →
Total votes 178: ↑173 and ↓5+168
Comments84

Обучение OpenCV каскада Хаара

Reading time8 min
Views191K
На хабре уже есть несколько статей и про то, что такое каскад Хаара (раз, два, три). Есть даже одна, где затронут процесс обучения, но в отношении описанной задачи. На тему обучения есть пара неплохих статей на английском (первая, вторая, третья), но, на мой взгляд, они путанные: либо рассказывают очень мало, либо слишком много и обо всём — выделить нужную мысль сложно.
image
В этой статье я попробую показать, как обучить каскад с нуля за несколько часов, натренировав на поиск простого предмета в видеопотоке (примером будет очаровательная сова с фотографии). Все обучающие выборки и программы будут приложены.
Зачем всё это нужно? Каскад Хаара это один из простейших способов распознавания классов объектов с большой скоростью работы. К ним относятся лица и руки людей, номера автомобилей, пешеходы. Детектором Хаара просто находить животных в кадре (кстати, удивительно, что я не видел ещё ни одной автоматической кормушки для синиц на raspberry pi). К тому же, готовые реализации OpenCV есть под большинство существующих систем (даже для blackfin'a встречал). Всё это делает Хаара одним из самых удобных методов, позволяющих решать задачи видеообработки даже людям, которые никогда не работали с обработкой видео.
Читать дальше →
Total votes 59: ↑57 and ↓2+55
Comments19

Миллион одновременных соединений на Node.js

Reading time9 min
Views104K


TL;DR:


  • Node.js v0.8 позволяет обрабатывать 1 млн одновременных HTTP Comet соединений на Intel Core i7 Quad/16 Gb RAM практически без дополнительных настроек.
  • На 1 соединение тратится чуть больше 10 Kb памяти (4.1 Kb Javascript Heap + 2.2 Kb Node.js Native + 3.8 Kb Kernel)..
  • V8 Garbage Collector не рассчитан на управление > ~500Mb памяти. При превышении нужно переходить на альтернативный режим сборки мусора, иначе «отзывчивость» сервера сильно уменьшается.
  • Подобный опыт можно (и нужно!) без особых затрат повторить самому (см. под катом).

Читать дальше →
Total votes 193: ↑187 and ↓6+181
Comments125

Автоконфигурация в облаке Amazon при помощи Chef-Solo

Reading time3 min
Views7.4K
Здравствуйте!

В этой статье я хочу рассказать об автоконфигурации в облаке. Для примера запустим ec2-инстанс, на котором «приготовится» WordPress.

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



Читать дальше →
Total votes 26: ↑23 and ↓3+20
Comments8

Еще раз о поиске наибольшего сгущения в облаке точек

Reading time4 min
Views7.4K
В очередной раз мне попалась задача – найти в облаке точек место их наибольшего сгущения. На этот раз ситуация была такой:
  • есть некоторое количество (можно считать, что не более 16 миллионов) измерений набора параметров. Число параметров в наборе – от 2 до 5.
  • измерение параметров может быть относительно успешным – тогда их результат будет неподалеку от истинного (параметры и тип распределения неизвестны), либо не успешным – тогда результат будет случайным (опять-таки с неизвестными параметрами распределения). Определить по одиночному измерению, было ли оно успешным, нельзя.
  • Можно считать, что точка сгущения существует. Если их несколько с близким качеством (которое формально так и не определяется), можно выдать любую.
  • ответ нужно дать за один проход по исходным данным: перевычислять их или сохранять целиком – дорого.
  • И, как обычно, хочется, чтобы алгоритм выглядел попроще, а работал побыстрее.

Читать дальше →
Total votes 37: ↑35 and ↓2+33
Comments26

Подводные камни при работе с php-handlersocket

Reading time4 min
Views4.7K
HandlerSocket — это noSQL-плагин для mySQL, позволяющий обращаться к базам данных в обход уровня SQL.

Данная статья предназначена для тех, кто успешно поставил HandlerSocket и php-handlersocket, а также столкнулся со скудным мануалом и странным поведением этого плагина для php.
Читать дальше →
Total votes 46: ↑46 and ↓0+46
Comments18

Как понять почему упал сервер не подключая к нему монитор и клавиатуру?

Reading time2 min
Views13K
Так бывает что сервер зависает, но к нему не подключена ни клавиатура, ни монитор.

У меня нет лишнего монитора, и обнаружив, что сервер не отвечает по сети,
снимать монитор с моего компьютера и подключать к серверу в кладовке нет никакого желания и сил.

В Linux есть такая возможность ядра как Netconsole.
Netconsole позволяет послать сообщения от ядра на удаленный компьютер.

Для настройки netconsole нужен другой (постоянно включенный) компьютер который примет сообщение по сети.
Читать дальше →
Total votes 94: ↑89 and ↓5+84
Comments33

CAP-теорема простым, доступным языком

Reading time6 min
Views83K
Этот текст является вольным переводом замечательного поста Kaushik Sathupadi на тему распределённых систем и существующих ограничений при их создании.

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

Часть №1: Идея нового сервиса — «Позвони, напомню!»


Вчера, когда ваша супруга в очередной раз оценила тот факт, что вы вспомнили о её дне рождения и подарили шикарный подарок, в голове всплыла забавная идея. «Хм, а ведь люди вечно всё забывают». А у вас просто блестящая память! Почему бы не сделать новый сервис, который позволит полностью раскрыться вашему таланту? С каждой мыслью об этой идее вам всё больше и больше она нравится. Вы уже даже придумали рекламу, которую можно было бы напечатать в газете:
«Позвони, напомню» — Никогда не забывайте, даже если вы не помните, что забыли!
Плохо себя чувствуете из-за того, что вы что-то забыли? Не переживайте. Помощь на расстоянии одного телефонного звонка!
Если вам нужно что-то запомнить, просто позвоните и сообщите нам об этом! Допустим, позвоните нам и сообщите телефон вашего босса. Забудьте про него. Когда вам нужно будет вспомнить его, перезвоните, и мы вам обязательно напомним.
Всего 3 рубля за звонок.

Типичное обращение в ваш сервис выглядело бы вот так:
Читать дальше →
Total votes 107: ↑104 and ↓3+101
Comments12

HBase + Thrift + PHP

Reading time4 min
Views11K
Видимо так сложилось исторически, но на хабре не очень много статей о HBase, Thrift и тем более о том как их связать для работы с PHP клиентом. Давайте же ликвидируем этот пробел и пройдемся от инсталяции HBase до получения PHP клиентом примитивных данных из HBase.
Читать дальше →
Total votes 38: ↑35 and ↓3+32
Comments18

Замыкания и объекты JavaScript. Переизобретаем интерпретатор

Reading time12 min
Views25K
Обычно концепции или парадигмы программирования объясняют либо описательно — «разжёвывая» новые идеи простыми словами, либо метафорически — уподобляя их хорошо знакомым аудитории предметам и понятиям. Но ни первый, ни второй способ не дает такого точного и полного представления о предмете, как взгляд с точки зрения низкоуровневой реализации.

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

JavaScript, как никакой другой язык, нуждается в именно таком объяснении. Функциональная природа, скрытая за Си-подобным синтаксисом, и непривычная прототипная модель наследования поначалу сильно сбивают с толку. Давайте мысленно понизим уровень JavaScript до простого процедурного, наподобие Си. Отталкиваясь от этого «недоязыка», переизобретем функциональное и объектно-ориентированное программирование.
Читать дальше →
Total votes 114: ↑113 and ↓1+112
Comments30
1

Information

Rating
Does not participate
Location
Минская обл., Беларусь
Date of birth
Registered
Activity