Все потоки
Поиск
Написать публикацию
Обновить
1032.34

Программирование *

Искусство создания компьютерных программ

Сначала показывать
Порог рейтинга
Уровень сложности

A/B-тесты на SQL с уменьшением дисперсии

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

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

Каждому аналитику знакомо: при анализе A/B-тестов важно выжимать максимум информации из данных. Но высокая дисперсия шума часто заставляет нас наращивать выборку и затягивать эксперименты. Как ускорить получение результата и повысить чувствительность теста? Один из способов – сократить разброс метрики без изменения ее среднего. Классическая формула размера выборки показывает, что количество данных N прямо пропорционально дисперсии σ². Получается, уменьшая σ², мы автоматически уменьшаем нужный объем данных или можем детектировать меньший эффект при тех же N.

Поэтому методы снижения дисперсии в A/B-тестах становятся очень востребованными. В индустрии известны разные приемы: стратификация, бутстреп, сложные байесовские тесты, и, конечно же, ковариатный подход (CUPED/CUPAC и т.д.). Мы остановимся на одном из самых простых и эффективных приемов – CUPED (Controlled-experiment Using Pre-Experiment Data). Его суть проста и понятна: перед экспериментом у каждого пользователя была определенная метрика (скажем, прошлые покупки), и мы можем использовать эту информацию, чтобы скорректировать итоговую метрику и снизить шум.

Читать далее

Я — идеальный программист

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

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

Читать далее

Ещё одно тестирование Angie, HAProxy, Envoy, Caddy и Traefik от Devhands

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

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

Читать далее

Регулярные выражения в PostgreSQL

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

Регулярные выражения (или regex) — это особые текстовые строки, используемые для описания поискового шаблона. В PostgreSQL regex становится незаменимым инструментом, особенно при работе с большими объёмами неструктурированных строковых данных.

Возможно, у кого‑то есть вопрос: «А для чего нам регулярные выражения в БД?» И мы вам ответим:

Регулярные выражения (regex) позволяют описать сложные текстовые шаблоны компактно и гибко.

Читать далее

Какой Python-фреймворк выбрать: Django, Flask или FastAPI?

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

Команда Python for Devs подготовила перевод статьи о том, какой фреймворк выбрать для веб-разработки на Python: Django, Flask или FastAPI. Django берёт надёжностью и готовой функциональностью, Flask — гибкостью и минимализмом, FastAPI — скоростью и современными возможностями. А какой из них ближе вам?

Читать далее

Баги носят данные. Проверка Apache NiFi

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

Сбор, обработка и перемещение данных — ключевые процессы в IT. Но что, если они нарушатся из-за коварных багов в коде? Рассказываем об ошибках, найденных статическим анализатором в проекте Apache NiFi.

Читать далее

Genkit Go 1.0: AI-фреймворк для продакшена

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

Команда Go for Devs подготовила перевод статьи о релизе Genkit Go 1.0 — open source AI-фреймворка от Google для экосистемы Go. Теперь можно быстро и безопасно создавать продакшен-ready AI-приложения с типобезопасными флоу, поддержкой RAG, вызова инструментов и богатым локальным тулчейном.

Читать далее

UUIDv7 в PostgreSQL 18

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

Совсем скоро (в конце сентября) выйдет PostgreSQL 18. Релиз готовит важные обновления — от асинхронного I/O до EXPLAIN с показателями CPU и WAL. 

Довольно громкая новинка — нативная поддержка UUIDv7, нового стандарта уникальных идентификаторов, идеально подходящих для B-tree индексов. 

В новом переводе от команды Spring АйО рассказывается, почему это важно, как работает UUIDv7 и чем он лучше UUIDv4 для современных распределённых систем.

Читать далее

Визуализация управления памятью в Python: что творится внутри?

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

Python щедро раздаёт нам удобные абстракции. Создаёшь список, словарь или строку — и не думаешь, где под это выделилась память и как она потом освободится. Но внутри интерпретатора работает довольно сложный механизм, и он устроен не так, как в C или других языках.

Идея сделать приложение-визуализатор пришла после чтения книги CPython Internals. Там подробно объясняется, как устроены арены, пулы и блоки. Но пока читаешь текст, всё это воспринимается слишком абстрактно. Захотелось увидеть механику своими глазами: как память выделяется, как освобождается и почему иногда остаётся занята. Так и появился MemoryMonitorApp, а вместе с ним — эта статья.

Читать далее

Алгоритмы в повседневной жизни

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

Вы когда-нибудь задумывались, что поиск футболки в шкафу — это O(N), а приготовление ужина — многопоточный процесс с I/O blocking?

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

Станьте архитектором не только кода, но и своей жизни!

Не кликайте, если любите хаос

Почему браузеры ограничивают JavaScript таймеры?

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

