Pull to refresh
19
0
Vladimir @mvs

Creator, founder, developer

Send message

К чистому коду через рефакторинг

Reading time13 min
Views6.1K
Чистые функции — это такие методы, при выполнении которых не возникает побочных эффектов. В функциональном программировании чистые функции — скорее правило, чем исключение. Но в большинстве объектно-ориентированных языков с ними приходится сталкиваться нечасто, или, как минимум, они редко считаются предпочтительным вариантом. В дотнет-среде серьёзный акцент делается на внедрении зависимостей и более-менее обширных абстракциях, использующих интерфейсы.

В данной статье будет продемонстрировано, как перейти от базы кода, характеризующейся значительной опосредованностью такого рода, к более простой версии, из которой большей частью удалена избыточная сложность.
Читать дальше →

Архитектурная пропаганда — продвижение решений без риска для здоровья и в реальные сроки

Level of difficultyMedium
Reading time22 min
Views2.4K

Привет коллеги! Когда меня зовут, зовут — Врунов Сергей. Мы с вами уже встречались. Я работаю в ВТБ и занимаюсь развитием ИТ-архитектуры. В моей предыдущей статье — «Кодекс архитектора» была сформулирована проблема: важнейшим навыком в профиле успеха ИТ-архитектора является работа с людьми. В продолжение предлагаю посмотреть, как конкретно можно продвигать серьезные идеи в вашей организации.

Мы начинаем

Переход на Go глазами PHP-разработчика: 5 подводных камней

Level of difficultyMedium
Reading time6 min
Views20K

Хабр, привет! Меня зовут Костя Козин, я старший PHP-разработчик Lamoda Tech. За 17 лет в коммерческой разработке я писал на JS, PHP, и теперь на Golang. Сегодня в Lamoda Tech мы учим PHP-разработчиков писать на Go, и под это создали целый онбординг. Довольно часто в локальных обсуждениях я слышал, как тяжело дается переход с PHP на Go, а у некоторых первые месяцы работы с Go вовсе отбивают желание работать с языком. Поэтому я поделюсь подводными камнями, которые ожидают вас при переходе с одного языка на другой, и с которыми сталкивался я сам и мои коллеги. Если знать о них заранее, то смена стека может пройти не так болезненно, а знакомство с Golang станет более предсказуемым.

Читать далее

Клеточная архитектура

Level of difficultyMedium
Reading time4 min
Views3.3K

В статье будет дан краткий обзор подхода к построению архитектуры, основанной на клетках - Cell-Based Architecture

Cell-Based Architecture - это подход к построению сервисной архитектуры, в котором один сервис и его инфраструктурные потребности объеденены в единое целое - клетки. Каждая клетка может содержать логически-связанные микросервесы, хранилеще данных, системы обсервабилити (мониторинг, логирование, трейсинг). Таким образом формируется сплочённая (cohesive) и самодостаточная единица деплоя. Каждая такая клетка живёт автономно. Причём, она может взаимодействовать с другими клетками вокруг путём таких механизмов как события, прямой вызов и т.д. Для этого в оболочке клетки существуют точки взаимодействия - строго определённые интерфейсы. Сервисы внутри клетки взаимодействуют только друг с другом.

Читать далее

Как я решил вернуться в алготрейдинг после 10 летнего перерыва

Level of difficultyMedium
Reading time9 min
Views6.3K

Самое главное, что никакого отношения к слову алко это не имеет.
В течении нескольких лет я торговал в связке программы технического анализа AmiBroker + торговый терминал QUIK через .tri и .trr файлы в основном на фьючерсах на срочном рынке.
Не могу сказать что это было неудачным опытом, но со временем я узнал про распределение активов (Asset allocation) и понял что очень сложно соревноваться с бенчмарком в виде фондового индекса.

В теории это означает что можно купить индекс и забыть об этом, заниматься своими делами, бизнесом, семьёй - а индекс растёт (ну или падает, смотря какое время) и для этого не нужно прикладывать никаких действий.
А за связкой AmiBroker + QUIK постоянно нужно было присматривать, следить не отвалился ли адаптер импорта через .tri файл. А ещё иметь несколько виртуальных машин с установленными копиями Windows на каждой виртуалке на одном физическом компьютере для разных брокеров. Ведь возможна была установка только одной пары AmiBroker + QUIK на одну винду.
Всё это мне не особо нравилось.

В 2024 году захотелось что-то лёгкое - без Windows и современное - через API интерфейс. Желательно бесплатное для пользователя. Несколько лет назад я уже пытался узнать появились ли у российских брокеров API для работы с ними, но так и не собрался. Этой осенью я стал активно искать информацию - какой брокер имеет АПИ для работы с физлицами. Не смог найти никакой сводной таблицы и нашёл только три варианта:

📍 ФИНАМ
📍 Алор
📍 Тинькофф Инвестиции
📍 (на полноту сведений не претендую и буду рад узнать ещё варианты брокеров с АПИ)

По субъективным причинам я выбрать работать с T‑Bank Invest API (это бывший Тинькофф) через среду выполнения JavaScript Node.JS.

В статье ссылка на GitHub с кодом робота.

Самые первые шаги 🤖

Чистый код: Начало

Level of difficultyMedium
Reading time10 min
Views9K

По дате публикации, данная статья является завершением, а на самом деле предисловием к циклу статей написанных по теме чистого кода. В статьях отразил свой взгляд на создание гибкого и читаемого программного кода, где акцент сделан на примерах.

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

Чистый код не для всех. Признает это читатель или нет, но сообщество разработчиков не однородно. Нас нельзя сравнивать даже в начале карьеры. Между выпускником месячных курсов на Python, и выпускником университета обладающего теорией и знанием нескольких языков программирования большая разница. Да и должностное разделение никто не отменял.

Читать далее

Дубайская интернет аномалия

Level of difficultyEasy
Reading time5 min
Views35K

Дубай позиционируется как место для комфортного бизнеса, крупный финансовый центр и перекресток торговых путей. Однако попытка организовать комфортный удаленный доступ в или из Дубая, наталкивается на неожиданные трудности. Результаты поиска причин в интернете настолько скудны, будто кто-то скрыл необходимую информацию. В таких случаях, ничего нельзя утверждать, а только иметь свое “Highly likely”. Всем  кто рассматривает Дубай или похожие  локации как часть своей ИТ инфраструктуры.

Читать далее

Найти спикера, или Техтолки с нуля

Level of difficultyEasy
Reading time6 min
Views1.3K

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

Техтолк закрывает все эти вопросы. В статье я расскажу, что такое техтолк, зачем мы их запустили и какие проблемы смогли решить.

Читать далее

От REST к GraphQL: эволюция управления данными в Wagtail

Level of difficultyMedium
Reading time21 min
Views2.2K

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

Привет! Я Олег, Python-разработчик в Kokoc Group, и сегодня расскажу, как ускорить работу с данными в CMS Wagtail и сделать разработку проще и приятнее с помощью GraphQL и Graphene. В статье разберу реальные примеры и покажу процесс настройки конкретной системы.

Читать далее

Основные принципы хорошего нейминга

Level of difficultyEasy
Reading time5 min
Views11K

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

Читать далее

Немного курочим стандартный валидатор Laravel или первый опыт с фасадами и сервис провайдерами

Reading time4 min
Views4K

Статья про то, как я изменил стандартное поведение нормализации ввода и решил проблемы валидации, возникшие из-за этого. В статье упоминаются слова ООП, наследование, фабрики, сервис-провайдеры и другие.

Читать далее

gRPC: проблемы и решения при переходе с REST

Level of difficultyMedium
Reading time6 min
Views8.4K

Вот уже 24 года мы используем сложный для понимания, завязанный на особенности HTTP REST-протокол. Не пора ли переходить к чему-то более современному?

Привет! Меня зовут Игорь Алексеев и я работаю бэкенд-разработчиком в компании Garage Eight. Некоторое время назад я внедрил gRPC для части своих сервисов. В этой статье поговорим о том, что такое gRPC, сравним его с возможными альтернативами, рассмотрим преимущества gRPC и пробежимся по проблемам, которые возникают почти в каждом проекте, где этот протокол приходится внедрять.

Читать далее

На кой review это надо?

Level of difficultyEasy
Reading time11 min
Views5.2K

Вы проводите код-ревью на текущем проекте или считаете что это просто пустая трата времени?

На собеседованиях я иногда спрашиваю, зачем проводят код-ревью. Вы можете удивиться, но один матерый senior, с 10+ лет в игрострое, и еще пятерку отмотавший в ембедед разработке за наглость получения красного диплома, ответил "потому что все так делают" - это конечно редкий запущенный случай, но было. Еще встречается такое - "потому что так сказал сенсей" (лид, бабушка, ажаль шеф - подставьте свое). Еще какой-то процент людей отвечали, "потому что так делают в гугле", и когда, заметьте не первый человек, на полном серьезе говорит это на собесах я начинаю сомневаться в способностях нашего tech-HR проводить первичное собеседование, а он, надо сказать, иногда еще пишет продуктовый код и эти самые ревью регулярно проходит наравне со всей командой разработки. Не сомневаться же людях, которые пришли?

Поревьювать статью

Team Lead VS Engineering Manager

Level of difficultyMedium
Reading time9 min
Views8.5K

Приветствую! Меня зовут Василиса Версус и я в прошлом трижды СТО в небольших стартапах (20-50 чел), а также head of инфраструктуры / разработки в таких компаниях как Яндекс и Сбермаркет

Сегодня мне очень хочется поделиться несколькими мыслями на тему карьерного развития. И недостающими пазлами между позицией тимлида и желаемой многими позиции СтанцииТехническогоОбслуживания.

Читать далее

Использование Laravel драйвера centrifugo для широковещания

Level of difficultyMedium
Reading time21 min
Views7.1K

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

Для того чтобы помочь вам в разработке подобных функций, Laravel упрощает передачу серверных событий через соединение WebSocket. В момент трансляции ваших событий Laravel, вы можете использовать одни и те же имена событий и данные между клиентским JavaScript-приложением и серверным приложением Laravel.

Впервые столкнувшись с необходимостью обеспечить ваше приложение Laravel системой работы и сообщений в реальном времени вы начинаете с документации по широковещанию. Из нее становится ясно, что список указанных в документации драйверов не так уж широк, по умолчанию Laravel содержит два серверных драйвера трансляции на выбор: Pusher Channels и Ably. При этом основные провайдеры платные. Альтернативы есть, но они во многом завязаны на протоколе pusher и\или Laravel Echo. Поиск по другим альтернативам приводит к примерно этому неполному списку:

Читать далее

Четыре принципа разработки ПО, которым я научился на горьком опыте

Reading time4 min
Views24K
Недавно я спроектировал и написал огромный сервис, и в прошлом месяце (наконец-то) состоялся его запуск. В процессе проектирования и имплементации я обнаружил, что ряд закономерностей, которые я приведу ниже, раз за разом всплывает в самых разных сценариях.

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

Хотелось бы отметить здесь одну вещь: разумеется, для каждого из принципов есть свое место и время. Как и во всех прочих случаях, важно учитывать нюансы. Я склонен держаться этих заключений в общем случае, по той причине что, как я вижу по опыту инспекции кода и документации, люди часто принимают противоположный образ действия как вариант по умолчанию.
Читать дальше →

Делегируй это

Level of difficultyEasy
Reading time9 min
Views7.5K

Знакомо ли тебе слово "делегирование"?

На первый взгляд, с ним всё понятно: одной рукой хватаешь задачу, другой – счастливчика из своей команды и запихиваешь делегируешь! Сотрудник – с бесценным опытом, ты – с кучей свободного времени и высоким перформансом команды.

Или нет? Иногда вместо бесценного опыта сотрудник остаётся без свободного времени и премий; ты – без повышения, перформанса и доверия к команде. К сожалению, мало у кого делегирование с первого раза работает как надо. Это – отдельный и сложный менеджерский скилл.

Как, делегируя, приносить команде и себе пользу, а не вред?

Под катом разберём важные составляющие успеха.

Читать далее

# Casbin — легко о сложном в авторизации

Level of difficultyMedium
Reading time9 min
Views4.9K

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

Casbin — это мощная и легко расширяемая библиотека для управления доступом, которая поддерживает различные модели контроля доступа. Вот несколько примеров:

Читать далее

Делаем AI-официанта с помощью OpenAI Assistants API и Vector Store в Telegram

Level of difficultyMedium
Reading time12 min
Views9.2K

Что, если в качестве контекста нам необходимо, чтобы модель знала не только историю переписки с конкретным пользователем, но ещё и какую-то общую информацию про бизнес или продукт?

Все эти проблемы призваны решить такие продукты OpenAI, как Assistants API и Vector Store. Vector Store — это векторное хранилище, в которое можно загрузить файлы с вашей документацией или базой знаний, они автоматически будут трансформированы в векторный формат, и при каждом запросе из хранилища будет выбираться только информация, актуальная для этого конкретного запроса, тем самым помогая модели точнее отвечать на вопросы и экономить токены.

Читать далее

Работа с новой архитектурой в Laravel 11

Level of difficultyEasy
Reading time8 min
Views14K

Основная "киллер-фича" фреймворка Laravel версии 11 - "плоский код". Под капот убрано всё, что большинством разработчиков не используется и, по сути, является "мусором". А также убраны некоторые действительно полезные вещи.

Под катом мы рассмотрим что куда делось и как улучшить взаимодействие с новой архитектурой.

Читать далее

Information

Rating
Does not participate
Date of birth
Registered
Activity