Pull to refresh
4
0

Пользователь

Send message

Архитектурные антипаттерны в микросервисах и способы их избежания

Reading time16 min
Views23K

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

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

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

Читать далее
Total votes 17: ↑15 and ↓2+13
Comments14

Мигрируем в PostgreSQL, тестируем OLAP-кубы и разбираемся с валидацией T-SQL-кода: три доклада с митапа ЮMoney

Level of difficultyMedium
Reading time3 min
Views6.6K

Всем привет от команды ЮMoney 👋

Делимся видеозаписями и главными мыслями митапа High SQL, который посвятили работе с данными в DWH на Microsoft SQL Server.

Кому советуем посмотреть доклады

◾️ Тем, кто планирует перебраться с Microsoft SQL в PostgreSQL, но всё ещё сомневается.

◾️ Тем, кто выбирает между ANTLR и DacFx и хочет научиться решать проблемы во время ревью TSQL-кода.

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

Смотреть доклады
Total votes 3: ↑3 and ↓0+3
Comments1

Ray Casting 3D игра на Python + PyGame

Level of difficultyMedium
Reading time11 min
Views13K

В этой статье мы посмотрим на моем примере как создать игру в 3D иллюзией с помощью технологии RayCasting на связке Python + PyGame. Только тригонометрия и вычисления, никак движков.

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

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

Основоположником 3д игр стала игра Wolfenstein 3D, выпущенная в 1992 году а за ней и Doom 1993 года. На самом деле здесь используется технология RayCasting, третьего измерения тут просто не существует.

Процесс разработки и код
Total votes 22: ↑21 and ↓1+20
Comments7

Почему Trino такой быстрый: архитектура оптимизатора SQL-запросов

Reading time12 min
Views20K

Аналитические системы должны эффективно обрабатывать сложные пользовательские запросы к десяткам и сотням терабайт данных (пета-?). Продвинутый оптимизатор запросов является важнейшим компонентом любого big data движка. В данной статье мы рассмотрим, как устроен оптимизатор запросов в массивно-параллельном аналитическом SQL-движке Trino.

И как же он устроен?
Total votes 14: ↑14 and ↓0+14
Comments2

Как работает хэширование

Level of difficultyMedium
Reading time12 min
Views60K

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

Хэш-функции фундаментальны и используются повсюду.

Но что же такое хэш-функции и как они работают?

В этом посте я собираюсь развенчать мифы вокруг этих функций. Мы начнём с простой хэш-функции, узнаем, как проверить, хороша ли хэш-функция, а затем рассмотрим реальный пример применения хэш-функции: хэш-таблицу.
Читать дальше →
Total votes 76: ↑73 and ↓3+70
Comments49

«Полужизнь»: что писали о Half-Life в российских игровых журналах

Level of difficultyEasy
Reading time10 min
Views17K
image

Сейчас в это трудно поверить, но всего за год до релиза игры шутеры ещё называли «клонами Doom и Quake», а журналисты с настороженностью относились к грядущему проекту от молодой студии Valve. Некоторые рецензенты даже окрестили игру «рядовым Quake-клоном с невзрачной графикой».

В общем, автор изучил, что же писали в российских игровых журналах про Half-Life. Получилась ретроспектива из старых превью, интервью и обзоров.
Читать дальше →
Total votes 44: ↑39 and ↓5+34
Comments30

Моя система организации жизни (GTD или что-то подобное)

Reading time12 min
Views40K

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

В этот момент мне повезло, и знакомый рассказал мне про систему Дэвида Аллена - getting things done...

Читать далее
Total votes 27: ↑26 and ↓1+25
Comments21

AMD — вечная канарейка Intel

Level of difficultyEasy
Reading time18 min
Views44K
Если прямо сейчас посмотреть на рынок процессоров, то может сложиться обманчивое впечатление, что AMD на равных конкурирует за место под солнцем с компанией Intel. Кто-то может посчитать, что так было всегда. Реальность же заключается в том, что если Intel всю свою историю колебалась между полной гегемонией и просто доминированием на рынке процессоров для персональных компьютеров и серверов, то AMD в хорошие моменты своей истории была строго второй, а в плохие — находилась буквально при смерти.

Предыдущий текст о крушении Intel можно было бы ошибочно воспринять как оду AMD, но на самом деле основной упор там делался на ошибках самой Intel. AMD же просто воспользовалась заносчивостью и слабостью «синего» гиганта в последние пять-семь лет. При этом у самой AMD проблем хватает с лихвой, а провалов, ошибок и просто спорных решений руководство компании принимало едва ли не больше, чем все прочие производители вместе взятые. По сути же, AMD — главная канарейка Intel, которая безошибочно сигнализирует о проблемах старшего брата, без какой либо надежды поменяться с ним местами. Просто потому что AMD не может существовать без Intel по определению, так уж исторически сложилось. И сейчас мы объясним, почему.


Читать дальше →
Total votes 132: ↑127 and ↓5+122
Comments176

Word2vec в картинках

Reading time14 min
Views134K


«Во всякой вещи скрыт узор, который есть часть Вселенной. В нём есть симметрия, элегантность и красота — качества, которые прежде всего схватывает всякий истинный художник, запечатлевающий мир. Этот узор можно уловить в смене сезонов, в том, как струится по склону песок, в перепутанных ветвях креозотового кустарника, в узоре его листа.

Мы пытаемся скопировать этот узор в нашей жизни и нашем обществе и потому любим ритм, песню, танец, различные радующие и утешающие нас формы. Однако можно разглядеть и опасность, таящуюся в поиске абсолютного совершенства, ибо очевидно, что совершенный узор — неизменен. И, приближаясь к совершенству, всё сущее идёт к смерти» — Дюна (1965)

Я считаю, что концепция вложений (embeddings) — одна из самых замечательных идей в машинном обучении. Если вы когда-нибудь использовали Siri, Google Assistant, Alexa, Google Translate или даже клавиатуру смартфона с предсказанием следующего слова, то уже работали с моделью обработки естественного языка на основе вложений. За последние десятилетия произошло значительное развитие этой концепции для нейронных моделей (последние разработки включают контекстуализированные вложения слов в передовых моделях, таких как BERT и GPT2).
Читать дальше →
Total votes 43: ↑43 and ↓0+43
Comments16

Пусть наступит «МИР» (особенности платежной системы — способ не платить)

Level of difficultyEasy
Reading time5 min
Views41K

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

С ростом услуг по подписке (каршеринг, стрим-музыка, кино и т.п.) во многих платежных системах появились рекуррентные платежи. Суть такого типа платежа (даже если вы не слышали называние, то наверняка сталкивались) в том, что согласившись один раз с компанией, она (через банк) будет списывать с вашего счета регулярные платежи за оказываемые услуги. "Удобство" в том, что нет надобности заново вводить данные банковской карты, подтверждать оплату и т.д. "Всё для клиента".
Казалось бы - пользуйся на здоровье!

Читать далее
Total votes 89: ↑72 and ↓17+55
Comments316

Пришло время пересмотреть структуру проектов на .NET

Level of difficultyEasy
Reading time11 min
Views16K

C релизом .net 6 у нас появился новый упрощенный подход для быстрого создания сервисов  Minimal APIs. Эта статья появилась потому, что с новым подходом появились новые вопросы, связанные с организацией кода внутри проекта.

Это — немного вольный перевод статьи "Maybe it's time to rethink our project structure with .NET 6" от Tim Deschryver про подход к созданию сервисов с помощью Minimal APIs, который может помочь нам сделать архитектуру приложения более чистой, простой и легкой в поддержке и развитии.

Читать далее
Total votes 16: ↑13 and ↓3+10
Comments24

Kubernetes Volumes: реплицированная MongoDB со StatefulSet

Level of difficultyEasy
Reading time6 min
Views2.2K

Привет Хабр!

В Kubernetes StatefulSet — это реплицированные группы Pod’ов, аналогичные ReplicaSet’ам.

Каждая реплика получает постоянное имя хоста с уникальным индексом (например, database-0, database-1 и т. д.).

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

При удалении StatefulSet каждый из управляемых подов реплики также удаляется в порядке убывания. Это также относится к уменьшению количества реплик.

Оказывается, этот простой набор требований значительно упрощает развертывание приложений для хранения данных в Kubernetes. Например, сочетание стабильных имен хостов (например, database-0) и ограничений порядка означает, что все реплики, кроме первой, могут надежно ссылаться на database-0 для целей обнаружения и установления кворума репликации.

Сегодня мы развернем реплицированный кластер MongoDB с StatefulSet.

Читать далее
Total votes 8: ↑7 and ↓1+6
Comments3

Подробно о том, как работают React Server Components

Reading time16 min
Views16K

React Server Components (RSC) — интересная новая фича в React.

Есть вероятность, что в ближайшем будущем она сильно повлияет на скорость загрузки страниц, размер бандлов и то, как мы будем писать приложения на React. Мы в Plasmic (место работы автора) делаем визуальный конструктор для React и очень заботимся о производительности. Многие из наших клиентов используют Plasmic для создания маркетинговых сайтов и сайтов электронной коммерции, и производительность там критически важна. Так что хотя RSC — пока что ранняя экспериментальная функция React 18, мы разобрались, как она работает под капотом. Об этом и расскажем в статье.

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

Прекращайте оправдываться

Reading time5 min
Views105K

Привет, человек, %хабраюзер%, %юзернейм%, программист.

Этот пост является оплотом ненависти. Так уж вышло. Но тебе, как программисту пора перестать оправдываться.

Разрешите объясниться.
Total votes 379: ↑324 and ↓55+269
Comments361

Смерть или эволюция. Что ждёт программирование в будущем?

Reading time6 min
Views33K

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

Если есть что-то, в чём ChatGPT хорош, так это написание кода. ChatGPT «прочитал» больше документации, чем кто-либо прочитает за всю свою жизнь. Вот почему он может легко писать скрипты за короткое время, а также предоставлять пошаговые инструкции того, что он делает. Пользователю надо только дать правильную команду этому чат-боту.

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

По крайней мере на данный момент!


Читать дальше →
Total votes 23: ↑16 and ↓7+9
Comments52

Как не проиграть с производительностью в длительном скроллинге

Reading time12 min
Views4.4K

Меня зовут Михаил Кириченко. Я разрабатываю клиентскую часть в компании Bimeister.

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

Читать далее
Total votes 11: ↑10 and ↓1+9
Comments6

«Джеймс Уэбб»: 35 лет от задумки до первого снимка

Reading time42 min
Views27K
25 декабря 2021 года ракета «Ариан-5» взмыла со стартовой площадки ELA-3 космодрома Куру в Гвианском космическом центре. Через 25 минут двухступенчатая ракета отправила полезную нагрузку по заданной траектории в глубокий космос. Через несколько минут от второй ступени ракеты отделился и начал самостоятельный полёт космический телескоп «Джеймс Уэбб». Всего через полчаса после того, как обсерватория покинула Землю, она развернула солнечные панели.

За следующие полгода телескоп прибыл в точку Лагранжа L2, охладил свои системы и прошёл долгий процесс калибровки. 12 июля 2022 года НАСА показало первые снимки и опубликовало научные данные обсерватории.

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


Полномасштабная модель телескопа, которую Northrop Grumman построила в 2005 году и демонстрировала в различных городах США
Читать дальше →
Total votes 141: ↑141 and ↓0+141
Comments11

Улучшаем дизайн React приложения с помощью Compound components

Reading time9 min
Views21K

Сегодня я хочу рассказать про один не очень популярный но очень классный паттерн в написании React приложений - Compound components.

Что это вообще такое

Compound components это подход, в котором вы объединяете несколько компонентов одной общей сущностью и общим состоянием. Отдельно от этой сущности вы их использовать не можете, тк они являются единым целым. Это как в BEM нельзя использовать E - элемент, отдельно от B - блока.

Самый наглядный пример такого подхода, который знают все фронты - это select с его option в обычном HTML.

Читать далее
Total votes 16: ↑15 and ↓1+14
Comments9

Куда уходит время? Боремся за миллисекунды в Kubernetes

Reading time7 min
Views20K

Привет, Хабр! Меня зовут Вова, я разрабатываю observability-платформу в Ozon. Как-то раз в наш уголок на 42 этаже заглянули коллеги — и поделились наблюдением. Если открыть рядом графики времён запросов и ответов двух живущих в Kubernetes и общающихся между собой микросервисов, то иногда можно наблюдать большую разницу в высоких квантилях: клиент считает, что один ответ из сотни ему приходит за сто миллисекунд, сервер же говорит, что успевает ответить за десять.

Куда ушло время? Можно ли его вернуть? Под катом расскажу о том, с какими граблями может столкнуться микросервис, живущий в типичной инсталляции Kubernetes.

Читать далее
Total votes 141: ↑140 and ↓1+139
Comments23

Карьера состоится при любой работе

Reading time16 min
Views30K

Карьеризм, карьерист — эти слова прочно засели в головах как негативные, осуждающие, характеризующие человека особого склада характера. Между тем, карьеру в каком-то смысле делает каждый из нас: для этого не обязательно ходить по головам, подсиживать, подлавливать и всеми силами устранять соперников из компании. Карьера в вакууме — это сумма знаний, навыков, особенностей темперамента, желания и воли. Однако реальность делает поправку на социум, условия жизни, здоровье, возраст. И, к сожалению, карьера может оборваться довольно трагично и рано, рецепт карьерного долголетия прост и сложен одновременно — так же, как долголетия биологического. А может, нам просто неохота? 

Читать далее
Total votes 43: ↑37 and ↓6+31
Comments4

Information

Rating
Does not participate
Registered
Activity