Pull to refresh
-2
0
Send message

Как в Купере масштабировали машинное обучение и что из этого получилось

Level of difficultyEasy
Reading time10 min
Views1.3K

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

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

Рассказываем, как в Купере внедрили Feast, хранилище признаков (Feature Store) с открытым исходным кодом. После прочтения вы познакомитесь с инструментом и сможете решить, подходит ли Feast для коммерческого использования. Подробности под катом!
Читать дальше →
Total votes 18: ↑18 and ↓0+22
Comments2

Современная Lakehouse-платформа данных Data Ocean Nova

Level of difficultyMedium
Reading time15 min
Views1.3K

Привет. Меня зовут Евгений Вилков. Я занимаюсь системами управления и интеграции данных с 2002 г., а конкретно системами анализа и обработки данных — с 2007 г. Технологии, с которыми я имел дело на протяжении моего профессионального пути, стремительно развивались. Начиная с решений, основанных на стеке традиционных СУБД, таких как Oracle, MS SQL Server, Postgres, постепенно эволюционируя в ставшие уже классическими (а некоторые даже и закрытыми) MPP-системы, такие как Teradata, GreenPlum, Netezza, Vertica, IQ, HANA, Exadata, ClickHouse, в различные решения на базе экосистемы Hadoop, облачные сервисы и платформы. Меняется мир, меняются технологии, меняются подходы к проектированию, меняются и требования к задачам аналитического ландшафта данных.

Уверен, что многие, кто уже знаком с терминами Data Mesh и Data Lakehouse, задаются вопросом: что может предложить рынок аналитических систем в этих методологиях проектирования и архитектурных подходах. Я хочу рассказать об аналитической платформе данных Data Ocean Nova, владельцем и технологическим идеологом которой я являюсь.

Читать далее
Total votes 7: ↑6 and ↓1+8
Comments0

Made at Intel. Окаянные дни — начало

Level of difficultyEasy
Reading time8 min
Views24K

Мы уже достаточно говорили в этой книге о росте численности корпорации. Как естественным путем найма, так и за счет поглощения других компаний. Однако, случались и «моровые поветрия», локальные и глобальные. Иногда они имели технологическую природу, но чаще финансовую. Терять работу — почти всегда неприятно, особенно работу в такой комфортной компании, как Интел. Ситуация эта была стрессовой для всех, но особенно трудно приходилось менеджерам всех звеньев и калибров, ибо самые тяжелые действия и решения ложились на них. Историям массовых увольнений в Интел, в которых мне доводилось принимать участие, и будет посвящена эта глава. Сейчас я могу более или менее спокойно описывать эти события, ведь с тех пор прошло немало времени. Но за каждой описанной здесь историей стоят людские судьбы...

Читать далее
Total votes 91: ↑88 and ↓3+111
Comments12

WAF для Вебсокетов: рабочее решение или иллюзия?

Level of difficultyEasy
Reading time7 min
Views1.2K

Есть мнение, что в силу особенностей вебсокетов, WAF не может их нормально анализировать и защищать. Давайте попробуем разобраться, насколько это утверждение справедливо.

Читать далее
Total votes 6: ↑5 and ↓1+6
Comments8

Как подружить Gorm и PostGIS, решение промышленного уровня

Level of difficultyEasy
Reading time4 min
Views1K

GORM Фантастическая ORM для Golang.

PostGIS расширяет возможности реляционной базы данных PostgreSQL , добавляя поддержку хранения, индексирования и запросов геопространственных данных.

В этой статье поделимся своим опытом интеграции GORM и PostGIS, сложностями при попытке использования gorm для работы с геометрическими данными и конечно предлагаем готовое решение.

Изначально эта статья была опубликована здесь.

Читать далее
Total votes 1: ↑1 and ↓0+3
Comments6

Как мы сделали приложение для партнёрской платформы, с которым любой может зарабатывать на туризме. Кейс Travelpayouts

Level of difficultyEasy
Reading time7 min
Views577

Хотели бы вы иметь готовое приложение, которое можно адаптировать под свой бренд за пару кликов? Мы его уже сделали!

С идеей создания такого продукта к нам пришла компания Travelpayouts, объединяющая инфлюенсеров и тревел-бренды. Заказчику требовался цифровой продукт, который поможет им расширять свою партнёрскую платформу в направлении мобильных приложений, а самим партнёрам — дополнительно монетизировать входящий трафик, зарабатывая на комиссии за каждое бронирование.

