Обновить
-2
0.2

Пользователь

Отправить сообщение

О новых алгоритмах хеш-таблиц

Время на прочтение1 мин
Охват и читатели11K

Хотелось бы прокомментировать публикацию Ильи Кабанова в Медузе по поводу новых разработок в алгоритмах хеширования: "Optimal Bounds for Open Addressing Without Reordering" (Farach-Colton, Krapivin, and Kuszmaul, 2025) и последующую "The Bathroom Model: A Realistic Approach to Hash Table Algorithm Optimization" (Wang, 2025). И особенно кликбейтное: "в перспективе метод Крапивина и его коллег может ускорить многие процессы в интернете."

Я около 7 лет очень плотно занимался темой хеш-таблиц и написал много их вариантов: Koloboke, SmoothieMap, memory-mapped вариации.

Я потерял к теме интерес с выходом гугловской SwissTable (2018), и ее фейсбучного варианта F14, которые основаны на SIMD. Они проверяют загруженность ячеек и совпадения "тега" элемента сразу блоками по 8 соседних слотов. Поэтому на любых разумных загрузках таблиц (до 90%) - "цепочка проверки" очень редко превышает 1 (то есть, одну проверку 8-элементного блока).

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

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

SwissTable стали стандартным алгоритмом хеш-таблиц в Расте, и, буквально в этом месяце, в Golang 1.24.

В заключение, отвечая Илье Кабанову: к "ускорению интернета" эти теоретические алгоритмы не приведут :)

Читать далее

Тимлид или ведущий дейликов?

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

«У меня не тимлид, а просто ведущий дейликов!» — с горечью однажды воскликнул мой знакомый, и эта фраза послужила для меня поводом к написанию этой статьи. Ведь я тоже уже давно замечаю, что с ролью тимлида в последние годы происходит что-то не то. Причем как со стороны самих лидов, так и со стороны их руководителей

Читать далее

Next.js 15 в Hikasami: Глубокая оптимизация рендеринга, загрузки данных и производительности

Уровень сложностиСредний
Время на прочтение4 мин
Охват и читатели1.8K

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

Читать далее

ООП: худшее, что случалось с программированием

Уровень сложностиСложный
Время на прочтение20 мин
Охват и читатели71K

В этой статье попробуем разобраться, почему ООП — худшее, что было придумано в программировании, как оно стало таким популярным, почему опытные программисты Java (C#, C++ и т.п.) в принципе не могут считаться крутыми инженерами, а код на Java - хорошим.

Читать далее

Почему observability — это не только Grafana и Prometheus

Время на прочтение11 мин
Охват и читатели12K

Вы видите красивые графики в Grafana, алерты настроены, метрики собираются — значит, все под контролем? На самом деле, нет. Когда в продакшене что-то пойдет не так, Prometheus покажет скачок latency, но не объяснит, почему это произошло. Логи могут не содержать нужных данных. Трейсов нет. Итог — часы расследования, хаотичные гипотезы, поиски иголки в стоге сена.

Observability — одно из тех модных слов, которые часто понимают неправильно. Для многих оно сводится к связке Grafana + Prometheus, не более. Однако в реальных системах наблюдаемость (observaбыстроbility) — это больше, чем просто красивые дашборды с метриками. В этой статье разберемся, почему классический стек не покрывает все задачи, какие альтернативы есть на рынке и как построить современный observability-стек.
Читать дальше →

Батарея, живи! Как не превратить MacBook в стационарный ПК

Уровень сложностиПростой
Время на прочтение3 мин
Охват и читатели18K

Привет, всем моим читателям! Сегодня я расскажу о том, как продлить жизнь своему яблочному аппарату под названием MacBook. Всё началось с того, что я впервые в жизни купил себе MacBook M2 Pro, и мне, как и, наверное, любому другому человеку, после такой покупки захотелось продлить это счастье как можно дольше. Более того, ты начинаешь паниковать из‑за каждой мелочи: «он слишком пыльный!», «а вдруг скоро закончится память?» (хотя там ещё 400 ГБ свободно), «а вдруг...» Ну или это я просто такой шизоид.

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

Читать далее

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

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

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

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

Читать далее

Трансформация платформы данных: от пары кубов до хранилища > 30 Тб и 1000 ETL-процессов

Уровень сложностиСредний
Время на прочтение9 мин
Охват и читатели4K

Привет, Хабр! Меня зовут Наталья Горлова, я архитектор данных. Несколько лет назад мы в CDEK поняли, что продукты, на которых работало хранилище, перестали нас устраивать: не устраивала гибкость разработки и скорость поставки данных. C тех пор произошло множество изменений, которыми хочется поделиться с сообществом.

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

Читать далее

Оптимизация JOIN в PostgreSQL

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

Хотите ускорить работу сложных SQL-запросов в PostgreSQL? 🚀В этой статье мы разберем, как правильно использовать JOIN, какие методы соединения выбирает PostgreSQL и как их оптимизировать. Узнайте, как индексы, статистика и параметры конфигурации влияют на производительность! 🔥

Читать далее

Как собирать данные: руководство для ИИ-стартапов

Уровень сложностиСредний
Время на прочтение17 мин
Охват и читатели1.2K

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

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

Читать далее

История создания идеального Docker для Laravel

Уровень сложностиПростой
Время на прочтение13 мин
Охват и читатели8.1K

Казалось бы, упаковать PHP в контейнер и настроить GitHub Actions - дело пяти минут. Но как часто бывает, реальность оказалась сложнее. Это история о том, как я вернулся к разработке на PHP и решал накопившиеся проблемы с деплоем Laravel-проекта. О том, как готовил Docker-образ, несколько раз переписывал процесс деплоя, находил компромиссы там, где это было возможно, и полностью перестраивал архитектуру там, где компромиссы были неприемлемы.

Читать далее

Как LangChain и LangGraph упрощают жизнь разработчика ИИ-Агентов

Уровень сложностиСредний
Время на прочтение12 мин
Охват и читатели10K

При разработке приложений на основе больших языковых моделей (LLM, Large Language Model) встает вопрос: вызывать ли модель напрямую через API (например, OpenAI) или использовать специализированные фреймворки вроде LangChain или LangGraph. Ниже мы рассмотрим, с какими сложностями сталкивается разработчик при прямом использовании LLM, и как LangChain и LangGraph помогают упростить создание сложных диалоговых и агентных систем. Также приведем примеры кода, сравнивая прямые вызовы с использованием этих фреймворков, и обсудим, когда их применение оправдано.

Читать далее

Ежегодный опрос PHP-сообщества: итоги 2024 года

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

2024 стал насыщенным годом для русскоязычного сообщества PHP-разработки. PHP Russia 2024, релизы PHP 8.4, Symfony 7.2 и Laravel 11.

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

Читать далее

Почему измерять ≠ управлять: как KPI искажают реальность и какой инструмент использовать осознанному руководителю

Время на прочтение8 мин
Охват и читатели5.5K

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

В этом материале расскажем к чему это приводит и какой инструмент использовать осознанному руководителю.

Читать далее

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

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

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

Однако при ближайшем рассмотрении эти задачи имеют много общего...

Читать далее

Perforator: новая система непрерывного профилирования теперь в опенсорсе

Уровень сложностиСредний
Время на прочтение21 мин
Охват и читатели28K

Привет! Сегодня мы выложили в опенсорс Perforator — систему непрерывного профилирования (continuous profiling), которую используем внутри Яндекса для анализа производительности большинства сервисов.

В Github-репозитории доступен исходный код системы и инфраструктура для развёртывания своей инсталляции Perforator на кластере Kubernetes. Кроме того, Perforator можно использовать на своём компьютере как более простую замену perf record: профили получаются точнее, а оверхед меньше. Исходный код доступен под лицензией MIT (и GPL для eBPF-программ) и запускается под x86-64 Linux.

При помощи Perforator и прошлых подходов к задаче профилирования мы регулярно оптимизируем самые крупные сервисы в Яндексе, например Баннерную крутилку или Поиск, на десятки процентов. Кроме того, Perforator реализует недостающий в опенсорсе компонент профилирования для простой автоматической оптимизации программ с использованием profile-guided optimization. Наши тесты показывают, что использование PGO даёт ускорение около 10% в разных сценариях.

Под катом поговорим про профилирование под Linux, опишем вызовы и сложности, возникающие при профилировании, изучим, как устроен Perforator внутри, и обсудим, как можно использовать полученную систему.

Читать далее

Как с помощью deep learning мы построили Геокодер, масштабируемый для разных стран

Время на прочтение11 мин
Охват и читатели8.1K

Давным‑давно, когда мир ML состоял из бустингов, линейных моделей и статистических подходов, перед нашей командой API Яндекс Карт стояла задача сделать качественный Геокодер. Это алгоритм, который конвертирует текстовые запросы пользователей в поисковой строке карт в координаты и обратно. Он нужен, когда люди вводят адреса с ошибками, опечатками или народными наименованиями, например «Мяснитская 8». Геокодер должен понять, что имелось в виду «улица Мясницкая, дом 8/2», и вернуть на карте отметку с точной локацией и координатами.

Разработанный для России Геокодер отлично справлялся, но мы хотели найти способ быстро адаптировать это решение к адресным системам других стран. Технологические ограничения не позволяли быстро адаптировать решение, поскольку для каждой страны требовалась разработка собственных правил геокодирования, которые бы учитывали различия и языковые особенности. Однако появление и развитие алгоритмов deep learning открыло новые горизонты: методы active learning, аугментации данных и contrastive learning позволяют значительно улучшить итоговое качество геокодирования и учитывать нюансы различных адресных систем.

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

Читать далее

Используем HTTP API Gemini 2.0 thinking бесплатно

Уровень сложностиСредний
Время на прочтение4 мин
Охват и читатели18K

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

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

На ai.google.dev видно, что можно использовать 1500 запросов на gemini 1.5 flash и 1500 на gemini 1.5 flash 8b. Размер контекста - 1 миллион токенов.
Карту привязывать не надо. Я вообще создал под это дело новый гугловый аккаунт, чтобы не париться, что могу не уложиться в бесплатные лимиты.
Чего не написано в прайсе так это то, что помимо моделей 1.5 flash также доступны бесплатно ещё и топовые модели gemini 2.0 flash и gemini 2.0 flash thinking. С теми же ограничениями - не более 1500 запросов в сутки на каждую.

А теперь посмотрим как обойти блокировки

Agile умер: из-за своего сострадания к product- и project-менеджерам (с) Фридрих Ницше

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

Agile — бог управления проектами последних лет. И неужели он умер? Или многочисленные прожект- и продакт-менеджеры убили его? Разбираемся, почему прозрачность Agile зачастую приводит к хаосу и анархии, а не гибкости и высокой ценности продукта. 

Читать далее

Заменяем хабраюзеров ИИ-агентами. Гайд по browser-use

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

TLDR: видео с результатом в конце статьи

Библиотека browser-use невероятно стрельнула практически в день релиза, на текущий момент это около 16 тысяч звезд на Гитхабе, и сотни восторженных отзывов на Reddit, в Твиттере, и так далее. Команду, создавшую browser-use даже приняли в YC. У неё революционная точность по сравнению с другими "ИИ агентами использующий браузер" (89% против Runner H с 67%).

Я очень удивился, что на Хабре всё ещё нет статьи с описание того, что это, и как это использовать. Сегодня мы это исправим: мы сделаем ИИ, который будет читать статьи на Хабре, и писать комментарии о том, почему продукт, описанный в статье, никому не нужен.

Добро пожаловать в мир ИИ-агентов!

Информация

В рейтинге
2 980-й
Зарегистрирован
Активность