Articles in Russian
-
&russian @projects #kotlin % March 9, 2021
Power Automate for low-code services
Хочу рассказать о Low Code Platform, которой пришлось воспользоваться буквально на днях – Power Automate от Microsoft. Мне, как разработчику ПО, никогда не нравились подобные системы для “программирования мышкой”. Казалось, что с их помощью сложно добиться хоть сколько-нибудь приемлемого результата.
-
&russian @code #haskell #polysemy % February 4, 2021
FP effects systems vs OOP interfaces
С большим опозданием, продолжаю цикл статей про Workplace бота. Ссылки на предыдущие части: 1, 2, 3 и 4. Сегодня, впрочем как обычно, речь пойдет про очедную функциональную дичь ;).
-
&russian @code % January 20, 2021
Developers' complaints
Совсем недавно мы работали над списком улучшений для одного из проектов, которые собирались “предлагать” заказчику. В качестве предпосылки, имелся список замечаний от команды разработчиков. Есть мнение, что чистого “недовольства” проектом не бывает – это скорее кумулятивное понятие, которое либо озвучивают “только вслух” либо оформляют в виде “улучшений”. Попробуем разобраться в истинных причинах недовольства, рассмотрев список улучшений “от разработчиков”. Постараемся взглянуть на “недовольства” с двух сторон – со стороны разработчиков и со стороны менеджмента и/или заказчика. Ведь часто случается так, что одно и тоже выглядит совершенно по-разному.
-
&russian @code % May 15, 2020
About passwords
Хранение паролей/токенов любого характера и толка в репозитории – плохая и опасная практика. Несмотря даже на то, что это информация может относиться к изолированному staging или даже локальному окружению. Даже если они “потом будут встроены в итоговый html”. Даже если пароль “явно выглядит как заглушка”. Наличие паролей “от staging-а” может легко привести к компрометации настроек “от prod-а”.
-
&russian @code #code-review % May 14, 2020
About pull requests
Методика разработки через feature branches или pull requests позволяет организовать максимально независимую работу разработчиков – без необходимости частой синхронизации между ними. Большим плюсом этой методики является простота участия всех членов проектной команды в процессе code review, так как каждая новая feature, исправленный дефект, или доставка версии представлены отдельными ветками в репозитории исходного кода. Желательно, чтобы любое вносимое в ПО изменение происходило через создание отдельной ветки и включение ее (после code review) в основной стрим (обычно, ветка master).
-
&russian @code #haskell #ruby #kotlin #docker % May 11, 2020
Size does matter
Возможно я в этом не одинок, но меня сильно разочаровывают размеры современных приложений. Сейчас считается нормой создавать сайты, скачивающие десятки мегабайт при первой загрузке, иметь приложения для телефонов размером в несколько сотен мегабайт, базовые образы
docker
контейнеров занимают гигабайты… Ситуация парадоксальная – “дешевле” не заботиться о размере, так как усилия, потраченные в этом направлении будут стоить компании-разработчику дороже. -
&russian @code #haskell #lens #polysemy #QuickCheck % March 23, 2020
Parsing environment variables with reverse tests
Тема сегодняшней статьи – чтение конфигурационных значений из переменных окружения и связанные с этим процессом трудности. В небольших системах, где нет необходимости в полноценном конфигурационном файле, принято брать настройки из переменных окружения, это один из ключевых моментов 12 factor app манифеста. Это надежный и относительно безопасный способ конфигурации, он отлично поддерживается всеми операционными системами, облачными платформами и средствами контейнеризации.
-
&russian @code #haskell #servant % March 9, 2020
Type-safe API for server endpoints and clients
Итак - подошло время очередной технической статьи. На этот раз речь пойдет про API-over-HTTP. Вроде банальнейшая вещь, каждый так “сто раз делал” и чего вообще можно было на эту тему необычного придумать… Действительно, практически в любом backend-е есть слой “контроллеров”, который отвечает за то, чтобы функции приложения были доступны извне по протоколу
http
. Кто-то используетjson
, кто-тоxml
, но общий знаменатель всегда -http
. -
&russian @code #haskell #aeson % February 27, 2020
Parsing different JSON payloads into a single data structure
Что-то давно не видно технических статей, спешу исправиться. В связи с задержкой, “градус гиковости” будет временно значительно повышен. В публикации на прошлой неделе я рассказал про новый бот для Workplace, который помогает управлять проектными (и не только) группами не прибегая к помощи
HelpDesk
. Он написан на языке программированияHaskell
, что для нашей компании выбор не совсем типичный (хотя с RFX-ами на эту тему к нам обращались). Знаниями надо делиться, так что запланировал несколько статей по мотивам написания этого бота. Статьи будут раскрывать некоторые интересные аспекты реализации, которые, на первый взгляд, могут показаться странными или неочевидными, но все же позволяют по новому взглянуть на типовые задачи, возникающие при разработке ПО. -
&russian @code #git % December 12, 2019
Чеклист для проверки SDLC на проекте
Опросник составлен с целью определения уровня риска, который вызван несовершенством SDLC процессов, применяемых на проекте. Влияние каждого отрицательного ответа на степень риска различна и будет определятся индивидуально. В том числе зависит от контекста проекта (размер, длительность, технология и т.д.)
Причина, по которой вам стоит потратить время на заполнение одна – это возможность взглянуть на положение дел на проекте “со стороны” и определиться с возможными улучшениями.
-
&russian @code #ldap % October 29, 2019
LDAP tips and tricks
Я бы хотел продолжить цикл технических статей на Workplace рассказом о том, с какими трудностями можно столкнуться при работе с Active Directory по LDAP протоколу. Полноценной статьей такой рассказ назвать сложно, скорее – сборник рецептов. Стоит заранее оговориться – никаких упоминаний о Windows и PowerShell в статье нет, это тема очень обширна и заслуживает отдельной публикации (а может и нескольких).
-
&russian @code #code-review % November 26, 2018
Культура разработки
Что такое “культура разработки?” Само слово культура очень многогранное. В рамках статьи мы поговорим не столько про процесс написания кода, сколько про грамотную работу со вспомогательными инструментами в стремлении сделать итоговый продукт максимально качественным. Мнением на эту тему поделился Александр Шестаков, который рассказал, почему так важна личная заинтересованность каждого сотрудника и какой путь уже проделан компанией в этом направлении.
-
&russian @code #code-review % September 22, 2018
Некоторые аспекты безопасности в разработке ПО
Защита программного обеспечения от уязвимостей – важный аспект для IT-индустрии. При проектировании систем или написании программного кода случаются ошибки, которые потенциально могут стать причиной брешей в безопасности. Они приводят к возможным утечкам строго конфиденциальной информации, потере доверия к программному продукту и финансовым убыткам. Для предотвращения подобных случаев в IT-отрасли регулярно появляются новые инструменты аудита, давно существуют и отлично описаны методики “безопасного” программирования. Казалось бы, следуй правилам и избежишь проблем, однако в процессе разработки ПО всегда существует пресловутый человеческий фактор.
-
&russian @code #code-review % August 21, 2018
Вежливость в коде
Чистота кода – понятие не новое. Все разработчики стремятся к читаемости, поддерживаемости, простоте, отсутствию copy-paste и hardcode. Случается, что в программном коде можно увидеть нецензурную лексику и оскорбления. Своим мнением на эту тему поделился Александр Шестаков, который рассказал, чем чревато использование ругательств и какой опыт компании в этом направлении.
-
&russian @code % November 23, 2017
Что такое Dev Meetups?
В марте этого года в компании появилась новая инициатива – открытые митапы для разработчиков, которые проводятся раз в два месяца. Их организаторами выступили Александр Шестаков и Александр Зенькович.
-
&russian @code % September 11, 2017
Лучшая вещь – это та, которой нет
Я работаю в текущей компании вот уже 12 лет. Пришел сюда еще на третьем курсе университета. Работал все время в отделе разработки программных систем. Занимался программированием на C#, потом была Java и немножко JavaScript, долгое время работал на Ruby — все, кто меня знают, ассоциируют с этим языком программирования. Ruby я люблю за выразительность, в нем в единице кода помещается больше «смысла». Если, к примеру, на C# принято писать «Войну и мир», то на Ruby — баловаться хокку.
Я прошел все стадии карьерной лестницы от junior и senior developer до software engineer. За последние пару лет я успел поработать на большом проекте HSS – архитектором, затем я решил отдохнуть и начал писать Ruby-код для одной социальной сети американских военных. Примерно 30% своего времени я уделял технической координации, помогал людям на других проектах. С окончанием работы на проекте у меня появилось некоторое количество свободного времени, и тут как раз было решено позицию CTO разделить на две части. Влад Никитин стал публичным лицом компании, а меня сделали «внутренним лицом» — VP Engineering, я являюсь главой технических координаторов.
-
&russian @code #ruby % April 26, 2017
Руби в Ruby, или Немного о «магии» программирования
Cогласно статистике, Ruby входит в десятку наиболее популярных языков программирования. Чем в первую очередь обусловлен этот факт? Мощностью, простотой и выразительностью, которыми обладает язык, а также возможностью быстро получить результат. Сегодня развитие Ruby (я имею в виду количество разработчиков и вакансий на рынке) действительно находится на пике, но был и период упадка.
-
&russian @code #elm #QuickCheck % March 20, 2017
Как отрастить «внутреннюю бороду» через инвариантное тестирование
Современная разработка ПО не обходится без автоматических тестов. Сюда входят базовые Unit и Integration тесты, сложные Performance и Penetration тесты, а также множество других способов проверить программу ещё до отправки тестировщкам. Менеджеры давно перестали спорить о пользе автоматических тестов. Команды, практикующие автоматизацию тестирования, следующие методологиям TDD и BDD, быстрее поставляют работающие системы с меньшим количеством ошибок. Что делает их, в конечном счете, конкурентоспособными на перегретом рынке коммерческой разработки программных систем.
-
&russian @code #tdd % October 12, 2016
Непрерывная интеграция как спасательный круг в организации процесса разработки ПО
Непрерывная интеграция (continuous integration, CI) – это методология организации процесса разработки программных систем, при которой каждое изменение исходного кода, как и поведение самой системы с внесенным изменением, подвергается набору различных проверок.
Непрерывная интеграция позволяет на постоянной основе следить за различными метриками качества кода, обнаруживать ошибки сборки, замечать наличие дефектов в программном продукте на более ранних этапах разработки, экономя драгоценное время и уменьшая стоимость как разработки, так и исправления дефектов. Благодаря тому, что каждое изменение подвергается набору автоматических проверок, для клиента открывается возможность постоянного наблюдения за ходом разработки, качеством и статусом готовности той или иной функции системы.
Статья также доступна на Английском языке.