java

как я изучал программирование - Java

Sun, 03/05/2015 - 11:09 -- observer

Это рабочий вариант (пока доступный только друзьям) одного из серии постов о самообучении. Именно этот будет посвящен изучению языка программирования Java.

Этот пост я задумал для того чтобы рассказать о процессе обучения, самообучения. Я программирую для себя, совсем скромно.. но так получилось, что меня часто спрашивают каким путем я шел.. Времени у меня мало, обучаемость средняя. Одновременно  я еще изучаю Python и Processing. Я их изучаю не просто так на будущее, а решаю конкретные задачи. Ну это чтобы было понятно ))

Микроблог клиент - Переработка

Mon, 15/04/2013 - 17:00 -- observer

Крайняя коммандировка в другой город на скоростном поезде открыла напомнила об узких местах в приложении "Микроблог". На данный момент это версия 5 - для десктопа, написанная на JAva и отсталая мобильная версия 3 написанная на Python под Nokia.

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

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

main_tags: 

Хранение состояний датчиков на RabbitMQ

Wed, 13/03/2013 - 13:07 -- observer

Раньше я уже писал об использовании в проекте HomeServer - сервера сообщений RabbitMQ. Рано или поздно должна была возникнуть задача хранения различных текущих данных системы. Т.е. это какието показатели, состояния датчиков, статусы подсистем и т.п.

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

Задача - хранить текущие данные температуры, влажности, освещенности, состояния триггеров, состояния систем и т.п.. Доступ к этим данным должен быть максимально простым из всевозможных служб. Желательно использовать теже каналы и методы доступа что и в других модулях.

Решил всетаки хранить показания в отдельных очередях сервера сообщений RabbitMQ. Причем хранить только крайнее значение. Такой вариант полезен еще и тем, что позволяет любому сервису подписаться на определенную очередь и получать все обновления (если они есть) автоматически. Другой плюс в том, что за данными можно приходить только иногда, когда это необходимо. Можно подписать сервис видения логов на все очереди сразу, можно накапливать показания, если это необходимо - третьими сервисами. Возмностей и схем на самом деле много. Система получается очень гибкая и легкомасштабируемая.

Единственное что требуется от отправителя и получателя сообщений - умение отправлять и получать AMQP сообщения. Ну и что немаловажно - мое умение это все написать )) Так как я уже немного освоил эту технологию на Python, Java и PHP - задача по добавлению этого функционала в скрипты и программы упрощается.

Таким образом показания датчиков представляют собой сообщение следующего формата:

название параметра; значение параметра; метка времени; дополнительная информация

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

Вот вобщемто и все. Ничего особенного, но на самом деле решена большая задача. Большая часть данных будет хранится именно в таком виде. Очень гибко, просто и легкомасштабируемо.

main_tags: