Search
Write a publication
Pull to refresh
36
0
Александр Воронин @av0000

User

Send message

Еще раз об архитектуре Android приложения или джентльменский набор библиотек

Reading time6 min
Views57K
Вот надумал написать обзор библиотек с помощью которых легко и удобно писать приложения под Android.
Список вырисовывается такой:

Если заинтересованны прошу под кат.
Читать дальше →

6 применений в «умном доме» платы USBasp. Нестандартное использование USBasp

Reading time5 min
Views130K
Устройство nRF24L01-USB
Иногда дешевле купить готовое устройство, чем собирать его самому. Да и самодельное устройство не всегда и не у всех будет выглядеть аккуратно- это зависит от наличия оборудования/материалов и прямоты рук.

Пользователи, знакомые с микроконтроллерами Atmel или хотя бы с Arduino скорее всего знают о дешевом программаторе USBasp, цена которого на Ebay около $ 3. Распространены две версии программатора:
USBasp 2.0 — с стабилизатором на 3.3 вольта.
USBasp 3.0 — плата поменьше, без стабилизатора. Так же у него не выведены на разъем порты PD0 и PD1(Аппаратный UART).В руках не держал и соответственно рассматривать его тут не будем.

Ниже мы рассмотрим как превратить программатор USBasp в I2C-USB переходник, научимся читать датчики влажности и температуры, получим простой набор портов ввода/вывода (PIO), RS232-USB, а так же попытаемся создать устройство nRF24L01-USB для чтения беспроводных датчиков и управления устройствами. Ну и для любителей Arduino — будем программировать в среде Arduino IDE используя USBasp как макетную плату.Проекты используют популярную библиотеку V-USB для работы с USB в программной реализации.
Читать дальше →

Восстановление открытых файлов но удаленных c файловой системы linux

Reading time2 min
Views34K
Всех с прошедшим новым годом!
В этой заметке я бы хотел поделиться как можно восстановить открытый файл в linux.

Предыстория


