25 декабря 2011 г.

OPC vs XPCA

Небольшая агитационная статья о недостатках OPC и DCOM технологиях и преимуществах XPCA на базе REST технологии.


Технология DCOM и OPC протокол

В истории развития промышленной автоматизации наступил момент, когда перед производителями промышленного ПО встала проблема коммуникации между устройствами, использующими разные протоколы обмена данными. Технология OPC была призвана решить данную проблему и обеспечить единый интерфейс доступа к информации о технологическом процессе. В настоящий момент OPC на базе DCOM технологии стандарт «де-факто» в системах автоматизации и поддерживается практически всеми производителями контроллеров и SCADA пакетов. Но почти двадцатилетний опыт использования OPC в отрасли автоматизации выявил несколько серьёзных недостатков данной технологии, которые стали проблемой при построении систем уровня MES или ERP над локальными АСУТП:

28 октября 2011 г.

Релиз lipa-0.3.0. Что нового?

Выпустил минорный релиз Lipa 0.3.0 (для тех кто, не знает о чем речь).  Добавил несколько, на мой взгляд, важных фич в проект. Полный перечень изменений на английском в листе изменений

20 октября 2011 г.

Lipa в действии

Как я и обещал, пишу статью о возможностях Lipa. Пока я готовил материал и пробовал его , обнаружил несколько ошибок, которые в тот же момент и исправил. На текущий момент версия библиотеки 0.2.2 и, то что буду показывать, работает на Ruby 1.9.2. И так...


17 октября 2011 г.

Lipa - DSL для описания древовидных структур на Ruby

Недавно пофантазировав на тему DSL вместо SCADA, я слепил библиотеку для написания древовидных структур на Ruby. Назвал ее - Lipa, название странное, но соответствующее назначению библиотеки - описывать дерево "липовых" объектов). Как вы уже догадались библиотека общего применения, ниже на примере солнечной системы:  

16 октября 2011 г.

Перетащил сайт RModBus на Blogpost

Я уже писал о своем детище - RModBus. Сегодня утром выдалась своболная минутка, и я перенес сайт проекта с Heroku  на Blogpost. Раньше он был сделан на CMS Radiant , и не все было мне удобно, да и бесплатный хостинг у Heroku очень тормозной. Основная задача сайта, публикация новостей о релизах и применениях библиотеки, думаю сайт в виде блога самое то! Так что теперь сайт лежит по адресу rmodbus.flipback.net. Велком)

14 октября 2011 г.

DSL вместо SCADA. Моя фантазия

Руби-программисты прекрасно знают, такие инструменты, как Rake, RSpec, Sinatra, в основе которых лежит DSL(предметно ориентированный язык). А почему бы не использовать DSL для описания SCADA систем!? Если бы так делали, то система из 5 насосов, опрашиваемая по ModBus TCP, выглядела бы так:

9 сентября 2011 г.

XPCA-Server

На днях опубликовал на GtiHub свой экспериментальный XPCA сервер (если не ясно о чем идет речь, то почитайте мои стати на эту тему). Ожидаемый результат проекта - получить открытую альтернативу cерверов ввода\вывода на базе OPC технологии. В данный момент он очень далек от первого релиза и опубликовал я его в надежде, что кто то присоединится к разработке. Ядро сервера разрабатывается на Java, а вот часть отвечающая за REST доступ и Web интерфейс на JRuby. Проект обещает быть интересным с точки зрения разработки. Буду рад если кто то присоединиться к проекту!

7 сентября 2011 г.

Pry - алтернатива IRB

Ruby программисты не перестают меня удивлять. Не пожалейте 20 минут и посмотрите что творит этот бородатый дядька!



В двух словах, Pry прокаченный IRB с отличной поддержкой документации, подсветки, отладки кода. Плюс интеграция с Rails! Много писать нет смысла, сами все увидите)

14 августа 2011 г.

Скрестим ежа с ужом. Java + Ruby + Rubygems = Maven

Генетикам известно, что гибриды (помесь разных видов) обладают свойствами своих родителей и физиологически более сильные особи. Такого же эффекта можно добиться и в техники, используя сильные стороны разных технологий. В этой статье я покажу преимущество такого подхода, на примере гибрида Ruby и Java. Информации в инете об этом не так уж и много, я надеюсь прочитав этот пост вы сэкономите пару бессонных ночей в отличии от меня;)

27 июля 2011 г.

Асинхронные запросы и XPCA

Данный пост является размышлением над довольно нетривиальной задачей - передача данных по изменению в рамках XPCA. В статье "Пример REST-PCA" я описал простой XPCA шлюз. Эта реализация работает по принципу "запрос-ответ", я буду называть этот принцип буржуйским словом "полинг". Такой подход максимально прост и для шлюза вполне подходит, но для серьезных задач необходима асинхронная передача данных по изменению, т.е. необходим механизм подписки на данные, как у протокола OPC.

17 июля 2011 г.

XPCA - eXtensible Process Control Architecture

Я наконец разыскал автора "Концепции REST-PCA" его зовут Том Тoденхэм (Tom Tuddenham). Он живет в городе Аделайда на Юге Австралии. Очень интересный и дружелюбный парень) Написал, что придумал данный документ после попойки со своими одногруппниками)))

14 июля 2011 г.

Пример REST-PCA