Так появилось приложение White Label App — шаблон нативного приложения для поиска и бронирования авиабилетов и отелей по всему миру с обширными возможностями конфигурации. Он исполнен в двух вариантах: основной – White Label App — приложение с готовыми функциональными модулями, и White Label SDK — набор готовых экранов, которые можно встроить в собственное приложение. Любой из форматов можно кастомизировать под разные стилистики брендов. А ещё это решение будет гораздо дешевле и быстрее разработки собственного приложения для тревел-бизнеса.  

Подробнее про форматы:

Читать далее
Total votes 11: ↑9 and ↓2+11
Comments1

Как мы внедрили Tracetest для улучшения наблюдаемости в EDA

Level of difficultyMedium
Reading time8 min
Views908

В мире разработки ПО поддержка высокого уровня наблюдаемости (observability) для приложений с архитектурой, управляемой событиями (event-driven architecture, EDA) стало критически важным. Сложность таких систем, связанных с обработкой огромных объемов данных в режиме реального времени, требует надежных инструментов для мониторинга, отладки и анализа. Однако традиционные методы, использующие логи и метрики, часто оказываются недостаточными, когда необходимо глубоко понять взаимодействие между различными компонентами системы и выявить узкие места.

Именно с этой проблемой мы столкнулись в нашей команде, поэтому я, Дмитрий Титаренко (QA-инженер в компании TAGES), решил поделится найденным решением в статье на Хабр. Надеюсь, что будет полезно!

Читать далее
Total votes 13: ↑13 and ↓0+17
Comments0

Как делать простые анимированные онбординги в Lottie без After Effects

Level of difficultyEasy
Reading time6 min
Views4.3K

Привет! Меня зовут Михаил Мурзак, я продуктовый дизайнер в Ozon Seller (сайт и приложение продавца).

Время от времени мы делаем анимированные онбординги крупных фич в мобильном приложении и долгое время использовали для этих целей Adobe After Effects с плагином Bodymovin (для экспорта в Lottie), но каждый раз для меня это было мучением, поэтому я решил пересесть на официальный клиент Lottie и написал этот гайд для коллег.

Теперь, когда Adobe не продлевает лицензии, этот гайд стал ещё более актуальным, и я решил опубликовать его тут.

Читать далее
Total votes 20: ↑19 and ↓1+20
Comments2

Как создать модель миньона с нуля: бесплатные уроки Blender для детей

Level of difficultyEasy
Reading time8 min
Views8.7K

Давайте прокачаем навыки в направлении трехмерного моделирования и вместе попробуем создать миньона в программе «Блендер», предназначенной для работы с 3D‑графикой. Сразу отметим, что без базовых представлений о Blender подготовленная нами инструкция покажется трудной. Но попробовать точно стоит. Ниже оставим подборку уроков для совсем новичков, можно начать с нее, а затем вернуться к этому туториалу. Уроки предназначены для подростков 13–14 лет и старше.

Создание 3Д‑моделей — распространенное направление: оно используется в киноиндустрии, рекламе, маркетинге и дизайне, а также в разработке игр и промышленности. Профессиональные моделлеры часто применяют инструменты среды Blender — бесплатного программного обеспечения, созданного специально для 3D‑моделирования. Это обусловлено расширенными возможностями платформы.

Если вы уже имеете опыт работы в моделировании или просто хочется попробовать свои силы и сделать первые шаги в создании 3D‑моделей в Blender, вам пригодится представленная инструкция. В ней мы собрали 10 уроков в виде текстовых гайдов, а также предусмотрели видеоролики на случай, если не получится разобраться без визуала. Мы создадим модель миньона, сделаем базовое текстурирование и добавим анимацию.

Читать далее
Total votes 28: ↑22 and ↓6+24
Comments3

С 80-х по 2024-й: как создавались и оптимизировались CI-тесты

Reading time9 min
Views1.7K

Современные команды разработки тестируют каждое изменение кода перед мержем. Это не просто общепринятая традиция: наряду с ревью кода, это стандарт по умолчанию, применяемый практически во всех кодовых базах компаний. Мы называем его тестами CI (непрерывной интеграции). В результате их внедрения среднестатистическая организация запускает сотни наборов тестов в день.

