Ископаемые реликвии

20 июня 2023
Ископаемые реликвии

Сегодняшний выпуск мы посвятили улучшению поддержки Go в мейнфреймах IBM, скриптовому языку Tamarin и проверке адресов электронной почты. Усаживайтесь поудобнее, наливайте чай и доставайте печеньки. Приятного чтения!

Go на z/OS

Поговорим о священном граале — мейнфреймах. Если спросить далёкого от этой темы человека, что такое мейнфрейм, то услышим что-то вроде: «Ну это такой очень большой и мощный сервер». Это верное определение, но вообще не дающее представления, насколько это производительная штука.

Мейнфрейм жрёт невероятное количество электроэнергии и имеет внутри запредельное количество ресурсов. Как вам цифра в 200 ядер процессора собственной разработки с тактовой частотой 5.2 ГГц и 40 ТБ оперативной памяти? Речь о мейнфрейме IBM z16 построенном на чипах IBM Telum и представленном в 2021 году.

Кому нужны эти проприетарные динозавры, стоящие до $4 млн за штуку да ещё и с помесячной оплатой за процессорное время? Ответ прост: банкам, биржам, крупным производствам, телекоммуникационным компаниям и государственным ведомствам (по сути всем, кому нужна высочайшая надёжность, отказоустойчивость и безопасность).

Мейнфреймы — это даже не пресловутые «пять девяток» аптайма. У них «семь девяток», то есть 99.9999999% или максимум 3 секунды простоя в год. Заявляются такие SLA, как 9 мс на обработку транзакции. Вспомните об этом, когда будете платить за кофе банковской карточкой. За эти 9 мс платёжная система успеет проверить, что ваша операция не содержит признаков фрода и завершит транзакцию.

Ещё мейнфреймы — это про обратную совместимость. Она возведена в абсолют настолько, что софт, созданный 30 лет, спокойно запустится и на современном мейнфрейме. Вот мы и подошли к новости, ради которой пришлось написать столь длинное вступление. IBM сообщила о выходе Open Enterprise SDK для Go 1.20. В нём есть инструмент, позволяющий автоматически портировать исходники Go для запуска на мейнфреймах под управлением z/OS.

Prometheus для z/OS желаете? Легко! Перенести собственное приложение? Тоже не составит труда. Делается это с помощью утилиты Wharf с открытым исходным кодом. Да, да… вы не ослышались – консервативный гигант уже второй год подряд пополняет свой репозиторий ZOSOpenTools и прилагает усилия чтобы как можно больше разработчиков смогли портировать свои приложения на z/OS.

Портирование с Wharf выглядит весьма удобным. Инструмент создаёт отдельное рабочее пространство (workspace) и начинает исследовать код, выявляя участки, которые точно сломаются при сборке на z/OS. Найденные ошибки Wharf автоматически исправляет, расставляет, где нужно, тег «zos» и заносит все сделанные изменения в лог. Есть также ручной режим, позволяющий самостоятельно принимать решение о внесении изменений.

Автоматическое портирование иногда не срабатывает. Система умеет решать большинство рутинных задач, но если сталкивается с неразрешимой проблемой, то передаёт управление пользователю. Так что какие-то пакеты придётся портировать ручками. Несмотря на это, инструмент выглядит логичным и правильным шагом к дальнейшему развитию экосистемы z/OS. Так что Go-разработчикам стоит учитывать, что их приложения могут быть перенесены на мейнфреймы IBM.

 

Tamarin 2.0.0 Alpha

Множество волшебных сказок имеют один и тот же сюжет: «Поди туда — не знаю куда, принеси то — не знаю что». Разработчика этим не напугать, ведь они привыкли создавать то, чего ещё нет. Так произошло и с Tamarin – скриптовым языком для проектов на Go. В нём автор реализовал всё то, чего в Go не было и появиться в обозримом будущем вряд ли могло.

Началось всё с книги Writing An Interpreter In Go, которую написал software-инженер Торстен Болл (Thorsten Ball). В ней он рассказывает, как с нуля разработать свой язык программирования. На примере абстрактного Monkey programming language он последовательно демонстрирует, как без сторонних библиотек разобраться с абстрактным синтаксическим деревом, лексическим анализом и парсингом. Задумка отличная: пока решаешь конкретные задачи, начинаешь понимать процессы на более низком уровне.

История умалчивает, как эта книга попала к автору Tamarin, Кёртису Мизи (Curtis Myzie). Но в ней он явно увидел способ запилить собственный «обезьяний» язык. Название «Tamarin» было выбрано не случайно, поскольку это маленькие прикольные приматы из семейства игрунковых. В этом скриптовом языке было реализовано много фишек из других языков, таких как Rust и Python. Вот пример кода, фактически смеси из Go и Python, с пайпами и обращением к частям стандартной библиотеки Go:

array := ["gophers", "are", "burrowing", "rodents"]
sentence := array | strings.join(" ") | strings.to_upper
print(sentence)

Этот код выводит фразу:

GOPHERS ARE BURROWING RODENTS

Первая версия работала достаточно медленно. Но автор Tamarin подумал о производительности, спросите вы? Нет, просто у Торстена Болла вышла ещё одна книжка Writing A Compiler In Go, а за ней случились и доработки.

В июне 2023 увидела свет альфа-версия Tamarin v2.0.0, которая обзавелась компилятором и одноимённой виртуальной машиной. За счёт этого удалось добиться радикального увеличения производительности. Tamarin v2 даже в альфа-версии работает в 127 раз быстрее, чем v1. Описанные в книге методы сработали идеально.

Боимся предположить, что произойдёт, если Торстен Болл выпустит книгу «Becoming a Dark Lord in Go» 😀

Верификация email без отправки писем

Канули в лету те славные времена, когда можно было сотнями создавать фальшивые аккаунты в чатах и на форумах, вводя любые несуществующие email-адреса. Сейчас при регистрации почти на любом интернет-ресурсе попросят перейти по ссылке из письма или ввести код. Если не сделать этого в течение какого-то промежутка времени, то новый аккаунт блокируется. Этот механизм помогает отсеивать недействительные адреса и держать базу контактов в чистоте.

Но это точно не значит, что фейковых регистраций нет. Их может быть много, что создаёт нагрузку на основную базу данных ресурса и на почтовые сервисы. Встаёт интересная задача определять валидность и существование почтового ящика ещё до завершения регистрации. Подводных камней на этом пути множество. Вот, например, для первого этапа проверки есть спецификация, отражённая в соответствующем RFC 822 и даже готовые монструозные регулярки, вроде таких.

Но как только начинаешь изучать RFC, открываются врата ада. Спецификация одобряет различную экзотику, до которой обычному пользователю додуматься сложно. Самый простой пример: по RFC пробел в адресе — это нормально. Например, вот такой адрес формально соответствует спецификации:

"Jane Doe"@example.com

Если бы Джон Коннор был ирландцем, то вполне возможно завёл бы себе почтовый адрес с апострофом (но без кавычек), строго по RFC:

John.O'Connor@example.com 

И это лишь начало спуска в кроличью нору. В 2014 году на Хабре была прекрасная статья на эту тему. 

Переходим ко второму акту Мерлезонского балета, а именно к проверке адреса на существование. Здесь используется сразу несколько приёмов:

  • lookup через SMTP;
  • проверка MX-записей в DNS;
  • валидация через бесплатных email-провайдеров;
  • проверка не является ли адрес одноразовым (Disposable Email Address).

И тут, наконец-то, станет полегче. Чтобы не изобретать велосипед, Go-разработчикам возьмите на вооружение библиотеку email-verifier. В ней уже реализованы все вышеперечисленные способы проверки. Так что вылезайте из кроличьей норы, а в освободившееся время заглядывайте на наш YouTube-канал.

Немного IT

Подкаст про Go снимают и развивают двое наших коллег из Evrone.  Они обсуждают его преимущества и недостатки, сравнивают с другими языками. Сайт проекта.

Выпуски длятся 50-70 минут, а значит можно совместить какие-нибудь скучные занятия с обучением. Отличная возможность погрузится в нюансы Go, стоя в пробке или проезжая очередную станцию метро!

Ну а если вам есть что сказать — добро пожаловать в комментарии!

Митапы

Онлайн

Go meetup

13 сентября 2023

Осенью у нас запланирован Go Meetup. Программа мероприятия формируется, но регистрация уже открыта. Кстати, вы уже можете подать доклад прямо в режиме онлайн. Заявки на участие спикера принимаются до 20 августа.

Интересуетесь нашими мероприятиями? В Telegram-канале Evrone meetups мы выкладываем анонсы с подробными описаниями докладов, а также студийные записи прошедших митапов. Тем для кого выступать в новинку, мы оказываем всяческую поддержку и помогаем оформить экспертизу в яркое выступление. Подписывайтесь и пишите @andrew_aquariuss, чтобы узнать подробности.

Регистрация

Вакансии

Удаленка / Офис

Evrone 

Мы открыты для новых Go-разработчиков. В Evrone можно работать удалённо с первого дня, мы поддерживаем и оплачиваем участие в Open-source проектах и выступления на конференциях, а расти в грейдах можно с помощью честной системы проверки навыков и менторства.

Подробнее

 

Подписаться
на Digest →
Важные новости и мероприятия без спама
Технологии которыми вы владеете и которые вам интересны
Ваш адрес электронной почты в безопасности - вот наша политика конфиденциальности.