Введення:
У цій статті мова піде про роботу з Microsoft Analysis Services і трохи про сховище Microsoft SQL Server, з яким AS працює. Мені довелося зіткнутися з не зовсім тривіальними речами і деколи доводилося стрибати через голову" заради того, щоб зробити те, що від мене хочуть. Працювати доводилося в перервах між нарадами. Деколи новий функціонал обговорювалося довше, ніж розроблявся. Часто на нарадах, за кілька разів, доводилося розповідати одне і теж. Коли я сказав, що мені складно радитися довше однієї години, на мене подивилися з подивом і нерозумінням. Багато в чому, завдяки такій обстановці і з'явилися ці, не зовсім тривіальні речі, про які я вирішив написати.

Читати далі →

Чому "робимо" — тому що його там фактично немає.
Чому "свій" — на випадок, якщо хтось у коментарях викотить якусь "сутність", видаючи її за журнал/архів алармов.
Це не готова інструкція, а швидше напрямок дії, тому тега tutorial немає.
Читати далі →

Всім добрий день. Сьогодні я розповім як на fabric.js я написав редактор мнемосхем для SCADA-системи. Частка десктопних SCADA-систем повільно але впевнено зменшується. Все перекладається на Web, і АСУ ТП тут не виняток.

Читати далі →

Введення
cap
Давно хотів написати про міфи про CAP теоремі, але якось все руки не доходили. Однак, почитавши черговий опус, схопився за голову і вирішив розкласти все по поличках, щоб в мізках виникла струнка картина.
Подія, коли якась стаття викликає бурю емоцій, — вкрай рідкісне. Перший раз таке виникло, коли я прочитав про прикутий replication. Мене намагалися переконати, що це потужний підхід і що це найкраще, що могло статися з консистентним реплікацією. Я зараз не буду наводити аргументи, чому це погано працює, а просто наведу розмовляючу цитату з статті Chain Replication metadata management:
Split brain management is a thorny problem. The method presented here is one based on прагматиками. If it doesn't work, there isn't a serious worry, because Machi's first serious use case all require only AP Mode. If we end up falling back to use Riak Ensemble" or «use ZooKeeper», then perhaps that's fine enough.
У моєму вільному переказі це означає приблизно наступне: "У нас тут є якийсь алгоритм. Ми не знаємо, чи буде він працювати правильно чи ні. Та нам це і не важливо". Хоча б чесно, заощадив купу часу, спасибі авторам.
І тут, значить, попадається на очі стаття: Spanner, TrueTime & The CAP Theorem. Її ми розберемо по поличках ближче до кінця, озброївшись поняттями та знаннями. А перед цим розберемо найпоширеніші міфи, пов'язані з CAP теоремою.

Читати далі →

Історія — це досвід, який дозволяє сучасному поколінню не наступити знову на граблі. Але у програмуванні, як і в інших активно розвиваються областях, такий ідеальний сценарій не завжди можливий. Чому? Тому що з'являються нові мови програмування, багато процеси стають складніше, а машини розумніші. У цій статті я наведу дві реальні історії. Що їх об'єднує? По-перше, час — всі вони сталися в СРСР; по-друге, люди — кожна історія могла піти за іншим сценарієм, якщо б головні герої не проявили свої найкращі/найгірші людські якості; по-третє, звичайно ж, програмування, інакше стаття була б просто недоречна в нашому блозі.

<img src=«habrastorage.org/getpro/habr/post_images/95f/996/8b9/95f9968b97d3ac56102d3cfd791e9911.png» alt=«Picture » 6" />
Читати далі →

SCADA: в пошуках ідеалу

imageЗа моїми спостереженнями, більшість розумних фахівців АСУ, що працюють зі SCADA, проходять кілька стадій «емоційного зростання»: освоєння будь-якої SCADA, пошук чогось кращого, ідеї та спроби написання свого варіанту, вироблення філософського ставлення до проблеми і використання одного з існуючих продуктів.

Так, бувають винятки. Наприклад, зустрічаються сильно захоплені і завзяті ентузіасти, які створюють щось працює, але картини вони не змінюють абсолютно.

