Pull to refresh
0
0
Алексей Романовский @alogicman

Разработчик ПО

Send message

Пожалуйста, прекратите использовать антипаттерн UPSERT (SQL Server)

Reading time5 min
Views36K

Я думаю, что все уже знают мое мнение о MERGE и почему я держусь от него подальше. Но вот еще один антипаттерн, который я постоянно встречаю, когда требуется выполнить UPSERT (UPdate inSERT — обновить строку, если она существует, и вставить, если ее нет):

Читать далее
Total votes 18: ↑16 and ↓2+14
Comments16

Знакомство с Debezium — CDC для Apache Kafka

Reading time18 min
Views83K


В своей работе я часто сталкиваюсь с новыми техническими решениями/программными продуктами, информации о которых в русскоязычном интернете довольно мало. Этой статьей постараюсь восполнить один такой пробел примером из своей недавней практики, когда потребовалось настроить отправку CDC-событий из двух популярных СУБД (PostgreSQL и MongoDB) в кластер Kafka при помощи Debezium. Надеюсь, эта обзорная статья, появившаяся по итогам проделанной работы, окажется полезной и другим.

Что за Debezium и вообще CDC?


Debezium — представитель категории программного обеспечения CDC (Capture Data Change), а если точнее — это набор коннекторов для различных СУБД, совместимых с фреймворком Apache Kafka Connect.
Читать дальше →
Total votes 52: ↑52 and ↓0+52
Comments1

Free Wireguard VPN service on AWS

Reading time9 min
Views64K

Free Wireguard VPN service on AWS


The reasoning


The increase of Internet censorship by authoritarian regimes expands the blockage of useful internet resources making impossible the use of the WEB and in essence violates the fundamental right to freedom of opinion and expression enshrined in the Universal Declaration of Human Rights.


Article 19
Everyone has the right to freedom of opinion and expression; this right includes freedom to hold opinions without interference and to seek, receive and impart information and ideas through any media and regardless of frontiers.

The following is the detailed 6 steps instruction for non-IT people to deploy free* VPN service upon Wireguard technology in Amazon Web Services (AWS) cloud infrastructure, using a 12 months free account, on an Instance (virtual machine) run by Ubuntu Server 18.04 LTS.


I tried to make this walkthrough as friendly as possible to people far from IT. The only thing required is assiduity in repeating the steps described below.

Read more →
Total votes 3: ↑3 and ↓0+3
Comments0

Как LINQ, только быстрый и без аллокаций

Reading time4 min
Views24K

Кому не нравится LINQ в C#? Встроенная и уже достаточно старая фича языка C# и рантайма .NET.

Но можем ли мы сделать более эффективную версию LINQ, чтобы и быстрее, и не кушало памяти? Давайте попробуем!

Читать далее
Total votes 47: ↑47 and ↓0+47
Comments28

Компилятор C# 10, .NET 6 и интерполяция строк

Reading time24 min
Views17K

К старту курса по разработке на C# делимся материалом из блога .NET о том, как компилятор C# 10 и .NET 6 упрощают программирование, как они обращаются с форматированием, а также о причинах конкретных решений команды .NET. И это далеко не всё. За подробностями приглашаем под кат.

Читать далее
Total votes 29: ↑27 and ↓2+25
Comments60

Изолируем микросервисы с помощью Feature toggles в ASP.NET Core. Практика

Reading time13 min
Views8.4K

Снова привет, Хабр! 

В первой части статьи мы разбирали, что такое изоляция микросервисов, как в этом помогают переключатели функциональности, и как создать простое ASP.NET приложение в с поддержкой feature toggles, которое будет показывать прогноз погоды. В этой части закончим работу над ним — напишем заглушку, сделаем экспериментальную конечную точку, функциональность которой можно включать или выключать, не останавливая работу приложения, и разберёмся с экстренными ситуациями, которые могут возникнуть при разработке приложения.

Дисклеймер: в статье много тяжёлых иллюстраций, берегите мобильный интернет.

Читать далее
Total votes 8: ↑8 and ↓0+8
Comments1

Изолируем микросервисы с помощью Feature toggles в ASP.NET Core. Теория и подготовка

Reading time12 min
Views11K

Привет, Хабр! Если вы работаете с микросервисами, то знаете, что они имеют свойство образовывать некоторую связанность. Хорошо, когда связи между микросервисами однонаправленные, но всё становится сложнее, если возникают циклические зависимости.

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

Меня зовут ​​Сергей Прохоров, я техлид бэкенд-разработки в Ak Bars Digital, и давайте вместе рассмотрим, как реализовать такую изоляцию на примере микросервиса веб-API ASP.NET Core. Метод изоляции основан на использовании feature toggles, или переключателей функциональности, о которых и пойдёт речь в двух частях статьи.

Читать далее
Total votes 11: ↑9 and ↓2+7
Comments5