В предыдущем посте я привел перевод статьи о протоколе REST-PCA, а теперь покажу простую реализацию этих принципов на Ruby, на примере маленького шлюза, который предоставляет доступ к данным ModBus устройств. Сам код полностью можно посмотреть и скачать на GitHub вот тут. Ниже я расскажу о работе и структуре программы, в разрезе этапов разработки. Думаю такой подход к изложению, будет более структурным. Я старался написать статью не только для Руби программистов, но и для всех инженеров в области автоматизации (надеюсь получилось). Тем читателям, кого нюансы реализации не интересуют, раздел Реализация можно пропустить. И так...

12 июля 2011 г.

Концепция REST-PCA

Пару лет назад нашел интересную статью о применении REST технологии в системах автоматизация, как альтернативу семейству OPC протоколов. Руки дошли и я ее наконец перевел.  Вот вариант в PDF - rest-pca.ru.pdf.


29 июня 2011 г.

Релиз rmodbus 1.0.0

Наконец закончил мажорную версию реализации протокола ModBus на Ruby - rmodbus. Решил написать о нововведениях и подытожить свою работу.

21 июня 2011 г.

Два дня с RedCar

Для работы на Ruby,  я всегда использовал редактор Vim с комплектом расширений описанных здесь,плюс очень крутой на мой взгляд плагин rails.vim. Все это работает на +4 за исключением маленьких неприятностей, но статья не о них. Отчасти из-за неполного "удовлетворения", отчасти из-за склонности ко всему новому, я решил обратить внимание на другие инструменты. И так, после не удачной попытки подружится с IDE для больших дядек (Aptana, Netbeans, RubyMain), я начал пытать Redcar.

28 мая 2011 г.

Тестирование вызовов команд операционной системы в Руби


 Как и большинство скриптовых языков пришедших из Unix систем, Ruby имеет развитые средства для вызовов команд оболочки операционной системы. Такой функционал позволяет писать программы "обертки", которые выполняют работу с помощью уже имеющихся CLI средств в ОС. 

14 мая 2011 г.

Баг в opencv под GTK

При работе с opencv под Ubuntu обнаружил странное поведение метода cv.WaitKey. Он возвращал не ASCII код нажатых клавиш. Например код:
key = cv.WaitKey(5)
print key 
при нажатой клавиши 'q' вернул мне код 1048689 вместо 113.Дело в том что в GTK используется 16 разрядов для помещения в старший байт дополнительной информации, более подробно об этом тут. Что бы корректно все работало, нужно маскировать первый байт. Пример правильного получения нажатого символа:
key = chr(cv.WaitKey(5) & 0xff)
Функция chr(i) преобразования кода ASCII в символ.
Вот и все :)

6 мая 2011 г.

Альтруизм и эгоизм в пробирке

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

29 апреля 2011 г.

PLY

При программировании в стиле Unix традиции, часто прибегают для решения задач к созданию своего мини языка. Наверно большинству покажется такой подход мягко говоря странным. Но при наличии соответствующих инструментов, создание интерпретатора языка DSL не является чем то очень сложным) 
Традиционными инструментами является lex и yacc. Данные инструменты генерируют код лексического и синтаксического анализатора на языке Си. Но меня же больше заинтересовала реализация данных инструментов на Python - PLY . 
На сайте проекта есть очень доступный пример и документация.
К сожалению русской документации я не нашел и поэтому запустил перевод на translated.by и потихоньку перевожу. Если кому то интересно, можете подсобить ;)

3 апреля 2011 г.

Получаем изображение с камеры с помощью python-opencv

OpenCV - свободная библиотека компьютерного зрения реального времени написанная на С/С++. Она обладает довольно мощным математическим аппаратом для распознавания образов, трансформации и анализа изображения. В ее состав также входят инструменты для работы с видео камерой и простенький тулкит для создания GUI интерфейсов. Для демонстрации работы с этими инструментами я использую привязку opencv к питону .

29 марта 2011 г.

Homo Logicus





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

25 марта 2011 г.

Возвращаясь к JRuby-1.6.0

Не так давно писал о  выходе нового релиза JRuby-1.6.0 и его новшествах, но многое, что мне показалось вкусным, не получилось использовать "наскоком". Появилось немного времени и я решил вернутся к этим вопросам.

18 марта 2011 г.

Хороший код

На днях на хабре встретил статью, в которой чувак написал маленькую RSS-читалку под линукс. Очень понравилась не сама  читалка, а исключительный UNIX подход к решению задачи. Подробно код и описание автора смотрите тут, я же попытаюсь описать почему этот код мне так понравился.

16 марта 2011 г.

JRuby-1.6.0

Вчера вышла новая версия реализации интерпретатора Ruby на Java - JRuby.
Разработчиками заявлено совместимость с 1.9.2 версией языка. Так же включена экспериментальная поддержка расширений на С!!! Последняя новость очень порадовала, так как давно хочу для своего проекта RModBus добавить поддержку JRuby, но так как использую С расширения для последовательного порта ruby-serialport нужно было написать патч для релизации на Java( по слухам у жабы не все так хорошо с поддержкой ком-порат).  Более подробно о релизе можно почитать тут.

15 марта 2011 г.

Рекомендации от Apple

На хабре наткнулся на ссылку на перевод Рекомендации компании Apple по разработке пользовательских интерфейсов. Разработчикам и дизайнерам стоит почитать. К сожалению, для себя отметил, что в своей компании навряд ли приду к таким практикам. И очень жаль..

P.S. Статья еще не полностью переведена, если есть желание то поможете помочь энтузиастам.

9 марта 2011 г.

О методах метапрограммрования в Ruby

Введение

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

3 марта 2011 г.

Ruby + ModBus


Пару лет назад, вдохновившийсь примером в интернете , запустил опенсорсный проект по реализации протокола ModBus на Ruby - RModBus.