en | ru

Автоматы на службе распределенных транзакций


В этой заметке я расскажу о доменах, построенных на основе конечных автоматов, и распределенных транзакциях, реализованных при помощи таких доменов. Такой подход я активно использую при разработке сервисов со сложным многоступенчатым поведением, где до сих пор он показал себя довольно неплохо (хотя и не без проблем). Дисклеймер: данная статья не пытается открыть Америку или сделать прорыв в науке. Это просто набор архитектурных решений, которые я считаю удачными, и которыми я хочу поделиться с сообществом...  »

Удаленная работа как факт - как пережить?


2020 начался очень интересно - внезапно и резко распространившаяся эпидемия нового коронавируса, достигшая масштабов пандемии, внесла смуту в планы всего человечества. Отмена перелетов, закрытие заводов, прекращение поставок и карантины по всему миру значительно ударили по мировой экономике. Сегодня остается только догадываться, насколько значительными будут изменения, вызванные предупредительными мерами, однако одна из таких мер проявляется уже сегодня - огромное количество компаний по всему миру отправили своих работников работать из дома. Интересно то, что большинство из них ни при каких иных условиях удаленную работу не допускало, и к таким событиям были абсолютно не готовы...  »

Go Way и его магия


Во многих языках программирования существуют наборы определенных правил, позволяющих говорить о некой стилистике кода. Это чувство позволяет некоторым утверждать, что данный код в большей или меньшей соответствует этим правилам. Не обошло это явление стороной и Go. Что вообще такое - “путь языка Х”? Во многих программерских сообществах развивается некоторое чутье на то, соответствует ли код или решение “пути” этого языка. Сложно сказать, почему и как это возникло, но сегодня это довольно распространено...  »

Сладость кодогенерации


За последние пару месяцев у меня было много интересных событий - новая работа, всероссийский хакатон, подготовка к конференциям и т.п. И мне довелось активно поиспользовать кодогенерацию в нескольких разных контекстах. Если вкратце - мне понравилось. Что за кодогенерация Во многих современных языках кодогенерация достаточно распространена. Чаще всего это применяется чтобы сократить часть издержек рантайма за счет генерации возможной рантаймовой динамики в плоский код. Например, это может быть парсинг JSON-файла известной структуры - вместо того, чтобы тратить время на динамическое чтение структуры, а потом маппинг в определенный тип, можно сразу сгенерировать статичный код под него...  »

Не работайте в плохих проектах


Частенько в дискуссиях на тему работы я встречаю тезисы о том, как плохо работать в том или ином проекте/компании/отрасли и т.д. И несмотря на то, что в отечественном IT в целом очень распространено нытье, многое из обсуждаемого действительно имеет место в реальности. Однако, спустя годы разработки, смены проектов, компаний и даже стека технологий, у меня выработалось понимание проблемы и ее решения с другого ракурса. Об этом и поговорим. На своем карьерном пути я повстречал большое количество различных проектов, компаний, отраслей и людей...  »

Знай свою IDE


Большинство IT специалистов в качестве одного из ключевых инструментов работы используют текстовые редакторы. А если говорить о разработчиках, то это основной инструмент, а зачастую и единственный. Однако в повседневной работе оказывается необходимо выполнять множество задач помимо написания кода, да и сам процесс кодирования включает в себя огромное количество рутинных операций. Здесь нам на помощь приходят IDE. IDE (integrated development environment) существуют очень долгое время - первые продукты такого рода появились почти полвека назад...  »

Мой первый хакатон: ретроспектива и выводы


На днях я посетил увеселительное мероприятие разработческого характера. В целом тема для программиста не новая, но для меня это был первый хакатон, в котором я поучаствовал. Делюсь своими впечатлениями и выводами по истечении 36 часов кодинга. Подготовка К самому мероприятию я не готовился особенно сильно - подобрали команду, заранее обсудили пару тем, поговорили о том и о сем. За пару дней до начала отвалился капитан команды и по совместительству самый опытный посетитель хакатонов - не смог приехать в Воронеж...  »

Бремя ABAP разработчика


Разработка программ в SAP экосистеме отличается от других областей программирования набором определенных особенностей, в ту или иную сторону меняющих повседневную рутину программиста. Одна из них - собственно место ABAP разработчика в мире SAP системы, его компетенции и ответственности, взаимоотношение с другими уровнями цепочки, доставляющей готовый продукт клиенту. Дисклеймер: если вы работаете в SAP SE, SAP Labs или дочерей компании, это не про вас. Частично У программиста, ведущего разработку на языке ABAP, существует набор обстоятельств, некоторые “но”, которые усложняют или, по крайней мере, делают более запутанной ежедневную деятельность...  »

Иерархия виртуальной модели данных CDS View


В настоящее время все большее распространение получают системы на основе S/4, одной из ключевых особенностей которых является основанная на CDS View виртуальная модель данных, на которой построена концепция “Code Push Down”. Концепция виртуальных моделей заключается в том, что поверх таблиц БД строится древовидная иерархия CDS View, описывающих модели данных различного свойства с различными назначениями. В этой заметке я скажу пару слов про то, какие виды CDS View бывают в иерархии, и как правильно такие иерархии строить...  »

Использование CDS View как источник данных для SALV IDA


В SAP NW версии 7.4 появилась технология под названием IDA. Ее суть заключается в том, что данные для отображения в ALV таблице выбираются не заранее в программе, а считываются напрямую во время отображения таблицы. Как и обычный SALV, она имеет огромный функционал, частью которого является использование CDS View в качестве источника данных. Взглянем на эту часть поближе. С моей точки зрения сам подход IDA довольно спорный с точки зрения архитектуры. В больших приложениях прямой доступ к данным из таблицы в ALV ломает разделение на уровни отображения, если вы используете что-то вроде MVP...  »