Команда JavaScript for Devs подготовила перевод статьи о том, почему браузеры намеренно замедляют выполнение setTimeout и других таймеров. Автор объясняет, как это связано с защитой пользователей, рассказывает о своём бенчмарке разных подходов (setTimeoutMessageChannelscheduler.postTask) и делает прогноз, какие таймеры будут использоваться в будущем.

Читать далее

За пределами отладчика: полное руководство по отладке Go-приложений

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

Команда Go for Devs подготовила перевод статьи о том, как отлаживать приложения на Go. Автор показывает, что баги бывают разными: воспроизводимые, случайные, гейзенбаги и конкурентные. А в арсенале Go-разработчика должны быть — TDD, стратегическое логирование, Delve, git bisect и даже онлайн-отладчик GoTutor.

Читать далее

Как мы освободили 20 ГБ в PostgreSQL без удаления данных

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

Команда Python for Devs подготовила перевод статьи о том, как можно освободить десятки гигабайт места в PostgreSQL без удаления данных и индексов. TL;DR: удаляем неиспользуемые индексы, чистим bloat, пересобираем таблицы и используем частичные индексы, чтобы хранить только то, что реально нужно.

Читать далее

Ближайшие события

Опыт вайбкодинга: как заставить нейросеть работать эффективно

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

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

Сегодня, в начале XXI века, искусственный интеллект уже стал частью нашей повседневности. Мы спокойно спрашиваем у Алисы прогноз погоды, видим тексты и советы от ИИ в поиске, а изображения или даже видеоролики, созданные нейросетью, никого не удивляют.

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

Ниже я расскажу про собственный опыт работы с такими технологиями, который мы ежедневно применяем в реальных проектах ★5УГЛОВ для наших клиентов.

Читать далее

Создание Системы генерации ответов на истории тикетов поддержки (часть 2)

Время на прочтение5 мин
Количество просмотров398

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

Меня зовут Анатолий, занимаюсь автоматизацией бизнес-процессов и применением Искусственного Интеллекта в бизнесе.

Кейсовая задача - создать Систему генерации ответов на основе существующей истории тикетов. При этом Система должна работать в закрытом контуре.

В этой части переходим к семантическому поиску, контекстному сходству и SentenceTransformer.

Читать далее

Autumn vibes. Как я с кодингом с помощью LLM знакомился

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

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

Сегодня хочу поделиться своим опытом работы с локальными LLM (Large Language Models). Это что-то вроде GitHub Copilot, только без подписки, оффлайн и с контролем над своими данными.

Читать далее

Автоматизируем подготовку промтов для GPT: Python-функция для детального описания DataFrame

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

Привет, меня зовут Виталий. Автор телеграмм канала «Детектив данных» про смену профессии и мой вкат в «аналитику» после 30 лет. И да, я уже наверное года полтора использую помощь нейросети при написании кода на Питоне.

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

Будто при допросе вместо описания преступника, следователь внимательно изучает все родинки у допрашиваемого лица. И у адвоката.

В качестве жертвы у нас рабочее время, которое можно потратить на описание задачи.

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

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

Смотрим функцию, сохраняем

DOOMQL: DOOM-подобный многопользовательский шутер на чистом SQL

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

Недавно я набрёл на шедевр Патрика — клон DOOM, основанный на DuckDB-WASM и работающий в браузере. Прочитав о нём, я решил  довести  эту великолепную идею до логического завершения: написать многопользовательский DOOM-подобный шутер целиком на SQL. При этом всю тяжёлую работу хотел сделать через базу данных CedarDB. Отлучившись с работы в месячный отпуск по уходу за ребёнком (бессонных ночей хватало), я попытался сделать именно это.

Вот вам тизер DOOMQL:

Читать далее

У программиста три пути: шина, монолит и выйти из АйТи

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

Великий аргентинский писатель Хорхе Луис Борхес в одном из своих произведений попытался доказать, что вся мировая литература сводится к четырем базовым сюжетам: история об осаде и защите обречённого города, история о возвращении, история о поиске и история о жертвоприношении или самоубийстве бога. В комментарий к этому заявлению Виктор Пелевин в одном из своих романов написал: «А по‑моему, сюжетов всего два. Первый — как человека убивают из‑за денег. Второй — как человека приносят в жертву. А на самом деле оба сюжета можно даже объединить в один». Как бы то ни было, оставим этот спор о сюжетах литературоведам. В этом же посте я хочу разобрать схожий тезис — все архитектуры разных видов программного обеспечения можно свести к двум базовым структурам — монолиту и шине.

Читать далее

Бот-модератор с LLM для Телеграм

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

В этой статье я рассмотрю пример в котором будут использоваться LLM для выполнения задач модерации в Telegram.

И в отличии от классического ML, LLM не нужно переобучать, достаточно просто изменить промпт. Это делает LLM идеальным инструментом для интеллектуальной модерации.

Читать далее

Вклад авторов