Костыли в коде

Причины для костылей:

  1. Ошибка в ПО нижнего уровня. Решение этой ошибки перекладывается по ПО верхнего уровня. 
  2. Добавление функциональности, которая не предполагается текущей архитектурой ПО.

Если причина №1, то нужно следовать золотому правило костылизации: знание о костыле должно быть минимизировано (костыль должен подставляться максимально близко к месту проблемы, порождающего необходимость в костыле).

Если причина №2, то нужно следовать принципу инкостыляции (аллюзия на инкапсуляцию): код, связанный с костылём должен быть собран в одно место (один файл, один класс, и т.п.). Далее этот код вызывается из нужных мест в программе. 

Visual Studio C# Snippets

Code Snippet — очень удобная штука для автоматической генерации фрагментов кода в Visual Studio по коротким аббревиатурам.

например вводите в редакторе кода

cw

Нажимате два раза Tab, и получаете:

Console.WriteLine();

Очень упрощает труд наборщика 🙂

Как написать свой snippet. Краткий обзор:

  1. Краткое руководство, которое поможет быстро написать свой первый сниппет.
  2. Примеры от Microsoft
  3. Справочник от Microsoft

 

Протокол HDLC + DLMC\COSEM. Основы

Пишу, чтобы не забыть.

Протокол HDLC — канального уровня. Внутри информационного поля, содержит сообщения протокола DLMS\COSEM.

Литература:

HDLC (High-Level Data Link Control) — бит-ориентированный протокол
высокоуровневого управления каналом передачи данных, описанный в ISO/IEC 13239. Протокол имеет 2 подуровня:

  • LLC (Logical Link Control) — управление логической связью, т.е. управление
    передачей данных и контроль правильности передачи данных;
  • MAC (Media Access Control) — управление доступом к среде передачи.

Наш пациент — MAC (Media Access Control)

Формат фрейма (кадра) HDLC MAC типа 3

Flag — байт 0x7E открывает и закрывает каждый кадр. Источники утверждают, что если в поле Information встречается байт 0x7E, то он должен быть заменён на что-то другое. Я это не проверял.

Format определяет тип кадра, наличие сегментации кадров, длину кадра.

Поле Format в HDLC кадре

Бит S, установленный в «1», говорит о необходимости принять этот и последующие фреймы, как единый блок. В последнем фрейме блока бит S должен быть сброшен в «0».
Длина фрейма включает в себя все поля, кроме флагов.

Продолжение следует…

P.S. Я начал писать этот текст год назад, когда начал разбираться в HDLC, читая Green Book. Дописать не успел. Сейчас я всё забыл напрочь 🙂 
Разбирайтесь сами.

P.P.S. Кто-то нафигачил хорошую статью по DLMS COSEM протоколу https://habr.com/ru/post/650579/

 

Счётчик жизни

До окончательной старости осталось:

Google Forms и автоматическая отправка email подписчику

Потребовалось сделать регистрацию людей-участников на большое мероприятие. А точнее —  сделать сбор контактов потенциальных участников и автоматической отправки им некой информации.

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

Для решения этой задачи хорошо подходят Гугл Формы. Гугл Формы позволяют создать любую форму, которую каждый может заполнить. А как отправить email, ведь такого функционала в Гугл Формах нет!? Функционала то нет, зато есть плагины. Молодцы.

Вот инструкция что нужно делать: https://www.labnol.org/internet/auto-confirmation-emails/28386/.

Вот сам плагин, написанный неким индусом. Спасибо ему.: https://chrome.google.com/webstore/detail/email-notifications-for-f/acknfdkglemcidajjmehljifccmflhkm.

Здесь много полезных скриптов для Google Forms: https://www.labnol.org/internet/google-scripts/28281/.

Вот что получилось:

Скачать защищённый rtmp поток (видео)

Возникла задача скачать видео с этого сайта . Открываю страницу, смотрю исходник, нахожу код плеера, а в коде плеера нахожу ссылку на rtmp источник видео:

2016-09-19_14-48-14 Читать далее «Скачать защищённый rtmp поток (видео)»