В интернете сотни статей о том, какую пользу приносит анализ поведения клиентов. Чаще всего это касается сферы ритейла. От анализа продуктовых корзин, ABC и XYZ анализа до retention-маркетинга и персональных предложений. Различные методики используются уже десятилетиями, алгоритмы продуманы, код написан и отлажен — бери и используй. В нашем случае возникла одна фундаментальная проблема — мы в ISPsystem занимаемся разработкой ПО, а не ритейлом.
Меня зовут Денис и на данный момент я отвечаю за бэкенд аналитических систем в ISPsystem. И это история о том, как мы с моим коллегой Данилом — ответственным за визуализацию данных — попытались посмотреть на наши программные продукты сквозь призму этих знаний. Начнем, как обычно, с истории.
Пользователь
Ленивая подгрузка переводов с Angular
Если вы когда-нибудь участвовали в разработке крупного angular-проекта с поддержкой локализации, то эта статья для вас. Если же нет, то возможно, вам будет интересно, как мы решили проблему скачивания больших файлов с переводами при старте приложения: в нашем случае ~2300 строк и ~200 Кб для каждого языка.
Как сэкономить 15 000 рублей при регистрации ПО
Прошёлся недавно по поисковой выдаче гугла и выяснил, что регистрация прав на программу для ЭВМ стоит около 15 тыс. рублей. 15 тыс. рублей! И это ещё без пошлины.
Я удивился, потому что подготовка документов занимает минут тридцать. Чёрт с ним, пускай даже один час, но 15 тыс. рублей за час — это более чем достойное вознаграждение.
Зашёл на сайт Роспатента: инструкции там есть, но четкой картины не дают. На месте руководителя маленького IT-проекта я бы не стал подавать заявление сам — вдруг что-то сделаю не так.
Но я же юрист, и процедуру эту проходил не раз. Так почему бы мне не помочь стартаперам? Подумал-подумал, и не нашёл аргументов против. Так что давайте вместе попробуем подготовить документы и направить их в Роспатент, сэкономив при этом в среднем 15 тыс. рублей.
Пишем Grafana reverse proxy на Go
Очень хотелось назвать статью «Proxy-сервис на Go в 3 строчки», но я выше этого.
В действительности так и есть, основную логику можно уместить в трёх строках. Для нетерпеливых и тех, кто хочет увидеть самую суть:
proxy := httputil.NewSingleHostReverseProxy(url)
r.Header.Set(header, value)
proxy.ServeHTTP(w, r)
Под катом более подробный рассказ для новичков в языке Golang и тех, кому нужно создать обратный прокси в кратчайшие сроки.
Разберём, для чего нужен прокси-сервис, как его реализовать и что под капотом у стандартной библиотеки.
Boost.Spirit, или Добавляем «духовности» фильтрам списков
Доброго времени суток, коллеги. Я по-прежнему являюсь разработчиком ISPsystem, и меня все еще зовут Дмитрий Смирнов. Некоторое (довольно продолжительное) время я никак не мог определиться с темой следующей публикации, поскольку материала за последние месяцы работы с Boost.Asio накопилось много. И уже в тот момент, когда казалось, что легче подбросить монетку, одна задача все изменила. Нужно было разработать инструмент, позволяющий frontend’у фильтровать данные в запрашиваемых списках. Сам же список со стороны backend'а представляет собой обыкновенный json_array. Добро пожаловать под кат, там все взлеты и падения последних дней.
VMmanager 6: представляем коробку и сравниваем с предыдущим поколением
8 октября вышла коробочная версия VMmanager 6 — новой панели управления виртуализацией. Теперь её можно установить на сервер и использовать для продажи виртуальных машин или управления собственной инфраструктурой. В этой статье сравним новое поколение с предыдущим — VMmanager 5 и VMmanager 6.
Обе панели поддерживают виртуализацию KVM и управляют физическим сервером средствами libvirt.
VMmanager 5 вышел в 2013 году, VMmanager 6 — в 2019-м. Новое поколение удобнее и устойчивее к нагрузкам. Поддерживает создание образов, управление задачами и мониторинг.
В этой статье сравним два поколения панелей. Сначала поговорим о концептуальных различиях: архитектуре, интерфейсе, устойчивости к нагрузкам. Во второй части посмотрим, как в двух панелях решаются одинаковые задачи.
Рождение платформы
Мир изменился. Я чувствую это в воде, вижу в земле, ощущаю в воздухе. Всё, что когда-то существовало, ушло, и не осталось больше тех, кто помнит об этом.
Из фильма «Властелин колец: Братство кольца»
В интернете существует 100500 статей и докладов на тему «как мы пилили монолит», и у меня нет желания написать еще одну. Я попробовал пойти немного дальше и рассказать, как изменения технологий привели к появлению абсолютно нового продукта (спойлер: мы писали коробку, а написали платформу). Статья во многом получилась обзорной, без технических подробностей. Подробности будут позже.
Как придумать название продукта или компании на примере Vepp
Гайд для всех, кому нужно имя для продукта или бизнеса — существующего или нового. Расскажем, как придумывать, оценивать и выбирать.
Три месяца мы работали над ренеймингом панели управления с сотней тысяч пользователей. Нам было больно и в начале пути очень не хватало совета. Поэтому когда закончили, решили собрать свой опыт в инструкцию. Надеемся, кому-нибудь пригодится.
10 долларов на хостинг: 20 лет назад и сегодня
Ещё один пример — хостинг. Цена мегабайта за последние 20 лет упала в несколько тысяч раз. В 1998 году за 10 долларов в месяц можно было арендовать всего 10 Мб на FTP-сервере, а сегодня — 30 Гб на VDS.
Мы разрабатываем панели для хостинга с конца девяностых и решили сделать небольшой экскурс в историю. В этой статье посмотрим на цены и услуги прошлых лет и сравним их с ценами из 2K18. Ухмыльнемся и порадуемся тому, что доступно сегодня и не было доступно 20 лет назад :-).
Итак, сколько «хостинга» можно было арендовать за 10 долларов?
50 вопросов для работы над документацией
Мы делаем продукты попроще софта для ракет, но всё равно технически сложные. Очень стараемся, чтобы интерфейсы новых версий были простыми, но осознаём — всегда найдётся пользователь, который что-нибудь не поймёт и пойдёт в документацию. Поэтому дока должна быть, а чтобы не портить впечатление о продукте, она должна быть полезной и удобной.
У нас шесть продуктов, документацию к которым с самого основания компании писали разработчики. Уже полгода мы переписываем старые и пишем новые статьи. Под катом — 50 вопросов, которые помогают нам делать это хорошо. Но для начала немного вводных.
Асинхронный обмен данными с удалённым приложением через SSH
Так случилось, что все мои прошлые проекты были многопоточными, соответственно, у меня было крайне мало опыта с асинхронными решениями. Именно это стало самым приятным для меня в этой разработке, помимо современных мощных инструментов.
Одной из последних сопутствующих задач стала необходимость написать обёртку над библиотекой libssh2 в реалиях асинхронного приложения, использующего Boost.Asio, и способного породить не более двух потоков. Об этом и расскажу.
Примечание: автор предполагает, что читатель знаком с основами асинхронной разработки и boost::asio.
5 страхов разработчиков, которые мы преодолели
Когда компания развивается — меняет подход к разработке, создаёт новые продукты и расширяет возможности текущих, десятками принимает сотрудников, тем, кто работал по-старому, бывает тяжело перестроиться. Мы радуемся изменениям, но иногда, чего скрывать, боимся их. Я работаю продакт-менеджером уже год и за это время столкнулась с пятью крупными страхами своей команды. Сегодня расскажу об этих страхах и о том, как нам удалось их преодолеть.
Бдительная «Лида»: автоматизация тестирования безопасности
Сначала уязвимости в продуктах у нас искал отдельный сотрудник. Ручное тестирование занимало много времени и не гарантировало, что будут найдены все уязвимости. Выяснив основные закономерности тестирования, мы пришли к выводу, что его можно автоматизировать. Тогда мы решили написать утилиту, которая облегчит жизнь тестировщика, сэкономит его время и позволит проверять продукты после каждого изменения. Так как тестировщика звали Лида, новое приложение мы назвали в её честь. Вообще, у нас в компании это стало традицией — называть инструменты тестирования именами тестировщиц.
«Кроличья нора». UX-дизайнер в продуктовой команде
Дизайн-процессы в ISPsystem. Как внедрить идеологию, построить отдел и остаться в живых
Я пришёл в ISPsystem в апреле 2016 г. На тот момент ситуация с продуктовым дизайном была следующая: решения по продуктам принимались руководством и программистами, никаких дизайнеров или проектировщиков не было. Ситуация на рынке требовала продуктов с «другими интерфейсами», поэтому руководство решило перепроектировать клиентскую часть BILLmanager. Это должно было стать пробным шаром, первой попыткой сделать что-то с новым дизайном.
«Малявки, но хорошие»: как мы брали студентов на практику
Магнитофон — инструмент для записи автотестов
Добрый день, уважаемые читатели. Меня зовут Виктор Буров. Я работаю разработчиком в компании ISPsystem и хочу поделиться опытом автоматизации тестирования.
Так сложилось, что у нас превалировало ручное тестирование, и тестировщики тратили кучу времени на выполнение одних и тех же действий. Однажды мы подумали: почему бы не научить панель повторять действия тестировщика, ведь, по сути, все они превращаются в конкретные вызовы API. Это бы позволило писать тесты людям даже без навыков программирования.
Мы решили написать модуль создания автоматических тестов. Чтобы тестировщик мог просто нажать кнопку создания теста, выполнить условия тест-кейса, по окончании нажать «завершить» — и всё, тест был готов! Простая идея, но реализовать ее оказалось непросто. Потому что мы хотели, чтобы этот модуль был максимально адаптирован под наши продукты и использовал преимущество унифицированного интерфейса: чтобы сделанная запись выглядела как готовый тест-кейс. Это бы полностью избавило от ручной работы по написанию тестов. Получившаяся в итоге система получила название «магнитофон».
Что делать сразу после поездки на деловую конференцию? Советы от биздевов ISPsystem
Раньше мы часто оставались в стране проведения конференции на недельку-другую за свой счет. Согласитесь, грех упускать возможность погулять по Сан-Франциско несколько дней! Но со временем перестали так делать: приехали, провели переговоры, через день или два уехали обратно. Потому что после конференции появляется много работы, делать которую в условиях «полуотпуска» сложно, а не делать — нельзя. Бывает, конечно, биздев остается, но на пару дней и только после клятвы кровью о том, что будет на связи.
Как организовать собственный репозиторий модулей Node.js с блэкджеком и версионностью
Как провести время на деловой конференции с пользой? Советы от биздевов ISPsystem
Поездка на бизнес-конференцию, как спринтерский забег. Долго-долго готовишься, а в день «Х» должен выложиться по максимуму. За один или два дня надо рассказать десятку малознакомых человек о себе и узнать как можно больше о них, чтобы это привело к успешному партнерству. Надо действовать технично и быстро. Эта статья поможет избежать распространенных ошибок и научит гибко подстраиваться под меняющиеся обстоятельства.