Pull to refresh
8
0
Сергей @darkserj

User

Send message

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

Reading time10 min
Views2.9K


При разработке продукта на компилируемом языке (таком как C или Rust) рано или поздно может наступить момент, когда нужно разделить продукт на несколько компонентов, развивающихся независимо, или дать возможность расширять функциональность плагинами, разрабатываемыми отдельными коллективами или сообществом.
Читать дальше →
Total votes 20: ↑20 and ↓0+23
Comments8

Как Figma удалось открыть себе путь к почти бесконечному масштабированию баз данных

Level of difficultyMedium
Reading time17 min
Views11K

О нашем девятимесячном пути к горизонтальному шардингу Postgres-стека Figma и о возможности обеспечения (почти) бесконечной масштабируемости.

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

С 2020 года стек баз данных Figma вырос почти в сотню раз. Это хорошая проблема, ведь она означает, что наш бизнес расширяется. Но в то же время она стала причиной технических сложностей. В течение последних четырёх лет мы усиленно старались не отставать от прогресса и избегать потенциальных проблем, связанных с ростом. В 2020 году у нас работала единственная база данных Postgres, которая хостилась на самом большом физическом инстансе AWS, но к концу 2022 года мы уже создали распределённую архитектуру с кэшированием, репликами для чтения и десятком вертикально разделённых баз данных. Мы разбили группы связанных таблиц (например, «Figma files» или «Organizations») на отдельные вертикальные разделы, что позволило нам обеспечить удобство инкрементального масштабирования и оставить достаточно пространства для дальнейшего роста.

Читать далее
Total votes 13: ↑12 and ↓1+22
Comments1

Получаем спутниковые координаты GPS/ГЛОНАСС с помощью модуля SIM868 на Repka Pi

Level of difficultyEasy
Reading time25 min
Views9.2K

Сегодня уже трудно найти человека, который не знает, что такое навигатор и GPS-координаты. В этой статье мы расскажем о том, как встроить функции навигатора в устройство, собранное на базе микрокомпьютера Repka Pi. Для получения координат мы будем использовать модуль GSM/GPRS/GNSS Bluetooth HAT, о котором вы уже знаете из предыдущих статей нашей серии про эти модули на базе SIM868.

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

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

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

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

Модуль GSM/GPRS/GNSS Bluetooth HAT может отправлять данные, например, через GPRS или SMS, а также совершать телефонные звонки.

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

Выбор правильной стратегии обработки ошибок (части 1 и 2)

Reading time14 min
Views28K


Существует две фундаментальные стратегии: обработка исправимых ошибок (исключения, коды возврата по ошибке, функции-обработчики) и неисправимых (assert(), abort()). В каких случаях какую стратегию лучше использовать?
Читать дальше →
Total votes 34: ↑27 and ↓7+20
Comments14

Алгоритм роя частиц

Reading time8 min
Views62K

Введение


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


Читать дальше →
Total votes 107: ↑105 and ↓2+103
Comments22

Накатим по авиационному. Фреймворк «Ситуационная осведомленность»

Level of difficultyMedium
Reading time10 min
Views3.5K

Привет, Хабр! Меня зовут Валентин Шумовский, до 2021 года я работал в Авиакомпании «Россия». В этой статье я расскажу, как можно применить в IT один из авиационных фреймворков управления.

Есть ли что-то общее между управлением IT-продуктом и самолетом? В контексте командной работы – вопрос почти риторический. Параллелей можно отыскать довольно много. Условия, в которых принимаются решения, для команды сложного проекта и экипажа воздушного судна почти идентичны как минимум по трем параметрам.
Первый - необходимость быть в курсе постоянно меняющейся обстановки и регулярно извлекать из нее полезную информацию, оставляя без внимания бесполезную. Второй – зависимость конечного результата от скорости и качества интерпретации данных, поступающих по нескольким независимым каналам. В том числе опосредованным - например, информацию о состоянии ключевых стейкхолдеров (пассажиров) пилоты получают через бортпроводников. Третий - чередование периодов максимальной концентрации и «полета на автопилоте». С обязательным условием готовности мгновенно перейти из спокойного режима в состояние фокуса, если что-то пойдет не так.

Полетели
Total votes 13: ↑12 and ↓1+18
Comments6

Коммивояжёр за полином*

Level of difficultyHard
Reading time12 min
Views4.5K

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

Нет под рукой квантового компьютера? Не беда, читайте дальше и узнаете, как можно решать данную задачу на классическом компьютере за полиномиальное время* от числа вершин.

Читать далее
Total votes 14: ↑12 and ↓2+12
Comments38

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

Level of difficultyEasy
Reading time26 min
Views36K

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

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

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

Новая жизнь старого GPS-приёмника

Level of difficultyMedium
Reading time18 min
Views26K

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

Читать далее
Total votes 69: ↑68 and ↓1+81
Comments121

Прививка от ошибки выбора: что спросить работодателя «на берегу»

Level of difficultyEasy
Reading time13 min
Views24K

Меня зовут Настя, я руководитель службы инструментов репозитория в Yandex Infrastructure. Больше 15 лет я проработала в IT-индустрии: сначала как разработчик, потом тимлид, техлид, менеджер проектов и руководитель службы. За это время несколько сотен человек рассказали мне о своём карьерном пути: кто-то собеседовался со мной как с нанимающим менеджером, кто-то приходил ко мне на менторинг, кто-то расширял свой нетворк, как теперь модно говорить. Из этих разговоров можно выделить причины недовольства работой, которые я вижу у людей чаще остальных. Одна из главных причин — ошибка выбора вакансии.  

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

