Pull to refresh
40
0.2

Senior Back-End Developer .NET Core C#

Send message

Выбираем инструмент проектирования интерфейсов для аналитика

Level of difficultyMedium
Reading time7 min
Views6.4K

Всем привет! Меня зовут Бургомистренко Кристина и я — системный аналитик в компании заказной разработки Rubius. В этой статье я рассказываю про свой опыт проектирования и сравниваю несколько популярных инструментов для создания вайрфреймов, которые может использовать в своей работе бизнес/cистемный аналитик.

Читать далее
Total votes 9: ↑9.5 and ↓-0.5+10
Comments18

Что нужно знать, чтобы успешно пройти System Design Interview

Reading time16 min
Views25K

Для любого разработчика глубокое понимание основных принципов системного проектирования является необходимым условием для создания стабильных и масштабируемых программных систем, способных обеспечивать высокую производительность. Системное проектирование (System Design) включает разработку архитектуры и структуры программной системы, направленную на удовлетворение специфических требований и обеспечение требуемых показателей производительности.

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

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

Читать далее
Total votes 45: ↑47.5 and ↓-2.5+50
Comments26

Челлендж по обработке миллиарда строк на Go: от 1 минуты 45 секунд до 4 секунд

Level of difficultyMedium
Reading time14 min
Views22K

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

Я немного опоздал, соревнования проводились в январе. И на Java. Меня не особо интересует Java, зато давно интересует оптимизация кода на Go.

Этот челлендж был очень прост: обработать текстовый файл названий метеорологических станций и температур, и для каждой станции вывести минимальное, среднее и максимальное значение. Чтобы упростить задачу, было ещё несколько ограничений, однако я проигнорировал те, что относятся только к Java.

Читать далее
Total votes 66: ↑64 and ↓2+62
Comments20

35 лет игре «Prince of Persia»

Reading time14 min
Views4.9K
image

Для разных поколений геймеров серия игр Prince of Persia, скорее всего, означает разные вещи: от невиданного реализма в эпоху 2D до незабываемых игр в формате 3D и первых мобильных игр. Серия берет свое начало в 1989 году, хотя если вы родились в этом веке, то, вероятнее всего, в детстве вы не играли ни в одну из игр Prince of Persia. Ведь последняя игра основной линейки вышла в 2010 году.

С выходом в 2024 году новой игры Prince of Persia, The Lost Crown, это отличная возможность познакомиться со старыми играми и понять, как они послужили источником вдохновения для одних из самых популярных современных игр.
Читать дальше →
Total votes 31: ↑30 and ↓1+29
Comments10

Плюсы и минусы каждого инфраструктурного решения за четыре года работы в стартапе

Level of difficultyMedium
Reading time15 min
Views11K

Последние четыре года я занимался в стартапе руководством инфраструктурой, которая должна была быстро масштабироваться. С самого начала я принял фундаментальные решения, которых компании нужно было придерживаться несмотря ни на что все эти четыре года. В посте я перечислю некоторые из важных решений, принятых мной, расскажу, сожалею ли я о них, или одобряю.
Читать дальше →
Total votes 45: ↑42 and ↓3+39
Comments6

Прощайте, базы данных, да здравствуют векторные базы данных

Level of difficultyEasy
Reading time11 min
Views67K

Революция в области искусственного интеллекта переформатирует все отрасли нашей жизни, с одной стороны обещая невероятные инновации, а с другой ー сталкивая нас с новыми вызовами. В безумном потоке изменений эффективная обработка данных становится приоритетом для приложений, на основе больших языковых моделей, генеративного ИИ и семантического поиска. В основе этих технологий лежат векторные представления (embeddings, дальше будем называть их Эмбеддинги), сложные представления данных, пронизанные критической семантической информацией.

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

Читать далее
Total votes 53: ↑51 and ↓2+49
Comments55

Как организовать систему оплаты в компаниях, занимающихся разработкой

Level of difficultyMedium
Reading time16 min
Views6.4K

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

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

Не платите за то, сколько людей под руководством или сколько строк кода они написали. Платите им за генерируемые результаты.

Эта философия сильна и наделяет свободой. Неважно, если вы сотрудник, вносящий индивидуальный вклад (individual contributor, IC), занимаетесь техническим руководством или управлением командой. Важно то, насколько ваш вклад влияет на прибыль бизнеса.

В этом посте предлагается многоуровневая система, которую можно применять к IC, техническим руководителям и руководителям команд.
Читать дальше →
Total votes 50: ↑46 and ↓4+42
Comments7

Переход с Vue-CLI и Webpack на Vite: ускоряем разработку Vue 3

Level of difficultyEasy
Reading time4 min
Views8.1K

Одним из новых инструментов в арсенале Vue 3 является Vite - быстрый и легковесный бандлер, который значительно упрощает процесс разработки и ускоряет сборку проекта. В этой статье мы рассмотрим, как перейти от стандартного подхода с использованием Vue-CLI и Webpack к более продвинутому и эффективному методу работы с помощью Vite.

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

Опыт масштабирования Kubernetes на 2k узлов и на 400k подов

Level of difficultyHard
Reading time8 min
Views11K

Расскажу, как мы в PayPal начинали осваивать Kubernetes. На тот момент большинство наших рабочих нагрузок выполнялось на Apache Mesos, и в рамках этой миграции нам требовалось разобраться с некоторыми аспектами производительности у кластеров, в которых будет работать Kubernetes – с учётом той плоскости управления, что действует в PayPal. Из всех этих аспектов важнее всего было понять, как именно масштабируется платформа, а также выявить, как можно было бы улучшить масштабируемость, настраивая параметры кластера.

Тогда как Apache Mesos может прямо из коробки масштабироваться вплоть до 10 000 узлов, масштабировать Kubernetes непросто. При масштабировании Kubernetes требуется учитывать не только количество узлов и подов, но и ещё некоторые вещи, в частности: сколько ресурсов создано, сколько у нас контейнеров на под, сколько всего сервисов задействовано, а также пропускная способность при развёртывании подов. В этом посте описаны некоторые проблемы, с которыми нам довелось столкнуться при масштабировании, и рассказано, как нам удалось с ними справиться.
Читать дальше →
Total votes 39: ↑34 and ↓5+29
Comments10

Как я с 0 поднял свой уровень английского до B2 и подтвердил этот уровень на экзамене IELTS Academic

Level of difficultyEasy
Reading time10 min
Views154K

Привет, Хабр!

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

Начнем с бекграунда и причин.

Я – инженер машиностроитель (мой профиль – торцевые уплотнения вращающихся валов). Я начал работать в своей отрасли сразу после бакалавра, параллельно заканчивая магистратуру, и как только я начал работать, я стал стараться впитать как можно больше теоретических знаний по моей специальности из академических источников. Достаточно бысто я понял, что последняя серьезная книга по моей специальности на русском языке была написана в 1978 году. И спустя больше чем 40 лет технологии сильно поменялись, а вот их описание на русском языке отсутствовает. Зато я нашел на reddit людей работающих в штатах в моей же отрасли. Они мне насоветовали кучу классной литературы. Разумееется, она вся на английском, и русского перевода не имеет.

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

Конечно, перед началом обучения я прочитал много статей на хабре о том как люди учат языки. Некоторые из них поражали скоростью овладения материалом (что-то вроде с нуля до fluent за 4 месяца). Но одна вещь была неизменна – у всех был какой-то план изучения языка.

Читать далее
Total votes 173: ↑169 and ↓4+165
Comments220

Смерть от тысячи микросервисов

Level of difficultyEasy
Reading time10 min
Views76K

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

Читать далее
Total votes 133: ↑127 and ↓6+121
Comments309

Как менять подход к управлению с ростом команды и проекта

Reading time12 min
Views5.7K

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

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

Читать далее
Total votes 24: ↑21 and ↓3+18
Comments0

Проблемы согласованности данных в микросервисах и их решение

Level of difficultyEasy
Reading time14 min
Views16K

Привет, Хабр!

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

Но не всё так просто. Одной из ключевых проблем, с которыми сталкиваются при переходе от монолитных архитектур к микросервисным, является обеспечение согласованности данных.

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

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

Билл Гейтс: ИИ в скором времени полностью изменит то, как мы пользуемся компьютерами

Level of difficultyEasy
Reading time15 min
Views20K

Добро пожаловать на пятничное чтиво 👍. Почему этот перевод на Хабре? Вслед за OpenAI DevDay, прошедшем 6.11.2023, в блоге Билла Гейтса вышла большая статья о влиянии ИИ на пользовательский опыт в ближайшие несколько лет.
Можно по-разному относиться к тому, что пишет Б.Гейтс о будущем, но благодаря партнерству Microsoft и OpenAI, он “что-то знает”...

Читать далее
Total votes 10: ↑7 and ↓3+4
Comments38

Гексагональная архитектура со Spring Boot

Level of difficultyMedium
Reading time19 min
Views14K

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

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

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

Читать далее
Total votes 17: ↑14 and ↓3+11
Comments4

Моя любимая задача для собеседований по программированию

Level of difficultyMedium
Reading time9 min
Views98K

В сети есть уйма постов и видео, где разбираются ответы на вопросы LeetCode. Но обычно рассмотрение в них происходит с позиции соискателя, а не работодателя. В этой же статье я приведу разбор собственной задачи по программированию, которую использовал при приёме людей на работу в Amazon, Google и Microsoft.
Читать дальше →
Total votes 131: ↑126 and ↓5+121
Comments170

Sovietwave и Sovietpunk: как романтика несбывшегося переплавила ностальгию по СССР в новый жанр? Часть 3

Level of difficultyEasy
Reading time9 min
Views12K

В первой части мы рассказали о зарождении неосоветской эстетики, во второй — о её роли в развитии музыки и кино нулевых, популярности в ЖЖ «развесистой клюквы» и даже таких феноменов, как маскоты Двача и увлечение меланхоличной эстетикой городских окраин. Теперь же поговорим о том, как всё это дошло до современных зрелых форм, включая целый музыкальный жанр.
Читать дальше →
Total votes 112: ↑106 and ↓6+100
Comments34

Сколько нужно ядер cpu, чтобы выдержать 30k+ rps?

Level of difficultyMedium
Reading time6 min
Views8.6K

Меня зовут Вадим Ивахин, я техлид в Vi.Tech — это IT-дочка ВсеИнструменты.ру.

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

Читать далее
Total votes 25: ↑21 and ↓4+17
Comments34

Как департамент утилизации CPU превратился в департамент экономии железа, выдерживающий нагрузку в 1 млн RPS

Level of difficultyEasy
Reading time26 min
Views34K

Привет, меня зовут Мария, когда-то я работала на шахте, потом на заводе, а 3.5 года назад пришла в Ozon Tech. Сейчас я старший Golang-разработчик в команде product-facade. Это самый высоконагруженный сервис маркетплейса, но так было не всегда.

Хотите узнать, что скрывается под витриной маркетплейса? Что держит нагрузку в 1 миллион запросов в секунду? Толстые кэши или нечто большее? Про то, как устроено наше кэширование и как мы к этому пришли, — рассказываю в статье.

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

Что такое гексагональная архитектура. Разделение бизнес-логики и инфраструктуры с помощью портов и адаптеров

Level of difficultyMedium
Reading time13 min
Views26K
image

Гексагональная архитектура — это архитектурный паттерн, представленный Алистером Кокберном и описанный у него в блоге в 2005 году. Основная идея заключается в том, чтобы структурировать приложение таким образом, чтобы это приложение можно было разрабатывать и тестировать в изоляции, не завися от внешних инструментов и технологий.

Вот как сам Кокберн описывает эту архитектуру одним тезисом:

Добиться, чтобы приложение в равной степени могло управляться пользователями, программами, автоматизированными тестовыми или пакетными сценариями, а также разрабатываться и тестироваться в изоляции от устройств и баз данных, на которых оно впоследствии будет выполняться. — Алистер Кокберн, 2005 г.

В этой статье мы рассмотрим некоторые задачи, как правило, решаемые в типичных программных проектах. Затем мы поговорим о гексагональной архитектуре и о том, как она призвана решить эти задачи. Мы также рассмотрим некоторые детали реализации такой архитектуры и варианты тестирования.
Читать дальше →
Total votes 41: ↑39 and ↓2+37
Comments45
1
23 ...

Information

Rating
2,040-th
Location
Россия
Registered
Activity

Specialization

Backend Developer
Senior
C#
.NET Core
SQL