Проблема чрезмерной запыленности воздуха может быть очень серьезной в зависимости от региона и страны проживания: постоянно находясь в среде с повышенным содержанием взвешенных частиц в воздухе, можно нанести серьезный вред своему здоровью. Чтобы узнать, чем ты дышишь ежедневно необходимо измерять степень загрязненности воздуха. В статье расскажу, как собрать, установить и настроить общественную станцию мониторинга качества воздуха у себя дома. Проект основан на гражданской инициативе https://luftdaten.info/, которая появилась в 2015 году в Германии. В данный момент проект расположен на странице https://sensor.community/.
среда, 18 сентября 2019 г.
sensor.community (ранее luftdaten.info) - общественный мониторинг качества воздуха
Проблема чрезмерной запыленности воздуха может быть очень серьезной в зависимости от региона и страны проживания: постоянно находясь в среде с повышенным содержанием взвешенных частиц в воздухе, можно нанести серьезный вред своему здоровью. Чтобы узнать, чем ты дышишь ежедневно необходимо измерять степень загрязненности воздуха. В статье расскажу, как собрать, установить и настроить общественную станцию мониторинга качества воздуха у себя дома. Проект основан на гражданской инициативе https://luftdaten.info/, которая появилась в 2015 году в Германии. В данный момент проект расположен на странице https://sensor.community/.
пятница, 31 мая 2019 г.
JAva COde COverage. Оценка покрытия java кода тестами с помощью JaCoCo
18 мая 2019 года состоялась десятая встреча сообщества java разработчиков Севастополя JUG.SEV. На данной встрече я вступил с докладом на тему "JAva COde COverage. Оценка покрытия java кода тестами". В докладе я рассказал об особенностях измерения одной из метрик качества тестирования: покрытии кода тестами. На примере open source библиотеки JaCoCo разобрал, как работает технология оценки покрытия кода в java. Рассказал о внедрении процесса анализа покрытия кода тестами в процесс разработки продукта. Расставил акценты и резюмировал, какую пользу может принести оценка покрытия, и какие есть подводные камни ее использования.
Видео доклада
Презентация
пятница, 9 ноября 2018 г.
Fullstack разработка: от железа до фронтэнда. IoT in action
14 октября 2018 года прошла девятая встреча сообщества java разработчиков Севастополя JUG.SEV, на которой я выступил с докладом "Fullstack разработка: от железа до фронтэнда. IoT in action".
В докладе я рассказал об особенностях построения решений в сфере интернета вещей (IoT) на примере проекта мониторинга температуры и влажности помещения с помощью сенсоров на базе микроконтроллера esp8266 (Lolin (Wemos) D1 mini) с wi-fi и сервера на Raspberry Pi 3.
Рассказал, как проектировать и создавать сенсоры в железе, как разрабатывать софт для сенсоров с помощью Arduino Framework. Развернул на Raspberry Pi java сервер, который управляет сенсорами, собирает с них значения температуры и влажности по WI-FI и предоставляет интерфейс для настройки и просмотра графиков истории значений сенсоров через web интерфейс.
Основная цель доклада — помочь тем, кто интересуется темой IoT сделать первые шаги. Рассказать об инструментарии и об особенностях разработки систем с "умными" устройствами.
Видео доклада
Презентация
воскресенье, 10 июня 2018 г.
TimescaleDB. Комфортное хранение метрик в PostgreSQL
В статье пойдет речь об opensource базе данных TimescaleDB, которая предназначена для хранения временных рядов. Мы поговорим об особенностях хранения временных рядов, рассмотрим, как устроена внутри TimescaleDB, рассмотрим на примере запись и чтение метрик в TimescaleDB.
В одной из предыдущих статей мы рассматривали одну очень интересную базу данных для хранения временных рядов InfluxDB. Мы говорили о том, что InfluxDB очень гибкая позволяет быстро начать работу и, самое главное, InfluxDB заточена под запись хранение и обработку временных рядов. А что это означает: "заточена под запись хранение и обработку временных рядов"? Давайте разберемся.
Разработчики для хранения данных разрабатываемых приложений (будем называть их бизнес данными) в зачастую используют реляционные SQL базы данных. Такие базы строго структурированы и хорошо обеспечивают целостность данных благодаря механизмам внешних ключей и транзакций, позволяют делать сложные запросы к данным и выполняют эти запросы быстро благодаря индексам на колонки, по которым идет фильтрация и сортировка. Бизнес данные - это в большей своей части описание некоторых сущностей реального мира, которые имеют свои параметры, и эти параметры меняются во времени. Когда происходит изменение параметров сущности - происходит обновление определенной строки в определенной таблице в базе данных, при этом предыдущее значение мы не запоминаем, а перезаписываем на новое. А что если мы хотим сохранить все предыдущие состояния наших сущностей? Если мы будем запоминать все изменения объектов - то наши данные превращаются во временные ряды.
В одной из предыдущих статей мы рассматривали одну очень интересную базу данных для хранения временных рядов InfluxDB. Мы говорили о том, что InfluxDB очень гибкая позволяет быстро начать работу и, самое главное, InfluxDB заточена под запись хранение и обработку временных рядов. А что это означает: "заточена под запись хранение и обработку временных рядов"? Давайте разберемся.
Разработчики для хранения данных разрабатываемых приложений (будем называть их бизнес данными) в зачастую используют реляционные SQL базы данных. Такие базы строго структурированы и хорошо обеспечивают целостность данных благодаря механизмам внешних ключей и транзакций, позволяют делать сложные запросы к данным и выполняют эти запросы быстро благодаря индексам на колонки, по которым идет фильтрация и сортировка. Бизнес данные - это в большей своей части описание некоторых сущностей реального мира, которые имеют свои параметры, и эти параметры меняются во времени. Когда происходит изменение параметров сущности - происходит обновление определенной строки в определенной таблице в базе данных, при этом предыдущее значение мы не запоминаем, а перезаписываем на новое. А что если мы хотим сохранить все предыдущие состояния наших сущностей? Если мы будем запоминать все изменения объектов - то наши данные превращаются во временные ряды.
понедельник, 5 февраля 2018 г.
Семантическое версионирование (Semantic Versioning)
При разработке программных решений встает задача управления изменениями ваших публичных API во времени. Например, у вас есть 2 сервиса А и Б. Сервис А делает запросы к сервису Б по REST API для получения необходимой информации. А зависит от Б, так как для его работы необходима информация из Б. Мы выпускаем новую версию сервиса Б, в которой изменилось API. Как сообщить клиентам сервиса Б, совместим ли API с предыдущей версией?
В системах с множественными зависимостями выпуск новой версии сервиса может превратиться в кошмар. Выпуск новой версии сервиса может быть заблокирован тем, что будет необходимо также обновить все зависимые сервисы.
Для решения вышеописанных проблем можно воспользоваться Семантическим версионированием (Semantic Versioning) - набором правил и требований, которые определяют, как назначаются и увеличиваются номера версии.
суббота, 17 сентября 2016 г.
Федерик Лалу, Открывая организации будущего
Есть книги, после прочтения которых, меняется полностью представление о чем-либо, хочется все поменять вокруг. Одна из таких книг Федерик Лалу "Открывая организации будущего".
В книге представлены исследования и наблюдения за компаниями, которые достигают хороших успехов с одной стороны, а с другой - используют методы организации внутренних процессов отличные от привычного нам устройства. Книга состоит из 3-х частей.
четверг, 3 марта 2016 г.
Алекс Беллос, Красота в квадрате
На днях прочитал замечательную научно-популярную книгу "Красота в квадрате". Автор с энтузиазмом пишет о математике, истории ее развития, рассказывает сложные вещи простым языком, понятным любому человеку.
- Почему люди любят число 7?
- Как правильно разделить пирог на 3 части?
- Как нарисовать эллипс используя нитку и карандаш?
- Что такое комплексное число?
- Что такое число пи и число e, и как они связаны друг с другом?
- Что нужно знать про число е, когда берешь кредит?
- В какую игру нужно играть, чтобы построить колонию живых клеток?
- Почему люди любят число 7?
- Как правильно разделить пирог на 3 части?
- Как нарисовать эллипс используя нитку и карандаш?
- Что такое комплексное число?
- Что такое число пи и число e, и как они связаны друг с другом?
- Что нужно знать про число е, когда берешь кредит?
- В какую игру нужно играть, чтобы построить колонию живых клеток?
На эти и многие другие вопросы отвечает в книге Алекс Беллос. Книга написана очень качественно и читать ее интересно - я прочитал на одном дыхании. Если вы любите математику, то книга вам очень понравится, а если не любите, то после прочтения полюбите. Всем советую.
P.S. Книга издана в 2015 году, поэтому вы вряд ли ее читали;-)
пятница, 26 февраля 2016 г.
Федерик Брукс, Мифический человеко-месяц
Я созрел и прочитал книгу "Мифический человеко-месяц" Федерика Брукса - американского ученого в области теории вычислительных систем, который управлял разработкой OS/360 в IBM. Также Брукс был награжден Премией Тьюринга - самой престижной премией в информатике в 1990 году. Поделюсь впечатлениями от прочитанной книги.
воскресенье, 17 января 2016 г.
Мониторинг с помощью InfluxData. Часть 3. Chronograf
В предыдущих сериях
В первой статье мы познакомились с InfluxData - платформой для работы с временными рядами, настроили базу данных временных рядов InfluxDB. Во второй статье настроили сбор метрик и дальнейшую отправку в InfluxDB с помощью Telegraf. В текущей статье научимся рисовать графики значений метрик с помощью Chronograf.
пятница, 8 января 2016 г.
Мониторинг с помощью InfluxData. Часть 2. Telegraf
Подписаться на:
Сообщения (Atom)






