SCADA от Shneider, Modbus и представление вещественных чисел

На нефтебазе, использующей SCADA Schneider Vijeo Designer (версии 6.2.1), установили уровнемеры системы СТРУНА+. (а точнее, поменяли). Была задача обеспечить сбор данных с новых уровнемеров в имеющуюся SCADA.
 
Новые уровнемеры используют протокол “Modbus STRUNA+” (перепиленный Modbus). Также, изначально для проверки связи был использован устаревший, но более простой, протокол “Кедр”.
 

Read more “SCADA от Shneider, Modbus и представление вещественных чисел”

Синхронизация данных MyTetra (git)

MyTetra — это полнофункциональный кроссплатформенный менеджер заметок (PIM-manager), использующийся для сбора и накопления различного рода информации. Все записи (заметки, статьи) организуются в древовидную структуру, а так же снабжаются ключевыми словами-тегами, позволяющими быстро находить нужные записи. Ссылки между записями, прикрепляемые файлы, шифрование, развернутый поиск, синхронизация, копирование из браузера, кроссплатформенность, один из лучших визуальных WYSIWYG редакторов текста – все это есть в PIM-менеджере MyTetra.
Лицензия: GPL v.3

Хранилище записей можно хранить просто локально, или синхронизировать с удаленным репозиторием. Данные хранятся в виде простых текстовых файлов (xml, html, ini), поэтому легко можно отслеживать все изменения. Read more “Синхронизация данных MyTetra (git)”

Почему я встаю в 5 утра?

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

Работа – дом – сон.

Столько моральных усилий тратится на то, чтобы заставить себя сделать нужное дело, но получается “так себе”.

Но! Все это относится к тому случаю, когда для тебя работает одно из утверждений из книги Паланика:

“Твоя работа – это не ты сам.”

А теперь внимание. Магия! Read more “Почему я встаю в 5 утра?”

iText 5.5 установка шрифта для кириллицы

Для создания PDF есть библиотека iText, написанная на Java, начиная с версии 5 распространяющаяся по лицензии AGPL.

Для создания отчета в виде таблицы для Android я использовал версию 5.5.10:

Но с отображением кириллицы есть нюанс. Нужно загрузить шрифт (из assets, например) и правильно его установить. Read more “iText 5.5 установка шрифта для кириллицы”

Загрузка и отображение SVG-картинок в Android

О преимуществах использования SVG формата изображений написано, например, здесь. Но на данный момент в Android SDK нет стандартного функционала, чтобы можно было эти картинки динамически загрузить в приложение, имея просто путь к файлу на SD-карте или в памяти телефона. Но есть сторонние решения. Read more “Загрузка и отображение SVG-картинок в Android”

Декомпиляция .apk (Android)

Была задача глянуть кусок кода одной приложухи на GooglePlay, все оказалось просто.
 
Получить apk из GooglePlay, не устанавливая приложение, можно попытаться так:
1) Воспользоваться сервисом apk-dl.com, заменив в Url приложения на GooglePlay часть адреса “play.google” на “apk-dl”, чтобы получилось так:
https://apk-dl.com/store/apps/details?id=com.app.name
Но скачать не получилось, т.к. бесконечно смотреть на надпись “Download is in progress…” не захотелось.
2) Или тут (тоже не получилось, написало “Ops, APK Downloader got access denied when trying to download, Please try again and contact us.”)
3) Или тут (тут все гуд!)
 
Для декомпиляции будут использоваться следующие утилиты:

Read more “Декомпиляция .apk (Android)”

Принудительный вызов CanExecute() на кнопках с командой (WPF)

При использовании команд в WPF бывает такое, что элемент (кнопка) остается неактивной не смотря на то, что e.CanExecute=true  до тех пор, пока не получит фокус.

Подробнее проблема описана здесь.

А описание простого решения на русском здесь: Read more “Принудительный вызов CanExecute() на кнопках с командой (WPF)”

Замена содержимого кнопки при деактивации (WPF)

Чтобы содержимое кнопки (надпись/картинка) при изменении ее активности (IsEnabled) менялось, можно добавить дополнительное свойство DisabledContent и не следить за состоянием кнопки “вручную”. Read more “Замена содержимого кнопки при деактивации (WPF)”

Одинаковый ресурс Image в нескольких элементах (WPF)

При объявлении одного ресурса картинки для нескольких элементов, картинка отображалась только на первом элементе. И приходилось лепить несколько одинаковых ресурсов с разными ключами. Указание StaticSource/DynamicSource или объявление ресурса во внутреннем контейнере (Grid и др.) не спасало ситуацию. Read more “Одинаковый ресурс Image в нескольких элементах (WPF)”

AsyncItemsTask – обработчик заданий в отдельном потоке (C#)

Небольшая шаблонная конструкция для обработки “тяжелого” кода в отдельном потоке и уведомления о прогрессе выполнения основного потока программы.

Да, я отдаю себе отчет в том, что такое может и/или должно решаться иначе в мире .Net, но.. фиг с ним. Read more “AsyncItemsTask – обработчик заданий в отдельном потоке (C#)”