Читать далее
Total votes 44: ↑41 and ↓3+44
Comments49

English Tenses — моё представление времён в английском языке

Reading time3 min
Views11K

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

Сразу хочу отметить, что я не являюсь педагогом и у меня вообще нет никакого ни лингвистического, ни педагогического образования. Данной статьей я просто хочу поделиться своей диаграммой по изучению времен, возможно кому-то она будет полезной и поможет в понимании времен и того, как и когда использовать, то или иное время. Данная диаграмма будет поверхностной и не будет углубляться во все подробности языка (и так она получилась огромной), она не охватывает все многообразие времен и конструкций в английском. Уровень данной диаграммы А2-В1.

И сразу начну с диаграммы:

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

Руководство по CMake для разработчиков C++ библиотек

Reading time18 min
Views88K

Данное руководство позволит читателю составить полную картину того, как организовать сборку C++ библиотек с использованием современных возможностей CMake. Предполагается, что читатель имеет представление о базовых понятиях из мира CMake и динамических/статических C++ библиотек, так как в руководстве они могут не объясняться.

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

Малоизвестные возможности языка C

Reading time4 min
Views24K

Если у вас несколько лет опыта программирования на языке C, то, вероятно, вы гораздо более уверены в своих знаниях этого языка, чем если бы вы провели столько же времени, работая с C++ или Java. И язык C, и его стандартная библиотека довольно близки к к минимально возможному размеру.

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

Читать далее
Total votes 72: ↑68 and ↓4+79
Comments22

Как проходят архитектурные секции собеседования в Яндексе: практика дизайна распределённых систем

Reading time25 min
Views139K
Привет, меня зовут Костя Кардаманов, я работаю в отделе технологий разработки Яндекса. Обычно такой же фразой я приветствую и кандидатов на собеседовании. А сегодня я хотел бы рассказать вам, как и зачем мы проводим интервью по дизайну систем с бэкенд-разработчиками. Сразу скажу: для фронтендеров, мобильных разработчиков и ML-инженеров подобный тип собеседований применим слабо, так что эти специальности мы здесь обсуждать не будем.

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

Что такое дизайн информационных систем


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

Опытный читатель может сказать — в мире полно платных и бесплатных решений, из которых я могу собрать систему как из деталей конструктора, зачем мне понимать устройство этих деталей?
Читать дальше →
Total votes 67: ↑65 and ↓2+90
Comments37

Монотонная кубическая интерполяция

Level of difficultyMedium
Reading time8 min
Views4.2K

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

В данной статье разобран алгоритм монотонной кубической интерполяции, предложенный Фритчем и Карлосоном в работе [1].

На рисунке красным обозначен результат обычной кубической интерполяции Эрмита, а синим - монотонной, кругами - опорные точки траектории.

Примеры кода написаны на C++, исходники всей библиотеки лежат здесь. Также написана копия библиотеки на Java, исходники лежат здесь.

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

Google Web Mercator: неоднозначная система координат

Reading time10 min
Views53K
Первого октября 2014 года американское Национальное Агентство Геопространственной Разведки (NGA) опубликовало отчет, в котором изложена критика системы координат Web Mercator, используемой во множестве картографических веб-сервисов. К документу прилагалось подробное разъяснение проблемы и рекомендации для партнеров NGA. Документ получил большой резонанс, но далеко не все статьи, основанные на этом отчете, отличались точностью и грамотностью изложения. Это касается, например, статьи на сайте ГИС Ассоциации, которую, по причине грубейших ошибок в терминологии, можно считать безграмотной. Поскольку именно с этой системой координат разработчики веб-сервисов сталкиваются чаще всего, я считаю, что есть смысл разобраться в проблеме.
Подробности
Total votes 42: ↑41 and ↓1+40
Comments16

Как красиво писать формулы c LaTeX?

Level of difficultyEasy
Reading time5 min
Views34K

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

Меня зовут Шайдурова Арина, я Data Scientist  и участник профессионального сообщества NTA. Сегодня я поделюсь с вами своим опытом использования LaTeX для написания математических формул. Всё просто и с примерами, идеально подойдет для новичков синтаксиса LaTeX.

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

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

Apache Kafka: основы технологии

Reading time9 min
Views414K

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


Статья подготовлена на основе открытого занятия из видеокурса по Apache Kafka. Авторы — Анатолий Солдатов, Lead Engineer в Авито, и Александр Миронов, Infrastructure Engineer в Stripe. Базовые темы курса доступны на Youtube.

Total votes 29: ↑29 and ↓0+29
Comments10

5 вещей, о которых должен знать любой разработчик Apache Kafka

Reading time15 min
Views76K


Apache Kafka — это платформа потоковой обработки событий, которую используют 30% компаний из Fortune 500. У Kafka много функций, благодаря которым платформа задает стандарт обработки событий, и здесь мы поговорим о пяти самых важных аспектах, которые должны быть известны любому, кто работает с Kafka.


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

Читать дальше →
Total votes 18: ↑17 and ↓1+22
Comments3

Почему KRaft заменил ZooKeeper

Reading time12 min
Views16K

Зачем менять ZooKeeper на встроенный лог Apache Kafka® для управления метаданными? В этой статье вы узнаете, зачем нужна была эта замена, какие преимущества даёт протокол консенсуса на основе кворума, вроде Raft, и как работает контроллер кворума поверх протоколов KRaft.

Читать далее
Total votes 17: ↑16 and ↓1+19
Comments0
1
23 ...

Information

Rating
Does not participate
Location
Россия
Works in
Date of birth
Registered
Activity