Новости одним абзацем


На полноценные посты в блоге времени не хватает. Поэтому напишу кратко что нового происходит.

Ещё летом завёл канал в Телеграме о тестировании - @sqaunderhood. Сначала контент из меня выходил с большим трудом, сейчас уже привык и как минимум пишу одну заметку в неделю. Вообще мне нравится формат небольших заметок. В них больше текста, чем в твиттере, в котором обычно кроме ссылки и короткого комментария ничего не влезает, и меньше, чем в блоге, на посты в котором не хватает времени.

Разбирал дома стопки старых CD и нашёл архивы Компьютерры. Это такой журнал на компьютерные темы, который выпускали с 1997 по 2007 год. Потом все оффлайн издания ушли в онлайн, а Компьютерра не успела трансформироваться и издательский дом решил закрыть журнал. Я читал журнал с 2000 года и до тех пор, пока его не прекратили издавать. Будучи студентом денег всегда не хватало, но к дню выпуска нового номера я старался их найти. Потом стопка бумажных номеров стала такой большой, что стала занимать много места на полке и я отвез всю подшивку в городскую библиотеку. Они были только рады принять их в дар. Оставил себе только последний номер с чёрной обложкой. Так вот электронный архив с дисков за 1997-2005 и 2007 года я выложил на Яндекс.Диск.

Давно собирался сделать сервис для результатов тестовых данных. Нашёл время и написал первую рабочую версию на Go. Планировал поддержать три наиболее популярных открытых формата для тестовых результатов: JUnit, SubUnit и TestAnythingProtocol (TAP). С JUnit всё просто - это XML и парсить его на Go одно удовольствие. SubUnit второй версии это бинарный формат и немного пришлось постараться, чтобы сделать парсер, но всё получилось. А вот SubUnit первой версии и TAP это текстовые форматы со своим синтаксисом и с ними получилось труднее. Дело в том, что есть два подхода в написании синтаксических анализаторов: первый - самостоятельное написание кода для разбора лексем и самостоятельное написание синтаксического анализатора, второй - использование инструментов для автоматической генерации синтаксического анализатора из DSL. Я сторонник второго подхода и знаю, что для генерации кода на Си используют lex и yacc. Но похожих инструментов для Go я тогда не нашёл и написал анализаторы вручную. Потом взял и за несколько вечеров сделал вариант сервиса на Си и ещё потратил какое-то время, чтобы переписать анализаторы на yacc и lex. Первая рабочая версия готова, её можно использовать для просмотра отчётов в консоли и в браузере, если запускать в виде CGI-приложения.

В OpenBSD помимо оригинальной документации на английском языке волонтёры поддерживали так же и переводы на другие языки. В том числе и на русский. В 2014 году Тео де Раадт, основатель и идейный лидер проектов OpenBSD и OpenSSH, удалил все переведенные web-страницы. Вся переведенная документация была удалена одним коммитом. Причиной удаления было медленное обновление переводов из-за чего документация часто находилась в неактуальном состоянии. Такое положение дел не нравилась никому, но далеко не все могли поддерживать её в свежем состоянии. Александр Наумов, один из основных переводчиков документации на русский язык, решил воскресить проект по переводу и пригласил меня в этом поучаствовать. Пока рано анонсировать проект, потому что ещё много работы по приведению перевода в порядок. Но думаю в ближайшее время мы переведём оставшуюся часть.

В Go с помощью стандартной библиотеки можно распарсить EBNF грамматику в AST. Мне было интересно написать небольшой генератор тесткейсов на основе грамматик и я написал gromit. Как он работает можно посмотреть в скринкасте. Недавно в Hypothesis добавили возможность генерации данных на основе грамматик с помощью библиотеки lark. lark в числе прочих умеет читать грамматики в формате EBNF, поэтому я переписал все свои грамматики для тестирования на lark и выложил на Гитхаб.

Метки: personal