mihailromanov.github.io и материалы прошлых лет

Некоторое время назад, разбирая свои старые материалы (курсы, руководства, статьи, tech talks, …) я осознал, что они

  • вполне еще могут пригодиться
  • разбросаны где попало и в разных форматах (от документов в PDF, до статей блогов или просто ссылок на репозиторий)
  • требуют обновления

И я решил собрать всё, что имеет хоть какую-то ценность, обновить и сделать более удобным в использовании (перевести в нормальный web)

Результатом стал сайт https://mihailromanov.github.io/, на котором я планирую агрегировать все ссылки, а кроме того, я стряхнул первый слой пыли и перенес туда же 2 руководства

  • ANTLR Tutorial – руководство по ANTLR (одному из самых известных генераторов парсеров)
  • CIL Tutorial – введение в Common Intermediate Language (CIL). Изначально я делал его как парный к предыдущему

Конечно, в планах всё это развить и осовременить… но, посмотрим как пойдет

Posted in Разработка ПО, Учеба | Tagged | Leave a comment

JSON on steroids #3. JSON parser

JSON_on_steroidНачало и список всех статей цикла можно найти тут.

А мы перейдем непосредственно к работе с JSON и начнем, пожалуй, с самого простого – разметки текста и парсинга JSON.  

Чем бы хотелось сегодня заняться:

  • наконец-то добраться до JSON-специфичных механизмов VS. Правда, тоже поговорить о самом базовом – о том, как осуществляется парсинг (и некоторые связанные вопросы)
  • ну в качестве практики: собрать всё это вместе – сделать простое расширение, которое выделяет цветом отдельные свойства в JSON-файле

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

Continue reading

Posted in Разработка ПО | Tagged , , , | Leave a comment

JSON on steroids #2.3.Visual Studio Editor: Tags, classifiers and text formating. Part 3.

JSON_on_steroidНачало и список всех статей цикла можно найти тут.   

Ну и завершая тему тэгов/классификаторов/форматирования предлагаю поговорить о последнем, т.е. о форматировании.

А говоря о форматировании мы будем вынуждены разобраться с 2 вопросами:

  • как задаются параметры форматирования
  • как эти параметры применяются к тексту

Continue reading

Posted in Разработка ПО | Tagged , , , | Leave a comment

JSON on steroids #2.3.Visual Studio Editor: Tags, classifiers and text formating. Part 2.

JSON_on_steroidНачало и список всех статей цикла можно найти тут.

Сегодня я бы хотел продолжить тему тэгов/классификаторов/форматирования в редакторе Visual Studio и поговорить у же не о самом базисе механизма тэгирования, а о его применении на практике.

Сегодня мы кратко познакомиться с тэгами, поддерживаемыми редактором “из коробки”. Что я имею в виду? Для всех тэгов, с которыми мы познакомимся сегодня, поддерживается некое поведение на стороне редактора, то есть, чтобы ими воспользоваться, вам нужно только написать соответствующий Tagger и разметить текст – всё остальное редактор возьмет на себя.

Давайте разберемся отдельно с каждым тегом, только прежде хочу заметить, что помимо VS SDK в примерах может встречаться код от VSIX Community (github.com)

Continue reading

Posted in Разработка ПО | Tagged , , , | Leave a comment

JSON on steroids #2.3. Visual Studio Editor: Tags, classifiers and text formating. Part 1

JSON_on_steroidНачало и список всех статей цикла можно найти тут.

Мы продолжаем разбираться с механизмами Visual Studio Editor, и сегодня я предлагаю перейти к чуть более высокоуровневым возможностям и поговорить о таких вещах как тегирование, классификация и форматирование текста.

Вообще-то, тема эта обширная и мне пришлось её разделить на несколько частей, и в первой из них предлагаю поговорить о таком базовом механизме как разметка текста тегами (тегирование), который используется как самостоятельно, так и в качестве основы для других editor features.

Между делом мы также немного затронем разные полезные сервисы, связанные с обработкой текста.

Continue reading

Posted in Разработка ПО | Tagged , , , | Leave a comment

JSON on steroids #2.2. Visual Studio Editor: ITextBuffer and related types

JSON_on_steroidНачало и список всех статей цикла можно найти тут.

Продолжим знакомство с базовым функционалом текстовых редакторов в Visual Studio.

Сегодня я хочу пройтись по содержимому пакета Microsoft.VisualStudio.Text.Data, который содержит типы для самого низкоуровневого манипулирования текстом ITextBuffer, ITextSnapshot

Если вы более-менее ориентируетесь в теме (примерно на уровне статьи Inside the editor), то можете с чистой совестью статью пропустить.

Continue reading

Posted in Разработка ПО | Tagged , , , | Leave a comment

JSON on steroids #2.1. Visual Studio Editor: Content Types

screenshot-2021-04-14-210835

Начало и список всех статей цикла можно найти тут.

Прежде чем мы перейдем к обещанным расширениям к редактору JSON, я хочу пробежаться по той, части VS SDK, которая связана с поддержкой текстовых редакторов. 

И в этой статье я хочу рассказать:

  • в каких пакетах из комплекта VS SDK хранятся типы, связанные с редакторами текста и их расширениями
  • как работать с ContentType Definitions – задача этого механизма: “включать”/“выключать” расширения редактора, только для тех языков, на которые эти расширения рассчитаны (например, одно расширение может работать с произвольным JSON, а другое – как у нас – “понимает” только определенный язык пусть и на базе JSON)

Continue reading

Posted in Разработка ПО | Tagged , , , | Leave a comment

Integration tests for Visual Studio extensions

imageНе знаю как вам, а мне при работе работе с VS SDK крайне не хватало такого привычного механизма как Test-фреймворк.

И речь даже не столько о написании собственно тестов (хотя это тоже очень важно), сколько о механизме изучения – когда вы можете написать в виде отдельных тестов кучу небольших фрагментов кода и запускать (а главное – отлаживать!) их в любом порядке!

Основная трудность с таким подходом для VS – большая часть API (да в общем-то практически всё) доступна только изнутри запущенного процесса Visual Studio. И по сути у вас есть 2 варианта:

  • использовать Unit Tests, в которых все интерфейсы из VS SDK заменены на моки/стабы. Понятно, что это саму работу с API студии не протестировать и не изучить – это исключительно инструмент тестирования логики вашего кода
  • писать тестовый VSIX (там уже в зависимости от требуемого API реализовывать либо VS Package, либо MEF component) и отлаживать его “вручную” (т.е. когда он будет запущен в экспериментальной версии VS)

Однако, совсем недавно ушлые ребята из Microsoft (а точнее Sam Harwell, если вы работали с форком Antlr для .Net, то знайте, что это Сэм), решили с этой проблемой побороться и выпустили (пока в голимой Beta!) библиотеку с бесхитростным названием Visual Studio Extension Testing.

Да, это пока Beta и много чего не работает, …  работает, но нестабильно, … или требует каких-то подозрительных телодвижений … – но в целом я бы сказал, что начинать пользоваться вполне можно.

В Readme к библиотеке Сэм расписал основные шаги для запуска (для тех, кто желает попробовать), но всех тонкостей, понятное дело описать не возможно, поэтому ниже я напишу свой небольшой Tutorial.

Continue reading

Posted in Разработка ПО | Tagged , , | Leave a comment

JSON on steroids #1. About VS Extensions

Screenshot-2021-04-14-210835_thumb1Начало и список всех статей цикла можно найти тут.

А мы начнем нашу серию с обзора основ разработки расширений в Visual Studio.

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

Сегодня я планирую рассмотреть:

  • Что нужно для создания расширений для VS (я буду ориентироваться на 2019 версию)?
  • Что такое .vsix пакет и для чего он нужен?
  • Что такое MEF, и чем отличается разработка с использованием MEF Components от VS Packages?
  • Что предоставляет VS по части поддержки JSON?

Ну что ж, начнем…

Continue reading

Posted in Разработка ПО | Tagged , , | Leave a comment

JSON on steroids

Screenshot 2021-04-14 210835Сегодня я хочу начать еще одну серию статей, в которой речь пойдет о расширениях для редактора текста в Visual Studio.

Вы спросите “при чем тут JSON”?

Дело в том, что мы будем разрабатывать не некие абстрактные “расширения редактора”, а дорабатывать именно имеющийся редактор для JSON. Да, многие из техник, которые мы будем рассматривать, можно применять для абсолютно любых языковых редакторов, поддерживаемых в Visual Studio, однако часть (например, расширения для механизма Code Insight – подсказок коду) будут полностью JSON-специфичными.

Для тех, кто был на нашем первом Open Tech Talk в EPAM Izhevsk сразу скажу, что эта серия будут как раз по материалам того моего доклада. Так что те, кто на нем был и всё помнят – могут дальше не читать 🙂

Ниже можно будет найти ссылки на последующие статьи:

А начать я хочу с ответов на 2 вопроса:

  • Почему все-таки JSON?
  • Какие в принципе расширения можно добавить к редактору VS?

Continue reading

Posted in Разработка ПО | Tagged , , | Leave a comment