Привет! Меня зовут Дмитрий Королёв, я бэкенд-разработчик в Авито. В этой статье я расскажу про ключевые аспекты и концепции работы с наиболее популярными алгоритмами и структурами данных. Это поможет и в реальных проектах, и чтобы глубже понять алгоритмические принципы. Статья подойдёт специалистам, которые хотят углубить свои знания в программировании, и укрепить навыки нахождения оптимальных решений алгоритмических задач.
погромист
Векторные базы данных — набирающий устойчивость тренд в разработке систем ИИ или мимолетное увлечение?
В блоге beeline cloud на хабре и в нашем технологическом медиа мы разбираем ключевые технологии и принципы работы отрасли. На этот раз мы решили затронуть стремительно растущий рынок машинного обучения, который «тянет» за собой сегмент векторных БД.
С одной стороны, технология выглядит многообещающей, с другой — имеет набор ограничений, которые еще предстоит преодолеть. Рассмотрим различные точки зрения и предложим несколько книг разного уровня для желающих глубже погрузиться в тему.
Как дизайнеры помогают заменить GitLab: что из этого получилось
Привет! Меня зовут Валерия, я дизайнер внутренних сервисов в Ozon Tech. Наша команда занимается продуктами, которые коллеги используют для доступа к инфраструктуре Ozon, приоритизации задач, проведения регламентных работ, выкатки и управления релизами.
Сегодня речь пойдёт про последнее упомянутое решение — REpublic или релизный портал, который помогает нашим разработчикам выкатывать более тысячи релизов каждый день. Я расскажу, зачем мы начали его делать и с какими сложностями столкнулись.
Применение DDD. От моделей до EDM — поиск новых форм и архитектурные излишества
Под катом рассказ о самой авангардной форме архитектуры которую мне с коллегами удалось получить, как ещё больше можно развить этот подход.
DDD не на коленке, а за дорого ;)
Курс «PostgreSQL для начинающих»: #3 — Сложные SELECT
Продолжаю публикацию расширенных транскриптов лекционного курса "PostgreSQL для начинающих", подготовленного мной в рамках "Школы backend-разработчика" в "Тензоре".
В этой лекции углубимся в расширенные возможности команды SELECT
: как можно "сложить" и "вычесть" выборки (UNION/INTERSECT/EXCEPT
), или запомнить и использовать в рекурсивных запросах (CTE
), что дают оконные функции (WINDOW
) и соединения (JOIN
).
Как обычно, для предпочитающих смотреть и слушать, а не читать - доступна видеозапись.
Вопросы и ответы для собеседования на позицию frontend-разработчик. Часть 1
Всем привет! В этой статье хотел бы поделиться вопросами и ответами, которые я задаю на собеседованиях фронтенд-разработчикам и которые попадались мне, когда я сам искал работу. Здесь собраны вопросы именно по JavaScript. В дальнейшем планирую рассмотреть TypeScript отдельно, а также React и связанные с ним технологии.
Как на самом деле работает Async/Await в C# (Часть 1)
Несколько недель назад в блоге «.NET Blog» появилась статья «Что такое .NET, и почему вы должны выбрать его?». В нем был представлен высокоуровневый обзор платформы, кратко описаны различные компоненты и архитектурные решения, а также обещаны более подробные посты по затронутым темам. Этот пост является первым таким продолжением, в котором подробно рассматривается история создания, архитектурные решения и детали реализации async/await в C# и .NET.
Гайд по релокации в Великобританию и получению ВНЖ в 2023 по Innovator Founder Visa
В этой статье я постараюсь максимально подробно описать, как выглядит процесс получения инноватор визы и ВНЖ Великобритании, поделиться реальными кейсами, затыками и рисками. Статья будет полезна для стартапов, предпринимателей и других специалистов, рассматривающих Великобританию для переезда.
Вам не нужен для этого JavaScript
Прошу вас не возмущаться названием статьи. Я не ненавижу JavaScript, я люблю его. Ежедневно я пишу на нём кучу кода. Но ещё я люблю CSS и даже люблю
▍ Правило наименьших полномочий
Это один из базовых принципов веб-разработки, означающий, что следует выбирать наименее мощный язык, подходящий для решения задачи.
В случае веба это означает, что нужно по возможности выбирать HTML вместо CSS, а затем CSS вместо JS. JS — самый универсальный язык из всех трёх, потому что на нём вы описываете, как должен вести себя браузер; но также он может ломаться, отказываться загружаться, требует дополнительных ресурсов для скачивания, парсинга и исполнения. Кроме того, при его использовании очень легко ограничить доступ пользователей, выполняющих браузинг при помощи клавиатуры или специальных возможностей.
В отличие от JS с его императивностью, HTML и CSS декларативны. Вы говорите браузеру, что делать, а не как это делать. Это значит, что браузер сам выбирает, как это делать, и может сделать это наиболее эффективным образом.
Так как функции HTML и CSS обрабатываются браузером, они могут быть более производительными, более нативными, более адаптируемыми к предпочтениям пользователя и в общем случае иметь бОльшую accessibility. Это не значит, что так будет всегда (особенно когда дело касается accessibility), но когда все сложные задачи берёт на себя браузер, от этого обычно выигрывают конечные пользователи.
Пишем код, когда пишем код: сорс-генераторы
Всем привет! Я Олег, ведущий разработчик в Тинькофф. Расскажу историю про сорс-генераторы и почему именно генерацию кода мы выбрали для решения нашей задачи. Будут неожиданности и открытия, которые мотивировали нас двигаться дальше.
Что нового в .NET 8?
.NET 8 вышел в релиз, значит можно начинать переносить свои проекты на новую версию. В этой статье мы рассмотрим новые улучшения и фишки: C# 12, производительность, Native AOT, GC, новые типы, направленные на повышение производительности, NuGet Audit и прочее.
Осторожно: ICacheEntry
Думаю, никому здесь не требуется объяснять, что такое кэширование и чем оно полезно, указывать, что кэширование широко используется, и упоминать, что для его реализации во многих средах программирования есть стандартные компоненты. Поэтому приступлю сразу к делу.
В .NET кэширование в оперативной памяти реализует пакет Microsoft.Extensions.Caching.Memory, входящий в набор .NET Extensions. И поводом для написания этой статьи послужили приключения (с успешным концом), связанные с упомянутым в заголовке интерфейсом ICacheEntry из этого пакета, возникшие при попытке его нестандартного использования.
Но рассказать я хочу не только о той недокументированной засаде, в которую я попал, сделав шаг в сторону от примеров использования из документации. И не только о том, как я из нее выбрался. Дело в том, что при выяснении правильного способа работы с ICacheEntry я наткнулся на довольно необычный приём программирования (он же Design Pattern), который я для себя назвал "Скрытый построитель". И наткнулся я на него в коде библиотек .NET не в первый раз. И я раньше нигде не читал про подобный приём. А потому я решил включить в статью ещё и описание этого приёма. А так как этот приём не специфичен для C#, и его вполне можно использовать и на других языках, то он может быть интересен и тем, кто не работает с C# и .NET.
Сокровища HTML: 7 тегов, которые упростят вам жизнь
Все мы знакомы с широко используемыми HTML тегами, такими как <div>, <p>, <a>, и <img>. Однако, существуют HTML - теги, которые могут упростить жизнь, и вместо написания дополнительного кода, выполнят всю работу :)
HTML и CSS ошибки, влияющие на доступность. Мой опыт и моего незрячего знакомого Ильи. Часть 3
Хабр, я уже третий месяц пишу про доступность вместе с Ильёй. Мы показываем, как HTML и CSS могут улучшить или ухудшить её. Напоминаю, что Илья — мой незрячий знакомый, который помогает мне найти наши косяки в вёрстке.
Сегодня уже будет не только HTML и CSS. В некоторых кейсах мы будем использовать ARIA-атрибуты. Я расскажу:
- как мы незаметно потеряли пользу элементов
<section>
и<form>
; - как атрибут
tabindex
запутывает незрячего пользователя; - почему визуально скрытые элементы — проблема современных интерфейсов;
- что делать с паттерном «Звёздочка» для обязательных полей.
Давайте начнём!
Global Talent visa для IT-ника. Путь с нуля
Недавно я завершил свой длинный путь и получил Global Talent visa в Великобританию. О первых выводах я поделился в канале, а сейчас хотелось бы разложить все по полочками и подготовить гайд, который поможет практически любому стать обладателем этой визы.
В этой статье я постараюсь описать весь свой опыт, рассказать о том, кому и почему эта виза может быть полезна и самое главное, как ее получить если вы не ощущаете себя "талантом".
React Fiber & Concurrency Part 1 (2)
В сети много статей и докладов, которые описывают React Fiber, но, к сожалению, они сейчас уже не актуальны. Заметив это, я решил разобраться и актуализировать информацию. Моими основными помощниками были исходники и отладчик, поэтому здесь вы увидите множество ссылок на код из репозитория React. Теперь я хочу поделиться результатами своей работы с вами.
Тема разделена на две статьи. Первая статья расскажет о процессе обновления и внесения изменений в DOM. Вторая статья посвящена реализации не блокирующего рендеринга - Concurrent React. Данная статья является первой из двух.
Clickhouse — непростая жизнь в продакшене
Около двух лет назад вышла небольшая статья Kafka Streams — непростая жизнь в production, в которой я описывал сложности, с которыми наша команда столкнулась при попытке решить задачи проекта с помощью kafka-streams. Эксперимент вышел неудачным, и мы в итоге совсем отказались от этой технологии. Вместо нее решили попробовать Clickhouse (CH), и сейчас уже можно сказать, что эта база нам очень хорошо подошла и отлично решает почти все задачи, которые нам ставит бизнес. В этой статье я расскажу об особенностях использования CH.
Главные советы стартапам от Y Combinator
Мы часто даем стартапам рекомендации по конкретным шагам и действиям, которые помогут в ежедневной работе. Но есть и более фундаментальные советы. В этой статье мы собрали те из них, которые мы считаем наиболее важными. Эти советы могут быть основанными на здравом смысле или быть контринтуитивными, но они помогают большинству стартапов найти свой путь к успеху.
Первое, что мы всегда говорим основателям стартапов — запускайтесь прямо сейчас...
Курс по Ruby+Rails. Часть 8. Модели и первые шаги
Миграции – это механизм ActiveRecord, который позволяет вносить изменения в схему базы данных не используя SQl. ActiveRecord предоставляет широкие возможности для манипуляций со базой, беря на себя большую часть работы, автоматизируя многие вещи благодаря принципу соглашения над конфигурацией. Это позволяет генерировать готовые миграции, сразу содержащие код, вносящий необходимые изменения, и минимизировать код для отката миграций.
«Возьмите инициативу на себя»: готовимся к System Design Interview
Рассказываем, для чего в Авито проводят интервью по System Design, чего от него ожидать и что нужно знать, чтобы его успешно пройти.
Информация
- В рейтинге
- 5 108-й
- Откуда
- Белград, Белград, Сербия
- Зарегистрирован
- Активность