Как стать автором
Обновить
Сначала показывать

Рекурсивные запросы в SQLAlchemy

Время на прочтение18 мин
Количество просмотров1.4K

Когда возникает необходимость работать с иерархической структурой данных, кажется, что решение давно найдено, ведь подобные задачи уже неоднократно решались. Возможно, даже выбран инструмент, например, Python и SQLAlchemy. Однако, углубляясь в задачу, понимаешь, что вариантов множество, даже в вопросе, как извлечь данные из базы: использовать стратегию selectin для загрузки родительских элементов? Или, возможно, стоит применить joinload? А может, лучше воспользоваться CTE‑запросами, которые рекомендуются в 90% статей? Но насколько CTE действительно эффективно по сравнению с другими методами? Более того, большинство примеров рассматривают ситуации в идеальных условиях, далёких от реальных проектов.

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

Погружаемся

Дегустируем Rspack

Уровень сложностиСредний
Время на прочтение5 мин
Количество просмотров1.3K

В последнее время язык программирования Rust находится на самом гребне волны хайпа. То тут, то там пестрят такие заголовки: «делаем на раст some_gnu_cli_utility», «Rust‑реализация привычной программы», «давайте перепишем на Rust ВООБЩЕ ВСЁ». Мне и самому очень нравится этот язык, и рост его популярности считаю вполне заслуженным. Несмотря на крутую кривую обучения и весьма высокий порог входа, в Rust правильно сделано если не всё, то почти всё. Многие языки годами и десятилетиями шли к тому, что «крабоводам» предлагалось «из коробки» на заре истории Rust.

Эпоха, когда во фронтенд‑экосистеме раз в неделю появлялся новый JS‑фреймворк, канула в Лету. На дворе 2024-й, теперь раз в неделю появляется новый бандлер, причём зачастую написанный именно на Rust (например, Turbopack, Rolldown, Farm и Mako от китайских товарищей). В этой статье я хочу опробовать в действии наиболее многообещающий из них — Rspack. Он позиционируется как быстрый сборщик, имеющий полную обратную совместимость с Webpack. Разработчики Rspack несколько месяцев назад выпустили стабильную мажорную версию (1.0) и продолжают активно развивать проект.

Что ж, давайте его попробуем. В качестве подопытного кролика возьмём не очередной Hello World, специально заточенный под бенчмарки, а реальный сложный проект, в котором есть:

— четыре режима сборки Webpack;

— сложная предметная область и, соответственно, сложная логика;

— 550+ React‑компонентов.

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

Читать далее

Как мы строили процессы в Домклик

Уровень сложностиСредний
Время на прочтение3 мин
Количество просмотров1.6K

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

Читать далее

Кросс-платформенное тестирование мобильных приложений: особенности, инструменты и решения

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров1.4K

В современном мире мобильные приложения стали неотъемлемой частью нашей повседневной жизни. Их стабильная и правильная работа требует особого подхода к тестированию, особенно когда речь идёт о кросс‑платформенных приложениях, работающих в iOS и Android. В этой статье я поделюсь своим опытом и трудностями, которые могут встретиться в процессе тестирования приложений в упомянутых ОС.

Читать далее

Введение в Brisa: новый подход к веб-разработке

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров6K

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

В этой статье мы подробно разберём, как начать работу с Brisa, изучим основные принципы и рассмотрим примеры кода.

Читать далее

Встречи продуктового дизайнера в Домклик

Уровень сложностиСредний
Время на прочтение11 мин
Количество просмотров723

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

Что ещё за встречи? Давайте узнаем

Мой путь в мире веб-рендеринга: от статических страниц к гибридным архитектурам

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров2K

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

Читать далее

Знакомьтесь: input, output и model. Новые функции в Angular

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров5K

Привет всем! Меня зовут Егор Молчанов, я разработчик в компании Домклик.

Хочу рассказать вам о новых функциях Angular: input(), output() и model(). Они появивились сравнительно недавно и обещают в скором времени заменить привычные нам декораторы @Input и @Output. Разберëм, что они собой представляют, как использовать на практике, и как связаны с концепцией сигналов. Поехали!

Читать далее

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

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров3.7K

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

Прочитать материал

Делегирование в IT: как повысить ответственность и самостоятельность

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров4K

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

Читать далее

Витрина компонентов, или Единая точка правды в дизайн-системе. Часть 1

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров1.4K

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

Читать далее

Новый оператор безопасного присваивания в JavaScript: ?=

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров15K

Современная разработка на JavaScript часто сталкивается с задачами асинхронной работы и обработки ошибок. Как правило, для этих целей используются конструкции try-catch и async-await. Однако они могут утяжелять код и усложнять его восприятие. Чтобы решить эту проблему, был предложен новый оператор безопасного присваивания ?=, который значительно упрощает обработку ошибок и улучшает читаемость кода. В этой статье мы рассмотрим, как работает этот оператор, его особенности и преимущества для разработчиков.

Читать далее

DuckDB: сказ о том, как утёнок приютился в Persistent Volume

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров4.1K

Привет, дорогой друг. Меня зовут Максим и я data-инженер в одной из прекрасных команд AI area компании Домклик. Правильно перевозить байтики с места на место нам помогает огромный зоопарк инструментов. И, кажется, мы приручили ещё одного питомца.

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

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

Читать далее

План действий на 2024 для UX/UI-дизайнера и ссылки на статьи

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров5.7K

UI/UX-дизайн — это перспективная сфера деятельности, которая удачно сочетает творческий подход и аналитическое мышление. Профессиональные дизайнеры UI/UX разрабатывают визуально привлекательные интерфейсы, делая их при этом удобными и интуитивно понятными.

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

Читать далее

Logstash. Преимущества фильтра Dissect над Grok

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров2.2K

Мы в Домклик много лет используем ELK-stack (сейчас уже OpenSearch) для хранения и работы с логами, которых у нас очень много: около 400 гигабайтов в день. Весь этот объём проходит через Logstash, где логи частично парсятся, обогащаются метаданными и т. д.

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

Расскажу о проблемах, с которыми мы столкнулись при добавлении новых Grok-паттернов, и о том, как мы их решили, отказавшись от Grok.

Читать далее

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

Уровень сложностиПростой
Время на прочтение9 мин
Количество просмотров7.7K

Всем привет! Меня зовут Станислав Тюленев, я технический лидер команды по разработке в одной из продуктовых команд Домклик.

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

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

Читать далее

Camunda 8. Почему не стоит использовать Connectors Bundle

Уровень сложностиСредний
Время на прочтение3 мин
Количество просмотров1.3K

Для Camunda Platform есть Connectors Bundle, который быстро помогает формировать взаимодействие между сервисами. Но так ли хорошо это решение? Рассмотрим на примере Rest Connector'a.

Читать далее

File Uploader. Особенности компонента и к чему мы пришли

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров3.7K

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

File Uploader представляет собой элемент интерфейса, который позволяет пользователям выбирать и загружать файлы. Обычно он состоит из кнопки «Выбрать файл» или поля для перетаскивания файлов, которые пользователь может выбрать для загрузки.

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

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

Читать далее

За кулисами разработки: кто такой IT Area Lead в Домклик?

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров1.2K

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

Читать далее

Нейросети на практике

Уровень сложностиСредний
Время на прочтение5 мин
Количество просмотров6.1K

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

Читать
1
23 ...

Информация

Сайт
domclick.ru
Дата регистрации
Дата основания
Численность
501–1 000 человек
Местоположение
Россия
Представитель
Dangorche