Зашел человек на канал посвященный debian в jabber и сказал что взломали его jabber-bot и выполнили команду:
$ rm -rf /*

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

STM32 и USB-HID — это просто

Reading time14 min
Views384K
На дворе 2014 год, а для связи микроконтроллеров с ПК самым популярным средством является обычный последовательный порт. С ним легко начать работать, он до примитивности прост в понимании — просто поток байт.
Однако все современные стандарты исключили COM порт из состава ПК и приходится использовать USB-UART переходники, чтобы получить доступ к своему проекту на МК. Не всегда он есть под рукой. Не всегда такой переходник работает стабильно из-за проблем с драйверами. Есть и другие недостатки.
Но каждый раз, когда заходит разговор о том, применять USB или последовательный порт, находится множество поклонников логической простоты UART. И у них есть на то основания. Однако, хорошо ведь иметь альтернативу?

Меня давно просили рассказать как организовать пакетный обмен данными между ПК и МК на примере STM32F103. Я дам готовый рабочий проект и расскажу как его адаптировать для своих нужд. А уж вы сами решите — нужно оно вам или нет.

У нас есть плата с современным недорогим микроконтроллером STM32F103C8 со встроенной аппаратной поддержкой USB, я рассказывал о ней ранее

Заставим ее работать

Python: вещи, которых вы могли не знать

Reading time8 min
Views314K
Python — красивый и местами загадочный язык. И даже зная его весьма неплохо, рано или поздно находишь для себя нечто такое, что раньше не использовал. Этот пост отражает некоторые детали языка, на которые многие не обращают внимание. Сразу скажу: многие примеры являются непрактичными, но, оттого, не менее интересными. Так же, многие примеры демонстрируют unpythonic стиль, но я и не претендую на новые стандарты — я просто хочу показать, что можно делать вот так.
Читать далее

Доработка проветривателя или управление вентиляцией от датчика углекислого газа

Reading time7 min
Views99K
image
Уровень углекислого газа (CO2) один из важных показателей качества воздуха в помещении. Еще его уровень очень удобно использовать для управления вентиляцией.

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

Читать дальше →

Создание собственных драйверов под Linux

Reading time24 min
Views210K


Многие мои друзья и знакомые крутят пальцем у виска или задаются вопросом: не жмёт ли мне череп, когда узнают, что я пишу драйвера под Linux. Слово “драйвер” окутано каким-то почти мистическим смыслом, и постичь Дао его написания способны лишь избранные гуру.
К счастью это не так. Не знаю, как обстоят дела с написанием драйверов под другие операционные системы, в т.ч. и наиболее популярные, но под linux, вне зависимости от аппаратной архитектуры драйвера пишутся очень просто. Для написания драйвера необходимы базовые знания языка си, представление о работе ОС линукс (базовые), понимание того, что мы хотим получить, желание чтения документации и исходных кодов, ну и усидчивость. Всё.
Вы хотите посмотреть как написать драйвер для своего устройства? Тогда ныряйте под кат!
Читать дальше →

Тайны кнопок в Android. Часть 2: Рефакторинг верстки

Reading time11 min
Views42K
Приветствую, уважаемое сообщество.

В предыдущей статье мы, используя только верстку, сделали кнопку “включить/выключить”, и вот что у нас тогда получилось:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="6dp"
    android:background="#dddddd" >

    <ToggleButton
       android:id="@+id/act_main_btn_telephony"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:background="@drawable/button_background"
       android:drawableLeft="@drawable/icon_phone"
       android:drawableRight="@drawable/icon_on_off"
       android:gravity="left|center_vertical"
       android:textOn="Телефония"
       android:textOff="Телефония"
       android:textSize="24sp"
       android:textStyle="bold|italic"
       android:textColor="@color/text_color"
       android:onClick="onToggleButtonClick" />

</RelativeLayout>

XML-код получился довольно увесистый. В этой статье я покажу, как сделать его по-настоящему красивым. Мы сократим код вдвое, убрав все, что может затруднить сопровождение нашего приложения или вызвать недовольство тим-лида. В этой статье мы будем использовать строковые ресурсы (strings.xml), ресурсы размерностей (dimens.xml), стили и темы (styles.xml).
Читать дальше →

Тайны кнопок в Android. Часть 1: Основы верстки

Reading time18 min
Views239K
Приветствую, уважаемое сообщество.

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

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

Читать дальше →

Использование SQLite в Android-разработке. Tips and tricks

Reading time5 min
Views52K

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

Для меня этот проект стал первым, где надо было вплотную использовать SQLite (раньше он был нужен не более, чем для select <что-нибудь> <откуда-то>).

Задача такова: сканировать штрих-коды товаров, распознавать их, сверять со справочниками и выводить результат пользователю.

В ходе решения сделал несколько интересных для себя выводов.
Читать дальше →

Профилирование и отладка Python, инструменты

Reading time14 min
Views114K
В предыдущей статье мы на практике разобрались, где и в каких случаях можно использовать ручное профилирование, а так же познакомились со статистическими профайлерами.

Сегодня мы познакомимся с основной и самой многочисленной группой инструментов — событийными профайлерами.

Приступим!

Git up и все все все

Reading time2 min
Views26K
Комманда git up (аналог svn up) добавляется так:
git config --global alias.up '!(git add . && git stash && git pull --rebase >&2) | grep -v "No local changes to save" && git stash pop'

git up при надобности ныкает все ещё незакоммиченные изменения в stash, обновляет локальную ветку до свежайшей и восстанавливает локальные изменения назад. В том числе переносит ещё неотправленные локальные коммиты в самый конец, делая историю линейной как в Subversion, т.е. избегая лишних веток и merge-коммитов.
Читать дальше →

Умный дом, как я до такого докатился. Часть 3-я

Reading time6 min
Views218K

В первой части разобрались с тем, зачем все это нужно и как я до этого докатился, во второй поговорили о софте. Настала пора остановиться на самом любимом хабравчанами разделе DIY — на железе. Итак, берем текстолит, хлорное железо, паяльник… Хотя нет, стоп, открываем редактор плат. Про паяльник, куда его засовывать, а куда лучше не надо другие лучше меня расскажут. А я расскажу какие платы и датчики трудятся на благо моего умного дома.

Поехали!

Как правильно приготовить HDD

Reading time4 min
Views221K
(Вы не любите Seagate? Вы просто не умеете их готовить!)
Для NAS пришлось купить HDD 3TB WD Caviar Green IntelliPower (других трёшек просто не было). Руки привычно взяли «напильник» и начали «снимать фаску», из глаз слёзы обиды — семь с половиной тысячи за ЭТО. Да «гарантия», да RAID5, но держать в уме предстоящий через 6-8 месяцев ребилд 6 террабайтного массива?! И тут новость о снижении вендорами сроков гарантии. Нет, я отлично понимаю, почему уменьшают гарантию,- ЭТО работать вообще не должно. Но почему не повышают качество изделий? Впрочем, и это понимаю,- надо чтобы продавалось много, а не работало долго. А то вот мои три 2ТБ Барракуды уже второй год под торрентом 7/24 работают и не бэдят, а Seagate голодает.
И так, если вас греет гарталон — этот топик вам будет не интересен. Если у вас RAID6 из Seagate 7200 Constellation ES — ваше время слишком дорого стоит, что бы читать такие мелочи. Если вы потратили свои кровные и хотите «что бы не было мучительно больно» — загляните под кат, может найдёте что-то полезное.
Читать дальше →

Маленькая хитрость для отображения большого объёма данных в ListView

Reading time4 min
Views41K


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

Проблема


Стандартный механизм отображения списков из базы данных в Android выглядит примерно так:
  • Activity содержит ListView
  • ListView обращается к экземпляру CursorAdapter
  • CursorAdapter получает данные из объекта, реализующего интерфейс Cursor
  • Cursor получен либо из ContentProvider, либо сразу из SQLiteDatabase


Всё работает нормально ровно да тех пор, пока количество строк в Cursor сравнительно небольшое. Но если в нём 50 тысяч, 100 тысяч и более строк (хотя дело не только в количестве строк, но об этом чуть позже), время от времени список будет притормаживать. Особенно это заметно при «быстрой прокрутке», если у ListView установлено в true свойство fastScrollEnabled.
Читать дальше →

Распределенный музыкальный плейер на Raspberry Pi

Reading time7 min
Views98K

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

(Да, пост во многом пересекается с постом Распределенный аудиоплеер на Odroid U2, но чуть проще в настройке)
Читать дальше →

Автомобильный стрелочный тахометр для новичка или немного шаманства с фиксированной точкой на AVR

Reading time8 min
Views121K
Всем привет! Хотелось бы поделиться с сообществом своей историей модернизации тахометра ТХ-193
image

Неделю назад обратился ко мне один человек с довольно нестандартным заданием — нужно было обеспечить работу древнего тахометра ТХ-193(ВАЗ 2106) с современным двигателем ВАЗ21126(Приора), имеющем систему зажигания с индивидуальными катушками на каждый цилиндр, а значит просто подключить ТХ-193 к катушке зажигания уже не получится. К тому-же заказчик хотел повысить эксплуатационные качества прибора, оставив не тронутым его внешний вид и дизайн. В общем дело кончилось тем, что я взялся выпотрошить электронную начинку прибора и разработать свою, с блэкджеком и шлюхами. Информацию о частоте вращения коленчатого вала тахометр теперь будет получать от ЭБУ Январь 7.2, для чего в последнем имеется специальный вывод.

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

Цикл разработки через Github

Reading time3 min
Views106K

Разработка



Я расскажу о цикле разработки через Github, который я использую. Он был проверен в течении года на командах разного размера: 3 — 14 человек.

Существует 2 основных ветки: master и dev.

master — стабильная ветка, готовая к выкатыванию на production сервер в любой момент.

dev — ветка, над которой в данный момент работает команда.

Итак, в начале разработки master и dev ветки идентичны.

Читать дальше →

Android: Обработка СМС

Reading time4 min
Views76K

0. Вместо вступления


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

Регбол! Сегодня в 19-30. Двор школы №30: ул. Володарского, 20. Открытая площадка с резиновым покрытием. Тел. 8 (951) ***-**-**.

И вот я подумал — почему бы не написать небольшое приложение, которое будет отлавливать эти сообщения, и забивать их в гугл-календарь. Зачем? Да, в основном, just for fun, ибо я не настолько занятой человек, чтобы мне были жизненно необходимы автоматические секретари.

Итак, приложение будет уметь следующее:
  • Следить за входящими сообщениями. Если пришло сообщение от адресата RM FIGHT, то нужно сверить текст сообщения с шаблоном, и при совпадении создать мероприятие в гугл-календаре. Если же текст сообщения с шаблоном не совпадает (например, просто какие-то новости пришли), то сохраняем сообщение в базе, чтобы потом можно было его прочитать.
  • Показывать сообщения от этого адресата, не попадающие в категорию «Оповещение об игре» (новости, реклама и т.д.).

В рамках статьи я полагаю, что у читателя есть базовые знания — как создать проект, что такое файл Manifest, и с чего вообще начинать разработку под андроид — на этот счет есть куча разных туториалов, и здесь на этом останавливаться не будем. В то же время статья не предназначена для продвинутых андроид-девелоперов, в ней будут рассматриваться достаточно базовые вещи, вроде мониторинга и обработки смс, работы с базой данных, подключения по HTTP.
Читать дальше →

Оптимизируем скорость SQL вставки на Android устройствах

Reading time11 min
Views17K
Добрый день.

В ходе разработки своего проекта под Android, столкнулся с задачей делать обновление (update) большого количества строк в SQLite базе прямо на устройстве.

Изначальное решение в лоб дало жутко медленные результаты, т.к. обновлять предстояло более 40 000 строк. О том, как я улучшал производительности данных обновлений строк в базе, и пойдёт рассказ.
Читать дальше →

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity