Я участвую в разработке продукта, одна из фич которго – классификация текстов документов по их содержимому. Например, входящий поток требуется разделить на разные папки: отедилить мух от котлет договоры от счетов-фактур. Кратко одну из последних задач можно описать следующим образом: мы поставляем “в коробке” классификатор с пятью стандартными классами документов, а клиент хочет иметь возможность разделять поток документов на шесть классов: пять наших и один свой. В этой статье я покажу один из возможных вариантов решения этой задачи на примере классического набора данных 20 newsgroup dataset:

Continue reading

Некоторое время назад возникла проблема с визуальным git клиентом: регулярно с некоторой периодичностью всплывала форма логина Github и требовала ввести логин и пароль. Ввод реквизитов никак не решал проблему – через какое-то время форма опять появлялась. Гуглинг вывел на тему в поддержке Github. Судя по всему, эта проблема может быть связана с тем, что добавлен remote через клонирование по HTTPS адресу. “Но ведь у меня не должно быть проектов с github на компе О_о” думал я открывая git клиент.

Continue reading

Недавно возникла задача сделать ротацию логов в веб-сервисе на Tornado. До начала работы казалось, что вопрос должен быть давно изучен и решение будет очевидным. Но, как это часто случается, если требования несколько отличаются от стандартных, то приходится искать решение самостоятельно. Или читать документацию. TL;DR Если необходимо реализовать ротацию логов таким образом, чтобы файлы создавались ежедневно и имя файла соотвествовало формату %Y%m%d.%i.log, где %Y - год, %m - месяц, %d - день, %i - индекс текущего файла лога, то необходимо использовать TimedRotatingFileHandler и настраивать формат имени файла переопределяя свойства namer и suffix этого класса:

Continue reading

Думаю, никого сегодня не удивить рекомендательными системами. Их можно встретить повсюду: на сайте с книгами (ozon.ru), блогах (habr.ru), интернет-магазинах (практически любой), стриминговых музыкальных (spotify, Яндекс.Музыка) и видео сервисах (kinopoisk, ivi, amediateka). Самый продуктивный способ разобраться как работают подобные алгоритмы — написать самому с самого начала. Этому и будет посвящена текущая статья. В рекомендательных системах есть два основных подхода: Content-based рекомендации основанные на описании объектов, которые требуется рекомендовать (рекомендуем фильмы, похожие на те, которые понравились пользователю); Коллаборативная фильтрация основанная на оценках пользователя и похожести его на других пользователей.

Continue reading

Оригинал Уже десятилетия я программирую с на объектно-ориентированных языках программтрования. Первым объектно-ориентированным языком, который я использовал, был C++. После этого был Smalltalk и, в конце, .NET и Java. Я фанатично использовал преимущество Наследования, Инкапсуляции и Полиморфизма. Три столпа Объектно-ориентированного программирования. Я жаждал получить обещаное Переиспользование и использовать мудрость полученную теми, кто был до меня в этом новом удивительном мире. Я не мог сдержать волнения при мысли, что можно сопоставить объекты реального мира с моими классами и ожидал, что всё встанет на свои места.

Continue reading

На днях наконец-то решил добраться до такой хайповой темы как Docker: Docker — программное обеспечение для автоматизации развёртывания и управления приложениями в среде виртуализации на уровне операционной системы. Позволяет «упаковать» приложение со всем его окружением и зависимостями в контейнер, который может быть перенесён на любую Linux-систему с поддержкой cgroups в ядре, а также предоставляет среду по управлению контейнерами. Изначально использовал возможности LXC, с 2015 года применял собственную библиотеку, абстрагирующую виртуализационные возможности ядра Linux — libcontainer.

Continue reading

Использование переменных окружения в Postman Продолжу тему про Postman. В этой заметке немного расскажу про использование переменных в Postman. JavaScript API Во-первых, напомню, что переменные можно использовать в JavaScript API Postman. Например, для тестов или в pre-request: console.log(pm.variables.get('param')); console.log(pm.environment.get('param')); console.log(pm.globals.get('param')); Объекты variables, globals и environment объекта pm хранят значения переменных из соответствующих scope-ов: из переменных коллекции, из глобального scope и из переменных окружения. Приоритеты получения переменной: pm.environment содержит значения переменных, означенных для окружения, pm.

Continue reading

Author's picture

feeeper

Разработываю enterprise-решения. В основном на .NET. В свободное время пишу на Go, Python. Периодически рассказываю об ML/DS.

Software developer

Russia