В прошлом непрерывное интеграционное тестирование было с нами не всегда, в отличие от обычного тестирования. По моим наблюдениям, CI — это результат того, что тестирование всё больше ускоряется. Разберёмся, как это произошло и как тестирование будет ускоряться дальше.

Читать далее
Total votes 11: ↑10 and ↓1+13
Comments0

Как Notion обрабатывает 200 миллиардов объектов данных

Level of difficultyEasy
Reading time3 min
Views6.3K

Переход от PosgreSQL-only решения к собственному DataLake для отделения read нагрузки под нужды аналитики и AI.

Читать далее
Total votes 13: ↑10 and ↓3+12
Comments9

HybrydCLR. Как обновлять код Unity игры без загрузки обновлений в стор

Level of difficultyMedium
Reading time9 min
Views2.7K

Как обновлять код игры, написанный на Unity без загрузки свежего билда в стор. Как делать это без колхоза и всякого рода адаптеров. Zero learning cost, zero usage cost.

Читать далее
Total votes 14: ↑13 and ↓1+15
Comments2

Трассировка OpenTelemetry в 200 строк кода

Level of difficultyEasy
Reading time12 min
Views3.5K

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

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

Неудивительно, что многие разработчики воспринимают библиотеки трассировки как «черные ящики». Мы добавляем их в приложения, надеемся на лучшее и полагаемся на них в критические моменты, например, во время инцидентов ночью.

На самом деле, трассировка гораздо проще, чем кажется.

Читать далее
Total votes 13: ↑12 and ↓1+17
Comments2

Пользуемся Docker, не выходя из Go

Level of difficultyMedium
Reading time12 min
Views5.3K

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

Зовут меня Егор, я программирую на Go и в этой статье хочу поделиться информацией про Docker и Golang.

Кто такой Докер? Как заявляет сама компания, Докер — № 1 программа по контейнерезации для разработчиков ПО. В этой статье я не буду объяснять, что это, зачем и почему именно он, для этого есть как офиц. документация, так и хорошие статьи на Хабре. Если кратко — то Докер — это инструмент, который позволяет запускать программы в некой песочнице(контейнере) с целевой ОС — как правило линукс. Самое главное преимущество Докера — это упаковывать все нужное для твоей программы(например: зависимости) в один модуль. И ресурсов эта вещь тратит намного меньше, чем та же виртуальная машина.

Зачем нужен Docker SDK? Самая важная причина — тестирование. Можно собирать метрики, делать редирект трафика, автоподъем контейнеров, анализировать логи в реальном времени, создавать образы и еще кучу всего, что упрощает тестирование. Я постараюсь охватить эти пункты в этой статье.

Читать далее
Total votes 9: ↑4 and ↓5+3
Comments11

Подключение оплаты Тинькофф к Telegram-боту на чистом php

Level of difficultyEasy
Reading time6 min
Views4.9K

Недавно добавил оплату в свой Телеграм‑бот. После некоторых изысканий выбор пал на Тинькофф (ныне Т‑банк). Сам бот работает на php без вспомогательных библиотек. Возможно, кому‑то пригодится мой опыт и код. И бот.

Читать далее
Total votes 16: ↑14 and ↓2+21
Comments7

Реализация push-уведомлений из web в мобильное приложение для новичков

Level of difficultyEasy
Reading time8 min
Views1.6K

Всем привет! Меня зовут Лида Анисимова, я backend разработчик продукта — платформы мотивации сотрудников Тил Эйчар. В этой статье хочу рассказать о нашем опыте реализации push-уведомлений. Если вы, как и я полгода назад, ничего не знаете о том, как работают push-уведомления — эта статья для вас. Расскажу о том, с какими трудностями мы столкнулись, покажу, как отправить первый push и какие данные вам могут понадобиться.

Читать далее
Total votes 5: ↑5 and ↓0+10
Comments2

Схематично, простыми словами о внутреннем устройстве PHP (Zend Engine, OPCache, JIT)

Level of difficultyEasy
Reading time5 min
Views11K

Данный пост нацелен на неопытных PHP-специалистов. От этой информации лучше программировать вы не станете. Ожидаемая польза:

Мне когнитивно и морально легче, когда уменьшается «магия» того, с чем работаешь. Может тебе тоже

Возможно чуть-чуть реже статьи на хабре будут тебя отпугивать

Объясню на 4 примерах — каждый лишь немного сложнее предыдущего.

Пример 1: запуск программы, написанном на компилируемом языке (Go): в полной статье

Пример 2: Запуск скрипта PHP без OPCache и JIT

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

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

Вот схематично представил всю последовательность работы PHP скрипта без включенных OPCache и JIT (каждый из них по отдельности рассмотрим в следующих двух примерах).

У нас привычный «исходный код» PHP (файл hello-world.php):

<?php echo "Hello world";

Опять идем по порядку, рассмотрим какие процессы происходят запустив команду:

php hello-world.php

Процесс №1 — Компиляция в байт-код
Сначала исходный код обрабатывается Zend Compiler — это PHP компилятор. Первый из двух основных компонентов Zend Virtual Machine.

В отличие от рассмотренного выше компилятора Go:

задача PHP компилятора — преобразовать исходный код не в машинный код, а в код-посредник - байт-код;

процесс компиляции происходит при каждом запуске программы (вместо лишь единоразового - до запуска программы, как в примере с Go)

В случае PHP этот байт-код назвали PHP OPCode.

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

Чтобы посмотреть результат работы компилятора — сам байт-код — выполним команду:

php -d opcache.opt_debug_level=0x20000 -d opcache.enable_cli=1 hello-world.php

Получим:

$_main: ; (lines=3, args=0, vars=0, tmps=1) ; (after optimizer) ; /hello-world.php:1-2 0000 EXT_STMT 0001 ECHO string("Hello World") 0002 RETURN int(1)

Вначале видим $_main: — обозначает, что следующие строки относятся к функции main. Появление такой функции в байт-коде для глобальной области видимости PHP — занятная историческая особенность, дошедшая из других языков;

Следующие 3 строки начинаются на ; — так обозначаются комментарии. Одна из целей — для дебаг-информации;

Последние 3 строки — непосредственно код нашего приложения, который будет выполняться виртуальной машиной в следующем шаге.

Процесс №2 — Выполнение байт-кода

Читать далее
Total votes 33: ↑32 and ↓1+38
Comments12

Деконструкция монолита: Максимально производительный подход к проектированию программ

Reading time10 min
Views6.3K

Как и почему компания Shopify перешла от монолитной архитектуры к модульно-монолитной.


image

У компании Shopify одна из крупнейших баз кода на Ruby on Rails. Над ней трудились более десяти лет свыше тысячи разработчиков. Она включает множество разнообразных функций, например, выставление счетов продавцам, управление сторонними приложениями, обновление информации о товарах, обработка доставки и так далее.

Изначально система была построена как монолит, то есть все эти разные функциональные возможности были встроены в одну кодовую базу без каких-либо разграничений между ними. В течение многих лет эта архитектура работала нормально, но в конце концов мы достигли точки, когда недостатки монолита перевесили преимущества. Нам предстояло сделать выбор, как действовать дальше.
Читать дальше →
Total votes 12: ↑12 and ↓0+19
Comments4

Индекс твоего города — Большое обновление

Level of difficultyEasy
Reading time2 min
Views8.9K

При оценке индекса доступности (школы, медицина, спорт и т. д.) теперь используются изохроны по пешеходным и автомобильным маршрутам. Это пожалуй самое большое изменении с момента запуска, но не единственное на сегодня для city-indexes.online.

Читать далее
Total votes 4: ↑4 and ↓0+8
Comments27

gRPC: проблемы и решения при переходе с REST

Level of difficultyMedium
Reading time6 min
Views6.8K

Вот уже 24 года мы используем сложный для понимания, завязанный на особенности HTTP REST-протокол. Не пора ли переходить к чему-то более современному?

Привет! Меня зовут Игорь Алексеев и я работаю бэкенд-разработчиком в компании Garage Eight. Некоторое время назад я внедрил gRPC для части своих сервисов. В этой статье поговорим о том, что такое gRPC, сравним его с возможными альтернативами, рассмотрим преимущества gRPC и пробежимся по проблемам, которые возникают почти в каждом проекте, где этот протокол приходится внедрять.

Читать далее
Total votes 8: ↑5 and ↓3+5
Comments25
1
23 ...

Information

Rating
Does not participate
Registered
Activity