20 вещей, которые я узнал за 20 лет работы инженером-программистом

Reading time8 min
Views99K

Наткнулся на любопытный материал, в котором автор систематизировал и записал свой опыт инженера-программиста в 20 тезисов. Я работаю в коммерческой разработке ПО больше 25 лет, и этот текст отозвался во мне практически каждой буквой — большинство советов я тоже регулярно практикую, не облекая их в формат ёмких афоризмов. В общем, решил сделать перевод.

Особенно отзываются пункты «стройте компактные системы» и «лучший код — это отсутствие кода». Последний совет я превращаю в цитату из какого-то второсортного фильма про самураев: «Лучшая победа — та, которую ты одержал, не доставая меч из ножен» (думаю, сослуживцы за моей спиной уже закатывают глаза). И, конечно, бесконечные разговоры про легендарных 10x-программистов постоянно хочется прервать советом не связываться с 0,1x-программистами (которые реально существуют, в отличие от 10x).

Читать далее
Total votes 186: ↑181 and ↓5+176
Comments158

Легализация удаленки на зарубежную компанию без бухгалтера. Step by step guide 2021

Reading time7 min
Views11K

Преимущества удаленной работы на зарубежного заказчика с получением выплат в валюте очевидны, но после заветного офера встает вопрос об оформлении. Многим зарубежным компаниям, не имеющим представительства в России, не выгодно оформлять сотрудника, находящегося в другой стране, в штат из-за дополнительного налогообложения, юридических сложностей и проч. Гораздо выгоднее (причем для обеих сторон) взаимодействовать с заказчиком как ИП (индивидуальный предприниматель). Ниже я на своем примере опишу все шаги от открытия ИП до вывода средств на счет физического лица, не переключайтесь.

Читать далее
Total votes 7: ↑7 and ↓0+7
Comments29

Cпособы передачи финансовых данных: протокол FIX

Reading time5 min
Views52K
image

Фондовый рынок является высокотехнологичной отраслью — помимо физической ИТ-инфраструктуры и технологичных торговых роботов игроки этого рынка занимаются развитием технических стандартов протоколов передачи данных. Сегодняшним материалом мы открываем серию топиков о протоколах передачи финансовой информаци. В первом выпуске представлена информация об одном из старейших протоколов — Financial Information eXchange или сокращенно FIX.
Читать дальше →
Total votes 24: ↑19 and ↓5+14
Comments31

1 CPU 1 Гб – а я хочу мониторинг, как у больших дядей

Reading time14 min
Views54K


Я обожаю читать на хабре статьи про то, как устроены системы больших интернет-компаний. Кластеры SQL-серверов, монг и редисов. Тут у нас кластер ELK собирает трейсинг, там – сборка логов, здесь балансер выдает входящим запросам traceID и можно отслеживать, как запрос ходит по всем нашим микросервисам. Класс. Но, допустим, у вас совсем маленький проект и вы можете себе позволить лишь VPS минимальной конфигурации. Реально ли на ней сделать мониторинг не хуже, чем у больших проектов? Я решил – надо попробовать.
Читать дальше →
Total votes 82: ↑80 and ↓2+78
Comments82

Три мушкетёра — Event Sourcing, Event Storming и Event Store — вступают в бой: Часть 1 — пробуем Event Store ДБ

Reading time7 min
Views10K


Привет, Хабр! Решил я значит на время отойти от Scala, Idris и прочего ФП и чуть чуть поговорить о Event Store — базе данных в которой можно сохранят события в потоки событий. Как в старой доброй книге у нас тоже мушкетёров на самом деле 4 и четвертый это DDD. Сначала я с помощью Event Storming выделю команды, события и сущности с ними связанные. Потом сделаю на их основе сохранение состояния объекта и его восстановление. Буду я делать в этой статье обычный TodoList. За подробностями добро пожаловать под кат.
Читать дальше →
Total votes 3: ↑3 and ↓0+3
Comments5

Что будет, если изменить количество виртуальных нод в Apache Cassandra

Reading time31 min
Views2.6K


В Apache Cassandra 4.0 будет новое значение по умолчанию для num_tokens! Звучит как незначительное изменение в CHANGES.txt, но по факту это серьезно повлияет на работу кластера. Как новое значение num_tokens скажется на кластере и его поведении?


От редакции: 27 марта приглашаем на открытую онлайн-конференцию Cassandra Day Russia 2021. В программе доклады и воркшопы. Материалы конференции подойдут как начинающим, так и опытным специалистам.
Читать дальше →
Total votes 8: ↑8 and ↓0+8
Comments0

Хабр Карьера проанализировала больше 10  000 зарплат айтишников за второе полугодие 2020 года, и вот что получилось.

Медианная зарплата среди всех айтишников сейчас составляет 113 000 ₽. В Москве ребята зарабатывают 150 000 ₽, в Петербурге чуть меньше — 130 000 ₽, в остальных регионах — 88 000 ₽. По сравнению с первым полугодием 2020 года, зарплаты выросли на 2,7%, в основном за счет роста зарплат в регионах и Санкт-Петербурге.

Хочу узнать подробности!
Total votes 44: ↑43 and ↓1+42
Comments85

Почему чип Apple M1 такой быстрый?

Reading time19 min
Views155K

Опыт использования новых маков с М1 начинает расставлять точки над i. Эти чипы быстрые. Очень быстрые. Но почему? В чем магия?

Я смотрел видео на Youtube, где автор купил iMac в прошлом году максимальной конфигурации. Машина с 40+ Gb ОЗУ стоила ему около 4000$. Он смотрел с недоверием, как его гипердорогой iMac был разнесен в пух и прах новеньким Mac mini с М1 на борту, который стоил около 700$.

В реальном мире, тест за тестом, макбуки с М1 не просто превосходят топовые компьютеры Intel прошлых поколений. Компьютеры Mac просто уничтожают их. С недоверием люди стали спрашивать, как такое возможно?

Читать далее
Total votes 115: ↑73 and ↓42+31
Comments550

Асинхронное взаимодействие. Брокеры сообщений. Apache Kafka

Reading time17 min
Views42K
Данная публикация предназначена для тех, кто интересуется устройством распределенных систем, брокерами сообщений и Apache Kafka. Здесь вы не найдете эксклюзивного материала или лайфхаков, задача этой статьи – заложить фундамент и рассказать о внутреннем устройстве упомянутого брокера. Таким образом, в следующих публикациях мы сможем делать ссылки на данную статью, рассказывая о более узкоспециализированных темах.

Привет! Меня зовут Дмитрий Шеламов и я работаю в Vivid.Money на должности backend-разработчика в отделе Customer Care. Наша компания – европейский стартап, который создает и развивает сервис интернет-банкинга для стран Европы. Это амбициозная задача, а значит и ее техническая реализация требует продуманной инфраструктуры, способной выдерживать высокие нагрузки и масштабироваться согласно требованиям бизнеса.

В основе проекта лежит микросервисная архитектура, которая включает в себя десятки сервисов на разных языках. В их числе Scala, Java, Kotlin, Python и Go. На последнем я пишу код, поэтому практические примеры, приведенные в этой серии статей, будут задействовать по большей части Go (и немного docker-compose).
Читать дальше →
Total votes 10: ↑9 and ↓1+8
Comments4

ТОП-10 ошибок, найденных в C#-проектах за 2020 год

Reading time11 min
Views11K
image1.png

Наконец-то столь нелёгкий 2020 подходит к концу, а это значит, что пришло время подвести итоги! За этот год командой PVS-Studio было написано немало статей, в которых разбирались разнообразные ошибки, найденные анализатором в open-source проектах. Самые же интересные из них вы можете увидеть прямо здесь, в ТОП-е ошибок, обнаруженных в C#-проектах за 2020 год. Приятного просмотра!
Читать дальше →
Total votes 24: ↑23 and ↓1+22
Comments12

Почему, зачем и когда нужно использовать ValueTask

Reading time14 min
Views60K

Этот перевод появился благодаря хорошему комментарию 0x1000000.

image


В .NET Framework 4 появилось пространство System.Threading.Tasks, а с ним и класс Task. Этот тип и порождённый от него Task<TResult> долго дожидались, пока их признают стандартами в .NET в роли ключевых аспектов модели асинхронного программирования, которая была представлена в C# 5 с его операторами async/await. В этой статье я расскажу о новых типах ValueTask/ValueTask<TResult>, разработанных для улучшения производительности асинхронных методов в случаях, когда издержки на выделение памяти нужно принимать во внимание.

Читать дальше →
Total votes 23: ↑21 and ↓2+19
Comments2

И снова о Legacy. Вечная боль техдира

Reading time10 min
Views27K

Жил-был технический директор. Он жил долго и счастливо. И пригласили его на интересный и перспективный проект. Владельцы бизнеса размахивали руками, поднимая сквозняк в помещении — и рисовали маркерами прямо на оконных стёклах счастливое будущее, масштабность задачи, нули после первой цифры в зарплате. Звучит, как сказка.


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


Техдир пришёл к ним, поздоровался и спросил: «Ребята, скажите честно, какой аццкий зверь меня ждёт в этом проекте? Потому что стейкхолдеры рассказали только о единорогах с радужными хвостами и розовых пони? Legacy, да?»


«Legacy, ...», — грустно ответили разработчики.


Сказка закончилась. Началась работа — и непростые решения.


Читать дальше →
Total votes 76: ↑64 and ↓12+52
Comments111
1
23 ...

Information

Rating
Does not participate
Location
Екатеринбург, Свердловская обл., Россия
Works in
Date of birth
Registered
Activity