Более 5 лет я работаю ClickHouse DBA и помогаю командам разработки и аналитики эффективно использовать ClickHouse. Неизменным помощником в этом мне служит хеш-функция cityHash64(). В данной статье мы поговорим в основном про оптимизацию SQL запросов с помощью хеш-функций. Вероятно, рассматриваемые приемы в той или иной степени актуальны не только для ClickHouse, но и для других баз данных, и могут быть полезны любому, кто пишет SQL запросы.
Мы рассмотрим только те применения хеш-функций, которые регулярно встречаются в практике, а не что-то из разряда "100 способов измерения высоты здания с помощью барометра".
Читать далееРассматривая любительские рукодельные электронные лампы, например, [1, 2], интересно и полезно будет вспомнить и об остальных радиоэлементах, изготовлять которые ранним любителям приходилось самостоятельно и собственноручно. Кроме естественных корпусов-ящиков и контурных катушек, дросселей, трансформаторов, коллеги-предки часто были вынуждены делать и почти всё остальное — как установочные элементы — ручки, верньеры, шкалы, клеммы, включатели-переключатели, ламповые панельки, так и радиоэлементы пассивные — резисторы и конденсаторы переменные и постоянные, диоды (детекторы и выпрямители), элементы питания, в том числе и анодные (а это на минуточку — 40…80 вольт!) батареи.
Добавим — всё это предлагалось собирать обычному увлечённому гражданину, юношеству, часто школьнику и из самых чепуховых, буквально подножных материалов — детекторные и первые ламповые схемы были весьма простыми, длинноволновыми, радиослушатели непривередливыми, а масштаб конструкций — пригодным для комфортной ручной работы. Конструкции самодельных радиоэлементов могли более или менее точно воспроизводить заводские аналоги, если они существовали на тот момент, встречались в любительской практике и любопытные фантазийные варианты. Взглянем же на это пиршество радиотехнического творчества, стараясь сосредоточиться на самом непривычном.
Читать далееЕсли вы уже разобрались с классическими сообщениями LayerZero (push-модель: отправили сообщение из одной сети и получили в другой сети), следующий шаг — научиться читать состояние других сетей, не разворачивая там свои контракты и не гоняя туда-сюда два сообщения. Для этого в LayerZero v2 есть lzRead — это request–response (pull) паттерн: контракт в исходной сети отправляет запрос (lzSend), а ответ возвращается обратно в исходную сеть и обрабатывается в lzReceive.
Читать далееНесколько дней назад я проснулся ночью из-за аллергии. Снилось что-то странное и обрывочное — как это часто бывает под утро. Какие-то фрагменты сюжета, немного магии, немного хаоса.
И в один из таких полупроснувшихся моментов в голове вдруг сложилась мысль. Настолько простая, что я даже несколько раз повторил её про себя, чтобы не забыть к утру.
Мысль была такая:
волшебная палочка — это очень плохо спроектированный интерфейс.
Если посмотреть на неё не как на магический артефакт из сказок, а как на устройство взаимодействия пользователя с системой, то получается довольно странная конструкция.
Причём странная почти по всем параметрам: от физического дизайна до модели управления.
Попробуем разобрать её как обычное инженерное устройство.
Читать далееРоссийский рынок CRM заметно «расслоился» на два мира. Первый — массовые «коробочные» решения для малого и среднего бизнеса с быстрым стартом и относительно жёсткими сценариями. Второй — корпоративные CRM‑платформы, которые выбирают крупные компании: с длительным циклом сделки, сложной организационной структурой, кросс‑функциональными процессами, требованиями по интеграциям, безопасности и высокой нагрузке.
В этом материале я решил сделать обзор корпоративных CRM-платформ, способных оказать комплексный эффект на весь бизнес — не только на воронку продаж. Разобраться в особенностях каждой из них бывает непросто, и я надеюсь вам в этом помочь!
Читать далееСегодняшняя статья основана на полугодовом опыте глубокого использования Claude Code и кучи набитых шишек. Надеюсь, это будет полезно.
Поначалу я использовал его как обычный чат-бот, но довольно быстро понял, что что-то идёт не так: контекст становился всё более хаотичным, инструментов становилось всё больше, но эффективность только падала, правила становились всё длиннее, но соблюдались всё реже. После некоторого времени ковыряния и изучения самого Claude Code я осознал – это не проблема промптов, а особенность архитектуры самой системы.
В этой статье я хочу обсудить несколько вещей: как Claude Code работает изнутри, почему контекст засоряется и как с этим бороться, как правильно проектировать Skills и Hooks, как правильно использовать Subagents, как архитектура Prompt Caching влияет на всё, и как написать действительно полезный CLAUDE.md.
Читать далееМеня зовут Илья, я мобильный разработчик в Naumen. Моя основная специализация — iOS-разработка. Я занимаюсь развитием мобильного клиента платформы Naumen Service Management Platform, а также Chat SDK в рамках Naumen Contact Center.
В работе мобильной команды регулярно появляются задачи, в процессе решения которых команда так или иначе сталкивается с трудностями. У меня это произошло, когда я занимался задачей на сжатие изображений перед отправкой на сервер.
В статье расскажу, как из этой задачи вырос подход к автоматической генерации экранов настроек: без ручного добавления каждого нового поля в интерфейс, с опорой на интроспекцию типов и метаданные у самих свойств.
Читать далее