Pull to refresh
5
1.2
Send message

Задачи на собеседованиях. Денежные переводы в SQL. Обновление счетов и уровни изоляций

Level of difficultyMedium
Reading time4 min
Views14K

Задачи на собеседованиях. Денежные переводы в SQL. Обновление счетов и уровни изоляций

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

Читать далее

Как вырезать ненужный фрагмент из видео: собрал простые способы удаления ненужного

Level of difficultyEasy
Reading time5 min
Views2.5K

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

Я задумался: что нужно для эдита? Красивые динамичные переходы, фильтры, озвучка. Но самое главное — удобство нарезки и удаления лишних кадров. За свою практику я перебрал много программ для видеомонтажа. И, кстати, обнаружил, что далеко не во всех есть удобный и простой инструмент для обрезания. Поэтому решил собрать свой опыт в статью. 

Представляю 5 удобных программ для монтажа видео, в которых легко вырезать фрагмент из видео. К каждому описанию, кстати, прикрепил инструкцию.

Читать далее

Основные паттерны микросервисной архитектуры: Strangler Fig, API Gateway, Service Mesh и другие

Reading time33 min
Views17K

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

В данной статье мы разберем несколько ключевых паттернов, связанных с микросервисами. Речь пойдет о паттернах миграции и интеграции (таких как Strangler Fig – «удушающее дерево» и API Gateway), о сетевых и структурных паттернах (Service MeshSidecar), о шаблонах работы с данными (Database per ServiceCQRS) и об особом подходе к хранению состояния (Event Sourcing). Для каждого паттерна мы рассмотрим его суть, назначение, примеры использования, а также плюсы и возможные сложности. К некоторым паттернам приведены упрощенные диаграммы и фрагменты кода, чтобы иллюстративно показать, как они работают на практике.

Читать далее

Алгоритмы консенсуса Paxos, Raft и Zab в распределённых системах

Level of difficultyMedium
Reading time31 min
Views3.8K

В распределённых системах критически важно обеспечить консенсус – согласованность данных или решений между множеством узлов (серверов), даже при сбоях и задержках сети. Алгоритмы консенсуса позволяют группе несовершенных узлов действовать как единое надёжное целое. Три классических алгоритма – Paxos, Raft и Zab – стали основой для построения отказоустойчивых систем. Они гарантируют, что при наличии кворума узлов (обычно большинства) все узлы придут к единому решению и последовательности операций, сохраняя консистентность данных. В данной статье мы рассмотрим устройство этих алгоритмов «под капотом», их этапы (выбор лидера, репликация журнала, обработка сбоев и восстановление), области применения в реальных системах (от координаторов в кластерах Kubernetes и Apache Kafka до распределённых баз данных), а также сравним готовые реализации (такие как etcd, ZooKeeper, Consul и др.) по ключевым характеристикам.

Читать далее

Как работает Cargo

Level of difficultyEasy
Reading time6 min
Views3.3K

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

На дворе 2025, и у каждого языка свой подход к сборке, зависимостям и публикации. В Rust за это отвечает Cargo — инструмент, который берёт на себя всё: от менеджмента зависимостей до тестов, бенчмарков и выкладки на crates.io.

И вот это мы и рассмотрим в статье: как устроен Cargo изнутри, зачем нужен Cargo.toml, как подключать зависимости, куда падают артефакты сборки, что делает cargo check, как запускать и бенчмаркать, и как наконец создать свой крейт на crates.io.

Читать далее

Часть 2. Обзор технологий RAG для LLM: поиск и извлечение информации

Level of difficultyEasy
Reading time13 min
Views4.1K

Продолжаю адаптированный перевод статьи китайских исследователей Retrieval-Augmented Generation for Large Language Models: A Survey (первую часть см. здесь) Во второй части авторы разбирают технологии оптимизации поиска и извлечения данных. Поскольку материал я готовил в первую очередь для начинающих ИТ-переводчиков, сложные и специальные термины я сопровождал английским переводом и краткими пояснениями в комментариях (появляются на серых полях по клику). Картинок не было.

Читать далее

Как развивать финансовую грамотность: уроки из сериала «Наследники»

Reading time5 min
Views2.9K

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

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

Проведём проверку собственных полезных финансовых привычек и сравним их с привычками героев сериала «Наследники», чтобы повторить (или не повторить) вслед за любимыми героями. 

Читать далее

Service Mesh в дикой природе или как не стать жертвой атак

Level of difficultyMedium
Reading time19 min
Views2K

Когда погружаешься в Service Mesh, кажется, что это волшебная штука, которая решает все проблемы. Но потом вспоминаешь, что безопасность сама себя не настроит, а уязвимости появляются там, где их меньше всего ждёшь.

В статье разобрал всё это подробнее:
- Какие ошибки в безопасности Service Mesh встречаются чаще всего;
- Как атакуют Istio и Linkerd, и почему mTLS — не панацея;
- Какие практики реально работают, а какие просто звучат красиво.

С примерами, кейсами и полезными ссылками, чтобы не наступать на чужие грабли.

Вникнуть

Часть 1. Обзор подходов RAG

Level of difficultyEasy
Reading time9 min
Views12K

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

Читать далее

Как я победил в RAG Challenge: от нуля до SoTA за один конкурс

Level of difficultyMedium
Reading time23 min
Views29K

Когда новичок пытается построить свою первую вопросно-ответную LLM систему, он быстро узнаёт, что базовый RAG - это для малышей и его нужно "прокачивать" модными техниками: Hybrid Search, Parent Document Retrieval, Reranking и десятки других непонятных терминов.
Глаза разбегаются, наступает паралич выбора, ладошки потеют.

А что, если попробовать их все?
Я решил потратить на подготовку к соревнованию 200+ часов и собственноручно проверить каждую из этих методик.
Получилось настолько удачно, что я выиграл конкурс во всех номинациях.

Теперь рассказываю, какие техники оказались полезными, а какие нет, и как повторить мой результат.

Читать далее

Сигнал из 1960-х в 2020-е и дальше: предвидения Станислава Лема

Level of difficultyEasy
Reading time11 min
Views34K

Привет, Хабр! 60 лет назад фантаст Станислав Лем очертил многие ожидания и страхи будущего, которое постепенно становится настоящим прямо на наших глазах. Он определил ряд центральных идей: вокруг них более поздние авторы будут строить даже не отдельные сюжеты, а категории тем. На примерах и цитатах из произведений Лема я покажу, как ему удалось увидеть  будущее и показать, к чему могут привести изобретения и концепции, о которых в 60-х годах еще никто не задумывался. О самих технологиях писать не буду — за этим к Артуру Кларку, предсказавшему геостационарные спутники в статье «Ретрансляторы вне Земли». Итак, начнем!

Читать далее

Как читать сообщения, если никто из брокеров не предоставил удобный интерфейс

Level of difficultyEasy
Reading time16 min
Views3.5K

Пишите вы себе EDA на основе Apache Kafka, и ваши сервисы тщательно логируют все свои действия, процесс отлажен и работает годами. Вдруг один из сервисов отчитался в логах, что отправил событие в брокер, но другой по какой-то его не прочитал. Как понять, кто виноват?

Как правило, брокер сообщений между сервисами – черная коробка, которая работает, что называется «As Is». Разработчики подключают зависимости, вешают аннотации консюмеров и продюсеров, оно заводится и все рады. Но что они там подключили и как это работает никто не видит.

Так давайте же посмотрим, как мы можем открыть этот чёрный ящик на примере наиболее популярных брокеров сообщений.

Читать далее

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

Level of difficultyMedium
Reading time5 min
Views23K

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

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

Читать далее

Миллиарды векторов и немного магии: превращаем сырые данные с маркетплейсов в пригодные для анализа

Level of difficultyEasy
Reading time9 min
Views5.4K

Привет, Хабр! Я — Игорь Старун, BigData Lead в MPSTATS. Я уже 3 года занимаюсь анализом данных на маркетплейсах, штудируя гигантские объёмы информации и превращая их из непотребного и нечитаемого вида в удобоваримый и анализируемый. Моя задача — собрать и подготовить данные так, чтобы помочь продавцам на маркетплейсах разобраться, что происходит с их товарами, конкурентами и продажами, чтобы они не утонули в хаосе карточек, цен и остатков. В этой статье я расскажу, как мы перерабатываем эти объемы грязных данных и структурируем для дальнейшего анализа. 

Данные о товарах – это основа всего. Каждую неделю мы обходим более 200 миллионов карточек с Wildberries и Ozon. Названия, описания, характеристики, фотографии — всё это мы аккуратно собираем и складываем в базы данных (для разных задач мы используем ClickHouse, Postgres, MySQL и MongoDB) и облачные хранилища. Зачем? Чтобы потом сделать с этим что-то умное и полезное.

Читать дальше

Демистификация размеров объектов в Java: компактные заголовки, сжатые указатели и многое другое

Level of difficultyEasy
Reading time6 min
Views3.3K

Понимание размера объектов в Java — важный шаг для оптимизации памяти в высоконагруженных системах. 

В новом переводе от команды Spring АйО вы узнаете про использование HotSpot JVM таких механизмов, как сжатые указатели (Compressed Oops) и компактные заголовки объектов (Compact Object Headers), необходимых для минимизации объема занимаемой памяти.

Читать далее

1С: Дичь (лучшее из моей коллекции)

Level of difficultyEasy
Reading time2 min
Views66K

Я постоянно имею дело с чужим кодом. В среднем раз в месяц ко мне приходит новый клиент со старой информационной системой, в которой поработали программисты 1С самых разных мастей, возрастов, квалификации, отношения к делу, чувства юмора и т.д. Ещё я постоянно работаю с молодыми программистами 1С - они учатся с нуля в моём отделе.

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

Много лет назад, когда во мне горел юношеский абсолютизм, я реагировал на "плохой код" резко и негативно. Всё какие-то стандарты изучал и пропагандировал. В нашей среде стандартом код разработчиков из самой 1С обычно считается. А одна из высших оценок качества кода - если он не отличим от написанного вендором. Ну вот и я такой был.

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

Да, что ещё совершенно точно: при сильно изменившихся стандартах не сильно изменился результат, т.е. продукт :)

Так, отвлёкся... Переболел я "правильными стандартами", надеюсь больше мне это не грозит, пусть молодёжь тешится. И отношение моё к чужому коду сразу изменилось - он стал мне интересен. Как диалекты одного и того же языка, фольклор народов мира и, в конце концов, жизненные истории (да, в небольшом куске кода иногда целую историю увидеть можно).

Ну и коллекционировать эти куски кода начал. Чтобы не потерять - канал в телеге создал. Иногда там и мой код бывает, за который мне стыдно (порой).

Подумал, вдруг вам тоже будет интересно, и решил оформить в виде статьи самые интересные (на мой взгляд) примеры.

Смотреть картинки

Как спроектировать игровую математическую модель, забалансить её и не сдуреть. Разбор на практических кейсах

Level of difficultyEasy
Reading time17 min
Views19K

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

Читать далее

PostgreSQL — особенности работы с памятью для 1С-систем. Часть 1

Level of difficultyMedium
Reading time14 min
Views13K

Этой статьей мы начинаем цикл, посвященный различным настройкам по оперативной памяти в PostgreSQL. Тема непростая, даже сложная. Понятной информации по ней крайне мало (по состоянию на октябрь 2024). Поэтому будем разбираться, шаг за шагом, вдумчиво и, как принято у нас в блоге, подкреплять все выводы исследованиями и картиной из программы мониторинга PERFEXPERT (версия для PG).

Читать далее

Сравнение алгоритмов консенсуса ETH vs TON vs SOLANA

Level of difficultyHard
Reading time20 min
Views3.3K

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

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

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

Читать далее

Valkey: миллион RPS c напёрстком дёгтя

Level of difficultyMedium
Reading time3 min
Views6K

Мы (R&D-банда devhands.io) закончили тестирование официального релиза Valkey и его сравнение с прародителем, Redis, форком которого тот является. Для тех, кто не очень в курсе: Valkey появился на свет после смены лицензии Redis, под покровительством облачных провайдеров, в первую очередь AWS. Основное внимание уделили пропускной способности и времени отклика в зависимости от параметра io-threads, отвечающего за "частичный параллелизм" в этих продуктах.

Читать далее
1
23 ...

Information

Rating
1,470-th
Registered
Activity