Typora — markdown редактор

Typora - удобный markdown-редактор. Возможности которыми я пользуюсь:

  • Собственно, само редактирование и просмотр markdown. Как исходника так и WYSIWYG. Удобно, быстро, красиво. Стандартные возможности: выделение и форматирование текста, изображения, ссылки, цитаты, блоки кода с подсветкой.
  • Визуальный редактор таблиц. Всегда пользуюсь им для таблиц, вместо разметки вручную.
  • Экспорт в html, docx. Есть недостаток - проблемы с экспортом через консоль. Можно использовать Pandoc, но есть свои недостатки.
  • Формулы в LaTex. Встроенные и отдельными блоками.
  • Проверка орфографии.

До Typora я использовал MarkdownPad, Typora намного более удобен и функционален.

Преобразование типов объектов в Delphi

Хочу рассмотреть один дискуссионный вопрос связанный с преобразованием типов. Сначала краткое введение. В Delphi существует два оператора is и as, связанных с преобразованием типов, и способ преобразования типа с помощью функции с именем типа (класса).

Оператор is используется для проверки типа, если объект соответствует указанному типу или является его наследником, то оператор возвращает True. В случае если в переменной nil то оператор возвращает False.

Оператор as используется для преобразования типа. Если объект соответствует типу или наследнику, то он преобразуется, если нет то выдаётся исключение EInvalidCast. В случае если в переменной nil, то исключение не произойдёт, но, конечно, обратится к полям объекта не получится - будет другое исключение.

Читать далее Преобразование типов объектов в Delphi

Паттерн MVVM в Delphi

Часто программы написанные на Delphi не следуют какаой-то заданной архитектуре, что приводит к проблемам с сопровождением и расширением во многолетних проектах. Примеров архитектуры и реализации паттернов, в сравнении с другими языками мало. Существует группа паттернов для разделения визуальной части приложения и логики. Один из таких паттернов MVVM, он делит приложение на

  • Model
  • ViewModel
  • View

Схема MVVM

Модули с моделями могут ссылаться только на модули своей категории. Модули с ViewModel могут ссылаться на модули своей категории и на Model. А View могут ссылаться как на другие View, так и на ViewModel и Model. Передача данных между слоями, в основном, происходит посредством байндигов.

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

Ссылки на более подробное описание предоставлены ниже.