Спробуємо розібратися, чому так відбувається і може бути вихід з цього порочного кола.
Читати далі →

Про мій LIR2032 і CR2032 тестер, самі батарейки і накопичений досвід

У цій статті я публікую у вільний доступ мій тестер вимірювач 8шт часових акумуляторів-таблеток форм-фактора CR2032. Сподіваюся, він стане в нагоді тим, хто робить портативну електроніку і різний IoT. У статті я опишу схему мого тестера і розповім як він працює. Наведу результати вимірювання акумуляторів LIR2032. І перевірю вісім CR2032 від різних виробників. Також поділюся багатим досвідом: які акумулятори краще не брати, а які — хороші. Бонусом розпишу небезпечні моменти: і як самому не постраждати і не спалити будинок, як це любить робити Креосан.

Читати далі →

Космос кличе: потрібен математик-фахівець в області чисельного розв'язку стохастичних диференціальних рівнянь

Олександр 4110 Шаенко (екс-інженер Даурия Аероспейс, нині ватажок проекту краудсорсингового супутника «Маяк») та Степан Тезюничев пишуть відкритий софт для моделювання теплового режиму супутників.

Репозиторій тут.



До цього, Саша писав дісер — «Метод розв'язання задачі променевого теплообміну без матриці кутових коефіцієнтів» (диссертация автореферат). Код тут. (він на VB.NET гальмівний, але працює і навіть є документація)

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

Хлопці хочуть написати алгоритм, який вирішував би систему дифуров як можна швидше, і тому їм потрібна консультація математика-фахівця в області чисельного розв'язку стохастичних диференціальних рівнянь.

Основну складність хлопці начебто вирішили, побудувавши масивно-паралельний алгоритм розрахунку ходу випромінювання з методом Монте-Карло на CUDA. Тепер вони хочуть використовувати для інтегрування своєї системи, а вона великої розмірності, близько 100 тис. невідомих, і жорстка, відповідний метод інтегрування за часом. Звичайні явні методи вимагають занадто дрібного кроку по часу, а неявні вимагають багато разів обчислювати праву частину, що ресурсозатратно.

Тому і потрібно знайти або побудувати такий метод інтегрування, який підходив би для такого поєднання вимог і дозволяв б вважати швидко.

Читати далі →

Рекурентні формули для розрахунку помилок ітераційного підсумовування двійкових чисел обмеженої довжини

innotor
У цій статті ми продовжимо розгляд проблеми комп'ютерних обчислень десяткових чисел з допомогою двійкової арифметики, яка була висвітлена у попередньому топіку [1]. В статті мова піде про помилки, які в літературі прийнято називати помилки округлення. І, зокрема, помилок, які породжуються в результаті ітераційного підсумовування великого числа однакових десяткових чисел, представлених у двійковому вигляді обмеженим розрядним простором. В результаті досліджень були отримані прості рекурентні співвідношення, що дозволяють точно визначити помилку комп'ютерних ітераційних обчислень часткових сум будь-якої кількості однакових доданків, на будь-якому кроці ітерації.

Читати далі →

Реалізація протоколу MIL-STD-1553 на STM32

Одного разу, з'явилася необхідність використання в нашому пристрої мультиплексного каналу обміну інформацією (МКИО), він же ГОСТ Р 52070-2003, він же MIL-STD-1553В. Початковий результат пошуків дещо здивував: типові рішення видаються пошуковою системою, як правило, ґрунтувалися на використанні ПЛІС. Оскільки вирішувати проблему потрібно було швидко, з'явилася думка зробити конвертер протоколу з MIL-STD-1553 в MODBUS RTU. При цьому постаратися використовувати досить недорогі технічні рішення і мікроконтроллер сімейства STM32.



На фото з Вікіпедії: F16, на якому вперше була використана шина MIL-STD-1553В. Наші пристрої не літають :), тому якихось обмежень по застосуванню елементної бази немає. Просто у Замовника приладова мережа побудована на основі цієї шини. Перша частина статті описує прийом і передачу по шині МКИО, друга частина буде про конвертер в MODBUS.

Читати далі →